管理图像库:使用 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 或链接的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Facebook 移动应用程序在 Flutter 应用程序中将链接(或图像)与用户管理的 Facebook 页面共享