我是亚马逊网络服务DynamoDB的新手,我想从DynamoDB表中找到半径r英里内的位置列表(基于纬度、经度和GeoHash)实现这一目标的最佳方法是什么?
发布于 2021-10-06 23:42:43
除非你使用的是非常小的数据集,否则Dyanmo并不是真正适合的东西。
你需要的是一个加权的方向图,它将所有的点连接到所有其他的点。这种多重连接并不是发电机擅长的。实际上,你需要一个发电机,它是这样设置的:
pk: a location identifier | sk: another location id-number of miles from pk然后,您可以对给定的位置标识符执行一次查询,其中所有值都在不到几英里的范围内,您将得到答案。
你还必须查询你想要知道附近有什么的确切的点,并且你必须在db中有那个eaxact点。没有执行“接近这一点”的查询。
但是一旦你开始处理数以千计的数据点,你可能会看到一个问题。即使这些位置中的一个也必须在相同的pk下具有sk的所有其他位置才能执行该查询。所以你最终会得到:
pk | sk
location 1 | location2#miles
location 1 | location3#miles
location 1 | location4#miles
location 2 | location1#miles
location 2 | location3#miles
location 2 | location4#miles
location 3 | location1#miles... ect这就是有向加权图对象结构的用途--该对象结构实际上很好地转换为dynamodb……(因为在花哨的引擎盖下,有向加权图形对象只是一系列属性,说明给定的其他对象有多远),但这可能是不切实际的,这取决于您试图实现的粒度。
https://stackoverflow.com/questions/69472167
复制相似问题