Я хотел бы быть уверен, что мои данные будут в базе данных после вставки, и откатить весь пакет, если одинэлемент не был вставлен.
Это сложная тема, и здесь необходимо рассмотреть несколько компромиссов.
Стоит ли использовать шардинг?
Шардинг предназначен для масштабирования записей.Для безопасности данных, вы хотите посмотреть наборы реплик.
Должен ли я использовать некоторые конкретные команды mongoDB?
Первое, что нужно рассмотреть, это "безопасный" режим или "getLastError ()", как указано Андреасом.Если вы выполняете «безопасную» запись, вы знаете, что база данных получила вставку и применила запись.Однако MongoDB сбрасывается на диск только каждые 60 секунд, поэтому сервер может выйти из строя без данных на диске.
Второе, что нужно учитывать, это «ведение журнала» (v1.8 +).При включенном ведении журнала данные отправляются в журнал каждые 100 мс.Таким образом, у вас есть меньшее время до сбоя.Драйверы имеют опцию «fsync» (проверьте это имя), которая идет на шаг дальше, чем «безопасная», она ожидает подтверждения того, что данные были сброшены на диск (то есть файл журнала).Однако это касается только одного сервера.Что произойдет, если жесткий диск на сервере просто умрет?Ну, вам нужна вторая копия.
Третье, что нужно учитывать, это репликация.Драйверы поддерживают параметр «W», который говорит «реплицируйте эти данные на N узлов» перед возвратом.Если запись не достигает «N» узлов до истечения определенного времени ожидания, запись завершается неудачно (генерируется исключение).Однако вам необходимо правильно настроить букву «W» в зависимости от количества узлов в вашем наборе реплик.Опять же, поскольку жесткий диск может выйти из строя, даже при ведении журнала, вы захотите посмотреть на репликацию.Затем происходит репликация в центрах обработки данных, которая слишком длинна, чтобы попасть сюда.Последнее, что нужно учитывать, это ваше требование «откатиться».Насколько я понимаю, MongoDB не обладает такой способностью «отката».Если вы делаете пакетную вставку, лучшее, что вы получите, - это указание того, какие элементы вышли из строя.
Вот ссылка на драйвер PHP на этом: http://it.php.net/manual/en/mongocollection.batchinsert.php Вам придетсяпроверьте детали репликации и параметр WЯ считаю, что здесь действуют те же ограничения.