我正在设计一个 DynamoDB 单表,我需要经常更新访问模式值。
我的访问模式需求很高 >
get details by status.
所以我可以使用 sort key = status
或使用 gsi = status
来访问它。
由于这种访问模式在我的场景中使用率较高,因此我最初决定在基表本身中使用排序键=状态。
但是我需要经常更新这个状态(排序键)。我知道基表主键(PK+SK)无法修改。因此,对于这种方法,我需要删除项目并使用修改后的排序键作为新记录放置。
或者我可以在全球二级索引(GSI)中使用它并更新该项目。但随后的高访问模式将使用GSI。 (我认为它也会在幕后删除并添加为 gsi 表中的新记录。)
考虑到成本效益和最佳实践,在这种情况下哪种方法更可取?任何见解或建议将不胜感激。
谢谢你。
成本没有区别,无论哪种方式,您都必须先支付删除费用,然后再支付费用。
使用 GSI,您可以将逻辑卸载到 DynamoDB,从而简化您与 DynamoDB 的交互方式。但您还必须支付额外的存储费用,这是唯一的成本差异因素。
使用基表,您的客户将需要确保您正确删除和放置项目,并确保您不会在任何一项上失败,这可能很困难。您可以使用事务以原子方式实现此目的,但现在与 GSI 方法相比,您的写入成本增加了一倍。
选择权在你。