我被聘请帮助编写管理最终用户特定信息的应用程序。它旨在管理几兆字节的信息,但也以全分辨率管理扫描图像。该项目是否应该使用数据库?为什么或为什么不使用?
答案 0 :(得分:1)
有任何问题“我应该使用某种工具吗?”归结为确切地询问你想做什么。您应该问自己 - “我想为这些数据编写自己的存储空间吗?”
大多数基于Web的应用程序是针对数据库编写的,因为大多数数据库都支持许多“免费”功能 - 您可以拥有多个Web服务器。您可以使用标准工具来编辑,验证和备份数据。您可以拥有一个包含事务的强大存储解决方案
答案 1 :(得分:1)
数据库对处理图像数据本身没什么帮助,但管理一堆图像的任何东西都会有关于你要处理的图像的元数据。根据元数据和你想用它做什么,数据库确实非常有用。
仅仅因为数据库对图像数据没有多大帮助,这并不意味着您无法将图像存储在数据库中。您可以将它们存储在SQL数据库的BLOB列中。
答案 2 :(得分:1)
如果数据量很小,或者安装在许多客户端计算机上,您可能不需要数据库的开销。
是否打算在许多用户计算机上安装?添加确保您可以运行在客户端安装的应用程序上选择的任何数据库引擎的开销并不是最佳选择。由于数据量很小,我认为XML就足够了。您可以对图像进行Base64编码并将其存储为CDATA。
应用程序是否可以在服务器上运行?如果您有并发用户,那么数据库具有处理这些方案(事务)的概念,这可能会有所帮助。扫描的图像数据适合BLOB。
答案 3 :(得分:1)
答案 4 :(得分:1)
在数据库中存储图像时,我尽量避免使用它。在你的问题中我可以收集你的问题,有可能存在大量相当大的图像,所以我可能强烈反对它。
如果这是一个Web应用程序,我会使用数据库使用关键字和其他参数快速搜索和索引图像。然后在文件系统中有一个指向图像位置的列,如果可能的话,使用某种文件夹结构来帮助进一步减少图像加载时间。
如果由于目录可用(网络共享)而需要更高的安全性且应用程序是本地的,那么您应该咬住子弹并将图像存储在数据库中。
答案 5 :(得分:0)
我的直觉反应是“为什么不呢?”数据库将提供一个存储信息的框架,所有输入/输出/优化功能都以文档格式提供。您可以使用服务器端解决方案,也可以使用本地数据库(如SQLite)或本地版本的SQL Server。无论哪种方式,您都拥有一个强大的,有文档记录的数据管理框架。
答案 6 :(得分:0)
This post应该为您提供有关在数据库中存储图像所需的大部分意见。你还的意思是“我应该使用数据库获取其他信息吗?”或者你只是询问图像?
答案 7 :(得分:0)
我们的CMS存储了我们处理的所有支票图像。它使用数据库作为元数据,并让文件系统处理扫描的图像。
像SQLite这样的简单数据库听起来很合适 - 它可以让您以一致的事务方式存储文件元数据。然后将路径存储到数据库中的每个映像,让文件系统执行它最擅长的操作 - 管理文件。
SQL Server 2008具有为数据库内文件构建的新数据类型,但在此之前,BLOB是在数据库中存储文件的方式。在一个小规模,也可以工作。
答案 8 :(得分:0)
数据库用于管理大量数据,并且可以让您快速访问,无论大小如何,都可以读取和写入数据。简而言之,他们管理数据规模 - 您不想处理的规模。如果您只有少数用户(数百?),您可以轻松管理磁盘上的数据(比如XML?)并将数据保存在内存中。图像显然不应该进入数据库,因此问题是您维护此数据库实例的数据量或者有多少用户?
答案 9 :(得分:0)
如果您想要一种结构化的方式来存储和检索信息,那么数据库绝对是最佳选择。它使您的应用程序更灵活,功能更强大,让您专注于实际的应用程序,而不是像编写自己的存储系统那样的偶然事件。
对于个别应用程序,SQLite非常棒。它适合作为文件的应用程序;不需要整个DRBMS主宰。
答案 10 :(得分:0)
这有很多因素。但是,作为一个数据库weenie,我会错误地拥有一个数据库。当事情发生变化时,它会让生活更轻松。 将改变。
根据图像,您可以将它们存储在文件系统上或实际将它们填充并将它们放入数据库中(不是所有DBMS都支持)。如果文件非常小,那么我会把它们包起来。如果它们很大,那么我会将它们保存在文件系统上并自行管理它们。
有那么多免费或廉价的DBMS,没有理由不使用它。我是一个SQL Server人,但你的应用程序就是这么简单,那么免费版的mysql应该可以胜任。事实上,它有一些非常酷的东西。