没有合适的资源?快使用搜索试试~ 我知道了~
NoSQL,指的是非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。
资源推荐
资源详情
资源评论
http://blog.sina.com.cn/mpl398235717
NoSQL 数据库学习教程
本文档由 整理发布。
1 序
2 思想篇
2
2 最终一致性
2 变体
2
2 其他
2
的五分钟法则
2 不要删除数据
2
是硬盘 硬盘是磁带
2
定律和
定律
2 万兆以太网
3 手段篇
3 一致性哈希
3 亚马逊的现状
3 算法的选择
3 !"#
3 $%!&
3 $!%
3 '
3 (%)!%!%*
3 (%!)!%!%*
3 %!&%!%%
3 +
3 背景
3 ,-)
3 %%+%
3 -',%%%
3 存储实现
3 节点变化
3 列存
3 描述
3 特点
4 软件篇
4 亚数据库
4 %%
4 特点
4 内存分配
4 缓存策略
4 缓存数据库查询
4 数据冗余与故障预防
4 %%
客户端( )
4 缓存式的
#%.
应用程序架构
4 性能测试
4 .%
4 %% 和 .% 在功能上一样吗 /
4 列存系列
4 -
之
-.%
4 耶鲁大学之
-,
4 !%%
http://blog.sina.com.cn/mpl398235717
http://blog.sina.com.cn/mpl398235717
4 0%&
之
!
4 !
特点
4 1%2%
4 2 ( 0 )
4 1%2
4
4 %!
4 !'
4 存储
4
4 '%
之
').%
4 3
之
"4)
4 特点
4 "4)
实现
4 %!5%6%%!' 记录级别主节点
4 "4)
的结构
4 ).%
寻址与切分
4 #!%
调用示意图
4 "4)
感悟
4 微软之
7
数据服务
4 非云服务竞争者
4 文档存储
4 ,
4 特性
4 &
4 ',
4 )%!!!%
4 )!,
4 1%2$%)% 存储
4 8
之
%,
4 !%
4 %
4 !
4 )&2.%)2!
4 )
4 %
4 %!&%2,
4 %%,
4 %
4 7'
4 -%!,
4 0!%
4 最终一致性
1%2$%
存储
4 8
之
,2
4 功能特色
4 架构特色
4 %,
4 简介
4 更新
4 特性
4 性能
4 "%!
4 两个设计上的
)
4 $%!
4 ,2%
http://blog.sina.com.cn/mpl398235717
http://blog.sina.com.cn/mpl398235717
4 1
4 未分类
4 &2%
4 ,!88%
4 比较
4 可扩展性
4 数据和查询模型
4 持久化设计
5 应用篇
5 %2 架构经验
5 淘宝架构经验
5 0&!
架构经验
5 )%!
运维经验
5 运维经验
5 %!
5 配置管理
5 ,!&%
5 进程管理
5 硬件
5 代码协同经验
5 %6%
制度
5 部署管理
5 团队沟通
5 %
5 云计算架构
5 反模式
5 单点失败( '%0!% )
5 同步调用
5 不具备回滚能力
5 不记录日志
5 无切分的数据库
5 无切分的应用
5 将伸缩性依赖于第三方厂商
5 7
5 7
报表产品最大的难点在哪里?
5 " 7
们背后的共有原则
5 假设失效是必然发生的
5 对数据进行分区
5 保存同一数据的多个副本
5 动态伸缩
5 查询支持
5 使用 %% 处理汇聚
5 基于磁盘的和内存中的实现
5 仅仅是炒作 /
6 附
6 感谢
6 版本志
6 引用
序
日前国内没有一套比较完整的 " 7 数据库资料,有很多先驱整理发表了很多,但不是很系统。
不材尝试着将各家的资料整合一下,并书写了一些自己的见解。
本书写了一些目前的 "9 的一些主要技术,算法和思想。同时列举了大量的现有的数据库实例。
http://blog.sina.com.cn/mpl398235717
http://blog.sina.com.cn/mpl398235717
读完全篇,相信读者会对 " 7 数据库了解个大概。
另外我还准备开发一个开源内存数据库 '+2.本书也是为这个数据库提供一些架构资料。
思想篇
, 和最终一致性是 " 7 数据库存在的三大基石。而五分钟法则是内存数据存储了理
论依据。这个是一切的源头。
CAP
C:
Consistency 一致性
A:
Availability 可用
性(指的是快速获取数
据)
P: Tolerance
of network
Partition 分区容忍
性(分布式)
:; 年前,!!%%! 教
授指出了著名的 理论,后来 %.%!和 "22 两人证明了 理论的正确性。
理论告诉我们,一个分布式系统不可能满足一致性,可用性和分区容错性这三个需求,最多只
能同时满足两个。
熊掌与鱼不可兼得也。关注的是一致性,那么您就需要处理因为系统不可用而导致的写操作失败的
情况,而如果您关注的是可用性,那么您应该知道系统的 !% 操作可能不能精确的读取到 !%
操作写入的最新值。因此系统的关注点不同,相应的采用的策略也是不一样的,只有真正的理解了
系统的需求,才有可能利用好 理论。
作为架构师,一般有两个方向来利用 理论
1 &%256% 存储,如 8%,2 等,可根据 三原则灵活选择不同倾向的数据
库产品。
2 领域模型 <分布式缓存 <存储 ( => 和 "9 运动),可根据 三原则结合自己项
目定制灵活的分布式方案,难度高。
我准备提供第三种方案:实现可以配置 的数据库,动态调配 。
:传统关系数据库
:&%256% 数据库
而对大型网站,可用性与分区容忍性优先级要高于数据一致性,一般会尽量朝着 、的方向设计,
然后通过其它手段保证对于一致性的商务需求。架构设计师不要精力浪费在如何设计能满足三者的
完美分布式系统,而是应该进行取舍。
http://blog.sina.com.cn/mpl398235717
http://blog.sina.com.cn/mpl398235717
不同数据对于一致性的要求是不同的。举例来讲,用户评论对不一致是不敏感的,可以容忍相对较
长时间的不一致,这种不一致并不会影响交易和用户体验。而产品价格数据则是非常敏感的,通常
不能容忍超过 :; 秒的价格不一致。
理论的证明:!%%!?)%!%
最终一致性
一言以蔽之:过程松,结果紧,最终结果必须保持一致性
为了更好的描述客户端一致性,我们通过以下的场景来进行,这个场景中包括三个组成部分:
存储系统
存储系统可以理解为一个黑盒子,它为我们提供了可用性和持久性的保证。
!%
!% 主要实现从存储系统 !% 和 !% 操作
!%和 !%
!% 和 是独立于 ,并且 和 也相互独立的,它们同时也实现对存储系统的 !% 和
!% 操作。
下面以上面的场景来描述下不同程度的一致性:
强一致性
强一致性(即时一致性) 假如 先写入了一个值到存储系统,存储系统保证后续 的读取操
作都将返回最新值
弱一致性
假如 先写入了一个值到存储系统,存储系统不能保证后续 的读取操作能读取到最新值。此
种情况下有一个“不一致性窗口”的概念,它特指从 写入值,到后续操作 读取到最新值这一
段时间。
最终一致性
最终一致性是弱一致性的一种特例。假如 首先 !% 了一个值到存储系统,存储系统保证如果在
后续读取之前没有其它写操作更新同样的值的话,最终所有的读取操作都会读取到最 写入
的最新值。此种情况下,如果没有失败发生的话,“不一致性窗口”的大小依赖于以下的几个因素:
交互延迟,系统的负载,以及复制技术中 !% 的个数(这个可以理解为 %!6% 模式中,
6% 的个数),最终一致性方面最出名的系统可以说是 ," 系统,当更新一个域名的 以后,
根据配置策略以及缓存控制策略的不同,最终所有的客户都会看到最新的值。
变体
%2(因果一致性)
如果 !% 通知 !% 它已经更新了数据,那么 !% 的后续读取操作则读取 写
入的最新值,而与 没有因果关系的 则可以最终一致性。
%52!5!%%2
如果 !% 写入了最新的值,那么 !% 的后续操作都会读取到最新值。但是其它用户
可能要过一会才可以看到。
%%2
http://blog.sina.com.cn/mpl398235717
剩余63页未读,继续阅读
资源评论
anlovejing
- 粉丝: 2
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功