非关系型数据库种类

非关系型数据库可以分为键值(Key-Value)存储数据库、 列存储(Column-oriented)数据库、 面向文档(Document-Oriented)数据库和图形(Graph)数据库。

键值(Key-Value)存储数据库

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

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

典型产品

  • Memcached
  • Redis
  • MemcacheDB
  • Berke ley DB

列存储(Column-oriented)数据库

列存储数据库将数据存储存在列族(column family)中,一个列族存储经常被一起查询的相关数据。

举个例子,如果我们有一个 Person 类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。

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

典型产品

  • Cassandra
  • HBase

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

文档型数据库的灵感是来自于 Lotus Notes 办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如 JSON

文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。

面向文档数据库会将数据以文档的形式存储。每个文档都是自包含的数据单元,是一系列数据项的集合。

每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。

数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用 XML、JSON 或者 JSONB 等多种形式存储。

典型产品

  • MongDB

  • CouchDB

图形(Graph)数据库

图形数据库允许我们将数据以图的方式存储,实体会被作为顶点,而实体之间的关系则会被作为边。

比如我们有三个实体,Steve Jobs、Apple 和 Next,则会有两个 “Founded by” 的边将 Apple 和 Next 连接到 Steve Jobs。

图形结构的数据库同其他行列以及刚性结构的 SQL 数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。

NoSQL 数据库没有标准的查询语言(SQL),因此进行数据查询需要定制数据模型。许多 NoSQL 数据库都有 REST 的数据接口或者查询 API。

典型产品

  • Neo4J
  • InfoGr id