Ми використовуємо DynamoDB та ElastiCache Redis з різних причин.
ДинамоДБ:
- Має мову запитів, яка може робити більш складні речі (більше, між тощо)
- Доступний через зовнішній інтерфейс API (різні регіони доступні без змін або власної інфраструктури)
- Можливі дозволи на основі таблиць або навіть рядків
- Шкала за розміром даних до нескінченності
- Ви платите за запит -> низькі номери запитів означає менший рахунок, високий номер запиту означає більш високий рахунок
- Читання та записи відрізняються за вартістю
- Дані зберігаються надмірними AWS у кількох об'єктах
- DynamoDB дуже доступний у продажу
- Автоматичне масштабування доступне в самому сервісі
ElastiCache Redis:
- Проста мова запитів - без складних функцій
- Не доступний для інших регіонів.
- Ви завжди обмежені обсягом пам'яті (або сумою всіх первинних екземплярів у кластері)
- Шардування над декількома екземплярами можливе лише у вашій програмі - Redis тут нічого не робить (кластер Redis тут допомагає, але логіка загострення все ще знаходиться в драйвері / SDK, який ви використовуєте у вашому додатку) - масштаб і масштаб- наразі неможливо без простоїв на даний момент
- Ви платите за екземпляр незалежно від того, наскільки завантаження чи кількість запитів.
- Якщо ви бажаєте надмірності даних, вам потрібно встановити реплікацію (неможливо між різними регіонами)
- Для високої доступності потрібно використовувати репліки
- Немає автоматичного масштабування (див. Частину про відсутність масштабування взагалі вище)
Отже, наша настройка більшість часу така: Прості кеші з великим обсягом запитів у Redis, підтримувані DynamoDB як постійне і довговічне сховище. Завдяки цьому ми обмежуємо витрати, оскільки ми отримуємо неявну знижку на свої читання за моделлю Redis з оплатою за екземпляр, але також отримуємо перевагу надмірності DynamoDB і навіть можемо використовувати мову запитів DynamoDB для більш складних матеріалів ( якщо нам це потрібно).
Сподіваюся, що це допомагає!
Оновлення: Оголошуючи Amace DynamoDB Accelerator ( https://aws.amazon.com/de/dynamodb/dax/ ), ми переходимо на використання DAX, оскільки це (зрештою) саме те, що ми робили з поєднання DynamoDB і Redis. Оскільки DAX є повністю керованим AWS і дає нам можливість завжди використовувати мову DynamoDB у нашому додатку, а також отримувати переваги від кешу, що записує, як Redis.