或者...
如何使用 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] 这里的非规范化是有意义的,因为实际上审计日志是一个历史快照,因此它记录了“事件发生时”的确切对象图