ruby-on-rails - Blob 数大于上传文件数
问题描述
TL;DR:解决了这不是问题——我的调查是错误的
我正在使用 Azure 存储帐户来存储通过 Web 应用程序上传的文件。它的设置方式是只有通过 WebApplication 上传的文件才存储在 Storage Account Container 中(所以没有其他方式文件应该出现在容器中,没有直接操作 Storage Account 容器或日志或任何东西。只需上传)
现在因为 WebApplication ) Ruby on Rails 6.1 with ActiveStorage lib uploads) 正在为每个上传的文件在 SQL 表中创建行,所以我很容易获得上传文件的总数:
ActiveStorage::Blob.count
=> 437538
我应该有437 538
Azure Blob 存储容器上的文件。
现在,当我从 Web UI 检查文件总数时, Storage Explorer (preview) > container > more > folder statistics
它说我周围有1 133 000
Blob
我在BlobAzure Storage
周围的桌面应用程序中做了同样的事情1 132 000
因此,我期待437k
文件,但我有1.3 Milion
Blob。注意:上传的文件不大 - 图片或 pdf 不超过 50MB
我的问题:这是否意味着文件没有 1:1 映射到 Blob 计数?如果是这样,我如何将 Blob 计数转换为 File 计数?
我认为这可能是快照,但 WebUI 明确表示“不包括快照”
现在是的,有些记录可能已从 SQL 表中删除,而不是从 Azure Blob 中删除,但我预计最多有 1000 个此类错误(由于应用程序的性质 - 它更像是不删除任何内容的存档)
解决方案
好的,我的整个调查都是错误的!(我很抱歉 )
简短回答:是的,blob 计数与文件计数为 1:1
我有 130 万条记录的原因是我没有考虑 WebApplication 处理的缩略图(我的错)
完整详情(适用于 Ruby on Rails 开发人员):
ActiveStorage lib 的工作方式是,当您上传文件时,会在 ActiveStorage::Blob 表中创建一个 sql 行。因此,您将 1:1 文件升级到 Azure 和 sql 记录。所以此时我将有 436k 文件 == 436k sql 记录
但是,当请求 ActiveStrage 变体(缩略图、预览、...)时,lib 将缩小缩略图并将其上传到 Azure Blob 以供将来用作缓存,这意味着此时您有 436k sql 行 == 436k 文件 + 1 个文件(缩略图)
现在考虑许多不同大小的缩略图,您很快就会得到额外的 864k 文件
我希望这对将来的人有所帮助
推荐阅读
- javascript - 无法在 slack 上为使用 Microsoft Bot Framework 的机器人构建发送或接收消息
- json - Pandas 从嵌套的 json 中读取一个参数
- python - Why does uWSGI not reject requests when the listen queue should be full?
- javascript - 使用javascript从开始标记删除选定的html元素到结束标记的值
- ruby-on-rails - 如何在 Rails 应用程序中模拟 curl 请求?
- postgresql - 如何停止容器内的 postgresql 服务器?
- python - 将并行 slurm 作业与具有多个节点的 mpirun 结合使用
- c# - 二进制文字的 XML 序列化
- sql - 加速访问 2016 查询
- sql - SQL 查询 to_char BETWEEN 返回错误结果和正确结果