Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra Skinny vs Wide Row用于时间序列-消耗_Cassandra_Time Series_Consumption - Fatal编程技术网

Cassandra Skinny vs Wide Row用于时间序列-消耗

Cassandra Skinny vs Wide Row用于时间序列-消耗,cassandra,time-series,consumption,Cassandra,Time Series,Consumption,我希望每秒将一个值存储到一个表中。因此,我测试了两种方法。如果我理解正确,数据应该存储在几乎相同的内部 宽行 CREATE TABLE timeseries ( id int, date date, timestamp timestamp, value decimal, PRIMARY KEY ((id, date), timestamp) ) WITH CLUSTERING ORDER BY (timestamp DESC) AND compaction={'class

我希望每秒将一个值存储到一个表中。因此,我测试了两种方法。如果我理解正确,数据应该存储在几乎相同的内部

宽行

CREATE TABLE timeseries (
  id int,
  date date,
  timestamp timestamp,
  value decimal,
  PRIMARY KEY ((id, date), timestamp)
) WITH CLUSTERING ORDER BY (timestamp DESC) AND
  compaction={'class': 'DateTieredCompactionStrategy'} 
   and  compression = { 'sstable_compression' : 'DeflateCompressor' };
  CREATE TABLE timeseries(
    id int,
    date date,
    "0" decimal, "1" decimal,"2" decimal, -- ... 86400 decimal values
                   -- each column index is the second of the day
    PRIMARY KEY ((id, date))
) 
瘦行

CREATE TABLE timeseries (
  id int,
  date date,
  timestamp timestamp,
  value decimal,
  PRIMARY KEY ((id, date), timestamp)
) WITH CLUSTERING ORDER BY (timestamp DESC) AND
  compaction={'class': 'DateTieredCompactionStrategy'} 
   and  compression = { 'sstable_compression' : 'DeflateCompressor' };
  CREATE TABLE timeseries(
    id int,
    date date,
    "0" decimal, "1" decimal,"2" decimal, -- ... 86400 decimal values
                   -- each column index is the second of the day
    PRIMARY KEY ((id, date))
) 
测试:

  • 10个不同的id
  • 100万个值(每个id 100.000)
  • 每个值增加一分钟



在我的测试中,对于100万个值,用于窦房结函数的瘦行方法只消耗一半的存储空间。即使是随机测试也很重要。有人能解释这种行为吗?

这些模式之间的唯一区别是单元格键

宽行模型的示例单元格:

["2017-06-09 15\\:05+0600:value","3",1496999149885944]
          |                 |     |          |
       timestamp         column  value   timestamp
以及“Skinny row”模型的示例单元:

   ["0","3",1497019292686908]
     |   |          | 
  column value   timestamp
您可以清楚地看到宽行模型单元格键是时间戳值和值的列名。对于skinny模型,单元格键仅为列名。


宽行模型的开销是时间戳(8字节)和列名的大小(值)。您可以保持列名较小,而不是使用时间戳,使用int并输入一天中的秒数,就像您的瘦行列名一样。这将节省更多空间。

谢谢。我做了这个测试,并用整数存储了所有的时间戳。结果几乎是一样的。很高兴能更好地理解卡桑德拉。