Почему данные MongoDB сохраняются, когда я удаляю все файлы из / data / db? - PullRequest
1 голос
/ 23 декабря 2010

Я только начал использовать MonogDB с Rails 3. После некоторых тестов я обнаружил, что он работает в 5-10 раз быстрее, чем Postgresql / pg.

Я решил проверить, как хранятся данные, поэтомуЯ удалил все файлы из / data / db (эта папка содержала такие файлы, как "mydb.0", "mydb.1" и т. Д.

Однако я все еще могу получить доступ к данным из моего приложения Rails! Даже после перезагрузкисервер.

Так есть ли какая-либо папка temp или cache со всеми файлами .json с данными?

Ответы [ 2 ]

5 голосов
/ 23 декабря 2010
  1. Вы не можете удалить «файлы данных», не остановив MongoDB.
  2. MongoDB использует кэширование , но в случае остановки MongoDB кэшированная дата также очищается.
  3. Если вы остановили MongoDB и удалили папку данных, данные больше не будут доступны.
  4. MongoDB сохраняет все данные как bson , а не как json.
2 голосов
/ 04 января 2011

Правильный ответ - это функция UNIX, а не монго.(Я предполагаю, что вы используете Linux)

Mongo использует файлы с отображенной памятью в качестве хранилища.Среди прочего это означает, что, скорее всего, mongo постоянно держит все файлы открытыми.

В Unix файлы удаляются, как только последний процесс, использующий файлы, закрывает их, а не когда вы запускаете команду «rm»."команда.

В этом случае команда rm снимает связь с файлом (удаляет запись из каталогов, поэтому к ней больше нет доступа).

Итак, ответ таков: файл будет удаленОС, как только вы остановите mongo.

Обратите внимание, что файл все еще использует место на диске, даже если "df" или "du" говорит, что нет.Это может сбивать с толку, так как вы можете иметь ошибки «диск заполнен» с большим количеством свободного места, о котором сообщалось в «df».

Вы можете удалить эти файлы, но:

  • Вы не будетеОсвободите место, но все команды Unix сочтут противоположность.
  • Mongo не будет затронут (На первый взгляд, на самом деле не знаю внутренности), но все данные будут потеряны при закрытии.Который иногда может быть полезен.(Я видел, как это когда-то использовалось для настройки демо-серверов)
...