2

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

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

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

期待大家的指点!

4

1 回答 1

0

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

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

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

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

于 2012-05-25T15:15:37.457 回答