假设我有一个名为“ CustomerRequest”的表,它包含以下属性:
- “ CustomerId”:客户的唯一标识,可以包含数亿个值,是由旧的生成的序列 系统,无法更改。
- “国家/地区代码”:客户的国家/地区代码。
- “ RequestType”:请求的类型,值来自定义的列表,且少于100个值。
- “ RequestDate”:请求的日期。
以下是限制条件:
- 用户可以向现有客户订购请求。
- 订购请求时,将向用户提供一个请求ID,以便以后可以检索该请求。格式是定义但它 不能是UUID。
- 用户还可以检索所有有关客户ID的请求。
- 用户还可以检索所有国家/地区代码请求。
我希望快速处理亿万个请求,主要目标是尽可能平均地分配工作量。
分区和排序键的最佳选择是什么?
目前,我可以想到以下解决方案:
- 使用CustomerId作为分区键,并使用RequestDate作为排序键。提供给用户的请求ID类似于 日期为时间戳的“ CustomerId-RequestDate”,以毫秒为单位 (同一客户ID上的2个请求很少会被 同时触发)。我可以使用此索引来检索 通过其ID进行请求,并检索对客户ID的所有请求。
- 添加一个GSI,其中CountryCode为分区键,而客户ID为排序键。我想我可以使用该索引来检索所有请求 输入国家代码。
有更好的解决方案吗?
谢谢您的帮助。