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

时间:2018-07-14 08:37:47

标签: cassandra

我有一个类似集合的表: 它由2个主要列和一个虚拟布尔非主要列组成。 该表已复制。 我在此表中进行了大量写入,并且很多时候该条目已经存在于数据库中。 条目的删除是由于TTL引起的,有时(不是那么频繁)是由于DELETE查询引起的。

将值写入此表的最有效方式是什么?

第一个选项:

只是盲目地写值。

第二个选项:

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

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

1 个答案:

答案 0 :(得分:2)

我会选择选项1,然后调整压缩策略。选项2将为群集增加更多的负载,因为读取总是比写入慢,并且如果在您的情况下,当先前的数据仍处于内存状态时发生插入,则它们将被直接覆盖(因此您也可以考虑调整内存状态)

如果您具有较高的读/写比率,则可以进行分层压缩-可以针对此用例进行更优化。如果比率不是很高,请保留默认的压缩策略。

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

  1. gc_grace_period减小到可接受的值,具体取决于您可以将出现故障的节点恢复多快;
  2. 更改表选项,例如tombstone_compaction_intervaldoc),也许还有unchecked_tombstone_compaction;
  3. 您还可以调整concurrent_compactorscompaction_throughput_mb_per_sec之类的内容,以执行更积极的压缩。