如何在 Cassandra 中实现触发器?
How to implement trigger in Cassandra?
是否有关于如何逐步实施 Cassandra 触发器的任何好的示例或指南?
我正在寻找更高级的东西,例如在执行 INSERT 或 UPDATE 后操作同一分区中的其他行。
不幸的是文档非常有限,到目前为止我只找到了这些链接:
例子
假设您想将日志放入 table 并在达到一定数量的日志条目时聚合它们。
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');
每当您 select 按 ID 排在首位时,您应该得到一个聚合结果:
SELECT * FROM simple_log WHERE id = 1;
id | event_id | message
----+--------------------------------------+---------
1 | d97f92d1-b5a4-11e7-825c-495e6ea8608a | first-second-third
您可以添加变更以将其他行操作到变更集合中,就像示例中那样。
它和 CDC 都没有大量关于它的文档,因为通常建议不要使用它们,除非 确实 需要。像这样的事情在分布式系统中有很多复杂性,通常可以在您的应用程序层中更好地推理。
为什么不在一个批次中包含其他突变?特别是在同一个分区中,它可能会工作得更好,并且在保持触发器部署在所有实例上同步和更新等方面需要更少的努力。
是否有关于如何逐步实施 Cassandra 触发器的任何好的示例或指南?
我正在寻找更高级的东西,例如在执行 INSERT 或 UPDATE 后操作同一分区中的其他行。
不幸的是文档非常有限,到目前为止我只找到了这些链接:
例子
假设您想将日志放入 table 并在达到一定数量的日志条目时聚合它们。
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');
每当您 select 按 ID 排在首位时,您应该得到一个聚合结果:
SELECT * FROM simple_log WHERE id = 1;
id | event_id | message
----+--------------------------------------+---------
1 | d97f92d1-b5a4-11e7-825c-495e6ea8608a | first-second-third
您可以添加变更以将其他行操作到变更集合中,就像示例中那样。
它和 CDC 都没有大量关于它的文档,因为通常建议不要使用它们,除非 确实 需要。像这样的事情在分布式系统中有很多复杂性,通常可以在您的应用程序层中更好地推理。
为什么不在一个批次中包含其他突变?特别是在同一个分区中,它可能会工作得更好,并且在保持触发器部署在所有实例上同步和更新等方面需要更少的努力。