从MySQL迁移做DynamoDB

时间:2016-04-01 11:17:35

标签: amazon-dynamodb

我计划将我们网站的一些功能转移到DynamoDB中。 每个用户都有一个留言板,其他用户可以向他们发送消息。

我们的mysql表如下所示: ID | AUTHORID |消息| USERID | TIMESTAMP

在这种情况下,最好的分区键和排序键是什么?我还没有理解这个概念。

在mysql上,主键是ID,并且USERID上有索引,因此我们可以获取给定用户的所有消息,并按ID排序。

感谢。最诚挚的问候

1 个答案:

答案 0 :(得分:1)

根据您每个用户拥有的邮件数量(即每个用户的邮件数量相对较少),您可以选择UserID作为哈希(或分区)密钥和ID(甚至是时间戳)是范围键。主要要求是用户ID和ID或用户ID和时间戳的组合是唯一的,另一个要求是每个散列键内的元素分布是统一的(即所有用户应该具有大约相同数量的消息)

只要您不需要在不知道相关用户的情况下对特定邮件进行查询,这样就可以正常运行。通过始终跟踪用户上下文可以在应用程序的逻辑中减轻这种情况,或者您可以将ID修改为由用户ID和数值组成的复合值:因此消息ID看起来像这个:" 123,34"在哪里" 123"是用户ID和" 34"是消息ID。

另一种可能的选择是使用消息ID作为散列键,并使用用户ID上的分区键创建Global Secondary Index (GSI)

我建议您阅读提供this documentguidelines for working with tables and specifically about working with partitions