系统架构设计师教程 第6章 6.5 No SQL数据库

6.5 No SQL 数据库 ★★★☆☆

NoSQL 最常见的解释是Non-Relational,Not Only SQL。NoSQL泛指非关系型的数据库,区别于关系数据库,不保证关系数据的 ACID特性。

6.5.1 分类与特点

按照使用的数据结构的类型,NoSQL 数据库分为以下4种类型

1.列式存储数据库

行式数据库即传统的关系型数据库,数据按记录存储,每一条记录的所有属性存储在一行。

列式数据库是按数据库记录的列来组织和存储数据的,数据库中每个表由一组页链的集合组成, 每条页链对应表中的一个存储列。

列式数据库通常是用来应对分布式存储的海量数据。键仍然存在,但指向了多个列。这些列是由列家族来安排的。现有产品如 Cassandra、HBase、Riak。

2.键值对存储数据库

键值存储的典型数据结构一般为数组链表:先通过Hash算法得出Hashcode, 找到数组的某一个位置,然后插入链表。

主要用到一个哈希表,表中有一个特定的键和一个指针指向特定的数据。Key-value模型对于IT系统,优势简单、易部署。但是如果只对部分值进行查询或更新的时候, Key-value就显得效率低下了。

现有产品如Tokyo Cabinet/Tyrant、 Redis、Voldemort、Oracle BDB。

3.文档型数据库

该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许嵌套键值,在处理网页等复杂数据时,文档型数据库比传统键值数据库的查询效率更高。

现有产品如CouchDB、 MongoDb, 国内也有文档型数据库 SequoiaDB, 已经开源。

4.图数据库

图形结构的数据库使用灵活的图形模型,能够扩展到多个服务器上。NoSQL 数据库没有标准的查询语言 (SQL), 因此进行数据库查询需要指定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。 适合存储通过图进行建模的数据,例如社交网络数据,生物信息网络数据,交通网络数据等。

常见的产品有Neo4J、InfoGrid、Infinite Graph等。

NoSQL普遍存在一些共同特征:

易扩展:数据之间无关系,容易扩展。

大数据量,高性能: NoSQL数据库都具有非常高的读写性能,尤其在大数据量下。这得 益于它的无关系性,数据库的结构简单。

灵活的数据模型: NoSQL随时可以存储自定义的数据格式。

高可用: NoSQL在不太影响性能的情况下,就可以方便地实现高可用的架构,有些产品通过复制模型也能实现高可用。

6.5.2 体系框架

NoSQL整体框架分为4层,由下至上分为数据持久层 (Data Persistence)数据分布层 (Data Distribution Model)数据逻辑模型层 (Data Logical Model)接口层 (Interface), 层次之间相辅相成,协调工作。

(1)数据持久层定义了数据的存储形式,主要包括基于内存、硬盘、内存和硬盘接口、订制可插拔4种形式。

(2)数据分布层定义了数据的分布,No SQL可选的机制比较多,主要有3种形式:

CAP支持,可用于水平扩展;

多数据中心支持,可以保证在横 跨多数据中心时也能够平稳运行;

动态部署支持,可以在运行着的集群中动态地添加或删除结点。

(3)数据逻辑层表述了数据的逻辑表现形式。

(4)接口层为上层应用提供了方便的数据调用接口。接 口层提供了5种选择:Rest、Thrift、Map/Reduce、Get/Put、 特定语言API, 使得应用程序和数据库的交互更加方便。

NoSQL 数据库适用情况:

● 数据模型比较简单;

● 需要灵活性更强的IT系统;

● 对数据库性能要求较高;

● 不需要高度的数据一致性;

● 对于给定 key, 比较容易映射复杂值的环境。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值