首页 文章

有关DynamoDB中主键和排序键的问题

提问于
浏览
0

我知道我们不能将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 回答

  • 1

    仅使用分区键称为Query,并且分区和排序键都被称为Get,因为您拥有项目的完整主键 .

    如果查询大量项目,则按定义获得分页结果 . 这意味着如果你不断迭代它,你最终会获得所有元素 .

相关问题