一、概述Hbase是目前比較火的列存儲數(shù)據(jù)庫,由于Hbase是用Java寫的,因此它原生地提供了Java接口,對非Java程序人員,怎么辦呢?幸好它提供了thrift接口服務(wù)器,因此也可以采用其他語言來編寫Hbase的客戶端,本文即是Hbase C++接口的介紹。目前的Hbase(0.94.11,本文即基于此版本)有兩套thrift接口(可以叫thrift1和thrift2),它們并不兼容(隨意性太強,這可能是所有開源軟件都具有的問題)。根據(jù)官方文檔,thrift1很可能被拋棄,但網(wǎng)上的文章基本是介紹thrift1的,本文則主要介紹thrift2。 要使用Hbase的thrift接口,必須將它的服務(wù)啟動,命令行為: [plain] view plaincopy
二、thrift1與thrift2的簡單比較兩個版本的thrift文件位于如下位置,[plain] view plaincopy
thrift1的文件有24K左右,而thrift2只有12K左右,看來新版做了大量的簡化。 命名空間上,新版都將thrift改為thrift2,以示區(qū)別。下表是thrift和thrift2的區(qū)別,可以看出,二者真的差別挺大,特別是服務(wù)中的方法,thrift2做了簡化與合成,并把DDL有關(guān)的內(nèi)容去掉了,關(guān)于這些結(jié)構(gòu)、服務(wù)的具體意義,請參閱thrift文件中的注釋,下文將詳細列出。
三、thrift2接口客戶端生成文件包含6個文件hbase_constants.cpp/.h、 hbase_types.cpp/.h、THBaseService.cpp/.h,結(jié)構(gòu)的定義都在hbase_types中,服務(wù)方法的實現(xiàn)在THBaseService中(關(guān)于這幾個文件的詳細說明,見作者其他博文)。由于我們通常關(guān)心數(shù)據(jù)的查、增、刪(對Hbase來說,改是增加一個新“版本”),因此下面的討論只圍繞這些操作展開。 四、thrift2接口主要結(jié)構(gòu)
五、thrift2接口service函數(shù)
|
|