大数据挑战与Nosql数据库技术@H_403_2@
目录
概论@H_403_2@
数据一致性理论@H_403_2@
- CAP
- 最终一致性:
- 因果
- 读自己的写
- 会话
- 单调读
- 时间轴(单调写)
- ACID/BASE
- 一致性实现技术
- Quorum系统NRW策略
- 2PC(缺点:阻塞协议)
- 3PC:引入‘超时’
- 变种:树形2PC 动态2PC
- 时间戳
- Paxos
- 3种角色:提议者(proposer)、批准者(acceptor)、学习者
- 选择唯一的提议:一个批准者选择第一个提议 => 多个批准者进行超过半数(保证了只有1个选中)投票
- 一个批准者可以批准多个提议(使用版本号),只要它们内容相同
- =>如果一个提议被选中,那么以后任何提议者都只能提出相同值的提议(强一致性?)
- 版本号n的‘准备请求’?=> (n,v)提议
- 批准者可以接受版本号为n的提议 iff 它没有响应过版本号大于n的准备请求*
- * 如何让学习者主动获取最新提议?可让学习者充当一个提议者
- * 系统需要选出某个提议者作为唯一的提议者(防止不同的提议者互相竞争用尽版本号资源/死锁)
- p38 ZooKeeper使用这种策略,称为‘领导选取’
- me:真烦,感觉总是会有漏洞,可以使用同步协议吗?
- 向量时钟
存储模型@H_403_2@
- CouchDB用JSON格式存储吗?那它怎么高效索引?
- GraphDB用C#开发?
分区与放置策略@H_403_2@
- 分区:范围(基于比较操作?)、列表(基于离散的值,集合?)、Hash(某种非线性映射?怎么保证均匀分布?)
- 放置:顺序、随机
- 一致性Hash:引入‘虚拟节点’解决LB
- 所谓的‘虚拟环’可以理解为Hash值经过了模运算?
- 实际上,‘虚拟节点’与物理节点之间可以采用(固定的?)非线性映射,只要能够适应实际的数据即可
海量数据处理@H_403_2@
- MaReduce
- MS Dryad
- Cosmos
- SCOPE
- DryadLINQ
复制与容错@H_403_2@
- 海量数据的复制策略
- 海量数据的故障发现与处理
- Dynamo:Hinted Handoff?
数据压缩@H_403_2@
- LZO
缓存@H_403_2@
key-value@H_403_2@
- redis
- v1.2:有序集合,ZRANGE
- LinkedIn的Voldemort*
列向@H_403_2@
- BigTable
- Hypertable
- Hyperspace(~Chubby)
- RangeServer
- DFS Broker
- 只能按主键查询 => 索引:再建一张表
- HQL
- Cassandra
- 一致性Hash:Token、Range、Partitioner
- Gossip协议
- 备份机制:机架感知
- 读写机制:0 ANY 1 QUORUM ALL
文档@H_403_2@
- CouchDB
- MongoDB
图@H_403_2@
- Neo4j
- p257 图遍历的速度是常数,和图的规模无关?
GraphDBC#写的就算了- OrientDB(文档+图?)
基于Hadoop@H_403_2@
- HBase
- Hive
- Pig
Newsql@H_403_2@
分布式缓存@H_403_2@
- Memcached
- MS Velocity
@H_502_379@企业应用@H_403_2@
- Facebook对HBase的使用
- 淘宝OceanBase
怎么感觉好像以前看过