2015-04-01 70 views
2

由於GridFS存儲數據塊fs.chunks和元數據fs.files。所以,在一次交易中它管理着兩個集合。所有CRUD操作都保證原子性嗎?是否在MongoDB GridFS中爲CRUD操作維護原子性?

+1

我是經過認證的MongoDB DBA,並且誠實地告訴你:我不確定。我對C,R和D非常有信心。關於U,我必須研究,因爲原子性只能在文檔級別保證。請耐心一點。 – 2015-04-01 09:02:28

回答

2

這就是MongoDB FAQ說:

,如果你需要原子更新整個文件的內容不使用GridFS的。作爲替代,您可以存儲每個文件的多個版本,並在元數據中指定文件的當前版本。在上傳新版本文件後,您可以更新原子更新中指示「最新」狀態的元數據字段,並在需要時刪除以前的版本。

+1

值得指出的是,這意味着MongoDB不僅不能保證'fs.chunks'和'fs.files'的一致性,也不能保證'fs.chunks'中一個文件塊的一致性。 – Philipp 2015-04-01 12:53:00

+0

@Philipp:假設我將名稱保存爲元數據。現在我想更新名稱。我是否需要再次更新整個文件纔是名稱? – 2015-04-09 11:25:02

+0

@dev當你只是更新元數據時,爲什麼還要更新其他內容? – Philipp 2015-04-09 11:43:03