Blob 数量大于上传文件数量

Number of Blobs is greater than number of uploaded files

TL;DR:解决了这不是问题 - 我的调查是错误的

我正在使用 Azure 存储帐户来存储通过 web-application 上传的文件。 它的设置方式是只有通过 WebApplication 上传的文件才存储在存储帐户容器中(因此没有其他方式文件应该如何出现在容器中,没有直接操作存储帐户容器或日志或任何东西。只是上传)

现在因为 WebApplication ) Ruby on Rails 6.1 with ActiveStorage lib uploads) is creating row in SQL table for every file uploaded 这对我来说超级简单获取上传文件总数:

ActiveStorage::Blob.count
=> 437538

我应该在 Azure Blob 存储容器上有大约 437 538 个文件。

现在,当我检查来自 Web UI Storage Explorer (preview) > container > more > folder statistics 的文件总数时,它说我有大约 1 133 000 个 Blob

我在 Azure Storage 桌面应用程序中做了同样的事情,它在 1 132 000 Blobs

附近

因此,我预计会有 437k 个文件,但我有 1.3 Milion 个 Blob。 注意:上传的文件不大 - 图片或 pdf 最大 50MB

我的问题:这是否意味着文件未映射 1:1 到 Blob 计数?如果是这样,我如何将 Blob 计数转换为文件计数?

我认为这可能是快照,但网络UI 明确表示“不包括快照”

现在是的,有些记录可能已经从 SQL table 中删除,而不是从 Azure Blob 中删除,但我预计会有多达 1000 个这样的错误(由于应用程序的性质 - 它更像是存档,其中你不删除任何东西)

好吧,我的整个调查都是错误的! (我的道歉)

简短回答:是的 blob 计数是 1:1 文件计数

我有 130 万条记录的原因是我没有考虑由 WebApplication 处理的缩略图(我的错误)

完整详细信息(针对 Rails 开发人员的 Ruby):

ActiveStorage 库的工作方式是,当您上传文件时,会在 ActiveStorage::Blob table 中创建一个 sql 行。所以你有 1:1 文件上传到 Azure 和 sql 记录。所以此时我会有 436k 文件 == 436k sql 记录

但是当请求 ActiveStrage 变体(缩略图、预览...)时,库将缩小缩略图并将其上传到 Azure Blob 以供将来用作缓存,这意味着此时您有 436k sql 行 == 436k 个文件 + 1 个文件(缩略图)

现在考虑许多不同大小的缩略图,您很快就会得到额外的 864k 文件

我希望这对以后的人有所帮助