在 DynamoDB 中存储对象列表并部分检索它们

chr*_*003 6 java amazon-dynamodb

这可能会将两个独立的问题合并为一个问题。但这是我当前的用例。我有一个具有特定属性的 POJO。

它可能看起来像:

class MyObject {
    String id;
    String name;
    int size;

getters and setters () ....
}
Run Code Online (Sandbox Code Playgroud)

现在我有这些对象的列表 - 我希望将其存储在 Dynamo 中的单个对象中。就像是

RecordID            Attributes
abcd123             List<MyObject>
Run Code Online (Sandbox Code Playgroud)

我可以按照上述格式将数据存储在 Dynamo 中吗?我的第二个问题与上述用例有关。

现在我已经存储了记录,我可以检索列表的特定部分吗?例如,我希望从 DyanmoDBQuery 请求返回索引 0 - 5,而不是整个列表本身。

那可能吗?

我对 DynamoDB 还很陌生,我不确定 Dynamo 对存储自定义对象的支持有多好。

Ale*_*kis 2

如果您能够调整架构并移动到分区排序键架构,其中分区键是 RecordID,排序键是 ItemNumber,其中 Item 编号是abcd123上面列表中每个 MyObject 的索引,那么您可以获得子列表使用范围查询:

项目示例:

RecordID (partition key) asdfasdfadsf
ItemNumber (sort key)    0
Item                     an instance of MyObject
Run Code Online (Sandbox Code Playgroud)

范围查询参数:

KeyCondition: RecordId = :rid AND ItemNumber BETWEEN :lower AND :upper
ExpressionAttributeValues = { ":rid": "asdfasdfasdf", ":lower": 0, ":upper": 5 }
Run Code Online (Sandbox Code Playgroud)

请注意,:upper界限是包含在内的,因此上面的查询示例将返回RecordId=asdfasdfasdfItemNumber 为 0、1、2、3、4 和 5 的 MyObjects。