nosql的三种类型
NoSQL数据库根据数据模式的不同分为四种类型:键值数据库、文档型数据库、列族型数据库和图数据库。
1.键值数据库
键值数据库以键/值对形式存储数据,键必须唯一,这和哈希表的存储/操作方式类似。主键对应的值可以是任意二进制数据(包括文本数据),NoSQL数据库不知道数据内部细节,应用程序负责解析其语义。应用编程接口非常简单,支持读、写和删除键值对。有些键值数据库支持主键排序和范围(Range)操作。键值数据库性能出色,扩展性很好。流行的键值数据库包括Riak、Redis(由于可以存储集合、列表等,也称为数据结构服务器)、Memcached等。
2.文档型数据库
文档型数据库的核心数据模型是文档(半结构化数据),以键/文档对存储。文档可以是XML、JSON、BSON等格式。文档多为树形结构,可以包含数组、子文档等。不同的文档可以有不同的字段,相同的字段可以有不同的数据类型。和键值数据库相比,文档内容对数据库可见,因而支持对文档的特定字段建立索引以实现高效检索。常见的文档型数据库包括MongoDB、CouchDB等。
3.列族型数据库列族型(Column-family)\
数据库支持定义多个列族,每个列族内允许定义可变数量的列,支持动态定义新列。通常将逻辑上相关、经常同时访问的数据放在一个列族内。和关系数据模型相比,可以把列族看成关系模型的一个列,列对应的值是一个复杂结构。常见的列族型数据库有Cassandra、HBase、Hypertable等。
4.图数据库
图数据库支持非常灵活的实体关系,实体称为顶点,实体间的关系称为边。在图数据库中,边是内嵌的概念。常见的图数据库有Neo4J、OrientDB等。
什么是多副本数据的强一致性,弱一致性和最终一致性
一致性又可以分为强一致性与弱一致性。强一致性可以理解为在任意时刻,所有节点中的数据是一样的。同一时间点,你在节点A中获取到key1的值与在节点B中获取到key1的值应该都是一样的。弱一致性包含很多种不同的实现,目前分布式系统中广泛实现的是最终一致性。所谓最终一致性,就是不保证在任意时刻任意节点上的同一份数据都是相同的,但是随着时间的迁移,不同节点上的同一份数据总是在向趋同的方向变化。也可以简单的理解为在一段时间后,节点间的数据会最终达到一致状态。对于最终一致性最好的例子就是DNS系统,由于DNS多级缓存的实现,所以修改DNS记录后不会在全球所有DNS服务节点生效,需要等待DNS服务器缓存过期后向源服务器更新新的记录才能实现。类似的,还有一些其它的弱一致性实现,下面摘自《NoSQL数据库笔谈》
https://docs.google.com/View?id=dc23x53c_64db5px4f6
Causal consistency(因果一致性)作者:iammutex链接:https://www.zhihu.com/question/20113030/answer/14017868
来源:知乎著作权归作者所有,转载请联系作者获得授权。
还没有评论,来说两句吧...