当前位置: 首页 > 知识库问答 >
问题:

如何正确设置cassandra事件存储表结构

何星鹏
2023-03-14

我是Cassandra数据库的初学者。我准备了事件存储表的示例,如下所示:

CREATE TABLE IF NOT EXISTS eventstore.Event(
                                Id uuid, 
                                Data text, 
                                Version int,
                                AggregateId uuid,
                                EventIdentity uuid,
                                Date timestamp,
                                  PRIMARY KEY (AggregateId, Version)
                                ) WITH CLUSTERING ORDER BY (Version ASC)

哪里:

身份证-

数据-

版本-

聚合ID-

事件身份-

日期-

我不确定我的主键是否正确(Aggregate Id,版本)以及按版本聚类。我想知道我的表是否会被正确分区。Aggregate Id分区,其中包含按版本排序的此聚合的所有事件。

共有1个答案

谷梁嘉悦
2023-03-14

按聚合进行分区 Id,其中包含按版本排序的此聚合的所有事件。

如果这是您的分区目标,那么您已经正确配置了您的PRIMARY KEY。我唯一要做的添加是围绕以下语句:

身份证-

如果你真的想确保唯一性(如果聚合事件可能共享版本),我会在PRIMARY KEY定义的末尾添加你的ID:

PRIMARY KEY (AggregateId, Version, Id)

两个后续问题:

1) 您预期的查询模式是什么?如果您的<code>WHERE</code>子句中始终包含<code>AggregateId</code>和/或<code>Version</code>,那么您应该没事了。如果没有,您可能需要重新考虑PK定义。

2)< code > aggregate id :< code > Version 的比值是多少?您需要确保分区不会无限制地增长,并注意Cassandra的每个分区20亿个单元的限制。

但总的来说,你似乎走对了方向。

 类似资料:
  • 我想尝试使用Cassandra作为事件源应用程序中的事件存储。我对事件存储的要求非常简单。事件“模式”应该是这样的: id:聚合根实体的id data:序列化的事件数据(例如JSON) 时间戳:事件发生时 sequence_number:事件的独特版本 我对卡桑德拉完全陌生,所以请原谅我对即将写的东西的无知。我只有两个查询,我想对此数据运行。 为我提供给定聚合根 ID 的所有事件 如果序列号为 我

  • 这很可能是我们自己的缺陷(可能是我们的bean配置Kafkapublisher/EventProcessorConfigurer),我们将解决这个问题,但在您看来,更大的问题是,是否可以让Cassandra与Axon一起工作。我记得在google groups论坛上看到一些帖子说,由于性能问题,没有考虑对Cassandra的支持。我们希望确保我们不会投资于那些将是一场噩梦或根本不是一个好的解决方案

  • 我想使用S3托管通过Kotlin Spring Boot应用程序上载的文件。我按照说明使用了各种其他文档,并尝试了一些解决stackoverflow上类似问题的方法。我总是收到403错误。如何设置S3和IAM以便上载文件?我如何找出问题所在?任何帮助都将不胜感激。 我已经激活了访问日志记录,这需要很长时间,而且还没有对我有太大帮助,特别是因为生成日志需要45分钟。忽略状态为200的响应,日志中会出

  • 问题内容: 我正在使用JasperReports通过Java动态创建报告。我的图像表达(图像路径)有问题。这就是我现在通过的方式: 它工作正常,但是如果更改MyProgram的位置,则还必须更改表达式中的路径。我尝试将表达式设置为:, 但出现“ 在../images/logo.png找不到字节数据 ”的错误。任何帮助,将不胜感激。 问题答案: 您可以做几件事。 一种是在报表中手动添加一个称为Pro

  • 问题内容: 我正在尝试运行一个非常小的JPA + SDN(Spring Data Neo4j)跨存储项目,并试图演示使用JPA存储库调用保存部分实体将在Neo4j中创建一个相应的节点。 我遵循了在SO,Google和Spring的网站上可以找到的指示/建议,但目前仍然难以解决问题。我目前在以下位置创建了一个最小的测试项目: https://github.com/simon-lam/sdn-cros