mysql - RocksDB 与 Cassandra

标签 mysql cassandra nosql mariadb rocksdb

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

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

更新:

我猜它与文本列有关。我的表结构是(bigint、bigint、varchar、文本)。

  • 填充的行数:300 000
  • 在 MyRocks 中数据大小为 185MB
  • 在 Cassandra 中 - 13 MB。

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

  • MyRocks - 21.6 MB
  • Cassandra - 11 MB

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

最佳答案

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

关于mysql - RocksDB 与 Cassandra ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47075892/

相关文章:

.net - 具有 .NET XML 支持的嵌入式 DBMS?

php - 如何根据传递的变量发布数据

java - JDBC - 通信错误(MySQL + Netbeans)

cassandra - Cassandra 节点负载高

node.js - 他们有什么方法可以从 Node js进行 "stratio cassandra-lucene-index"查询吗

content-management-system - 使用 Clojure 进行 Web 开发的 SQL 与 NO-SQL

RocksDB 的静态加密

php - 为什么我的 MySQL BETWEEN 运算符不起作用?

mysql - SQL循环遍历数据库表

cassandra - 从 Cassandra 获取给定时间戳范围的记录