Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon dynamodb DynamoDB如何处理分区表?_Amazon Dynamodb - Fatal编程技术网

Amazon dynamodb DynamoDB如何处理分区表?

Amazon dynamodb DynamoDB如何处理分区表?,amazon-dynamodb,Amazon Dynamodb,表分区原则上描述了表分区的工作方式,但其细节(即数字)非常简单。DynamoDB表分区究竟是如何以及何时发生的?我发现这是由Rick Houlihan(首席解决方案架构师DynamoDB)于2016年1月20日在AWS Loft San Franciso制作的 预感也在播放 本幻灯片提供了有关如何/何时进行表分区的重要详细信息: 下面我概括了一个等式,你可以把自己的值插入其中 按容量划分的分区=(RCU/3000)+(WCU/1000) 按大小划分的分区=表大小b/10 总分区数=按容量取最

表分区原则上描述了表分区的工作方式,但其细节(即数字)非常简单。DynamoDB表分区究竟是如何以及何时发生的?

我发现这是由Rick Houlihan(首席解决方案架构师DynamoDB)于2016年1月20日在AWS Loft San Franciso制作的

预感也在播放

本幻灯片提供了有关如何/何时进行表分区的重要详细信息:

下面我概括了一个等式,你可以把自己的值插入其中


按容量划分的分区=(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实现了“自适应容量”,这仍然是一个问题吗?