RocksDB 与卡桑德拉

RocksDB vs Cassandra

MyRocks (MySql) 和 Cassandra 都使用 LSM 架构来存储它们的数据。因此,我使用 MyRocks 作为存储引擎在 MySql 以及 Cassandra 中填充了大约 500 万行。在 Cassandra 中它只需要 1.7 GB 的磁盘 space 而在使用 MyRocks 作为存储引擎的 MySql 中,它需要 19 GB。

我错过了什么吗?两者使用相同的 LSM 机制。但为什么它们的数据大小不同?

更新:

估计跟text栏有关系。我的 Table 结构是 (bigint,bigint,varchar,text)。

但如果我删除文本列,那么:

对这种行为有什么想法吗?

MyRocks 并非 100%。但 Cassandra 是 LSM,也是 Key value store。这意味着如果您的列是 'null',它将不会存储在磁盘上。传统上,RDBMS 仍会消耗一些 space(varchars、空字符指针等),因此这可能会导致您丢失 space.

另外cassandra压缩数据。尝试: ALTER myTable WITH compression = { 'enabled' : false };

以上行为的原因是由于 rocksdb_block_size 设置为 4kb。由于数据块较小,压缩器发现要压缩的数据量较小。将它设置为 16kb 解决了这个问题。现在我得到了与 cassandra 相似的数据大小。