【发布时间】:2019-03-10 06:37:59
【问题描述】:
我不确定这是否是提出这个问题的正确地方。
我是 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 并遍历所有收件人和快递员?
【问题讨论】:
标签: amazon-web-services database-design amazon-dynamodb dynamodb-queries