2012-05-25 58 views
2

LevelDB是一個非常有趣的谷歌C++數據存儲。我在Java世界尋找類似的東西(坦率地說,我可以更好地理解代碼,更容易在Windows上運行它等)。如何從cassandra或hbase中提取leveldb類型的數據存儲(sstable + memtable)?

我理解的HBase和卡桑德拉也含有相同的基本技術:對的SSTable文件存儲,memTable中在內存中存儲(將垃圾分類之前並寫入磁盤),某種壓縮,定期壓實等

是否有任何努力從大項目中提取這項技術?我已經開始關注自己的代碼庫(主要是Cassandra),但這些顯然不是無關緊要的項目。哪個項目有更多的模塊化代碼?

期待任何指針!

回答

0

似乎不太可能有一些通用的,非平凡的模塊,您可以提取這些3個商店的共同點。你是對的,這些想法非常相似,但實現(存儲文件格式,內存表示,壓縮,協調服務等)非常複雜,試圖在3個不同的項目之間共享代碼會使事情變得更加複雜並不少。在某種意義上,Cassandra和HBase之間有着更多的模塊化代碼,因爲它將大部分功能委託給其他層(HDFS,Zookeeper),而在Cassandra中,這些都是在項目內部處理的。但即使在HBase中,這部分(物理存儲格式,壓縮算法等)也與整個系統耦合,而不是分層存儲。

如果您正在尋找支持不同存儲引擎的架構,或者想要查看如何在分佈式系統中的分層可能接近不同的視野,看看也處於了Riak(它不支持性LevelDB作爲其存儲層選項之一):

http://wiki.basho.com/LevelDB.html

+0

感謝您的評論中,鏈接很有趣。我並不是想暗示我打算將這三個項目的各個模塊結合起來。我想知道從cassandra或hbase中提取leveldb類型的功能是多麼困難。 – Shahbaz