NoSQL数据库
NoSQL 作为一组迅速崛起的数据存储技术,用于解决关系型数据库在多变的应用场景下的性能限制,目前包含如下几种类型:
- 键值型,如 Redis 或 Riak
- 列型,如 HBase 或 Cassandra
- 文档型,如 MongoDB 或 CouchDB
- 图型,如 Neo4j 或 GraphDB
NoSQL 数据库分类
| 类型 | 部分代表 | 特点 |
|---|---|---|
| 列存储 | Hbase Cassandra Hypertable | 顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。 |
| 文档存储 | MongoDB CouchDB | 文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有机会对某些字段建立索引,实现关系数据库的某些功能。 |
| key-value存储 | Tokyo Cabinet / TyrantBerkeley DB MemcacheDB Redis | 可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能) |
| 图存储 | Neo4J FlockDB | 图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。 |
| 对象存储 | db4o Versant | 通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。 |
| xml数据库 | Berkeley DB XML BaseX | 高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。 |
RDBMS vs NoSQL
RDBMS
- 高度组织化结构化数据
- 结构化查询语言(SQL) (SQL)
- 数据和关系都存储在单独的表中。
- 数据操纵语言,数据定义语言
- 严格的一致性
- 基础事务
NoSQL
- 代表着不仅仅是SQL
- 没有声明性查询语言
- 没有预定义的模式
-键 - 值对存储,列存储,文档存储,图形数据库
- 最终一致性,而非ACID属性
- 非结构化和不可预知的数据
- CAP定理
- 高性能,高可用性和可伸缩性
图数据库简介
在图论中,“图”代表的是一种数据结构,形式上,其实就是“顶点”和“边”的集合,通常具备如下特征:
- 由节点和边构成;
- 节点可以有属性(通常以键值对的方式出现);
- 边可以有方向,并总是有一个开始节点和一个结束节点;
- 边也可以有属性。
图数据库就是利用图的特性来对数据进行存储管理,并对传统图的概念进行了扩展,使得利用事物(即“节点”或“实体”)及事物之间的联系(即“边”或“关系”)来对各类业务场景进行抽象变得更加容易,相对于关系型数据库,它更擅于处理网状的复杂关系。
图数据库有多种实现,它们通常都支持对图数据模型的增、删、改、查(CRUD)方法,并较多地用于事务(OLTP)系统中被应用系统实时访问。图数据库所涉及的核心技术主要包括两层:
- 底层存储;大体上它们可以分为“原生图存储”和“非原生图存储”。原生图存储会针对图的链式提取进行优化,在事务性方面会有较强的保障;非原生图存储,一般会将图数据序列化,然后将数据存储到某种特定的 NoSQL 系统(比如键值型或列型数据库),甚至是其他通用的数据存储中。
- 处理引擎;处理引擎的实现,在一定程序上依赖于底层存储。原生图存储模型通常会使用“免索引邻接”,这通常是指关联节点在数据库里面是物理意义上指向彼此的;而很多采用非原生图存储模型的图数据库系统会选择以分布式的方式实现,它们更适用于大数据量下的联机分析处理(OLAP)。
目前市场上常见的一些图数据库可以参考下图 ,横轴越往右表示其底层存储更偏向原生图的方式,纵轴越往上表示其计算引擎更倾向以原生图的方式来处理数据。

Neo4j
Neo4j 是目前最成熟的图数据库之一,毫无疑问也是最流行的。它无论在事务、性能,还是安全性、可靠性等角度,都能比拟现存最优秀的数据库系统,有些特性甚至更为优秀。下图显示了它在所有图数据库系统中的优势。

Neo4j 提供了对 ACID(原子性、一致性、隔离性、持久性)的完整支持,并且优雅地实现了“免索引邻接”。这使其在处理 N 度关系的时候能够“得心应手”,当伴随着附加的处理条件时,优势尤为明显。
评论列表(0条)