【发布时间】:2013-12-01 13:47:08
【问题描述】:
我已经阅读了dynamodb best practises,我正在尝试设计一个表格,让我可以灵活地查询它并避免扫描。
这是我能得到的最好的设计:
表:项目
哈希: ClientId#ProjectId
范围:名称
其他属性:
- CreatedAt(时间戳)
- 标签(TagId1、TagId2、TagId3)
- 类型
请注意,我将多个值放入范围键中的散列中,并以“#”作为分隔符,以便具有更大的查询功能。
我的实际架构允许我通过以下方式查询表:
- 获取一个客户的所有项目(运营商:BEGIN_WITH)
- 通过知道客户ID(操作员:EQ)的ID获取特定项目
- 按名称排序结果
- 按名称过滤结果
我想让我的用户除了已经可用的过滤器之外,还可以过滤“标签”属性。
我还需要我的用户通过 CreationAt 而不是名称来订购,但仍然能够过滤名称。
以下是我无法使用以下方案的示例查询:
获取给定客户的所有项目,按“CreationAt”排序,包含特定“TagId”、给定名称和类型。
另一个我无法实现的查询,也许更简单:
获取包含名称部分的给定子字符串和给定类型的客户端的所有项目。
我的实际sheme上有任何cmets吗?
如何优化它?
如何设计我的二级本地索引或自定义索引表以实现我的要求?
有没有办法重现mysql的“LIKE”比较运算符?
我开始问自己 dynamodb 是否适合我的项目。
感谢您的意见。
【问题讨论】:
标签: database-design amazon-dynamodb