不相关实体的单table 设计还是多table 设计?
Single-table design or multi-table for unrelated entities?
我是 DynamoDB 的新手,但我对 NoSQL 范式并不完全陌生。我几年前使用过 Firebase。
在过去的几天里,我学习和研究了我在 Internet 上可以找到的关于单一 table 设计的大部分资料,这是 DynamoDB 团队提倡的一种设计方法。我想我已经掌握了它的精髓,并且被这个概念迷住了。
然而,我阅读的所有关于单table设计的材料都在相关实体的上下文中。这让我想知道不相关的实体怎么办(因为如果我要使用 SQL 数据库实现服务,我不需要对实体执行 JOIN)。将不相关的实体放在同一个 table 中与将它们放在不同的 table 中有什么优缺点? (在性能、货币成本、可维护性等方面)
将不相关的实体存储在同一个 table 中可能会有一些成本效益。
但只有在使用提供容量时,并且实际上只有在 I/O 对无关数据的 I/O 对主要 table 而言微不足道时才如此。
所以如果你可以有 1 个 table 和 35 个 RCU/WCU 与 table 加上另一个 table 和 1 个 RCU/WCU,你可以节省一个几便士的容量。无论如何,存储成本都是一样的。
但不要忘记 DDB“始终免费”层包括 25GB 的存储空间、25 个 WCU、25 个 RCU。 table 的数量不是一个因素。
在规模上,最好将它们分开,这样您就可以根据工作负载更好地调整容量。
我想如果你需要一百万个 1 xCU tables 而不是 1 25 xCU table...它会有所作为。但在这种情况下,按请求付费可能是更好的选择。
我是 DynamoDB 的新手,但我对 NoSQL 范式并不完全陌生。我几年前使用过 Firebase。
在过去的几天里,我学习和研究了我在 Internet 上可以找到的关于单一 table 设计的大部分资料,这是 DynamoDB 团队提倡的一种设计方法。我想我已经掌握了它的精髓,并且被这个概念迷住了。
然而,我阅读的所有关于单table设计的材料都在相关实体的上下文中。这让我想知道不相关的实体怎么办(因为如果我要使用 SQL 数据库实现服务,我不需要对实体执行 JOIN)。将不相关的实体放在同一个 table 中与将它们放在不同的 table 中有什么优缺点? (在性能、货币成本、可维护性等方面)
将不相关的实体存储在同一个 table 中可能会有一些成本效益。
但只有在使用提供容量时,并且实际上只有在 I/O 对无关数据的 I/O 对主要 table 而言微不足道时才如此。
所以如果你可以有 1 个 table 和 35 个 RCU/WCU 与 table 加上另一个 table 和 1 个 RCU/WCU,你可以节省一个几便士的容量。无论如何,存储成本都是一样的。
但不要忘记 DDB“始终免费”层包括 25GB 的存储空间、25 个 WCU、25 个 RCU。 table 的数量不是一个因素。
在规模上,最好将它们分开,这样您就可以根据工作负载更好地调整容量。
我想如果你需要一百万个 1 xCU tables 而不是 1 25 xCU table...它会有所作为。但在这种情况下,按请求付费可能是更好的选择。