【问题标题】:How can I optimize a Cassandra queue-like column family?如何优化 Cassandra 类似队列的列族?
【发布时间】:2016-09-07 19:38:54
【问题描述】:

我有一个类似队列的列族,大约每小时更新一次。几个小时或一天后,cassandra 有很多读取超时。

我已经尝试过了,但还没有得到结果:gc_grace_seconds = 0 并使用 LeveledCompaction。

或者你会推荐 datetieredcompactionstrategy 还是有比这两个更好的策略?

如果我不能解决这个问题,我正在考虑切换到另一个数据库,你认为有必要吗?

感谢您的回复。

【问题讨论】:

  • 你能用一些例子来描述你的数据吗?我不确定我得到什么是列族之类的队列
  • 类队列数据集datastax.com/dev/blog/…
  • 我还没有加载页面,但在标题中它说反模式,所以我猜它不好
  • 你的文章并不能真正帮助我理解你做了什么,所以如果你能解释数据结构等等,那会很有帮助

标签: cassandra datastax datastax-enterprise


【解决方案1】:

您所做的是anti-pattern,并且有很多与之相关的问题需要指出。

也就是说,您确实希望控制墓碑,因为您越来越多地导致大量 GC 问题并增加读取延迟(必须从磁盘读取大量数据才能读取空队列)。由于默认的tombstone_compaction_interval,您可能无法从 gc_grace 设置为零中受益。

我建议您更新您的 compaction strategy 以提供帮助:

ALTER TABLE footable WITH
  compaction = {'class': 'LeveledCompactionStrategy', 
    'sstable_size_in_mb': '256mb',
    'tombstone_compaction_interval': '1',
    'unchecked_tombstone_compaction': 'true',
    'tombstone_threshold': '0.05'} AND 
  gc_grace_seconds = 0

请记住,更激进的 tombstone 删除可能会导致删除“丢失”。真的,如果可能的话,您应该考虑更新您的应用程序以使用更合适的东西。

【讨论】:

  • 感谢您的好回答。例如,您认为更合适的解决方案是什么?
  • akka、kafka、rabbitmq,这真的取决于您的用例以及您的开发/运营团队的其他成员对什么感到满意。
  • 我的作业队列不是先进先出队列,每个作业都有到期时间。因此,我想在正确的时间开始工作。你认为什么适合这个任务?找不到支持这一点的 kafka、akka 或 abbitqm,但也许有解决方案。谢谢
  • 我也认为即使使用 Kafka 也可能会出现同样的问题。
猜你喜欢
  • 1970-01-01
  • 2014-11-23
  • 2013-01-24
  • 1970-01-01
  • 2013-09-18
  • 2020-05-28
  • 1970-01-01
  • 2014-05-05
  • 1970-01-01
相关资源
最近更新 更多