VCNC / haeinsa

Haeinsa is linearly scalable multi-row, multi-table transaction library for HBase
Apache License 2.0
158 stars 42 forks source link

Support Cloud BigTable of Google Cloud Platform #40

Open eincs opened 9 years ago

eincs commented 9 years ago

Google announced Cloud BigTable which support subset of HBase APIs: http://googlecloudplatform.blogspot.kr/2015/05/introducing-Google-Cloud-Bigtable.html

Cloud BigTable do not support some HBase APIs, such as Coprocessors, Admin and so on: https://cloud.google.com/bigtable/docs/hbase-differences

Haeinsa is likely to support Cloud BigTable, since Haeinsa do not use Coprocessors. (Unlike other libraries implementing transaction on HBase)

But, there is problem:

Deleting a specific version of a column based on its timestamp is not supported.
The following methods in the class org.apache.hadoop.hbase.client.Delete are not supported:

new Delete(byte[] row, long timestamp)
addColumn(byte[] family, byte[] qualifier)
addFamily(byte[] family, long timestamp)
addFamilyVersion(byte[] family, long timestamp)

Since Haeinsa depends on deleting a specific version of a column based on its timestamp, this problem must be solved to Haeinsa to support Cloud BigTable.

This problem might be able to solved by using something tombstone mechanism, rather than deleting column by specific version.

eincs commented 9 years ago

One more problem: ColumnRangeFilter in Cloud BigtTAble only supports a single column family. This is problem when executing scan with transaction. This can be solved by runing multiple scan consequently and merging results.