首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在DynamoDB多到多关系中最小化数据冗余?

如何在DynamoDB多到多关系中最小化数据冗余?
EN

Stack Overflow用户
提问于 2020-04-15 16:46:14
回答 1查看 228关注 0票数 0

我目前正在构建一个简单的时事通讯应用程序,用户可以通过他们的电子邮件被邀请阅读时事通讯。

我已经设置了当前的示例表:

  • 中,我使用自动生成的ID和电子邮件作为分区键,使用通用关键字作为排序键,使用
  • 来定义时事通讯--电子邮件关系--我使用新闻稿ID作为PK,使用电子邮件作为SK的

我使用了1个GSI,它使用基表SK作为PK,使用基表PK作为SK --这给了我以下聚合视图:

  • 我想要的访问模式是允许被邀请的用户用简单的nextToken AWS映射模板解析器分页列出他们的通讯。

我的问题是-对于我的用例,“时事通讯电子邮件关系数据”和“时事通讯数据”必须是相同的,这样我就可以在时事通讯列表中显示我的通讯预览,同时在用户单击其中一个列出的通讯并显示时事通讯细节后显示时事通讯本身。

如果没有redundancy?

  • If,
  • 有办法实现这一点吗?如何保持数百个电子邮件关系数据与时事通讯数据保持同步?我真的需要在每次更新newsletter?
  • Is名称时通过TransactionPutItem执行数百个PutItem操作吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-14 20:15:49

对于任何试图像我一样理解dynamoDB和appsync的人来说。您不需要像我在本例中那样冗余地保存大部分数据。实际上,您可以定义时事通讯与时事通讯应用程序之间的关系,只需从邀请中直接获取时事通讯数据,如下例所示:

代码语言:javascript
复制
type Newsletter {
    id: Int!
    name: String!
    description: String!
}

type NewsletterInvitation {
    id: Int!
    email: String!
    newsletter: Newsletter!
}

这应该会给大多数通过这篇文章的人一个答案。

对于任何涉及SK修改的用例,都会变得更加困难。您将需要使用dynamodb数据流、SQS前端以及可能的自定义lambda触发器来侦听特定项的更改、创建SQS事件或触发lambda并手动修改时事通讯邀请排序键。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61234132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档