将高度重复的数据插入Cassandra的最佳方式



我有一个类似集合的表:它由2个主列和一个伪布尔非主列组成。表已复制。我在这个表中大量写入,而且这个条目经常已经存在于数据库中。条目的删除是由于TTL,有时(不经常(是由于DELETE查询。

将值写入此表的最高效的方法是什么?

第一种选择:

只是盲目地写价值观。

第二种选择:

检查该值是否已存在,并仅在缺少该值时写入。

第二种方法需要在每次写入之前再进行一次查找,但可以节省数据库容量,因为它不会将不必要的写入传播到其他副本。

我会选择选项1,然后调整压缩策略。选项2会给集群增加更多的负载,因为读取总是比写入慢,如果在您的情况下,当以前的数据仍在memtable中时插入,那么它们将被直接覆盖(因此您也可以考虑调整memtable(。

如果你有高的读/写比率,你可以使用分级压缩——它可以针对这个用例进行更优化。如果比率不是很高,则保留默认的压缩策略。

但在任何情况下,您都需要调整压缩:

  1. gc_grace_period降低到可接受的值,具体取决于恢复关闭节点的速度
  2. 更改表选项,如tombstone_compaction_interval(doc(,可能还有unchecked_tombstone_compaction
  3. 您还可以调整concurrent_compactors&CCD_ 5进行更具攻击性的压实

最新更新