簡體   English   中英

Mongo DB GridFS +文檔事務(典型用例)

[英]Mongo DB GridFS + Document transaction (typical use-case)

從MSSQL世界到mongo,我都對典型的用例有了一個未曾質疑的問題。 (我沒有在官方網站上找到有關它的信息)。 我想你們都做了這樣的事情:

例如:我想保護一些文件+元數據(文件名+文件長度)。

  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&2)上傳失敗時,您應該獲得MongoGridFSException。 因此,只要您認為合適,就可以在catch子句中處理它。 如果元數據不太大,您還可以使用備用的上載api ,並將元數據通過createOptions參數傳遞。

3)對於更一般的情況,如果要確保最后一個操作成功完成,可以使用getLastError命令來確保最后一個操作沒有錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM