【问题标题】:Cassandra and wide row disk size estimate?Cassandra 和宽行磁盘大小估计?
【发布时间】:2014-09-12 11:39:41
【问题描述】:

我试图估计 Cassandra 宽行中每一列所需的空间量,但我得到的数字非常矛盾。

我有一个非常标准的宽行表来存储一些时间序列数据:

CREATE TABLE raw_data (
   id uuid,
   time timestamp,
   data list<float>,
   PRIMARY KEY (id, time)
);

就我而言,我在数据列表中存储了 20 个浮点数。

Datastax provides 一些用于估计用户数据大小的公式。

regular_total_column_size = column_name_size + column_value_size + 15
row_size = key_size + 23
primary_key_index = number_of_rows * ( 32 + average_key_size )

对于这个表,我们得到以下值:

regular_total_column_size = 8 + 80 + 15 = 103 bytes
row_size = 16 + 23 = 39 bytes
primary_key_index = 276 * ( 32 + 16 ) = 13248 bytes

我最感兴趣的是行的增长方式,因此每列 103 个字节是有趣的。我计算了数据库中的所有样本,最终得到了 29,241,289 个唯一样本。将其相乘,我得到估计的 raw_data 表大小为 3GB。

实际上,我有 4GB 的 压缩 数据,在压缩后由 nodetool cfstats 测量。它报告的压缩比为 0.117。压缩后,它在磁盘上平均每个样本 137 字节。考虑到:

  • 其中只有 88 个字节是用户数据
  • 每个样本多出 34 个字节
  • 这是在放气压缩之后。

所以,我的问题是:如何准确预测 Cassandra 宽行占用的磁盘空间,以及如何最小化总磁盘空间?

我正在运行单个节点,这些测试没有复制。

【问题讨论】:

    标签: cassandra data-modeling cql diskspace


    【解决方案1】:

    这可能是由于压缩策略。通过大小分层压缩,SSTables 将在压缩期间将所需空间增加一倍。对于水平压实,将需要大约 10% 的额外空间。根据压缩策略,您需要考虑使用的额外磁盘空间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-27
      • 2011-05-17
      • 2014-08-15
      • 1970-01-01
      • 2012-09-13
      • 2013-10-15
      • 2013-11-21
      相关资源
      最近更新 更多