如何在Cassandra中实现触发器?

时间:2017-10-19 19:44:44

标签: cassandra cql cassandra-3.0

是否有关于如何逐步实施Cassandra触发器的良好示例或指南?

我正在寻找一些高级的东西,比如在执行INSERT或UPDATE后操纵同一分区中的其他行。

不幸的是文档非常有限,到目前为止我只找到了这些链接:

实施例

假设您希望将日志放入表中,并在达到一定数量的日志条目时对其进行汇总。

CREATE TABLE simple_log (
    id int,
    event_id timeuuid,
    message text,
    PRIMARY KEY(id)
);

INSERT INTO simple_log (id, event_id, message) VALUES (1, now(), 'first');
INSERT INTO simple_log (id, event_id, message)  VALUES (1, now(), 'second');
INSERT INTO simple_log (id, event_id, message)  VALUES (1, now(), 'third');

每当您按ID选择日志顶部时,您应该返回汇总结果:

SELECT * FROM simple_log WHERE id = 1;

 id | event_id                             | message
----+--------------------------------------+---------
  1 | d97f92d1-b5a4-11e7-825c-495e6ea8608a |   first-second-third

1 个答案:

答案 0 :(得分:2)

您可以添加突变以将其他行操纵到突变集合中,如示例中所示。

它和CDC都没有很多关于它的文档,因为它通常建议不要使用它们,除非需要 。使用这样的东西在分布式系统中有很多复杂性,并且通常可以在应用层中更好地推理它。

为什么不在批处理中包含其他突变?特别是在同一个分区中,它可能会更好地工作,并且需要更少的工作,例如保持在所有实例上部署的触发器同步和更新等。