Database design 由局部二级索引组成的Dynamo
我正在尝试建立一个新的DynamoDB表,并计划第一次使用本地二级索引(LSI) 然而,我发现自己正在努力创造它们。在AmazonAPI中,我没有找到使用组合哈希键(存在于多个属性中的哈希键)创建LSI的任何参考 这就是我的模型的样子,它表示从UserA发送到UserB的消息:Database design 由局部二级索引组成的Dynamo,database-design,nosql,amazon-dynamodb,Database Design,Nosql,Amazon Dynamodb,我正在尝试建立一个新的DynamoDB表,并计划第一次使用本地二级索引(LSI) 然而,我发现自己正在努力创造它们。在AmazonAPI中,我没有找到使用组合哈希键(存在于多个属性中的哈希键)创建LSI的任何参考 这就是我的模型的样子,它表示从UserA发送到UserB的消息: 用户辅助 用户出价 日期时间 状态(1,2,3,4,5) i优先级(0或1) ISN时事通讯(0或1) 我想做的查询如下 从UserAId获取按日期排序的所有消息 获取从UserAId到UserBId的所有消息 从U
- 用户辅助
- 用户出价
- 日期时间
- 状态(1,2,3,4,5)
- i优先级(0或1)
- ISN时事通讯(0或1)
- 查询2:哈希UserAId,范围UserBId
- 查询3:散列UserAId,范围(组合)状态dateTime。这样我可以用1和2来查询,按日期排序应该是自动的
- 问题4:同上
- 查询5:Hash UserAId,范围(组合)isPriority dateTime。查询以1开始,我认为订单应该自动进行
- 查询6:Hash UserAId,范围(组合)状态为新闻稿。这样的话,我想它应该根据状态来订购
- 是否可以在LSI中使用组合键?我如何定义它们?亚马逊提供的文档中没有这方面的内容。这就是我定义常规LSI的方式:
- 我对排序的假设是真的吗
提前感谢在做了一些研究和测试之后,我现在可以回答我自己的问题了 问题1) 不,不能在keyschema中定义组合范围键。但是,您可以在模型类中创建单独的属性来表示相同的内容 例如: 对于查询3,您需要向模型添加一个新属性,并自己合并属性status和dateTime
问题2)是的。您也可以使用ScanIndexForward将顺序更改为DESC/ASC在做了一些研究和测试之后,我现在可以回答自己的问题了 问题1) 不,不能在keyschema中定义组合范围键。但是,您可以在模型类中创建单独的属性来表示相同的内容 例如: 对于查询3,您需要向模型添加一个新属性,并自己合并属性status和dateTime 问题2)是的。也可以使用ScanIndexForward将顺序更改为DESC/ASC
'KeySchema' => array(
array('AttributeName' => 'UserAId', 'KeyType' => 'HASH'),
array('AttributeName' => 'status', 'KeyType' => 'RANGE'),
),