我一直在测试Cassandra来存储观察值。 所有“东西”属于一个或多个报告组:Cassandra sstables累积
CREATE TABLE observations (
group_id int,
actual_time timestamp, /* 1 second granularity */
is_something int, /* 0/1 bool */
thing_id int,
data1 text, /* JSON encoded dict/hash */
data2 text, /* JSON encoded dict/hash */
PRIMARY KEY (group_id, actual_time, thing_id)
)
WITH compaction={'class': 'DateTieredCompactionStrategy',
'tombstone_threshold': '.01'}
AND gc_grace_seconds = 3600;
CREATE INDEX something_index ON observations (is_something);
所有刀片具有TTL完成,之后 “actual_time”本应到期时36小时。某些超出我们控制范围的是我们向我们发送了重复的观测结果 。一些观察结果发送时间接近实际,其他时间延迟了几个小时。
的“something_index”是一个实验,看看我们是否能够在布尔属性片查询 无需创建单独的表,并 似乎工作。
“数据2”是不是目前正在written--是指由 不同的工艺写道:“数据1”被写入,但会被赋予相同的 TTL(基于“actual_time”)。
情况:
三个节点(EC2 m3.xlarge) Datastax AMI-ada2b6c4(美国东部-1) 从Python程序
插入安装使用2015年8月26日 卡桑德拉2.2.0
“cql”模块 (必须启用“thrift”RPC)每三个小时(交错)在每个节点上运行“nodetool repair -pr”。
每小时插入1到4百万行。 我看到数据了大量文件:
$ ls *Data* | wc -l
42150
$ ls | wc -l
337201
查询不会返回过期的条目, 但文件日期早36小时都不会消失!
也许还想看看http://stackoverflow.com/questions/29431217/huge-number-of-sstables-after-adding-server-to-existing-cluster/31347085#31347085 – Aaron