amazon-web-services - 用于存储多种文档类型的最佳 DynamoDB 架构是什么?

标签 amazon-web-services amazon-dynamodb

阅读 Amazon DynamoDB 文档,我仍然无法理解将它用于最常见任务的最佳方式是什么 - 拥有多种类型的文档(例如,“用户”、“事件”、“新闻”),所有文档都具有唯一的 ID .
据我了解,由于 DynamoDB 仅暗示对文档主键的限制,我们可以在其中存储任何具有主键的数据。因此,最自然的解决方案看起来像:

- partion key 'type' is document type - 'user', 'event' etc
- sort key is uuid

但这与官方文档相矛盾,根据它,更好的是:
- partition key 'id' is just uuid
- sort key is type - 'user', 'event'

但由于关键名称,这与常识相矛盾。
最后,我们可以为用户、事件和新闻创建 3 个不同的 DynamoDB 实例,所有实例都使用 uuid 作为分区键,没有排序键。
哪种解决方案是 DynamoDB 使用的最佳或常见做法?

最佳答案

明确的陈述需要细节,但对您的数据的外观做出一些假设:

- partion key 'type' is document type - 'user', 'event' etc
- sort key is uuid

上述想法几乎可以肯定是一个糟糕的设计。您最终会得到几个大分区,从而导致性能问题。此外,我建议您最终对查询进行扫描。
- partition key 'id' is just uuid
- sort key is type - 'user', 'event'

以上想法可能是一个糟糕的设计。排序键不会给您带来真正的好处。假设您需要单独访问用户或事件等,您最终将执行扫描。

它极有可能为用户、事件等单独的表将是最好的。这些表中的键实际上只取决于您的数据。 UUID 可能是一个不错的选择,但这取决于您希望如何查询数据。基于日期的属性,尤其是事件,通常是很好的排序键。

我建议你结帐this answer这是对大致相同问题的更长答案。

关于amazon-web-services - 用于存储多种文档类型的最佳 DynamoDB 架构是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48383270/

相关文章:

node.js - 使用 Node 从 Lambda 查询 Dynamodb - 丢失 key

ios - 如何在 S3 PutObjectRequest 完成时添加监听器?

java - AWS EC2 jmap 堆转储

amazon-web-services - AWS DynamoDb 流是否会消耗表的读取容量

amazon-dynamodb - dynamodb创建一个字符串集

amazon-web-services - Cloudformation DynamoDB 部署失败

amazon-web-services - Unmarshal AWS IAM Document But Conditional string 或 []string in Doc

amazon-web-services - 属性 VPCZoneIdentifier 的值必须为字符串列表类型

http - AWS elasticbeanstalk-access_log 中的神秘 Http 408 错误

amazon-dynamodb - 在分区键上使用 IN 运算符查询 dynamoDB