在我们的项目中,我们尝试在我们的 nosql 数据库中存储大文件,例如图像。在进行一些研究时,我们听说 Azure 云平台中的 Document Db nosql 数据库。此外,我们会将数据存储在 Azure 中。
在 Azure 平台中存储大文件的最佳方式是什么?Document Db 是否足够好?在 Azure 中使用 MongoDb 是否合适?
在我们的项目中,我们尝试在我们的 nosql 数据库中存储大文件,例如图像。在进行一些研究时,我们听说 Azure 云平台中的 Document Db nosql 数据库。此外,我们会将数据存储在 Azure 中。
在 Azure 平台中存储大文件的最佳方式是什么?Document Db 是否足够好?在 Azure 中使用 MongoDb 是否合适?
尽管 DocumentDB 允许您存储文件(它们作为附件存储),但我不建议您使用它。以下是我的理由:
对于在 Azure 中存储文件,我强烈建议您使用Blob Storage
. 它仅用于此目的。您可以存储在 blob 存储中的文件的最大大小为 1 TB(我认为这对您来说绰绰有余),每个存储帐户最多可以容纳 500 TB 的数据。此外,您可以直接将文件流式传输给最终用户。
DocumentDB 确实允许您将文件添加到文档中,称为附件。使用该功能的优点是附件的存储与文档的生命周期相关:如果您删除文档,则附件也将被删除。
由于 DocDB 仍处于预览阶段,一旦服务进入通用可用性,您可以预期上述限制会有所不同。
您不必将附件存储在 DocDB 本身中。DocDB 允许您这样做,或者简单地将对文件的引用存储为附件元数据的一部分。如果您想将文件存储在其他地方,但需要引用其在 DocDB 文档中的位置,这很有用。从文档中:
DocumentDB 允许您使用 DocumentDB 或您自己的远程媒体存储来存储二进制 blob/媒体。它还允许您根据称为附件的特殊文档来表示媒体的元数据。DocumentDB 中的附件是一个特殊的 (JSON) 文档,它引用存储在其他地方的媒体/blob。附件只是一个特殊的文档,它捕获存储在远程媒体存储中的媒体的元数据(例如位置、作者等)。
如果您需要将非常大的文件(如视频文件或大型工程文件)存储到 Azure 中,最好(也是最便宜)的选择可能是将数据存储在 Block Blob 中。然后,您可以获取 blob 的 Uri 并将其作为附件元数据存储在 docdb 文档中。
存储文件的首选机制是 Blob 存储,因为它很便宜。请记住,文档数据库非常昂贵,因此将文件路径存储在 Blob 存储中的事件使用 Azure 表。