Локальный SQLite против удаленного MongoDB - PullRequest
8 голосов
/ 04 февраля 2012

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

  • Локальные файлы SQLite, тщательно спроектированные для масштабируемого способа (один новый файл базы данных для каждого пользователя X, поскольку записи будут зависеть от пользовательского контента, без зависимости от данных между пользователями);
  • Удаленный сервер MongoDB (например, Mongolab ), поскольку мой хост-сервер не обслуживает MongoDB.

Я не доверяю серверу MySQL на текущем общем хосте, поскольку он очень часто отключается (и у меня тоже были проблемы с MySQL на другом хосте). По той же причине я не собираюсь использовать postgres.

Плюсы SQLite:

  • Это локально, поэтому должно быть быстрее (я позабочусь об использовании индекса и транзакций правильно);
  • Мне не нужно беспокоиться о сниффинге tcp, поскольку протокол Mongo Wire не шифруется ;
  • Мне не нужно беспокоиться о сбое в работе сервера, поскольку SQLite не работает.

Плюсы MongoDB:

  • Легче масштабируется;
  • Мне не нужно беспокоиться о разделении баз данных, поскольку масштабируемость кажется естественной;
  • Мне не нужно беспокоиться об изменениях схемы, поскольку Mongo не имеет схемы, а SQLite не полностью поддерживает изменение таблицы (особенно с учетом изменения многих рабочих файлов и т. Д.).

Я хочу помочь принять решение (и, возможно, рассмотрим третий вариант). Какой из них лучше, когда операции записи и чтения растут?

Я собираюсь использовать Ruby.

1 Ответ

11 голосов
/ 04 февраля 2012

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

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

...