2013-08-07 4 views
0

Я хочу быть уверенным, успешно ли сохранены мои данные в MongoDB. Поскольку в некоторых случаях MongoDB принимает стратегию fire_and_forget, я хочу указать Write Concern {w: most, j: 1} на уровне драйвера, который в моем случае является Mongoid.Обеспечение сохранения данных в MongoDB

Использование регистра:

Я хочу, чтобы обеспечить мои пользователи имеют уникальный «ник» и не может подписаться нарушения уникальности.

Я уже создал уникальный индекс в поле «ник».

+0

и, как я уже хочу, чтобы установить его в уровне драйвера. Я знаю, что 'w' можно установить через # с – arpanchaudhury

+0

Вы пробовали 'session.command (j: 1)' – WiredPrairie

+0

Yup, но не повезло. Найденное имя файла конфигурации mongoid.yml (/config/mongoid.yml), где я могу настроить драйвер мопеда. – arpanchaudhury

ответ

0

Короткий ответ: вы не можете.

Длинный ответ:
Рассмотрите возможность использования нескольких вариантов хранения данных. Слишком часто люди прыгают на подножку NoSQL, когда это не обязательно. Если вам нужны записи guranteed, вы должны использовать реляционную базу данных или рассмотреть гибрид, такой как orientDB. Отсутствие гарантированных записей является одной из главных причин, почему так хорошо подходят решения, такие как MongoDB.

+2

С некоторыми драйверами (например, PyMongo) не только я могу попросить Mongo-сервер подтвердить мои записи, но и обеспечить, чтобы записи записывались в журнал на диске, чтобы гарантировать долговечность записи (журналирование - это термин, который они используют). Таким образом, существует очень редкий шанс потери данных. – arpanchaudhury

+1

Снова у вас есть возможность потери данных, что является основным моментом моего ответа – Woot4Moo

+0

Да, я ценю это. Но в некоторых случаях, когда у вас есть ограничение допуска, вы можете это принять. Предположим, вы не смогли сохранить комментарий в блоге, и это происходит раз в миллион. Okey позволяет не обсуждать SQL vs NoSQL. Я просто хочу знать, возможно ли установить параметр «j» в mongoid или нет. – arpanchaudhury

2

Для наборов реплик можно использовать следующую конфигурацию, как описано в http://mongoid.org/en/mongoid/docs/installation.html#replica:

consistency: :strong 

Вместе с тем, вы хотите иметь безопасный режим на, как описано в http://mongoid.org/en/mongoid/docs/tips.html#safe_mode:

safe: true 

это не выглядит, как вы можете установить MongoDB в w параметр, как это, но вы можете установить его на полосы документа операции, что будет на запрос, хотя:

Band.with(safe: { w: 3 }) 

Вы также можете сделать это за один сеанс с:

Band.mongo_session.with(safe: { w: 3 }) do |session| 
    session[:artists].find(...) 
end 
+0

Я благодарю за помощь Дерика. например, указав параметр w, мы также можем указать параметр j, чтобы убедиться, что мои записи на самом деле сохраняются? – arpanchaudhury

+0

Я не знаю, их документация ничего не говорит об этом. Но идея состоит в том, что с '' w: "most" '' это не нужно. – Derick

Смежные вопросы