Redis vs DynamoDB отслеживание геолокации - PullRequest
0 голосов
/ 26 июня 2018

В настоящее время я немного запутался, какую базу данных использовать для отслеживания геолокации. Что я хочу сделать, это обновлять местоположение группы людей каждые 30 секунд. Данные отправляются на сервер с помощью веб-сокетов. У каждого пользователя есть идентификатор в базе данных, и я хотел бы обновлять местоположение этого пользователя каждые 30 секунд. После этого я хотел бы запросить эти местоположения и показать его в реальном времени другой группе пользователей. У меня вопрос, в чем преимущество и недостатки DynamoDb и Redis. Какой из них быстрее и легче масштабируется. Я ожидаю почти 2 миллиона QPS

1 Ответ

0 голосов
/ 27 июня 2018

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

DynamoDB - это облачная система хранения NoSQL, а Redis - хранилище структуры данных в памяти. Это означает, что запросы к DynamoDB будут включать в себя возврат к серверам Amazon, в то время как запросы к Redis будут превышать объем оперативной памяти (так что намного, намного меньше задержка).

Вследствие вышесказанного объем данных, которые вы можете хранить в Redis, будет ограничен объемом оперативной памяти, доступной на вашем оборудовании. Тем не менее, в случае Redis или сбоя вашего оборудования по какой-то причине вам придется довольствоваться некоторым уровнем потери данных. Вы можете несколько смягчить это, настроив постоянство Redis так, чтобы Redis выполнял регулярную запись на диск (либо каждые N секунд, либо вручную инициируя запись в вашем коде), и дополнительно уменьшать его, затем копируя эти записи в S3 или в другое место. Это меняет производительность (в зависимости от вашего масштаба) для безопасности данных в некоторой степени из-за задержки ввода-вывода. См. документацию для персистентности Redis и в этом блоге инженерной группы GitHub, в которой упоминается их решение удалить персистентность Redis по соображениям производительности.

Между тем все вышеизложенные проблемы абстрагируются для вас DynamoDB, поскольку AWS обрабатывает доступность для вас за кулисами. Вы действительно ограничены только , сколько вы можете себе позволить и использованием (чтение / запись в секунду) ограничивает .

DynamoDB не имеет встроенной поддержки для запроса и вставки геопространственных данных (хотя для него есть библиотека , но, похоже, она не поддерживается), Redis делает . Вы можете написать свой собственный код для этого.

DynamoDB не поддерживает пространство имен , или, скорее, DynamoDB находится в пространстве имен вашей учетной записи AWS, что означает, что вы не сможете поддерживать отдельный экземпляр DynamoDB с теми же именами таблиц (скажем, для рабочей версии против dev данные) на той же учетной записи AWS. Redis тоже не умеет, но вы можете тривиально раскрутить отдельный экземпляр Redis для этого.

См. Также Команда Redis MEMORY USAGE и Оптимизация памяти Redis документы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...