我有消息表中dynamodb具有以下字段:如何根据DynamoDB中插入的顺序获取项目?
主分区密钥=>conversation_id
主排序关键字=>其他id
属性=>message
,date_time
,sender_id
+------------------+----------+----------------------+------------------------+----------+
| conversation_id | id | message | date_time | sender_id|
+----------------------------------------------------+------------------------+----------+
| p1OS9E | S04Ln | Hi.. how are you..? | 2016-11-30 06:58:11 pm | 11 |
| p1OS9E | JZkSo | Work finished..? | 2016-11-30 06:58:13 pm | 11 |
| p1OS9E | EN9N4 | I am fine. | 2016-11-30 06:58:12 pm | 12 |
| | | | | |
| a0zgOO | jmDdm | In online..? | 2016-12-40 08:43:12 pm | 51 |
| a0zgOO | mAEdY | Yes.. say.. | 2016-12-40 08:43:14 pm | 34 |
| a0zgOO | aWKrp | Come to play.. | 2016-12-40 08:43:12 pm | 51 |
+------------------+----------+----------------------+------------------------+----------+
虽然查询项目基于分区键,结果返回为无序(未按插入顺序)。 排序键id
,AttributeType是`string',一个随机生成的代码,使主键为唯一。
首先我使用date_time
作为排序键,但是如果在相同的conversation_id
中使用相同的date_time
,则会输入消息。所以可能会发生数据丢失。
如何让我的物品与消息插入的顺序(基于时间)..?
注意:我正在使用PHP(Codeigniter MVC)。
@ Harshal Bulsara ..对于LSI范围键为'date_time',然后分区键..? – ArunValaven
@ Harshal Bulsara ..为了添加'date_time'作为排序键,我需要删除正常属性中的'date_time' ...?如果我在LSI中创建分区键作为'conversation_id',那么我还需要将putitem也放入此字段中。 – ArunValaven
没有你的哈希键将与你的表格键相同,并且你不需要修改任何东西。当表格数据改变时,dynamodb将更新LSI –