目前NoSQL数据库仍然没有一个统一的标准,它现在有四种大的分类:
(1)
键值对存储(key-value):代表软件Redis,它的优点能够进行数据的快速查询,而缺点是需要存储数据之间的关系。
[3]
(2)
列存储:代表软件Hbase,它的优点是对数据能快速查询,数据存储的扩展性强。而缺点是数据库的功能有局限性。
[3]
(3)
文档数据库存储:代表软件MongoDB,它的优点是对数据结构要求不特别的严格。而缺点是查询性的性能不好,同时缺少一种统一查询语言。
[3]
(4)图形数据库存储:代表软件InfoGrid,它的优点可以方便的利用图结构相关算法进行计算。而缺点是要想得到结果必须进行整个图的计算,而且遇到不适合的数据模型时,图形数据库很难使用。
优点:有一类把查询频繁的表,例如用户表,缓存到内存中(固态硬盘500MB/s,内存400MB/s),查询效率提高;往往存储键值对对象结构,跟编程语言的对象结构一样,不用转换,易于理解。
缺点:内存贵;数据一致性不高。
NoSQL与关系型数据库的区别:
存储方式:
传统的关系型数据库采用表格的储存方式, 数据以行和列的方式进行存储,要读取和查询都十分方便。
非关系型数据不适合这样的表格存储方式,通常以数据集的方式,大量的数据集中存储在一起,类似于键值对、图 结构或者文档。
存储结构:
关系型数据库按照结构化的方法存储数据,好处是由于数据的形式和内容在存入数据之前就已经定义好了, 所以数据表的可靠性和稳定性都比较高,问题是一旦存入数据后,如果修改数据会很困难。
NoSQL数据库由于面对的是大量非结构化数据的存储,采用动态结构,对于数据类型和改变非常的适应, 可以根据数据存储需要灵活的改变数据库的结构。
存储规范:
关系型数据库为避免重复、规范化数据以及充分利用好存储空间,把数据按最小关系表的形式进行存储,数据管理 变的很清晰,一目了然。数据表之间存在着复杂的关系,随着数据表的增加,数据管理会越来越复杂。
NoSQL数据库的数据存储方式是用平面数据集的方式集中存放,虽然会存在数据被重复存储,从而造成存储空间被 浪费的问题。但是由于基本上单个数据库都是采用单独存放的形式,很少采用分割存放的方式,所以这样数据往往能存 成一个整体,这对于数据的读写提供了极大的方便。
扩展方式:
关系数据库只具有纵向扩展能力。
NoSQL数据库由于使用的是数据集的存储方式,它的存储方式一定是分布式的,它可以采用横向的方式来开展数据 库,也就是可以添加更多数据库服务器到资源池,然后由这些增加的服务器来负担数据量增加的开销。
查询方式:
关系型数据库采用结构化查询语言(即SQL)来对数据库进行查询,SQL早已获得了各个数据库厂商的支持,成为 数据库行业的标准,它能够支持数据库的CRUD(增加,查询,更新,删除)操作,具有非常强大的功能,SQL可以采 用类似索引的方法来加快查询操作。
NoSQL数据库使用的是非结构化查询语言(UnQL),它以数据集(像文档)为单位来管理和操作数据,由于它没 有一个统一的标准,所以每个数据库厂商提供产品标准是不一样的,NoSQL中的文档Id与关系型表中主键的概念类似, NoSQL数据库采用的数据访问模式相对SQL更简单而精确。
分布是数据库:
关系型数据库采用结构化查询语言(即SQL)来对数据库进行查询,SQL早已获得了各个数据库厂商的支持,成为数据库行业的标准,它能够支持数据库的CRUD(增加,查询,更新,删除)操作,具有非常强大的功能,SQL可以采用类似索引的方法来加快查询操作。NoSQL数据库使用的是非结构化查询语言(UnQL),它以数据集(像文档)为单位来管理和操作数据,由于它没有一个统一的标准,所以每个数据库厂商提供产品标准是不一样的,NoSQL中的文档Id与关系型表中主键的概念类似,NoSQL数据库采用的数据访问模式相对SQL更简单而精确。
数据独立性概念在分布式数据库管理系统中同样是十分重要的一环,但是不仅如此,分布式数据管理系统还增加了一个叫分布式透明性的新概念。这个新概念的作用是让数据进行转移时使程序正确性不受影响,就像数据并没有在编写程序时被分布一样。
在分布式数据库里,数据冗杂是一种被需要的特性,这点和一般的集中式数据库系统不一样。第一点是为了提高局部的应用性而要在那些被需要的数据库节点复制数据。第二点是因为如果某个数据库节点出现系统错误,在修复好之前,可以通过操作其他的数据库节点里复制好的数据来让系统能够继续使用,提高系统的有效性。