当前出现了很多不同类型、面向不同应用的NoSQL产品,按照所使用的数据结构的类型,一般可以将NoSQL数据库分为以下4种类型。
1.列式存储数据库
行式数据库即传统的关系型数据库,数据按记录存储,每一条记录的所有属性存储在一行。列式数据库是按数据库记录的列来组织和存储数据的,数据库中每个表由一组页链的集合组成,每条页链对应表中的一个存储列。
这类数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。现有产品如 Cassandra、HBase、Riak。
2.键值对存储数据库
键值存储的典型数据结构一般为数组链表:先通过Hash算法得出Hashcode,找到数组的某一个位置,然后插入链表。
这类数据库主要会用到一个哈希表,表中有一个特定的键和一个指针指向特定的数据。Key-value模型对于工T系统来说,其优势在于简单、易部署。但是如果数据库管理员只对部分值进行查询或更新的时候,Key-va1ue就显得效率低下了。现有产品如Tokyo Cabinet/Tyrant.Redis、Voldemort、OracleBDB.
3.文档型数据库
文档型数据库同键值对存储数据库类似。文档型数据库的灵感来自于 Lotus Notes 办公软件,而且它同键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许嵌套键值,在处理网页等复杂数据时,文档型数据库比传统键值数据库的查询效率更高。现有产品如CouchDB、MongoDb,国内也有文档型数据库SequoiaDB,已经开源。
4.图数据库
图形结构的数据库同其他采用行列以及刚性结构的SQL数据库不同,它使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要指定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。适合存储通过图进行建模的数据,例如社交网络数据,生物信息网络数据,交通网络数据等。常见的产品有Neo4J、InfoGrid、InfiniteGraph等。目前业界对于NoSQL并没有一个明确的范围和定义,但是它们普遍存在下面一些共同特征:
易扩展:去掉了关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。大数据量,高性能:NoSQL数据库都具有非常高的读写性能,尤其在大数据量下。这得益于它的无关系性,数据库的结构简单。
灵活的数据模型:NoSQL无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式。
高可用:NoSQL在不太影响性能的情况下,就可以方便地实现高可用的架构,有些产品通过复制模型也能实现高可用。
领取专属 10元无门槛券
私享最新 技术干货