代码之家  ›  专栏  ›  技术社区  ›  simpadjo

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

  •  2
  • simpadjo  · 技术社区  · 6 年前

    我有一张桌子: 它由两个主列和一个伪布尔非主列组成。 表已复制。 我大量地写在这个表中,数据库中的条目经常存在。 由于ttl,有时(不经常)由于delete查询,条目会被删除。

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

    第一种选择:

    只是盲目地写值。

    第二种选择:

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

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

    1 回复  |  直到 6 年前
        1
  •  2
  •   Alex Ott    6 年前

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

    如果你有很高的读/写比率,你可以进行分层压缩-它可以更适合这个用例。如果比率不是很高,则保留默认的压缩策略。

    但无论如何,您需要调整压缩:

    1. 减少 gc_grace_period 达到可接受的值,这取决于您能以多快的速度恢复关闭的节点;
    2. 更改表选项,如 tombstone_compaction_interval ( doc ),也许 unchecked_tombstone_compaction (二)
    3. 你也可以调到像, concurrent_compactors &安培 compaction_throughput_mb_per_sec 以执行更具攻击性的压缩。