Rya*_*ert 10 partitioning primary-key amazon-web-services amazon-dynamodb
有大量 资源 建议使用高基数属性作为分区键。我的问题是,如果我做与此完全相反的操作并为所有项目提供相同的分区键值(仅通过排序键区分),从而允许我查询整个表,会发生什么?
这会导致性能和/或热分区问题吗?如果热分区未达到3000 RCU/1000 WCU,那么热分区对于自适应容量还重要吗?即便如此,如果查询均匀分布在我的排序键中会怎样?
共识似乎是我们不应该这样做,但我的问题是:为什么不呢?
这些建议和最佳实践可指导您从使用 DynamoDB 中获得最大收益。通常,人们使用 DynamoDB 来存储大量高速数据,而这些数据在传统 RDBMS 中存在可扩展性问题。
如果您谈论的是少量数据,聚合访问速度不超过 3000 RCU/1000 WCU,这还不足以让您达到使用 DynamoDB 的痛点。事实上,如果您使用传统的 RDBMS,您可能可以达到相同水平的性能。然而,一旦你的应用程序变得流行,或者即使你的应用程序只是在5分钟的时间内遇到了峰值,数据量和速度就会迅速增加,你就会感到痛苦。这就是为什么遵循最佳实践通常会给您带来这种面向未来的好处。
即便如此,如果查询均匀分布在我的排序键中会怎样?
如果集合大小增长超过 10 GB,DynamoDB 将按排序键拆分分区。[ ref ] 所以你很可能仍然会遇到热分区问题。
别误会我的意思。有些用例需要使用相同的分区键,例如对数据的一对多和多对多关系进行建模。这些都是有效的用例,因为数据本质上是关系性的,这是在 DynamoDB 中对其进行有效建模的唯一方法。但是,如果您选择执行与文档建议完全相反的操作,您的可扩展性将受到限制,并且您将无法充分利用 DynamoDB 的优势。
| 归档时间: |
|
| 查看次数: |
1399 次 |
| 最近记录: |