如何 select 对分层模型的键进行分区和排序
How to select partition and sort keys for hierarchical model
如果这里不适合提问,请告知。
我正在尝试为涵盖以下查询模式的简单关系模型(卖家有很多客户,客户有很多订单)找到合适的分区 key/sort 键对:
- 对于给定的卖家,获取给定客户在一个日期范围内的所有订单;
- 对于给定的卖家,获取某个日期范围内所有客户的所有订单。
我的订单 ID 的格式是 yyyy-mm-dd-random_string
,因此可以按日期排序。每个订单只有一件商品。
使用 seller_id
作为分区键,使用 customer_id#order_id
作为排序键涵盖了第一个用例,但是无法 "jump" 超越客户。
如何从相同的记录中获取这两个查询?
奖金:
- 有没有没有二级索引的方法?
- 是否有针对 "jumping" 层级关系的通用方法?
为了支持您的第二个查询,您需要在 seller_id
和 order_id
上创建二级索引。
有一种方法可以在没有二级索引的情况下做到这一点,但它需要一个完整的 table 扫描。
在分层键模式中“跳过”字段的一般方法是创建一个 GSI,其键省略您要“跳过”的字段。
如果这里不适合提问,请告知。
我正在尝试为涵盖以下查询模式的简单关系模型(卖家有很多客户,客户有很多订单)找到合适的分区 key/sort 键对:
- 对于给定的卖家,获取给定客户在一个日期范围内的所有订单;
- 对于给定的卖家,获取某个日期范围内所有客户的所有订单。
我的订单 ID 的格式是 yyyy-mm-dd-random_string
,因此可以按日期排序。每个订单只有一件商品。
使用 seller_id
作为分区键,使用 customer_id#order_id
作为排序键涵盖了第一个用例,但是无法 "jump" 超越客户。
如何从相同的记录中获取这两个查询?
奖金:
- 有没有没有二级索引的方法?
- 是否有针对 "jumping" 层级关系的通用方法?
为了支持您的第二个查询,您需要在 seller_id
和 order_id
上创建二级索引。
有一种方法可以在没有二级索引的情况下做到这一点,但它需要一个完整的 table 扫描。
在分层键模式中“跳过”字段的一般方法是创建一个 GSI,其键省略您要“跳过”的字段。