将对象列表存储在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。