DynamoDB — модель данных для геохэш и частых обновлений

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

Приложение будет часто обновлять местоположение пользователя в базе данных (я использую геохэш-библиотеку PHP). Он также будет искать пользователей в пределах определенного географического радиуса.

Я новичок в NoSQL (у меня большой опыт работы с MySQL) и хотел бы внести свой вклад в моделирование моей таблицы «Пользователи». Две проблемы:

1) Если атрибуты geohash / долгота / широта пользователей часто обновляются, это вызовет проблему (блокировка таблицы?) С DynamoDB? В MySQL я бы создал отдельную таблицу только для этих значений, чтобы предотвратить блокировку всей таблицы Users. Нужно ли беспокоиться об этом в DynamoDB?

2) Поиск пользователей в географическом радиусе? Это просто установка глобального вторичного индекса для атрибута geohash и выполнение запроса по нему? Причинет ли шардинг проблему с этим?

0

Решение

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

Глобальный вторичный индекс — это дорогостоящее решение, которое предоставляет Amazon, его стоимость почти равна стоимости новой таблицы с тем же объемом данных, поэтому лучше использовать географический радиус в качестве основного индекса, и в моем проекте я также делаю то же самое для группировки записей одного типа. или вы можете создать разные таблицы для каждого региона, что даст вам больше гибкости, если объем данных больше .. 🙂

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]