База данных MongoDB для сброса с помощью Rails 3.0 - PullRequest
0 голосов
/ 26 марта 2012

Я развертываю свое первое приложение ROR с MongoDB.Я заметил, что если компьютер, на котором я его развернул, перезагружается, то, как правило, база данных полностью или частично исчезает.Это также происходило до того, как я прямо заявил в своем приложении на Rails, что использую MongoDB без активной записи, хотя раньше это работало.

Я заглянул в папку / data / db /, и, кажется, есть многочисленные файлы базы данных: app-production.1, app-production.2 и т. Д. В моем файле инициализатора mongo_config.rb у меня есть база данныхуказанный как

 MongoMapper.database = "app-#{Rails.env}"

Я также запустил интерактивную консоль mongo и заметил, что существует более 5 баз данных приложений.Итак, мой вопрос: MongoDB или Rails автоматически создают новый экземпляр базы данных, когда он выключается?Использует ли MongoDB несколько файлов для охвата базы данных?Спасибо!

1 Ответ

2 голосов
/ 26 марта 2012

База данных MongoDB охватывает несколько файлов (app-production.1, app-production.2, ...). Каждая новая база данных находится в своем собственном наборе файлов.

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

если машина будет перезагружена, база данных будет частично или полностью удалена

Это зависит от вашего определения «перезагрузки». Если вы отключите шнур питания, то у mongodb не будет времени для правильного выключения. Последние версии поставляются с включенным ведением журнала по умолчанию, поэтому значительная потеря данных не происходит - в случае серьезного сбоя mongodb попытается воспроизвести журнал. Примечание: если вы не работаете с включенным ведением журналов, вам следует восстанавливать базу данных после любого нечистого завершения работы или риска неизбежного повреждения базы данных.

Если вместо этого переустановить компьютер, то неудивительно, что данные исчезли:)

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