我知道我们不能将DynamoDB用作常规关系数据库,但我感觉我的一些用例可以使用DynamoDB的额外功能进行建模 .
我正在扩展这里的文档示例:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForTables.html
如果我将我的 table 建模为:
UserID MessageID MessageMetaData MessageRetried
U1 M1 XYZ1 True
U1 M2 XYZ2 True
U1 M3 XYZ3 False
U2 M1 ABC1 True
U2 M2 ABC2 False
U3 M1 QWE1 False
U3 M2 QWE2 True
如果我将分区(主)键作为UserID字段并将排序键作为MessageID .
我理解如果只查询UserID U1,我会得到包含所有这些项[[U1,M1,XYZ1},{U2,M2,XYZ2},{U3,M3,XYZ3}]的列表 . 在Java High Level API中执行此操作的最佳方法是什么?
此外,如果我同时传递UserID和MessageId,我应该能够获得该项目 .
现在,如果我假设我在MessageRetried上创建一个GlobalSecondaryIndex,那么根据我的理解,我可以获取所有值为true的项目,但这受到页面大小的限制,有没有办法对此响应进行分页?
谢谢,阿贝尔
1 回答
仅使用分区键称为Query,并且分区和排序键都被称为Get,因为您拥有项目的完整主键 .
如果查询大量项目,则按定义获得分页结果 . 这意味着如果你不断迭代它,你最终会获得所有元素 .