Amazon dynamodb 如何为分层模型选择分区和排序键

Amazon dynamodb 如何为分层模型选择分区和排序键,amazon-dynamodb,dynamodb-queries,Amazon Dynamodb,Dynamodb Queries,如果这不是问这个问题的合适地方,请告知 我正试图为一个简单的关系模型找到一个合适的分区密钥/排序密钥对一个卖家有很多客户,一个客户有很多订单,涵盖以下查询模式: 对于给定的卖家,获取日期范围内给定客户的所有订单; 对于给定的卖家,获取日期范围内所有客户的所有订单。 我的订单ID的格式为yyyy-mm-dd-random_字符串,因此可以按日期进行排序。每个订单只有一个项目 使用seller\u id作为分区键,customer\u idorder\u id作为排序键涵盖了第一个用例,但是没有办法

如果这不是问这个问题的合适地方,请告知

我正试图为一个简单的关系模型找到一个合适的分区密钥/排序密钥对一个卖家有很多客户,一个客户有很多订单,涵盖以下查询模式:

对于给定的卖家,获取日期范围内给定客户的所有订单; 对于给定的卖家,获取日期范围内所有客户的所有订单。 我的订单ID的格式为yyyy-mm-dd-random_字符串,因此可以按日期进行排序。每个订单只有一个项目

使用seller\u id作为分区键,customer\u idorder\u id作为排序键涵盖了第一个用例,但是没有办法跳过客户

如何从相同的记录中获取这两个查询

奖金:

有没有一种方法可以不使用二级索引? 是否有一种跨越等级关系的通用方法?
为了支持第二个查询,您需要在卖家id和订单id上创建二级索引

有一种方法可以在不使用辅助索引的情况下完成,但需要进行完整的表扫描


“跳过”分层键模式中的字段的一般方法是创建一个GSI,其中的键忽略了要“跳过”的字段。

您是否知道可以用于键条件表达式的“begins_with”函数?@MatthewPope Yes。根据问题中提出的模式,我可以查询从客户id2019开始的订单,并获得2019年客户的所有订单。但我如何才能获得2019年所有客户的所有订单?类似于/*2019.*/.似乎我误解了你的第二个问题。谢谢。我希望这样的查询能够有一种习惯用法或模式,而不必创建第二个索引。哦,好吧。。。