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

将高度重复的数据插入Cassandra的最佳方法,cassandra,Cassandra,我有一套类似桌子的东西: 它由2个主列和一个伪布尔非主列组成。 表被复制。 我大量地写入这个表中,并且通常数据库中已经存在条目。 条目的删除是由于TTL,有时(不经常)是由于删除查询 将值写入此表最有效的方法是什么 第一种选择: 只是盲目地写值 第二种选择: 检查该值是否已存在,并仅在缺少该值时写入 第二种方法要求在每次写入之前再进行一次查找,但可以节省数据库容量,因为它不会将不必要的写入传播到其他副本。我将使用选项1,然后调整压缩策略。选项2会给集群增加更多的负载,因为读总是比写慢,如果在你的

我有一套类似桌子的东西: 它由2个主列和一个伪布尔非主列组成。 表被复制。 我大量地写入这个表中,并且通常数据库中已经存在条目。 条目的删除是由于TTL,有时(不经常)是由于删除查询

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

第一种选择:

只是盲目地写值

第二种选择:

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


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

我将使用选项1,然后调整压缩策略。选项2会给集群增加更多的负载,因为读总是比写慢,如果在你的情况下插入数据发生在以前的数据仍然是MimTabe的时候,那么它们将被直接覆盖(所以你也可以考虑调整MeMeTabe)。 如果您具有较高的读/写比率,则可以使用分层压缩-它可以针对此用例进行更优化。如果比率不是很高,则保留默认的压缩策略

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

  • gc\u grace\u period
    减小到可接受的值,具体取决于您恢复停机节点的速度
  • 更改表格选项,如
    tombstone\u compression\u interval
    (),或者
    取消选中\u tombstone\u compression
  • 您还可以调整诸如,
    并发压缩程序
    &
    压缩吞吐量(mb_/u second)
    之类的内容,以执行更积极的压缩

  • 谢谢你的回复!但请你澄清一下:据我所知,阅读的复杂性是恒定的,而写作的复杂性是O(副本数量),对吗?所以一般来说,你不能说写作比阅读快。这里我说的是吞吐量。读写的复杂性取决于配置的一致性级别(CL)。但对于写入,复杂性是(写入内存+提交日志)*CL,而读取复杂性是(要查看的SSTables的N个)*CL,SSTables中的查找是文件操作,具有更高的延迟。有关如何进行读写的更多详细信息,请参阅DSE Arch指南: