Использование S3 в качестве базы данных против базы данных (например, MongoDB) - PullRequest
0 голосов
/ 13 мая 2019

В связи с простой настройкой и низкими затратами я рассматриваю возможность использования корзины AWS S3 вместо базы данных NoSQL для сохранения простых пользовательских настроек в виде JSON (около 30 документов).

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

  • Распечатка ведер / файлов обойдется вам в деньги.
  • Нет обновлений - вы не можете обновить файл, просто замените его.
  • Нет индексов.
  • Версионирование обойдется вам в $$.
  • Без поиска
  • Нет транзакций
  • Нет API запросов (SQL или NoSQL)

Есть ли другие недостатки использования корзины S3 вместо базы данных?

Ответы [ 2 ]

4 голосов
/ 13 мая 2019

Вы «рассматриваете возможность использования корзины AWS S3 вместо базы данных NoSQL», но факт заключается в том, что Amazon S3 эффективно является базой данных NoSQL.

Это очень большой ключ.Ценность магазина.Ключ - это имя файла, Значение - это содержимое файла.

Если вам нужно просто «Сохранить значение с помощью этого ключа» и «Получить значение с помощью этого ключа», тогда все будет работать нормально.!

Фактически, старые заказы на Amazon.com (более года назад), по-видимому, архивируются в Amazon S3, поскольку они доступны только для чтения (без возврата, без изменений).

ХотяМедленнее, чем DynamoDB, Amazon S3, безусловно, стоит значительно дешевле для хранения!

3 голосов
/ 13 мая 2019

Контекст: мы используем S3 для некоторой «базы данных» ( горит. структурированное хранилище ключей / значений).

Следует отметить, что S3 действительно выполняет поиск и, в зависимости от того, как вы структурируете свои данные, запрашивает в виде S3 Выберите (и, если у вас есть время: Афина).

Однако самый большой недостаток / архитектурная проблема заключается в том, что S3 в конечном итоге становится непротиворечивым (что фактически является причиной, по которой вы не можете «обновить» файл). Это проявляется в некоторых видах поведения, которые ваша архитектура должна будет терпеть:

  • Операции кэшируются по ключу, поэтому, если вы попытаетесь получить объект, который не существует, а затем создадите его - в течение некоторого времени * любое попадание в этот объект вернет, что его не существует.
  • Глобального кэша нет, поэтому вы можете получить две разные версии одного и того же объекта в течение периода времени * после его перезаписи.
  • Операции со списком предоставляют полустабильный итератор. Если вы собираетесь перечислить на большом количестве объектов в обновляемом сегменте, то, скорее всего, вы не собираетесь посещать все объекты к концу итератора.

* период времени преднамеренно не определен AWS, однако, по наблюдениям, он редко превышает одну минуту.

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