Cassandra中的超级列是传统RDBMS中1:n关系的正确模型

时间:2015-02-23 21:05:16

标签: cassandra analytics data-modeling cql3

首先,请原谅我,如果这个问题不适合堆栈溢出 - 我真的不知道在哪里或哪里可以问。

我有以下情况:在事务系统中,我们有一个表,其中包含由用户执行的业务流程。这些过程可能类似于"停用带有ID xzy"的汽车。该过程本身涉及任意任务,执行该过程可能需要也可能不需要执行任务。

现在,在Cassandra数据库中,我们希望设置对进程的监视。也就是说,每天的进程数,打开进程数,已取消进程数以及最重要的进程:进程停止,取消或暂停的步骤是什么。一直到完成一步所花费的时间也是有意义的。

请注意,所有这些流程和步骤都是手动完成的,并在系统中报告。

现在我想知道如何最好地模拟这个。

我正在考虑一个带有进程ID(存储为uuid)的超级列和有关作业/进程本身的信息,以及每个步骤ID(UUID也是列)作为列键的步骤的行。

那会是正确的型号吗?

我也不确定时间值。我有整个过程的开始和结束时间以及每个步骤的开始和结束时间。鉴于这一事实,大多数查询都是基于时间的,例如今天开始的退役工作有多少?",时间价值至关重要。我应该使用二级索引还是一个以时间为列密钥的表更适合?

也许有人可以指导我朝着正确的方向前进,因为我对卡桑德拉来说还是一个新手

亲切的问候,

克里斯

1 个答案:

答案 0 :(得分:0)

你不需要那些超级列(它被删除了btw)。您应该使用群集键。您可以从this response了解它们的工作原理。以下主要内容允许您跟踪每个流程,任务和事件时间的状态:primary key (process_id, task_id, time)。之后,您可以通过process_id或process_id和task_id查询它。