nosql数据库解读教程文件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Sequence File
Bigtable之后google发布里以Dremel产品为代表的第二阶段产品,Dremel产品采 用了与Bigtable不同的数据结构,立足实时对于海量数据进行分析,据说在秒 级可以完成PB级别的数据分析和处理,可以做是分布式数据库实时处理的杰作, 其实时处理能力达到令人惊艳的速度。
text
text
text
text text
text
Document存储:Mongodb
• 高性能、易部署、易使用,存储数据非常方便。 • 面向集合存储,易存储对象类型的数据。 • 模式自由。 • 支持动态查询。 • 支持完全索引,包含内部对象。 • 支持查询。 • 支持复制和故障恢复。 • 使用高效的二进制数据存储,包括大型对象(如视频等)。 • 自动处理碎片,以支持云计算层次的扩展性 • Auto sharding • 支持Python,PHP,Ruby,Java,C,C#,Javascript,Perl及C++语言的驱动程
主要包括上述提出的两种文件 类型:
1. HFile, HBase中KeyValue 数据的存储格式,HFile是 Hadoop的二进制格式文件, 实际上StoreFile就是对HFile做 了轻量级包装,即StoreFile底 层就是HFile 2. HLog File,HBase中WAL (Write Ahead Log) 的存储格 式,物理上是Hadoop的
A B C D
Bigtable中使用Bloomfilter查 询一个 SSTable是否包含了特 定行和列的数据。只要少量 的、用于存储Bloomfilter的 内存,显著减少 的磁盘访问
的次数。当应用程序访问不
存在的行或列时,大多数时 候我们都不需要访问硬盘。
储在Hadoop HDFS文件系统上,
懒惰检测机制
不检测item对象是否超时 get时检查item对象是否应该删除
因为优秀,所以不足
• Can’t dump
• 无法备份,重启无法恢复
• Can’t iterate over keys
• 无法查询
• Not persistent
• 没有持久化,重启全部丢失
• Not redundant
nosql数据库解读
无可奈何花落去,似曾相识燕归来
Now
SSDB,hyperdex, SequoiaDB ,oceanbase…
回归本源,最初的目的是什么?
目的?
高性能!高可用!
NOSql:No sql?Not only sql?New Sql?
知彼知己,百战不殆
BerkeleyDB
• 单点故障failover
• No Sessions
目前依然有很多的公司 在使用
Facebook Sina Renren Digg Mixi 。。。
Google三宝列式存储BigTable/HBase
存储 处理 服务管理
BigTable GFS MapReduce chubby
HBase HDFS Hadoop zookeeper
CAP: 1、可用性 完全去中心化,无单点,永远可写。
2、伸缩性 带虚拟机节点的一致性hash:一致 性hash解决扩容/缩容问题,虚拟 节点解决机器异质性问题。
3、可靠性 数据复制多份副本,用向量时钟 (vector clock)解决版本合并问题。 (Cassandra采用的是客户端 timestamp,取最新的timestamp数 据)
4、可配置 平衡性可调,即根据(N,W,R)模 型平衡可用性和一致性(W+R>N ),建议模型参数为(3,2,2)。
牺牲了一致性 高并发下会取到旧数据 需要应用层处理数据合并
不提供任何的数据隔离,只允许 单一的key更新
client
1
10
2
Fra Baidu bibliotek
9
3
8 7
4
5 6
三种风格的Gossip数据同步
Cassandra继承了Dynamo的架构,数据模型是BigTable的ColumnFamily
・ BerkeleyDB没有配置文件,纯api,无需DBA ・ 线程安全的 ・ 支持多种存储格式
1.btree:搜索快,消耗IO 2.hash:大数据量的时候稍微优于btree 3.queue:高并发时选择,提供record级 别的锁。但是记录是定长的 4.recno:可以保存临时文本文件,用于 变长情况,可变记录数情况。适合快速读 写
内存结构图:二维数组链表
slab是一次申请内存的最小单位
每个slab都是1MB
双向 链表
回收空 间指针
key 索引表
剩余空 间指针
chunk填充item后会 有空间浪费
SLAB内存处理机制
提前分配大内存slab 1MB,再进行小对象填充 chunk 避免大量重复的初始化和清理减轻内存管理器 负担 避免频繁malloc/free系统碎片
第三阶段以Spanner数据库技术为代表,Spanner数据 库在可以做到多数据表事 务一致性管理,利用原子时钟(TrueTime)和Paxos协议解决了分布式数据库多 表事务一致性管理的难题,打破的CAP不可 三者兼得的理论神话,使得分布式 数据库技术得到了革命性的进步。
去中心化的代表Dynamo/Cassandra
・ 限制 数据文件最大256TB,单条key和value最 大4g,不能放在nfs和共享盘上
曾经 Lucene的BDB directory和Mysql 的BDB引擎 见证了BerkeleyDB的辉煌
曾经的缓存霸主 Memcache
• memcached由LiveJournal运营人员开发
• memcached是高性能的分布式内存缓存服务器 1. 协议简单 2. 基于libevent:epoll/kqueue 3. 内置内存存储方式:slab/LRU
序, • 社区中也提供了对Erlang 及.NET等平台的驱动程序。 • 文件存储格式为BSON(一种JSON的扩展)
性能测试图:
注:
1.该测试数据为单台数据节点的测试结果
2. 将Mysql作为最简单的Key-value数据库使用与实际差别较大
3. MongoDB的分片优势在该测试中无法体现出来
4.相对于插入,数据更新性能更能体现出差异,不过未在上图中体现
Bigtable之后google发布里以Dremel产品为代表的第二阶段产品,Dremel产品采 用了与Bigtable不同的数据结构,立足实时对于海量数据进行分析,据说在秒 级可以完成PB级别的数据分析和处理,可以做是分布式数据库实时处理的杰作, 其实时处理能力达到令人惊艳的速度。
text
text
text
text text
text
Document存储:Mongodb
• 高性能、易部署、易使用,存储数据非常方便。 • 面向集合存储,易存储对象类型的数据。 • 模式自由。 • 支持动态查询。 • 支持完全索引,包含内部对象。 • 支持查询。 • 支持复制和故障恢复。 • 使用高效的二进制数据存储,包括大型对象(如视频等)。 • 自动处理碎片,以支持云计算层次的扩展性 • Auto sharding • 支持Python,PHP,Ruby,Java,C,C#,Javascript,Perl及C++语言的驱动程
主要包括上述提出的两种文件 类型:
1. HFile, HBase中KeyValue 数据的存储格式,HFile是 Hadoop的二进制格式文件, 实际上StoreFile就是对HFile做 了轻量级包装,即StoreFile底 层就是HFile 2. HLog File,HBase中WAL (Write Ahead Log) 的存储格 式,物理上是Hadoop的
A B C D
Bigtable中使用Bloomfilter查 询一个 SSTable是否包含了特 定行和列的数据。只要少量 的、用于存储Bloomfilter的 内存,显著减少 的磁盘访问
的次数。当应用程序访问不
存在的行或列时,大多数时 候我们都不需要访问硬盘。
储在Hadoop HDFS文件系统上,
懒惰检测机制
不检测item对象是否超时 get时检查item对象是否应该删除
因为优秀,所以不足
• Can’t dump
• 无法备份,重启无法恢复
• Can’t iterate over keys
• 无法查询
• Not persistent
• 没有持久化,重启全部丢失
• Not redundant
nosql数据库解读
无可奈何花落去,似曾相识燕归来
Now
SSDB,hyperdex, SequoiaDB ,oceanbase…
回归本源,最初的目的是什么?
目的?
高性能!高可用!
NOSql:No sql?Not only sql?New Sql?
知彼知己,百战不殆
BerkeleyDB
• 单点故障failover
• No Sessions
目前依然有很多的公司 在使用
Facebook Sina Renren Digg Mixi 。。。
Google三宝列式存储BigTable/HBase
存储 处理 服务管理
BigTable GFS MapReduce chubby
HBase HDFS Hadoop zookeeper
CAP: 1、可用性 完全去中心化,无单点,永远可写。
2、伸缩性 带虚拟机节点的一致性hash:一致 性hash解决扩容/缩容问题,虚拟 节点解决机器异质性问题。
3、可靠性 数据复制多份副本,用向量时钟 (vector clock)解决版本合并问题。 (Cassandra采用的是客户端 timestamp,取最新的timestamp数 据)
4、可配置 平衡性可调,即根据(N,W,R)模 型平衡可用性和一致性(W+R>N ),建议模型参数为(3,2,2)。
牺牲了一致性 高并发下会取到旧数据 需要应用层处理数据合并
不提供任何的数据隔离,只允许 单一的key更新
client
1
10
2
Fra Baidu bibliotek
9
3
8 7
4
5 6
三种风格的Gossip数据同步
Cassandra继承了Dynamo的架构,数据模型是BigTable的ColumnFamily
・ BerkeleyDB没有配置文件,纯api,无需DBA ・ 线程安全的 ・ 支持多种存储格式
1.btree:搜索快,消耗IO 2.hash:大数据量的时候稍微优于btree 3.queue:高并发时选择,提供record级 别的锁。但是记录是定长的 4.recno:可以保存临时文本文件,用于 变长情况,可变记录数情况。适合快速读 写
内存结构图:二维数组链表
slab是一次申请内存的最小单位
每个slab都是1MB
双向 链表
回收空 间指针
key 索引表
剩余空 间指针
chunk填充item后会 有空间浪费
SLAB内存处理机制
提前分配大内存slab 1MB,再进行小对象填充 chunk 避免大量重复的初始化和清理减轻内存管理器 负担 避免频繁malloc/free系统碎片
第三阶段以Spanner数据库技术为代表,Spanner数据 库在可以做到多数据表事 务一致性管理,利用原子时钟(TrueTime)和Paxos协议解决了分布式数据库多 表事务一致性管理的难题,打破的CAP不可 三者兼得的理论神话,使得分布式 数据库技术得到了革命性的进步。
去中心化的代表Dynamo/Cassandra
・ 限制 数据文件最大256TB,单条key和value最 大4g,不能放在nfs和共享盘上
曾经 Lucene的BDB directory和Mysql 的BDB引擎 见证了BerkeleyDB的辉煌
曾经的缓存霸主 Memcache
• memcached由LiveJournal运营人员开发
• memcached是高性能的分布式内存缓存服务器 1. 协议简单 2. 基于libevent:epoll/kqueue 3. 内置内存存储方式:slab/LRU
序, • 社区中也提供了对Erlang 及.NET等平台的驱动程序。 • 文件存储格式为BSON(一种JSON的扩展)
性能测试图:
注:
1.该测试数据为单台数据节点的测试结果
2. 将Mysql作为最简单的Key-value数据库使用与实际差别较大
3. MongoDB的分片优势在该测试中无法体现出来
4.相对于插入,数据更新性能更能体现出差异,不过未在上图中体现