如何从 cassandra 或 hbase 中提取 leveldb 类型的数据存储(sstable + memtable)?

Posted

技术标签:

【中文标题】如何从 cassandra 或 hbase 中提取 leveldb 类型的数据存储(sstable + memtable)?【英文标题】:how to extract leveldb type data store (sstable + memtable) from cassandra or hbase? 【发布时间】:2012-05-25 14:37:07 【问题描述】:

LevelDB 是来自 Google 的一个非常有趣的 C++ 数据存储。我正在 Java 世界中寻找类似的东西(坦率地说,这样我可以更好地理解代码,更容易在 Windows 上运行,等等)。

我了解 Hbase 和 Cassandra 也包含相同的基本技术:用于文件存储的 sstable、用于内存存储的 memtable(在排序和写入磁盘之前)、某种压缩、定期压缩等。

是否有任何努力从更大的项目中提取这项技术?我自己已经开始查看代码库(主要是 Cassandra),但这些显然不是微不足道的项目。哪个项目的模块化代码更多?

期待大家的指点!

【问题讨论】:

【参考方案1】:

您似乎不太可能提取这 3 家商店共有的一些通用的、重要的模块。你说得对,这些想法非常相似,但实现(存储文件格式、内存表示、压缩、协调服务等)非常复杂,以至于尝试在像这样的 3 个不同项目之间共享代码会使事情变得更多复杂,不少。

在 Cassandra 和 HBase 之间,从某种意义上说,后者具有更多模块化代码,因为它将大部分功能委托给其他层(HDFS、Zookeeper),而在 Cassandra 中,这一切都在项目内部处理。但即使在 HBase 中,这部分(物理存储格式、压缩算法等)也是与整个系统耦合的,而不是分层的。

如果您正在寻找一种支持不同存储引擎的架构,或者想了解如何处理分布式系统中的分层,请查看 Riak(它确实支持 LevelDB 作为其中之一)它的存储层选项):

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

【讨论】:

感谢您的评论,链接很有趣。我并不是要暗示我计划将这三个项目中的各种模块组合起来。我想知道从 cassandra 或 hbase 中提取 leveldb 类型的功能会有多困难。

以上是关于如何从 cassandra 或 hbase 中提取 leveldb 类型的数据存储(sstable + memtable)?的主要内容,如果未能解决你的问题,请参考以下文章

浅谈hbase和cassandra

HBase 和 Cassandra的浅谈

Cassandra 与 Hbase 的实时数据对比

从 HBase 中提取数据的最快方法是啥

HBase 与 Cassandra 架构对比分析的经验分享

技术热点Cassandra与HBase的大数据对决 谁是胜者?