Cassandra CQL3触发器实现

Cassandra CQL3触发器实现,cassandra,cql3,Cassandra,Cql3,我正在尝试为C*实现一个触发器。在这个特定的案例中,对触发器的需求确实超出了这个问题的范围,我认为我可以使用它来提供物化视图,以支持我的数据的一个不常见的用例 我正在使用触发器查看的表具有复合行键和列键。大概是这样的: CREATE TABLE mytable ( uid uuid, d_id blob, a_id uuid, cname ascii, cl_id blob, e_id blob, <

我正在尝试为C*实现一个触发器。在这个特定的案例中,对触发器的需求确实超出了这个问题的范围,我认为我可以使用它来提供物化视图,以支持我的数据的一个不常见的用例

我正在使用触发器查看的表具有复合行键和列键。大概是这样的:

CREATE TABLE mytable (
    uid     uuid,
    d_id    blob,
    a_id    uuid,
    cname   ascii,
    cl_id   blob,
    e_id    blob,
    <some more fields>
PRIMARY KEY ((uid, d_id, a_id, cname), cl_id, e_id)
...
创建表mytable(
uid,
d_id blob,
a_id uuid,
cname ascii,
cl_id blob,
e_id blob,
主键(uid、d\u id、a\u id、cname)、cl\u id、e\u id)
...
因此,在我的触发器代码中,我需要分解数据的行键和列键。此外,我想用触发器将一些值写入另一个(CQL)表中,这意味着从集群键值生成适当的复合行键和列名


最合适和最安全的方法是什么?我正在尝试使用CompositeType来分解原始行键。我应该使用哪种方法作为列名?也许有人可以向我介绍使用低级Cassandra API写入CQL3表的更全面的代码示例?我认为这不是正确的处理方法但是触发器只能处理低级API。

分解复合键的工作代码在这里。


请询问您是否需要进一步的澄清。

我想我已经成功地让触发器工作了,它产生的内容可以通过CQL查询。我不得不查看UpdateStatement和ModificationStatement实现以获得一些想法,但这或多或少是清楚的。我希望CQL3/Cassandra开发人员能够制作用于生成muta列表的API一个更清晰的语句(或者它是可用的,我缺少了什么?)。它允许在触发器中创建一个准备好的语句,然后只提供参数并获取突变列表:)我还认为,如果我需要提取2-3个或更多的组件,那么调用
CompositeType.extractComponent
是没有效率的——它每次都解析整个键。是否有更优雅的方法(无需从CompositeType复制代码)一次性获得所有复合类型组件?