MySQL Blob 与磁盘( "video frames")

标签 mysql filesystems blob

我有一个 C++ 应用程序,每秒生成 6 个相对较小的类似图像的整数数组。数据是64x48x2维int(即64x48二维向量的网格,每个向量由两个 float 组成)。每张图像大约为 26kb。该应用程序还生成时间戳和一些描述数据的功能。我想将每帧的时间戳和特征存储在 MySQL 数据库列中。我还需要将原始数组存储为二进制数据,可以存储在光盘上的文件中,也可以存储为数据库中的 blob 字段。假设应用程序将或多或少地不间断运行,并且我将想出一种方法来归档超过特定年龄的数据,这样存储就不会成为问题。

对于 blob、光盘上的文件或我可能没有想到的其他方法,这里有哪些权衡?我不需要查询二进制数据,但我需要查询表中的其他元数据/功能(我肯定会根据时间戳构建索引),并检索二进制数据。如果我将多个帧存储在磁盘上的单个文件中(而不是每个文件一帧),方程会发生变化吗?

是的,我已阅读 MySQL Binary Storage using BLOB VS OS File System: large files, large quantities, large problemsTo Do or Not to Do: Store Images in a Database ,但我认为我的问题有所不同,因为在这种情况下,将有数百万个相同尺寸的二进制文件。我不确定在文件系统中维护这么多小文件与在 db blob 列中存储这么多文件相比,对性能的影响如何。任何观点将不胜感激。

最佳答案

在某个时刻,查询许多 blob 会变得慢得难以忍受。我怀疑即使您的二进制文件尺寸相同,情况也会如此。此外,您仍然需要一些代码来访问和处理 blob。而且这并没有利用文件缓存,而文件缓存可能会加速直接从文件系统的图像查询。

但是!您提供的链接没有提到基于对象的数据库,它可以以一种您可以非常快速地访问它的方式存储您所描述的数据,并且可能以 native 格式返回它。有关讨论,请参阅链接或仅搜索谷歌,有很多讨论:

Storing images in NoSQL stores

我也会研究 HBase。

我想既然您一开始就不确定要使用什么(并且没有答案),那么替代解决方案可能是合适的。

关于MySQL Blob 与磁盘( "video frames"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5160859/

相关文章:

mysql - 表情符号未插入数据库 Node js mysql

Hadoop FS 分隔符

javascript - 有没有办法用纯javascript将图像复制到剪贴板而无需库?

javascript - React Native 从任意数据创建 blob

MYSQL sum() 排除记录

mysql - mysql集群在速度上如何与redis匹敌?

php - 从数组中获取特定项目

python - 如何使用 Ebpf 阻止文件打开?

c - Chan的FAT FILE SYSTEM MODULE写入字节数有限制吗?

javascript - 如何使用 Vuejs 在 html 中显示 mysql blob 图像?