查询Java中距离AWS DynamoDB 10英里内的最近位置



我是AWS DynamoDB的新手,我想从DynamoDB表中找到半径r英里内的位置列表(基于纬度,经度和GeoHash)实现这一目标的最佳途径是什么?

除非你处理的是一个非常小的数据集,否则Dyanmo并不适合这种情况。

你需要的是一个将所有点与其他点连接起来的加权方向图。这种多联动不是发电机所擅长的。实际上,您需要像这样设置一个发电机:

pk: a location identifier | sk: another location id-number of miles from pk

那么你可以对给定的位置标识符进行一次查询,所有的值都小于英里远,你会得到你的答案。

你还必须查询精确的点,你想知道附近有什么,你必须在db中有精确的点。

但是一旦你开始处理成千上万的数据点,你可能会发现一个问题。即使这些位置中的一个也必须在相同的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…(因为幻想罩下一个有向加权图对象仅仅是一系列属性说距离给定其他对象),但是这可能是不切实际的取决于颗粒你想。