使用复合排序键,可以在可以在层次结构的任何级别上查询的数据中定义层次结构(一对多)。
例如,在列出地理位置的表中,排序键的结构如下:
[country]#[city]#[founded_date]#[population]
基于best practices,使用排序键来组织数据,应该可以对这些汇总级别中的任何一个级别(从国家/地区到人口)以及所有之间。
如何撰写查询,例如以获得城市名称以“ new”开头的所有项目的信息,该名称始于3/14/1923之前,并且人口超过100'000?
答案 0 :(得分:1)
您引用的示例 100% 是关于分层数据的。您引入了没有分层的数据,这完全打破了这种模式。在示例中,如果不先了解国家、地区、州和县,就无法找到以“new”开头的城市。层次模型假设您总是在层次结构的已知部分内进行搜索,并希望获得它下面的所有内容。当他们说“介于两者之间的所有内容”时,他们意味着您可以在任何这些级别进行查询,而不是您可以查询任何这些元素。例如,您可以通过指定国家、地区和州来查询纽约州的每个位置。您可以通过指定国家、地区、州、县和市来查找纽约市的所有内容。
[country]#[region]#[state]#[county]#[city]#[neighborhood]
要做您想做的事情,您需要支持一些完全不同的访问模式。您可能需要一些 GSI 来支持您拥有的不同访问模式,并且可能需要进行一些过滤,超出您可以存储在密钥中的内容。请记住,NoSQL 是关于访问模式的。您应该花一些时间弄清楚这些是什么,一旦您这样做,您就可以弄清楚如何存储您的数据,包括支持您访问数据所需方式所需的任何索引。