我不确定这是否是提出这个问题的正确地方。
我是 dynamodb 的新手,并试图找出创建小型 Web 应用程序的方法。我在这里阅读了最佳实践http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/BestPractices.html
我的桌子将是:
- 建筑物
- 租户(一栋建筑可以有尽可能多的租户,由楼层号标识)
- 收件人(每个楼层可以有多个收件人,基本上是租户的别名)
- 快递员
- 交付(与特定收件人绑定的快递员)
我目前设计架构的方法如下所示:
// Tables
// PK: Building Id, SK: name
- Building ID : {
name: <Building Name>
Tenants: [
{ TenantId: { Receipients: [{Receipient Id 1, Receipient Id 2...}] }
]
}
// PK: Courier Id, SK: createdAt
- CourierId : {
name: <Courier name>
...
}
//PK: Not Sure, SK: Not Sure <-- This is where I messed up, looks relational, defeats the purpose?
- Deliveries: {
receipient id: Courier id
}
为了列出所有交付以及收件人详细信息,我将需要按收件人 ID 列出的收件人详细信息。根据LSI文档,这意味着将收件人 ID 作为 Building 表中的排序键。
由于您只能拥有表格的顶级元素(收件人不是那个),因此根据指南https://docs.amazonaws.cn/en_us/amazondynamodb/latest/developerguide/GSI.html这似乎是不可能的
索引键属性可以由基表中的任何顶级字符串、数字或二进制属性组成;不允许使用其他标量类型、文档类型和集合类型。
因此,如果不制作另一个表,我应该复制所有收件人,更新他们所有更新都发生在表中,我希望这可以实现。还有其他替代或更好的方法吗?
由于交付似乎是快递员与收件人的一对一关系,因此在列出所有交付时是否可以保留 ID 并遍历所有收件人和快递员?