想象一下,我使用DynamoDB并拥有下一个简单的数据类别:"卖家","买家"并且"交易"。 当然,卖方和买方都应该收到他们所从事的交易清单,并有可能改变特定交易。交易本身应该拥有关于谁应该感激它存在的信息。 我想用下一个密钥创建自己的交易表:
Primary key:
partition: sellerId,
sort: dealId
Additional index key:
partition: buyerId,
sort: dealId
因此,据我了解,我可以为卖家/买家提供卖家/买家ID查询参与交易清单,并有效地访问特定交易。 这种结构是否可行且有效,还是可以创造出更好的解决方案?
答案 0 :(得分:1)
在我看来,你会有比卖家更多的交易,在这种情况下,我建议你将你的主键转换为;
Hash Key: dealId
Sort Key: sellerId
这样您就可以确保通过更多分区传播数据。如果dealId
是随机生成的数字,例如GUID,那就更好了。
请记住,容量配置是在您的分区之间共享的,因此如果您有100个读取单元,并且您的表需要两个分区,但75%的数据位于分区A中,25%位于分区B中,那么这意味着您将结束浪费能力,你可能有ProvisionedThroughputExceededException
。
您仍然可以使用不同的哈希/排序键创建两个额外的全局二级索引,您可以使用它们来检索卖家/买家的交易列表。