0

或者...

如何使用 cassandra 记录我们的审计跟踪?

我有以下关系模型,我用它作为实验的基础,看看我们是否可以使用 Cassandra 来存储数亿可查询的行。

| datetime | planet | continent | country | state | <...> | street | who_id | who_name | msg | p1 | p2 | p3 |

这些实体中的任何一个都可以生成审计日志条目。此外,一个低级条目将存储其祖先的所有参考资料;因此,基于高级实体的查找将返回其下方发生的所有内容。[1] 使用 PostgreSQL,我们将有大量空的密集行:Cassandra 的一个好处是稀疏行。(基于大陆的日志条目没有街道列 NULL)。目前有 25 个实体具有各种排列的关系。

我们还希望在事件发生时保留对象图中实体的名称。

我以为我必须掌握数据模型,并认为我会像这样对其进行建模。

对关系链接使用任意复合列。

| (row key)        | planet:1 | continent:101 | country:44 | who:4 | msg             | p1 | p2 | p3   |  
| COUNTRY:TimeUUID | ---------+---------------+------------+-------+-----------------+----+----+------| 
|                  |  "earth" | "europe"      | " UK"      | "Rob" | "*it happnzd!!" | 1  | 5  | true | 

我的目标是能够搜索 who:4 并获取他们的所有更改。同样,抓取具有 planet:1 的行 - 显示地球上发生的所有变化。

实体链接列是动态的(或者至少我是这么认为的)它们将用于奇怪而奇妙的组合。它认为不必预先指定它们是一个福音,并且通过使用复合类型的列名,可以查询。

  • 答:我仍然不确定这是否适用于任何口味的 cassandra。
  • B. 我不知道如何在 CQL3 中解决这种情况。任何帮助将不胜感激。
  • C. 我应该使用/关心 CQL 吗?(3)?CQL3 是未来还是节俭/pelops 仍然是面向未来的方式?

12 个月前 - 我读到了有关 Cassandra 的文章并买了几本关于该主题的书。当我阅读它们并开始一个可能受益的项目时,世界已经发生了变化,我在精神上挣扎的东西被抛弃了,转而使用看起来像 SQL 的东西。所以现在我也很困惑。

[1] 这里的非规范化是有意义的,因为实际上审计日志是一个历史快照,因此它记录了“事件发生时”的确切对象图

4

1 回答 1

0

我相信空值在 Cassandra 中是免费的。也就是说,如果一行中的一列是 NULL,则不是通过记录某种“空标志”来存储的。相反,该列根本没有存储任何内容。因此,具有许多大部分为空的列的非规范化模式并不昂贵。

于 2013-07-05T23:22:11.483 回答