管理图像库:使用 blob 或链接

Posted

技术标签:

【中文标题】管理图像库:使用 blob 或链接【英文标题】:Manage a library of images: use blobs or links 【发布时间】:2013-12-13 08:44:51 【问题描述】:

我们开发了一个 .Net/WPF 应用程序,它允许用户从通过 DLL 提供的图像创建“绘图”:它可以将这些绘图保存在本机格式,或导出为图像(PNG、JPEG、BMP、...)。

作为此应用程序更新的一部分,我们希望允许用户在内部数据库中管理这些图纸以提供新功能:

练习”概念的出现:练习 = 绘图 + 标题 + 描述 + 属性 可用于锻炼、从当前版本创建的绘图或导入图像(例如从网络) 从多个练习中创建会话

由于应用程序是单用户的,我们希望使用轻量且免费的数据库,因此我们开始使用 SQL Server Compact 将其与我们的开发环境集成。

但是,我们会向我们询问与图像管理相关的问题:

将它们直接存储在数据库中是否更好(作为BLOLB)? 最好将它们物理保存在计算机上,并且只在数据库中存储一个链接

SQL Server Compact 数据库的大小限制为 4 GB,但它应该为用户提供足够的灵活性。

但是在性能、维护和数据共享方面,最好的解决方案是什么? 您认为其他数据库 (SQLite) 可能更合适吗?

提前感谢您的反馈,

【问题讨论】:

【参考方案1】:

一旦您采用引用外部数据而不是存储 BLOB 的方式,您的数据总是面临更大的损坏风险。

只要这种风险是可以接受的,并且您在应用程序中编写代码来处理数据被破坏的情况(例如,用户从他们的文件系统中删除引用的文件),那么您将获得大量的可扩展性和性能提升有参考文献。

如果您不能接受风险,请使用 BLOB。

【讨论】:

就数据的“安全性”而言,最好将图像存储在 BLOB 中。但就“性能”而言,如果数据库是本地的,会不会有明显的性能差异? 取决于你如何定义“显着”。

以上是关于管理图像库:使用 blob 或链接的主要内容,如果未能解决你的问题,请参考以下文章

通过按钮/链接触发Wordpress图像库

如何通过 Facebook 移动应用程序在 Flutter 应用程序中将链接(或图像)与用户管理的 Facebook 页面共享

Gallery.php 链接图像

动态链接库和静态链接库

发送不带不和谐库的链接的图像

使用 C++ Boost 或 STL 和 Mysql 存储和检索图像