DynamoDB的最佳分区键和排序键

0

【以下的问题经过翻译处理】 你好! 我需要将与用户相关的信息存储在dynamoDB中。这些信息将按月份和年份(分别)进行查询(我需要毫秒级响应时间),因此我在这里考虑了不同的方法。首先,我考虑了:

  • 分区键: 客户的唯一标识符(例如:3322)
  • 排序键: 年份(数字,例如:2023)
  • 使用分区键和月份(数字,例如:01)创建索引

但我也对只使用一个分区键的语法(customerid+ _M month + _Y year)表示怀疑。例如,如果客户ID为3322,那么2023年1月将被存储为:

  • partitionkey = 3322_M01_Y2023 * 在这种情况下,不需要排序键。我主要关注的是,当按年份搜索时,按“分区键以Y2023结尾”进行查询,或者在按月份搜索时按“分区键包含M01”进行查询是否高效。 我应该跟随哪种方法?

谢谢你的帮助!

profile picture
专家
已提问 8 个月前26 查看次数
1 回答
0

【以下的回答经过翻译处理】 但是我也对只使用一个分区键的语法:customerid+ _Mmonth+ _Yyear有所怀疑。例如,如果customerid是3322,2023年1月将存储为:partitionkey = 3322_M01_Y2023在这种情况下,不需要排序键。我最关心的是,当按年份搜索时,按“分区键以Y2023结尾”查询是否有效,或者按月份搜索时,按“分区键包含M01”查询是否有效。我应该遵循哪种方法?

您无法使用分区键来实现其中任何一个。在DynamoDB中,您必须提供完整的分区键值。排序键可用于begins_withbetween,但无法用于ends_withcontains。如果这听起来让您感到困惑,请阅读B+树排序的相关内容,因为它类似于这种情况。

profile picture
专家
已回答 8 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则