Amazon dynamodb DynamoDB如何处理分区表?
表分区原则上描述了表分区的工作方式,但其细节(即数字)非常简单。DynamoDB表分区究竟是如何以及何时发生的?我发现这是由Rick Houlihan(首席解决方案架构师DynamoDB)于2016年1月20日在AWS Loft San Franciso制作的 预感也在播放 本幻灯片提供了有关如何/何时进行表分区的重要详细信息: 下面我概括了一个等式,你可以把自己的值插入其中Amazon dynamodb DynamoDB如何处理分区表?,amazon-dynamodb,Amazon Dynamodb,表分区原则上描述了表分区的工作方式,但其细节(即数字)非常简单。DynamoDB表分区究竟是如何以及何时发生的?我发现这是由Rick Houlihan(首席解决方案架构师DynamoDB)于2016年1月20日在AWS Loft San Franciso制作的 预感也在播放 本幻灯片提供了有关如何/何时进行表分区的重要详细信息: 下面我概括了一个等式,你可以把自己的值插入其中 按容量划分的分区=(RCU/3000)+(WCU/1000) 按大小划分的分区=表大小b/10 总分区数=按容量取最
按容量划分的分区=(RCU/3000)+(WCU/1000) 按大小划分的分区=表大小b/10 总分区数=按容量取最大的分区数和按大小取最大的分区数。将其四舍五入为整数
总之,一个分区最多可以包含3000个RCU、1000个WCU和10GB的数据。一旦创建了分区,RCU、WCU和数据就会均匀地分布在它们之间 请注意,据我所知,一旦创建了分区,降低RCU、WCU和删除数据将不会导致删除分区。我目前没有这方面的参考资料。我发现这是2016年1月20日由圣弗朗西索AWS Loft的Rick Houlihan(首席解决方案架构师DynamoDB)制作的 预感也在播放 本幻灯片提供了有关如何/何时进行表分区的重要详细信息: 下面我概括了一个等式,你可以把自己的值插入其中
按容量划分的分区=(RCU/3000)+(WCU/1000) 按大小划分的分区=表大小b/10 总分区数=按容量取最大的分区数和按大小取最大的分区数。将其四舍五入为整数
总之,一个分区最多可以包含3000个RCU、1000个WCU和10GB的数据。一旦创建了分区,RCU、WCU和数据就会均匀地分布在它们之间 请注意,据我所知,一旦创建了分区,降低RCU、WCU和删除数据将不会导致删除分区。我目前没有这方面的参考。关于Stu提到的“删除分区”一点 您不直接控制分区的数量,一旦创建了分区,就无法删除分区=>这种行为可能会导致性能问题,而这在很多情况下是不可预料的 假设您有一个分配了500WCU的表。在这个例子中,您可以在这个表中存储15GB的数据。这意味着我们达到了数据大小上限(每个分区10GB),因此我们目前有2个分区,其中RCU和WCU被拆分(每个分区可以使用250WCU) 很快,需要将数据写入表中的用户将大量增加(比如黑色星期五)。那么你要做的是将WCU增加到10000,以处理负载,对吗?好的,幕后发生的事情是DynamoDB已经达到了另一个上限——每个分区的WCU容量(最大1000)——因此它创建了10个分区,数据通过表中的哈希函数在这些分区之间传播 黑色星期五结束后,您决定将WCU降至500以节省成本。将发生的情况是,即使您减少了WCU,分区的数量也不会减少=>现在您必须在10个分区之间拆分这500个WCU(因此实际上每个分区只能使用50WCU) 你看到问题了吗?如果您没有正确规划数据在应用程序中的使用方式,这一点通常会被遗忘,并且会对您造成伤害 TLDR:始终了解您的数据将如何使用,并正确规划数据库设计。关于Stu提到的“删除分区”点 您不直接控制分区的数量,一旦创建了分区,就无法删除分区=>这种行为可能会导致性能问题,而这在很多情况下是不可预料的 假设您有一个分配了500WCU的表。在这个例子中,您可以在这个表中存储15GB的数据。这意味着我们达到了数据大小上限(每个分区10GB),因此我们目前有2个分区,其中RCU和WCU被拆分(每个分区可以使用250WCU) 很快,需要将数据写入表中的用户将大量增加(比如黑色星期五)。那么你要做的是将WCU增加到10000,以处理负载,对吗?好的,幕后发生的事情是DynamoDB已经达到了另一个上限——每个分区的WCU容量(最大1000)——因此它创建了10个分区,数据通过表中的哈希函数在这些分区之间传播 黑色星期五结束后,您决定将WCU降至500以节省成本。将发生的情况是,即使您减少了WCU,分区的数量也不会减少=>现在您必须在10个分区之间拆分这500个WCU(因此实际上每个分区只能使用50WCU) 你看到问题了吗?如果您没有正确规划数据在应用程序中的使用方式,这一点通常会被遗忘,并且会对您造成伤害
TLDR:始终了解数据的使用方式,并正确规划数据库设计。既然DynamDB实现了“自适应容量”,这仍然是一个问题吗?现在DynamDB实现了“自适应容量”,这仍然是一个问题吗?