NoSQL数据库优缺点

NoSQL优缺点

** 优点:**
易扩展 NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样 就非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。
大数据量,高性能,快速读写 NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得 益于它的无关系性,数据库的结构简单。一般MySQL使用Query Cache,每次表的更新Cache就失效,是一种大粒 度的Cache,在针对web2.0的交互频繁的应用,Cache性能不高。而NoSQL的Cache是记录级的,是一种细粒度的 Cache,所以NoSQL在这个层面上来说就要性能高很多了。 灵活的数据模型 NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库 里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦。这点在大数据量的 web2.0时代尤其明显。
高可用 NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构。比如Cassandra,HBase模型,通过复 制模型也能实现高可用。
低廉的成本
这是大多数分布式数据库共有的特点,因为主要都是开源软件,没有昂贵的License成本;
** 缺点:**
但瑕不掩瑜,NoSQL数据库还存在着很多的不足,常见主要有下面这几个: 不提供对SQL的支持:如果不支持SQL这样的工业标准,将会对用户产生一定的学习和应用迁移成本; 支持的特性不够丰富:现有产品所提供的功能都比较有限,大多数NoSQL数据库都不支持事务,也不像MS SQL Server和Oracle那样能提供各种附加功能,比如BI和报表等; 现有产品的不够成熟:大多数产品都还处于初创期,和关系型数据库几十年的完善不可同日而语;

NoSQL适用的场景

1、数据库表schema经常变化 比如在线商城,维护产品的属性经常要增加字段,这就意味着ORMapping层的代码 和配置要改,如果该表的数据量过百万,新增字段会带来额外开销(重建索引等)。NoSQL应用在这种场景,可以 极大提升DB的可伸缩性,开发人员可以将更多的精力放在业务层。
2、数据库表字段是复杂数据类型 对于复杂数据类型,比如SQL Sever提供了可扩展性的支持,像xml类型的字段。很多用过的同学应该知道,该字 段不管是查询还是更改,效率非常一般。主要原因是是DB层对xml字段很难建高效索引,应用层又要做从字符流到 dom的解析转换。NoSQL以json方式存储,提供了原生态的支持,在效率方便远远高于传统关系型数据库。
3、高并发数据库请求
此类应用常见于web2.0的网站,很多应用对于数据一致性要求很低,而关系型数据库的事务以及大表join反而成 了”性能杀手”。
4、海量数据的分布式存储
海量数据的存储如果选用大型商用数据,如Oracle,那么整个解决方案的成本是非常高的,要花很多钱在软硬件 上。NoSQL分布式存储,可以部署在廉价的硬件上,是一个性价比非常高的解决方案。 并不是说NoSQL可以解决一切问题,像ERP系统、BI系统,在大部分情况还是推荐使用传统关系型数据库。主要的 原因是此类系统的业务模型复杂,使用NoSQL将导致系统的维护成本增加。

NoSQL分类

NoSQL 键值(key-Value)存储数据库 列式存储数据库 文档型数据库 图形(Graph)数据库
优势 快速查询 查找速度快,可扩展性强,更容易进行分布式扩展 数据结构要求不严格 利用图结构相关算法
劣势 存储的数据缺少结构化 功能相对局限 查询性能不高,而且缺乏统一的查询语法 需要对整个图做计算才能得出结果,不容易做分布式的集群方案。
相关产品 Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB Cassandra, HBase, Riak CouchDB、MongoDB Neo4J、InfoGrid、Infinite Graph
应用 内容缓存,主要用于处理大量数据的高访问负载 分布式的文件系统 Web应用(与Key-Value类似,Value是结构化的) 社交网络
数据模型 键值对 以列簇式存储,将同一列数据存在文件系统中 一系列键值对 图结构

你可能感兴趣的:(NOSQL_DB,NoSql,区别)