YunTable开发日记(7)- BigTable的功能集

本文是HBase的欧洲传道者LARS GEORAGE的 HBase vs. BigTable Comparison(需要)一文的节选翻译版。

论文中提到的特性

首先,向大家介绍在2006年OSDI大会上发表BigTable论文,也就是《Bigtable: A Distributed Storage System for Structured Data》里面所提到的一些特性:

特性

BigTable

HBase

注释

原子的读写和修改 支持,基于Row的 支持,基于Row的 由于BigTable本身不是关系型数据库,所以它没有事务功能,但是有一个非常相近的机制,就是对一个Row的原子操作。
按照字典顺序对Row排序 支持 支持

和传统的关系型数据库的不同的是,其只支持按照字典顺序(lexicographic order)对Row排序。

支持Block格式存储 支持 支持 每个存储文件,都由一些小的block组成,这样能快速从大的存储文件中读取数据,默认Block的大小为64K。
Block压缩 支持, 基于 column family 支持, 基于 column family BigTable使用BMDiff和Zippy这两种压缩算法。
数据库schema和值的格式 任意 任意 可以是任意字节数组。
访问控制 支持 不支持 BigTable在column family这个层次实现了访问控制。
Cell版本 支持 支持 主要通过Timestamp的形式来实现对Cell版本的控制
批处理写 支持 支持 两个系统都支持批处理写。
脚本工具 支持 不支持 BigTable有Sawzall这个工具来帮助用户快速处理BigTable中的数据。
MapReduce 支持 支持 BigTable和HBase都提供完善的类库和工具来支持MapReduce。
存储系统 GFS HDFS, S3, S3N, EBS BigTable主要运行于Google的GFS上, 而且HBase能支持多种存储系统,只要有相关的驱动或者代理。
文件格式 SSTable HFile 都是Immutable的,也就是写好之后,很少更改的。
内存映射 Yes No BigTable能将存储文件直接映射到内存中。
锁服务 Chubby ZooKeeper 虽然两者功能类似,但在实现机制上稍有不同,原因是ZooKeeper主要通过协调任务来实现锁服务的。
单一Master 不是 HBase最近添加了对多Master的支持,而且通过ZooKeeper来对那个”standby”的节点进行监控和管理。
Tablet的个数 10-1000 10-1000 无论是BigTable,还是HBase,其每个Tablet节点都支持1000个左右的Tablet。
Bloom Filter 支持 支持 用于让系统快速确定这个Region是否存有所需的值。
Write Ahead Log 支持 支持 每个Tablet节点会其所承载的所有的Tablet准备一个Write Ahead Log来转载修改信息。
表1. 论文中提到的特性

新特性

在2009的LADIS大会上,Google院士jeff dean有一个非常精彩的Talk,称为“Design Lessons and Advice from Building Large Scale Distributed Systems”,在这次Talk中他提到了很多BigTable的新特性:

特性

BigTable

HBase

注释

Client隔离 支持 不支持 BigTable内部能服务多个不同的客户,而且能在它们之间保持数据隔离。
Coprocessors 支持 不支持 BigTable能够在Tablet节点上加载代码,这样假设代码依赖的Tablet移动或者被切割,那么代码也会随着那个Tablet而移动。
崩溃(Corruption)的安全性 支持 不支持 BigTable使用CRC校验码来确认数据是不是已经被安全写入。
复制 支持 不支持 HBase现在也在实现这个特性。

表2. 在LADIS 2009大会上的Talk中提到的特性

你可能感兴趣的:(mapreduce,算法,Google,脚本,hbase)