DynamoDB的最佳分区键和排序键

0

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

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

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

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

谢谢你的帮助!

profile picture
전문가
질문됨 9달 전32회 조회
1개 답변
0

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

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

profile picture
전문가
답변함 9달 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인

관련 콘텐츠