我想将每秒一个值存储到一个表中。因此,我测试了两个相互对抗的方法。如果我理解正确,数据应该在内部存储几乎相同。
宽排
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 个)
- 每个值增加一分钟
在我的测试中,用于 sinus 函数的瘦行方法仅消耗 100 万个值的一半存储空间。即使是随机测试也很重要。有人可以解释这种行为吗?