Amazon dynamodb 针对不相关实体的单表设计还是多表设计?

Amazon dynamodb 针对不相关实体的单表设计还是多表设计?,amazon-dynamodb,Amazon Dynamodb,虽然我对NoSQL范式并不完全陌生,但我对DynamoDB还是新手。几年前我在Firebase工作 在过去的几天里,我学习和研究了互联网上关于单表设计的大部分资料,这是DynamoDB团队倡导的一种设计方法。我想我已经掌握了它的精髓,并且对这个概念很着迷 然而,我读到的关于单表设计的所有材料都是在相关实体的上下文中。这让我想知道不相关实体的情况如何(例如,如果我要用SQL数据库实现服务,我不需要对实体执行连接)。将不相关的实体放在同一个表中,与将它们放在单独的表中相比,它们的优缺点是什么?(在性

虽然我对NoSQL范式并不完全陌生,但我对DynamoDB还是新手。几年前我在Firebase工作

在过去的几天里,我学习和研究了互联网上关于单表设计的大部分资料,这是DynamoDB团队倡导的一种设计方法。我想我已经掌握了它的精髓,并且对这个概念很着迷


然而,我读到的关于单表设计的所有材料都是在相关实体的上下文中。这让我想知道不相关实体的情况如何(例如,如果我要用SQL数据库实现服务,我不需要对实体执行连接)。将不相关的实体放在同一个表中,与将它们放在单独的表中相比,它们的优缺点是什么?(在性能、金钱成本、可维护性等方面)

在同一个表中存储不相关的实体可能会带来一些成本效益

但只有在使用资源调配容量时,而且实际上只有在不相关数据的I/O相对于主表的I/O而言无关紧要时

因此,如果您可以有一个带有35个RCU/WCU的表,而不是有一个带有1个RCU/WCU的表,那么您可以节省几便士的容量。不管怎样,存储成本都是一样的

但不要忘记,DDB“始终免费”层包括25GB存储、25WCU和25RCU。表的数量不是一个因素

在规模上,最好将它们分开,以便更好地根据工作负载调整容量


我想如果你需要一百万张1XCU表而不是125XCU表。。。。这会有所不同。但在这种情况下,按请求付费可能是更好的选择。

谢谢您的回答。除了您提到的根据工作负载调整容量的灵活性之外,我认为在这种情况下保留单独的表还需要更少的文档,因为可以避免不必要的索引重载,因此键属性可以有更多有意义的名称。DynamoDB支持在单独表的上下文中并行读/写吗?单独的分区如何?是的,BatchWriteItem和BatchGetItem并行运行,而不管表/分区如何。