GridFS和原子更新

问题描述 投票:0回答:1

我正在考虑使用MongoDB GridFS来存储和检索图片,但阅读官方文档(https:/docs.mongodb.commanualcoregridfs。)我不明白下面的部分,如果需要原子化地更新整个文件的内容,请不要使用GridFS。

如果你需要原子地更新整个文件的内容,不要使用GridFS。作为替代,你可以存储每个文件的多个版本,并在元数据中指定文件的当前版本。你可以在上传文件的新版本后,在原子更新中更新表示 "最新 "状态的元数据字段,之后如果需要的话,可以删除之前的版本。

他们说:"原子更新整个文件的内容 "是什么意思?如果我需要更新一个存储的图片怎么办?存储的文件会怎样?

mongodb gridfs
1个回答
1
投票

GridFS将文件的内容分割成块(所以每个块不超过16MB文件大小的限制)。

正如链接的文档所说,GridFS不支持事务。如果没有事务,只有对一个文件的单个操作是原子的,但GridFS可以对多个文件进行操作,而这些操作不会是原子的。

此外,文件元数据和文件内容是分开存储的,同样不会原子化写入。

如果我需要更新存储的镜像怎么办?

你可以插入一个新的图像,然后(原子地)更新其他文档来引用新上传的图像。

© www.soinside.com 2019 - 2024. All rights reserved.