如何在DynamoDB中访问关系数据(键与查询)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在DynamoDB中访问关系数据(键与查询)相关的知识,希望对你有一定的参考价值。

在DynamoDB中访问关系数据的最佳方法是什么?最好是冗余存储信息并根据需要进行更新,还是在每次需要访问关系数据时进行查询?

例如,假设我有一个Team表,该表具有一个Members字段,该字段存储成员ID的数组,其中还包括成员的姓名。

团队

Members: [
  member1: "John",
  member2: "Sam",
  member3: "Pam"
]

[只要我的应用程序需要访问团队成员,我所要做的就是在“团队成员”字段中调用get。然后,如果我需要其他团队成员数据,我可以进一步致电获取整个成员记录。

我对此方法的关注点之一是,每当一个人更新名称时,都必须更新member数组中的名称。更不用说用户名的其他所有地方,也可以存储。

然后我的主要问题是,是否应该每次都查询这些记录,而不是将这些数据存储在团队记录中。

例如,我应该改为query all members who have team 123

连续执行查询会更昂贵,还是必须更新所有这些相关数据会更昂贵?

我知道查询路由要尝试防止数据异常才是一件容易的事,但是查询可能还需要多次调用才能获取相同的数据。

答案

dynamodb写操作比读操作更昂贵,并且在向表(或分区)中添加一些二级索引时,它会变得更多。

此外,如果必须在事务中完成同步操作以确保原子性,则同步不同项目中的值可能会收取额外费用。>

这取决于您的应用程序需求和预算,即确定一个用例(例如:月)在每个用例中大约会有多少个请求,然后尝试优化可产生最多流量的用例的成本,无论类型(读或写)。

对于某些读取的用例,您可能会接受读取模型的最终一致性并使用缓存(例如S3文件),但仍然可以选择...

以上是关于如何在DynamoDB中访问关系数据(键与查询)的主要内容,如果未能解决你的问题,请参考以下文章

您如何查询 DynamoDB?

Java学习总结(十六)——MySQL数据库(中)分组,嵌套,连接查询及外键与关系表设计

按日期查询DynamoDB

如何为 DynamoDB 创建 GraphQL 查询

如何分清SQL数据库中的主键与外键

数据库中主键与外键