非关系型数据库种类

本文介绍非关系型数据库的分类。

(1)健值存储数据库

健值数据库就类似传统语言中使用的哈希表。可以通过key来添加、查询或者删除数据,因为使用key主键访问,所以会获得很高的性能及扩展性。

健值(key-value)数据库主要是使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。key-value模型对于IT系统来说的优势在于简单、易部署、高并发。

典型产品:Memcached、Redis、MemcacheDB、BerkeleyDB

(2)列存储(Column-oriented)数据库

列存储数据库将数据存储在列族(column-family)中,一个列族存储经常被一起查询的相关数据。举个例子,如果我们有一个Person类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。

这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。

典型产品:Cassandra,HBase

(3)面向文档(Document-Oriented)数据库

文档性数据库的灵感是来自于Lotus-Notes办公软件的,而且它同第一种健值存储相类似。该类型的数据模型是版本话的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是健值数据库的升级版,允许之间嵌套健值。而且文档型数据库比健值数据库的查询效率更高。

面向文档数据库会将数据以文档的形式存储。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名词与相应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或者JSONB等多种形式存储。

典型产品:MongoDB、CouchDB

(4)图形(Graph)数据库

图形数据库允许我们将数据以图的方式存储。实体会被作为顶点,而实体之间的关系则会被作为边。比如我们有三个实体,Steve-Jobs、Apple和Next,则会有两个“Founded bv”的边将Apple和Next连接到Steve-Jobs。

图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。

典型产品:Neo4J、InfoGrid

标签: none