【问题标题】:Will DynamoDB get Materialized Views?DynamoDB 会获得物化视图吗?
【发布时间】:2021-01-27 08:19:15
【问题描述】:

我正在考虑在 DynamoDB 和 AWS Keyspaces 之间进行选择。

我的主要问题仍然是 Dynamo 中的多对多关系。你真的没有太好的选择。要么你为不可变数据做邻接列表......但在大多数情况下,数据会改变。另一种方法是进行 2 次 db 调用,这真的不是很好。第三种选择是一直更新数据,这似乎也是 a** 的一大痛点。对于批量写入,我认为它最多为 25 行。

但是,Cassandra 提供了物化视图,至少我不必自己管理复制。我也可以进行 1 次 DB 调用来获得所需的一切。

我对 NoSQL 数据库还比较陌生,所以我可能会遗漏很多东西。

Dynamo 有计划添加物化视图还是有更好的方法?

在我看来,这似乎是一个非常好的功能。它甚至不必创建新表,而是在项目列之间进行引用以使其自动更新。

【问题讨论】:

  • 我投票结束这个问题,因为它与编程无关。
  • 这是关于 amazon-dynamodb 的,它是 stackoverflow 中公认的标签之一。它是关于数据库的功能,您可以通过代码使用它。因此,与大多数与数据库相关的问题相比,我不明白为什么它“与编程无关”。
  • @NadavHar'El 公平点。我投这种票的主要原因是,我不知道这是否真的是推测数据存储产品未来路线图的最合适的地方。并不真正符合 SO 的含义。

标签: cassandra amazon-dynamodb amazon-keyspaces


【解决方案1】:

DynamoDB 有一个名为 Global Secondary Index 的功能,它非常接近 Cassandra 的 物化视图 功能。尽管名称令人困惑,但 DynamoDB 的 GSI 不仅仅是像 Cassandra 所说的“二级索引”这样的索引!它不仅喜欢匹配特定列值的键:除了键之外,它还可以保留您选择project的任何其他项目属性。就像物化视图一样。

DynamoDB 还具有更高效的本地二级索引,如果视图的分区键与基表的分区键相同,您可以考虑使用该索引 - 并且您只想对项目进行不同的排序或仅投影部分属性。

【讨论】:

  • 在多对多中,它可以用于不可变数据的邻接列表中。许多客户访问餐厅,您想检查访问过特定餐厅的所有客户以及该餐厅的所有客户。为此,您可以使用 PK 和 SK 的倒排索引并获取数据。必须为每个关系复制数据。例如,如果餐厅更新其名称或添加新地址,您必须更新数百万行。物化视图始终保持重复数据的更新。
  • 是的,我知道 Cassandra 中的物化视图是什么,但我想说的是 DynamoDB 中的 GSI 完全一样!他们还保留重复的数据,而不仅仅是索引。您认为 DynamoDB GSI 中缺少哪些 Cassandra MV 功能?
  • 知道了。我认为物化视图可以跨多个表完成,以保持数据同步并实现多对多。比如参考。我当前的问题是发电机中的安全数据复制。除了进行 2 次数据库调用之外,我上面给出的示例的任何提示?
  • 我还是不明白你的问题。在 DynamoDB 中,如果您有一个带有 GSI 的表,则对基表的每次更新也将自动转到 GSI - 这与物化视图中的相同。您将为这两次写入付费,但您只需要对基表进行一次写入,并且对 GSI 表的写入会自动且安全地发生(尽可能多地 - 不支持来自 GSI 的“一致读取”,所以你只能得到最终的一致性)。
  • 我会关闭这个问题,因为我问的是不同的问题。感谢您澄清什么是物化视图。
猜你喜欢
  • 1970-01-01
  • 2020-02-20
  • 1970-01-01
  • 2023-02-03
  • 1970-01-01
  • 2019-10-07
  • 2014-06-07
  • 2021-07-03
  • 1970-01-01
相关资源
最近更新 更多