Amazon dynamodb DynamoDB表的重用

Amazon dynamodb DynamoDB表的重用,amazon-dynamodb,Amazon Dynamodb,来自SQL背景,在设计像DynamoDB这样的NOSQL数据库时,很容易陷入SQL模式和思维模式。但是,有许多最佳实践依赖于将不同类型的数据与同一个表中的不同模式合并。这可以非常有效地查询相关数据,而不是SQL联接 但是,如果我有两种不同类型的数据,它们具有不同的模式,并且从没有一起查询过,那么自从DynamoDB引入按需定价以来,有没有理由仅仅为了减少表的数量而将不同类型的数据合并到一个表中?在随需应变之前,您必须支付每小时的容量单位,因此限制表的数量是合理的。但是对于随需应变,如果您有100

来自SQL背景,在设计像DynamoDB这样的NOSQL数据库时,很容易陷入SQL模式和思维模式。但是,有许多最佳实践依赖于将不同类型的数据与同一个表中的不同模式合并。这可以非常有效地查询相关数据,而不是SQL联接


但是,如果我有两种不同类型的数据,它们具有不同的模式,并且从没有一起查询过,那么自从DynamoDB引入按需定价以来,有没有理由仅仅为了减少表的数量而将不同类型的数据合并到一个表中?在随需应变之前,您必须支付每小时的容量单位,因此限制表的数量是合理的。但是对于随需应变,如果您有100个不相关的数据模式,有没有理由不创建100个表呢?

我会说答案是“没有,但是”:

按需定价明显高于供应定价。因此,除非您刚开始使用DynamoDB,请求量很低,或者需求波动很大,否则您不太可能只使用按需定价。亚马逊有一篇有趣的博客文章,标题是,他们解释了如何在一年内保留一些容量,然后自动在15分钟的间隔内保留容量(所谓的自动缩放),并使用按需定价来满足超过这些需求。在这种情况下,最便宜的价格是长期(每年,甚至3年)预订。而拥有两张单独的桌子可能会使保留变得复杂

如果应用程序对两个不同表的使用在一天中上下波动,那么使用一个表的好处将特别明显。这两个需求的总和通常比这两个需求中的每一个都要平坦,从而允许更多地使用更便宜的容量,减少按需使用


我回答“不,但是”而不是“是”的原因是,不清楚这些效果在实际应用中有多重要,以及在实践中使用一个表而不是两个表可以节省多少。如果表的数量不是两个而是十个,或者表的数量随着应用程序的发展而变化,那么节省的空间可能会更大。

回答得好,谢谢。没有考虑预留容量。事实是,几年前,当我还是DynamoDB新手时,我犯了所有的经典错误,假装它是SQL,然后用40多个表设置了一个服务。在下一个项目中,我更了解并使用了更合理的NOSQL建模技术,将相关数据存储在一起,并将GSIs用于多种用途等。然而,我现在觉得我做得太过分了;问题总是在复杂性、效率和成本之间保持良好的平衡。必须处理复杂的联合模式并不总是有趣的。