我是 Cassandra 的新手,我想集思广益地在 Cassandra 中存储加权图的时间序列,其中边权重每次都会增加,但也会随着时间而更新。例如,
w_ij(t+1) = w_ij(t)*exp(-dt/tau) + 1
我的第一个镜头涉及两个 CQL v3 表:
首先,我通过连接图的 id 和入射在特定边上的两个节点来创建一个分区键,例如 G-V1-V2。我这样做是为了能够在下面描述的复合键的第二个组件(即时间戳类型)上使用“ORDER BY”指令。将此字符串称为 EID,即“edge id”。
表格1 - 边缘更新的时间序列 - 主键:EID、时间、重量 表 2 - “最后更新时间”和“最后重量”的值 - 主键:开斋节 - 列:时间,重量
在每个滴答声中,我获取并更新存储在表 2 中的时间和权重值。我使用这些值来计算时间增量和新权重。然后我将这些值插入表 1。
这个策略有什么可怕的低效率吗?应该怎么做?我已经知道表 2 的更新过程不是幂等的,可能会导致不一致,但我暂时可以接受。
编辑:我可能会做的一件事是将这两个表合并到一个时间序列表中。