我们可以在cassandra中限制一个表只有有限数量的记录或行吗?

时间:2019-01-30 08:51:46

标签: cassandra

我们可以在cassandra中限制一个表只具有有限数量的记录或行吗?如果我们要在一个表中最多插入20行,该怎么办?

2 个答案:

答案 0 :(得分:1)

Cassandra不支持这种操作。这是应用程序中业务逻辑的一部分,应该在应用程序级别完成。

答案 1 :(得分:0)

否,但是您可以在查询上进行PER PARTITION LIMIT,然后定期发出删除操作,以为超出该范围的所有对象创建范围墓碑。即在

CREATE TABLE mytable (
  primary text
  clustering timestamp
  value text
  PRIMARY KEY ((primary), clustering)

您可以SELECT * FROM mytable WHERE primary = 'mykey' PER PARTITION LIMIT 20,然后最后一个具有1548857236000的群集,然后DELETE FROM mytable WHERE primary = 'mykey' and clustering > 1548857236000。对于大多数部件ID,只需发出很少删除的问题(例如每小时一次或每天一次,取决于负载,以减小分区大小)并使用LeveledCompactionStrategy。如果负载足够,请在主键上添加日期组件,例如((primary, yyyyMMdd), clustering),以防止分区中的逻辑删除过多。