запросить DynamoDB для значений между X и Y

У меня есть таблица DynamoDB, как показано на прикрепленном изображении, и я ищу способы запроса таблицы на основе полей lon и lat. В частности, я ищу все результаты с Lon между X и Y и Lat между A и B.

Есть ли способ сделать это? Я создал индексы для Lon и Lat, но значения являются строками.

Большое спасибо за твою помощь !!

Таблица DynamoDB


person Benoit Morel    schedule 21.03.2020    source источник


Ответы (1)


вы можете придумать хорошую хэш-функцию (скажем, f) и иметь приведенную ниже схему для dynamodb.

| pk          | sk               |  lat  | lon  | name 
| hashvalue1  | 48.80#2.35#Fac   | 48.80 | 2.35 | Fac du
| hashvalue1  | 48.83#2.36#Groupe| 48.83 | 2.36 | Groupe Hos

here f(48.80, 2.35) = hashvalue1
f(48.83, 2.36) = hashvalue1

И всякий раз, когда вам нужно запросить lat1 и lon1, вычислите f (lat1, lon1) и запросите базу данных. Но проблема с этим решением заключается в том, чтобы найти хорошую хеш-функцию, потому что в худшем случае вам, возможно, придется пересчитывать хэш каждого введенного значения в db, иначе это может стать горячей клавишей. этот подход хорошо задокументирован здесь и здесь.

Я бы посоветовал использовать эластичный поиск, это даст вам гораздо больше гибкости. с точки зрения будущих вариантов использования.

person best wishes    schedule 28.03.2020