方法#1:(单项)
单个分区键,项目中包含所有数据,例如:
PK: Item#1
object_attribute_1: full json item
object_attribute_2: full json item
object_attribute_3: full json item
object_attribute_4: full json item
我看到的优点:更少的写入成本,我们同时写入整个项目,因此汇总更有效。
缺点:读取成本可能更大,因为没有过滤选项,假设我只需要查询 object_attribute_2 而不是整个项目。
方法#2:(多项)
分区键+排序键组合,示例:
Item#1:
PK: Object#1
SK: object_attribute_1_SK
object_attribute_1: full json item
Item#2:
PK: Object#1
SK: object_attribute_2_SK
object_attribute_2: full json item
Item#3:
PK: Object#1
SK: object_attribute_3_SK
object_attribute_3: full json item
Item#4:
PK: Object#1
SK: object_attribute_4_SK
object_attribute_4: full json item
我看到的优点:可以降低读取成本,在我们只需要特定事物的情况下,使用 SK,而不是返回整个对象信息,只返回需要的内容,更少的 KB 读取
我看到的缺点:可能会增加写入成本?
1 - 单个对象的 4 次写入(写入是否还取决于查询事务或仅 KB 大小?)
2 - 如果完整的 json 项小于 1KB,比如说 500b,四舍五入到 1kb,或者 1.5kb 舍入到 2kb,等等
您建议我采用哪种方法?我想好了吗?
非常感谢