NoSQL非关系型数据库技术和应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
基础理论与架构分类 region中的数据最终将被存放在Hadoop的多副本分布式文
件系统 HDFS 中,且每个值出现一个 region ,使得同一时间 t 内
每个 region 只被 分 配 给 一 台 region 服 务 器 , 就 让 所 有 行 内的 mutation操作都是原子操作,所有的put操作要么完全成功、要 么完全失败,以及通过任何API返回行的内容总是一个完整的 行,最后就使得跨行的mutation操作不是原子操作。
分布式系统、分布式锁、 大部分的协议
Coda(分布式档案系 统)、网络缓存、DNS
1
基础理论与架构分类
表2 CAP理论数据库应用实例及功能分类
选择 一致性+可用性 例子 对应功能分类
MySQL
Vertica
关系型数据库
列存储数据库
BigTable
一致性+分区容忍性 HBase
列存储数据库
列存储数据库
1
基础理论与架构分类 5 )异步复制:和 RAID 存储系统不同的是, NoSQL 中的
复制,往往是基于日志的异步复制。这样,数据就可以尽快地
写入一个节点,而不会被网络传输引起迟延。缺点是并不总是 能保证一致性,这样的方式在出现故障的时候,可能会丢失少 量的数据; 6)BASE:相对于事务严格的 ACID特性,NoSQL数据库
1
基础理论与架构分类 MongoDB的主要特性
1)数据类型丰富。MongoDB是面向文档的数据库,放弃
关系模型的一个主要原因是为了获得更加灵活的扩展性。它是 无模式的,文档的键不会事先定义也不会固定不变,应用层可 以方便地处理新增的键或丢失的键,为开发者变更数据模型提 供极大的便利;
2 ) 功 能 丰 富 。 支 持 辅 助 索 引 、 存 储 JavaScript 和
1
基础理论与架构分类
1
基础理论与架构分类 一个HBase集群通常由一个master和多个region组成,且每
个 region Server 管 理 一 个 或 多 个 由 master 分 配 的 region , 而
master 则 负 责维 护 每 个 region 的 元 信 息 , 以 及 region 和 region Server之间的映射关系。
列数据库是对应并区别于行数据库的概念。
行数据库就是我们所熟知的传统关系型数据库,即数据 按记录存储,每一条记录的所有属性都存储在一起,如果要查 询一条记录的一个属性值,需要先读取整条记录的数据。 而列数据库是按数据库记录的列来组织和存储数据的,
数据库中每个表由一组页链的集合组成,每条页链对应表中的
一个存储列,而该页链中每一页存储的是该列的一个或多个值 。
Bigtable 中的表项可以包含同一数据的不同版本,采用时
间戳进行索引。时间戳是64位整型,既可以由系统赋值也可由 用户指定。为了简化多版本数据的管理,每个列族都有两个设 置参数用于版本的自动回收,用户可以指定保存最近 N 个版本 ,或保留足够新的版本(如最近7天的内容)。
1
基础理论与架构分类 列存储数据库
1
基础理论与架构分类 3)弹性可扩展:可以在系统运行的时候,动态增加或者
删除结点。不需要停机维护,数据可以自动迁移;
4)分区:相对于将数据存放于同一个节点,NoSQL数据 库需要将数据进行分区,将记录分散在多个节点上面。并且通 常分区的同时还要做复制。这样既提高了并行性能,又能保证 没有单点失效的问题;
Webtable使用URL作为行关键字,使用网页的某些属性作为列
名,网页的内容存入 contents 列中,并使用获取该网页的时间 戳标识同一个网页的不同版本。
1
基础理论与架构分类 1)行关键字
行 关 键 字 可 以 是 任 意 字 符 串 , 目 前 最 大 支 持 64KB 。
Bigtable 按照行关键字的字典序组织数据,利用这个特性可以 通过选择合适的行关键字,使数据访问具有良好的局部性。表 的行区间可以动态划分,每个行区间称为一个子表。子表是数 据分布和负载均衡的基本单位,不同的子表可以有不同的大小
Bigtable 是一个稀疏、分布式、持久化存储的多维有序映
射表,表的索引是行关键字、列关键字和时间戳。 Bigtable 中 存储的表项都是未经解析的字节数组,其数据模型如下: (row:string, column:string,time:int64)->string
1
基础理论与架构分类 示例:一个存储了大量网页及其相关信息的表Webtable,
和BASE应该被看作同一范畴内的互相补充品,而不是替代品
。
1
基础理论与架构分类 表3 BASE与ACID的优缺点对比 ACID BASE
高度一致
高度分割化 着重于“提交”
弱一致,仅需要针对性数据
可用性第一位 一般注重
网状事务
弱可用性 较保守
较为激进
注重可用性 更简单
扩展性不强
更快,更具有扩展性
1
点A和节点B无法通信。由于Web提供的这种分布式能力,临时
的分区是一个常见的情况,处理这种情况就属于分区容忍性。
1
基础理论与架构分类
表1 CAP理论应用及实例 选择 一致性+可用性
一致性+分区容忍性 可用性+分区容忍性
特征 2PC缓存验证
乐观锁 冲突解决,乐 观化
实例
单机数据库、集群数据 库、LDAP、xFS
如: CouchDB, MongoDb 。国内也有文档型数据库 SequoiaDB
,已经开源。
1
基础理论与架构分类 MongoDB
MongoDB是10gen公司研发的面向文档的开源的NoSQL数
据库系统,用C++语言编写。它提供一种强大、灵活、可扩展 的数据存储方式。它扩展了关系型数据库的众多功能,如辅助 索引、范围查询和排序。 MongoDB 的功能非常丰富,比如内 置的对MapReduce聚合的支持,以及对地理空间索引的支持。
1
基础理论与架构分类 HBase
Hbase是运行在由多个节点构成的服务集群基础之上,为
TB 级甚至 PB 级别的数据存储提供支持,并为用户提供基于 Row Key的高效查询机制,它是由一个一个Row Key作为唯一 标识,并包含任意多例的一张表来根据存储的数据量以大小被 分割成一个或多个称为 region 的子表.
义表结构。数据中的每条记录都可能有不同的属性和格式,当 插入数据时,并不需要预先定义它们的模式; 2)无共享架构:相对于将所有数据存储的存储区域网络 中的全共享架构,NoSQL往往将数据划分后存储在各个本地服
务器上。因为从本地磁盘读取数据的性能往往好于通过网络传
输读取数据的性能,从而提高了系统的性能;
NoSQL
非关系型数据库技术和应用
CONTENTS
C
目 录
ONTENTS
1
基础理论与架构分类
部署方案与性能分析 发展现状与未来趋势
2
3
CONTENTS
C
目 录
ONTENTS
1
基础理论与架构分类 部署方案与性能分析 发展现状与未来趋势
2
3
1
基础理论与架构分类 NoSQL 数据库是非关系型数据存储的广义定义,它不同
MapReduce等其他聚合工具的独特功能;
不兼容的。如在线购买商品的时候,任何一个人购物的过程都
为一个原子操作,不允许存在两个人同时进行购物的情况。很 明显对于绝大多数在线商城,这个方法并不适用。
1
基础理论与架构分类 BASE思想实际上是CAP理论中AP的衍伸。它通过牺牲高
一致性,保证高可用性和分区容忍性。
BASE 思想的组成有以下 3 个部分:基本可用、软状态、 最终一致性。 BASE 模式指的是一个应用在任意时间首先应该 能完成最基本化的工作(即基本可用),并不需要总是一致( 即软状态),但最终应该是一致(即最终一致性)的。ACID
MongoDB
可用性+分区容忍性 Dynamo
文档型数据库
键值存储数据库
Cassandra
列存储数据库
1
基础理论与架构分类 BASE理论:
传统ACID模式对于数据的属性要求非常高,在分布式系
统中比较难以达到。所以在CAP理论的基础上,提出了BASE 思想,对一致性进行概化处理。要解释BASE思想,首先要对 ACID 有一个了解,因为 BASE 是相对于 DBMS 中的 ACID 所提 出来的新思想。
持久性:在事务完成以后,该事务对数据库所做的更改 便持久地保存在数据库之中,并不会被回滚。
1
基础理论与架构分类 在数据库系统中,事务的ACID属性保证了数据库的一致
性,如银行系统中,付款就是一个事务,从原账户扣除金额以
及向目标账户添加金额,这两个数据库操作的总和构成一个完 整的逻辑过程,为原子操作不可拆分,从而保证了整个系统中 的总金额没有变化。 但是ACID特性对于大型的分布式系统来说,与高性能是
保证的是BASE特性。
1
基础理论与架构分类 NoSQL适用情况:
1)数据模型比较简单;
2)需要灵活性更强的IT系统; 3)对数据库性能要求较高; 4)不需要高度的数据一致性。
1
基础理论与架构分类 CAP理论:
CAP 解释为一致性( consistency )、可用性( availability
)和分区容忍性(partition tolerance)。 一致性:一个数据系统如何处理读写操作的一致性问题 。分布式系统对于一致性的要求为当更新写入操作完成时,其 余读取操作需要及时看到数据的更新;
1
基础理论与架构分类 ACID指的是传统数据库对于数据特性的要求。
原子性:即事务执行作为原子,不可再分离,整个语句
要么执行,要么不执行,不可能停在中间某个环节; 一致性:在事务开始之前和事务结束之后,数据库的完 整性约束没有被破坏; 隔离性:两个事务的执行互不干扰,也不会发生交互,
一个事务不可能看到其他事务运行时中某一时刻的数据;
知,并集成MapReduce ,Jruby的命令外壳,使得HBase避开了
HDFS 只能 append 的限制,将最近更新的数据保存在内存中, 逐步重写数据至新的文件中,并进行智能拆分与合并。
1
基础理论与架构分类 文档型数据库
文档型数据库的灵感是来自于Lotus Notes办公软件的,而
且它同第一种键值存储相类似。该类型的数据模型是版本化的 文档、半结构化的文档以特定的格式存储,例如JSON。 文档型数据库可以看作是键值数据库的升级版,允许之 间嵌套键值。而文档型数据库比键值数据库的查询效率更高,
。
1
基础理论与架构分类 2)列族
列关键字一般都表示一种数据类型,列关键字的集合称
作列族,列族是访问控制的基本单位。存储在同一列族下的数 据属于同一种类型,列族下的数据被压缩在一起保存。数据在 被存储之前必须先创建列族,并且表中的列族不宜过多,通常 几百个,但表中可以有无限多个列。
1
基础理论与架构分类 3)时间戳
于符合 ACID理论的关系型数据库,数据存储不需要固定的表
结构,通常也不存在连接操作。NoSQL数据库不使用传统的关 系数据库模型,而是使用如键值存储数据库、列存储数据库、 文档型数据库、图形数据库等方式存储数据模型。
1
基础理论与架构分类 NoSQL共同特征:
1)不需要预定义模式:不需要事先定义数据模式,预定
1
基础理论与架构分类 进一步地,对于 HBase 的表与 region 表现为:表被动态地
分割成region,且放在一个或多个region服务上,当region随着
增大时,它们会被切分并平均分布在 region服务器上,使得切 分操作接近实时,则表现为从高负载节点迁移走,并且使错误 的 region 节点会重新部署到正常节点上 。 同时, HBase 采用 Zookeeper 协调服务,保存 Hadoop 的集群状态、故障或变更通
1
基础理论与架构分类 可用性:一个系统能够持续不间断使用的问题。严格定
义上的高性能可用性意味着一个系统从设计到实施都应该能够
提供可持续的操作; 分区容忍性:一个系统在提供持续性操作时分区处理的 能力。一旦开始将数据和逻辑分布在不同的节点上,就有形成 分区的风险。假定网线被切断,就形成分区,在不同分区的节
基础理论与架构分类 NoSQL 大致可以分为四类,分别为键值存储数据库、列
存储数据库、文档型数据库和图形数据库。
键值存储数据库 键值存储典型实现的数据结构一般为数组链表:先通过 通过 hash算法得出 hashcode ,找到数组的某一个位置,然后插 入链表的第一个位置。
1
wk.baidu.com
基础理论与架构分类 Bigtable