Google BigTable阅读笔记(四)

6.优化
为了达到对用户的高性能、高可用、高可靠性要求,做了如下优化:
(1)局部性分组(locality groups)
为了提高访问效率,通常不会一起访问的列族分割成不同的局部性分组,例如网页、网页元数据。
(2)压缩(compression)
压缩的目的是减少存储空间;
(3)缓存(Caching)
(4)bloom filter优化
bloom filter是一个经典数据结构:它能快速准备的判断一个元素不在一个集合中。
Google用它来优化判断SSTable的位置。
(5)日志提交实现
追加日志;
日志关键字排序;
(6)快速恢复
子表从一个子表服务器转移到另一个子表服务器时,必须先做一次最小化压缩;
这样做的好处是,新子表服务器装载子表时不需要从日志中进行恢复。
(7)不变性
SSTable是固化到磁盘上的,因此其访问无需同步;
删除也可以通过标记完成;

7.经验教训
(1)任何错误随时都可能发生:网络中断、协议错误、内存数据顺滑、时钟偏差、网络分区;
(2)添加特性需要慎重:分行事务真的需要么?
(3)监控尤其重要;
(4)简介的设计和编码会给维护和调试带来巨大的帮助;

评论关闭。