Mongo DB GridFS + транзакция документа (типичный вариант использования) - PullRequest
1 голос
/ 19 марта 2012

Я перешел из мира MSSQL в Монго, и у меня есть вопрос о типичном сценарии использования. (Я не нашел информацию об этом на официальном сайте). Я думаю, вы все сделали что-то вроде этого:

Например: Я хочу сохранить некоторые файл + метаданные (имя файла + длина файла).

  1. "Создать объект документа" : var document = new MyDocument ("file1.txt", 65536);
  2. "Сохранить поток" : var streamId = GridFS.Upload (myStream);
  3. "Ссылка на поток с метаданными" : document.StreamId = streamId;
  4. «Сохранить документ» : myDocumentCollection.Insert (document);

Вопросы :

1) Поскольку нет транзакций, как я должен обрабатывать ситуацию, если моя операция потерпит неудачу после шага 2 - будет только сам поток. Какой правильный способ справиться с этим? Разделяем базу на 10 серверов и молимся, чтобы она никогда не подвела? Создать фоновые службы для очистки противоречивых записей?

2) Как правильно обрабатывать GridFS: удалить документ + поток, перезаписать поток в режиме отказоустойчивости?

3) Как обрабатывать ситуации, когда моей работе нужно изменить пару объектов?

1 Ответ

0 голосов
/ 20 марта 2012

1 & 2) Вы должны получить MongoGridFSException, если загрузка не удалась.Так что просто обращайтесь с этим в пункте «поймать», если считаете нужным.Если метаданные не слишком велики, вы также можете использовать альтернативный upload api и передать метаданные через параметр createOptions.

3) В более общих случаях, если вы хотите убедиться, чточто последняя операция прошла успешно, вы можете использовать команду getLastError , чтобы убедиться, что с последней операцией не было ошибок.

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