2015-04-01 75 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