我正在尝试设置一个新的DynamoDB表,我打算第一次使用本地二级索引(LSI)。
然而,我发现自己在努力创造它们。我没有在Amazon API中找到任何使用组合哈希键创建LSI的引用(哈希键存在于多个属性之外)。
这就是我的模型的样子,它表示从UserA发送到UserB的消息:
我想要执行的查询如下
对于我选择了UserAId的hashKey,Range键是dateTIme。这应该涵盖我需要执行最多的查询(查询1)并且应该均匀地分布数据。
对于其他查询,我正在考虑以下LSI的
我的问题是:
'KeySchema' => array( array('AttributeName' => 'UserAId', 'KeyType' => 'HASH'), array('AttributeName' => 'status', 'KeyType' => 'RANGE'), ),
那么如何定义使用status-isNesLetter呢?
提前致谢
答案 0 :(得分:1)
经过一些研究和一些测试后,我现在可以回答我自己的问题了。
问题1) 不,您无法在keyschema中定义组合范围键。但是,您可以在模型类中创建单独的属性来表示相同的内容
实施例: 对于查询3,您需要向模型添加新属性,并自行合并属性status和dateTime。
问题2)是的。您还可以使用ScanIndexForward将订单更改为DESC / ASC