将对象列表存储在DynamoDB中并部分检索它们
问题描述:
这可能会将两个单独的问题分解为单个问题。但那是我目前的用例。我有一个具有特定属性的POJO。将对象列表存储在DynamoDB中并部分检索它们
它可能看起来像:
class MyObject {
String id;
String name;
int size;
getters and setters() ....
}
现在我有这些对象的列表 - 列表,我希望在迪纳摩的单一存储。类似于
RecordID Attributes
abcd123 List<MyObject>
我可以以上述格式将数据存储在Dynamo中吗?我的第二个问题与上述用例有关。
现在我已经存储了记录,我可以检索列表的特定部分吗?就像,我想索引0 - 5从DyanmoDBQuery请求返回而不是整个列表本身。
这可能吗?
我是DynamoDB的新手,我不确定支持如何在Dynamo中存储自定义对象。
答
如果您能够按摩您的模式并移至Partition-Sort键架构,其中Partition键为RecordID,Sort键为ItemNumber,其中Item number是上述abcd123
列表中每个MyObject的索引,那么你就可以得到一个范围查询子表:
项目例如:
RecordID (partition key) asdfasdfadsf
ItemNumber (sort key) 0
Item an instance of MyObject
范围的查询参数:
KeyCondition: RecordId = :rid AND ItemNumber BETWEEN :lower AND :upper
ExpressionAttributeValues = { ":rid": "asdfasdfasdf", ":lower": 0, ":upper": 5 }
注:upper
绑定是包含性的,所以上面的查询示例将返回带有ItemNumbers 0,1,2,3,4和5的RecordId=asdfasdfasdf
的MyObjects。