Я перешел из мира MSSQL в Монго, и у меня есть вопрос о типичном сценарии использования. (Я не нашел информацию об этом на официальном сайте).
Я думаю, вы все сделали что-то вроде этого:
Например:
Я хочу сохранить некоторые файл + метаданные (имя файла + длина файла).
- "Создать объект документа" : var document = new MyDocument ("file1.txt", 65536);
- "Сохранить поток" : var streamId = GridFS.Upload (myStream);
- "Ссылка на поток с метаданными" : document.StreamId = streamId;
- «Сохранить документ» : myDocumentCollection.Insert (document);
Вопросы :
1) Поскольку нет транзакций, как я должен обрабатывать ситуацию, если моя операция потерпит неудачу после шага 2 - будет только сам поток. Какой правильный способ справиться с этим? Разделяем базу на 10 серверов и молимся, чтобы она никогда не подвела? Создать фоновые службы для очистки противоречивых записей?
2) Как правильно обрабатывать GridFS: удалить документ + поток, перезаписать поток в режиме отказоустойчивости?
3) Как обрабатывать ситуации, когда моей работе нужно изменить пару объектов?