可能重复:
在DB中存储图像 - 是或否?
你好
目前,我网站上的每家公司都有1张图片,可以添加到他们的个人资料中.我将该图像保存到数据库中....它的公司徽标.
现在我想让他们添加更多图片.现在我不知道我是否必须将它全部保存在数据库中或保存在文件夹中????
我认为文件夹会更好的原因是因为有很多很好的文章与花哨的银色光有点功能,我可以使用,但所有这些只适合保存在文件夹中的图像.
因为我不是很好,我很难改变代码来查看数据库而不是使用文件夹进行图像检索的示例.
我想在我的网站上添加这样的东西(浏览图片).关于如何在图像保存在数据库中时如何执行此操作的任何代码示例?我在VB.net中使用ASP.NET. 点击这里查看我在说什么
有什么想法吗?
问候艾蒂安
我正在寻找类似于Amazon S3的服务,这是一种存储和检索任意数据(和元数据)的简单服务,但是在您自己的数据中心本地运行.严格来说,我不确定您是将其称为CDN还是轻量级CMS.
它必须是水平可扩展的(包括存储和带宽)和容错.它还必须支持REST,最好是WS,以及可插拔的身份验证和授权系统.使用Java EE构建的东西更适合更方便的集成和可扩展性,但这只是个人偏好,而不是必需的.
建议?
我必须为以下任务找到设计决策:
我有一个SQL Server数据库,它包含一个订单表.用户可以通过从网页上传的简单文件上传PDF文档并将其分配给订单.每个订单不超过一个文档(可能没有文档,从不超过一个).为此,用户打开网页,输入订单号,显示订单并单击上传按钮.所以我知道上传的文件属于哪个顺序.
现在我正在考虑将两种文件存储在Web服务器上的选项:
1)通过varbinary(MAX)列扩展我的订单表,并将PDF文档直接存储到该二进制字段中.
2)将PDF文件保存在磁盘上的特定文件夹中,并为其指定与订单相关的唯一名称(例如,我的订单号是数据库中的主键,或者是我可以存储在其他列中的GUID).订购表).也许我必须将文件存储在子文件夹中,每月一个,并将子文件夹名称存储到数据库的订单行中,以避免在一个文件夹中获取过多的文件.
存储PDF文件后,可以在输入相关订单号后通过浏览器下载和查看.
我倾向于选项(1),因为数据管理似乎更容易让我在一个数据库中拥有所有相关数据.但是我有点担心随着时间的推移我会遇到性能问题,因为我的数据库大小比解决方案(2)增长得快得多.大约90%甚至95%的数据库总大小仅由那些存储的PDF文件组成.
以下是一些其他信息:
(我知道在使用上述数字大约2年后,我将达到SQL Server Express版本的4GB限制.但我们可以忽略这一点,从数据库中删除旧数据或升级到完整许可证将是可能的选择.)
我的问题是:选项的Pro和Contra是什么,你会推荐什么?也许某人有类似的任务,可以报告他的经历.
提前谢谢你的回复!
有关:
我正在运行的版本(基本上是最新的):
PHP:5.3.1
MySQL:5.1.41
Apache:2.2.14
OS:CentOS(最新)
情况就是这样.
我有数千个非常重要的文件,从客户合同到语音签名(合同的客户授权记录),文件类型包括但不限于jpg,gif,png,tiff,doc,docx,xls,wav,mp3 ,pdf等
所有这些文档目前都存储在多个服务器上,包括Windows 32位,CentOS和Mac等.有些文件也存储在员工台式计算机和笔记本电脑上,有些文件仍然是存储在数百个盒子和文件柜中的硬拷贝.
现在因为客户或律师可以随时要求合同证明,我公司必须能够有效地搜索和找到正确的文件,因此所有这些文件都必须数字化(如果还没有)并且相关进入某种搜索和访问的顺序.
作为程序员,我创建了一个完整的客户关系管理工具,供整个公司使用.这包括客户资料管理,订单和工作跟踪工具,工作/销售创建和管理模块等,以及目前客户资料级别(驾驶执照,信用授权等)或工作中所需的任何文件/销售级别(合同,语音签名等)可以上传到服务器并位于父/子层次结构中,就像Windows资源管理器或任何其他典型的文件管理模型一样.
结构如下:
drivers_license
| - DL_123.jpg
voice_signatures
| - VS_123.wav
| - VS_4567.wav
合同
因此,文件使用PHP和Apache进行上传,并存储在操作系统的文件系统中.在上载时,关于文件的某些信息存储在MySQL数据库中.存储的一些信息是:
表:FileUploads
FileID
CustomerID(文件所属的客户ID,它们都有此.)
JobID/SaleID(相关作业/销售的ID,如果有)
.FileSize
FileType
UploadedDateTime
UploadedBy
FilePath(文件的目录路径是存储在.)
FileName(上传文件的当前文件名,CustomerID和JobID/SaleID的组合,如果适用.)
FileDescription
OriginalFileName(上载时源文件的原始名称,包括扩展名.)
如您所见,文件通过文件名链接到数据库.当我想提供客户的文件下载给用户时,我所要做的就是"SELECT*FROM FileUploads WHERE CustomerID = 123 OR JobID = 2345;" 这将输出我需要的所有文件详细信息,并且使用FilePath和FileName,我可以提供下载链接.
http ... server/FilePath/FileName
这种方法存在许多问题:
有很多原因,其中一些在这里描述:http://www.dreamwerx.net/site/article01.此外,这里也有一篇有趣的文章:sietch.net/ViewNewsItem.aspx?NewsItemID=124.
因此,经过大量研究后,我几乎已经决定将所有这些文件存储在数据库中,如BLOB或LONGBLOB,但在我这样做之前还有很多注意事项.
我知道将它们存储在数据库中是一个可行的选择,但是有许多方法可以存储它们.我也知道存放它们是一回事; 以可管理的方式关联和访问它们完全是另一回事.
此链接提供的文章:dreamwerx.net/site/article01描述了一种将上传的二进制文件拆分为64kb块并使用FileID存储每个块,然后使用标头将实际二进制文件流式传输到客户端的方法.这是一个非常酷的主意,因为它减轻了对服务器内存的预感; 而不是将整个100mb文件加载到RAM然后将其发送到客户端,它一次只做64kb.我已经尝试了这个(并更新了他的脚本),这在一个非常小的测试框架中是完全成功的.
因此,如果您同意这种方法是一个可行的,稳定的和强大的长期选项来存储适度大的文件(1kb到几百megs),以及大量的这些文件,请告诉我您有哪些其他注意事项或想法.
此外,我正在考虑获取当前的"文件管理"PHP脚本,该脚本提供了一个界面,用于管理存储在文件系统中的文件,并将其转换为管理存储在数据库中的文件.如果已经有任何软件可以做到这一点,请告诉我.
我想我可以提出很多问题,并且所有信息都在那里^^所以请讨论这方面的所有方面,我们可以来回传递想法并相互教授.
干杯,
Quantico773
我是新快递,nodejs,mongodb。我正在为一家服装店建立一个网站。他们想经常上传图片,也许每2天他们就会上传新图片,这些图片需要快速显示在网站上,缩略图。单击图像将显示产品的详细信息等。
我的问题是存储图像的最佳方法是什么?
如何快速加载图片到网站?
谢谢
当你保存你的图像时(你有很多这样的图像)你会在数据库中存储为blob,还是作为文件存储?为什么?
背景:
我们有很久以前实施的内部文件存储系统.无论出于何种原因,选择使用数据库作为文档的存储机制.
我的问题是:
存储文档的最佳做法是什么?有哪些替代方案?优缺点都有什么? 答案不一定是技术或平台特定的,它更像是一般的最佳实践问题.
我的想法:
数据库不适用于文档存储.文件系统或第三方文档管理系统可能会更好用.数据库中的文档存储是昂贵的.操作很慢.这些逻辑假设是什么?也许这是最好的,但在我看来,我们有更好的选择.oracle BFILE(链接到NAS或SAN上的文档)能否优于BLOB/CLOB?
细节:
更新(来自以下问题):
我正在编写一个将上传和删除许多文件的应用程序,我通常只是将文件移动到服务器中的文件夹中,并使用唯一的行命名它们id.但据我所知MySQL还允许我存储二进制数据(文件)什么时候这是一个更好的选择?
请使用可靠的参数,例如何时使用BLOB将意味着性能提升?
PS:如果重要的话,我正在使用MyISAM.
谢谢.
更新:
相关问题:
- 在DB中存储图像 - 是或不是?
- 要做或不做:将图像存储在数据库中(感谢塞巴斯蒂安)
更新2
将文件存储在数据库中并不是我需要知道什么时候比将它们存储在文件夹中更好.
我的一位客户要求提供文件管理系统,用于数千种不同格式的文档,即pdf,doc,docx等.我的问题是在数据库或文件系统中存储此文件的最佳方法是什么?两种方法之间如何轻松保护文档?
快速检索文件是关键要求..
如果有帮助,我正在使用mysql
问候.
我正在构建一个asp.net mvc应用程序,用户可以将图片附加到他们的个人资料中,也可以在系统的其他区域附加,例如仪表板上显示最近消息等的消息小工具.
当用户上传这些内容时,我想知道将它们存储在数据库或磁盘上是否更好.
数据库优势
易于备份整个数据库,并保留配置文件内容/图像与相关的配置文件/用户表
当我稍后在轨道上构建Web服务时,他们可以从一个位置(数据库)中提取所有与profiile相关的数据
文件系统的优点
从磁盘加载文件可能更快
还有其他什么好处
其他网站在哪里存储此类信息.对于类似这样的事情,我是否有点担心数据库性能?
也许有一种方法可以缓存从数据库中提取的图像一段时间?
或者,将这些图像存储在数据库中的想法如何,但是将它们复制到磁盘,以便Web服务器可以从那里加载它们?这似乎既提供了Db的备份和便利,同时提供了磁盘上文件的速度优势.
有问题的基础设施
摘要
在SO上阅读很多相关的线程,许多人现在趋向于SQL Server Filestream类型.然而,从我可以收集的内容(我可能是错的),当文件非常小时,没有太大的好处.然而,当文件是多个MB或更大时,文件流看起来会大大提高性能.
由于我的个人资料图片往往约为5kb,我决定将它们作为varbinary(max)存放在数据库的文件存储中.
在ASP.NET MVC中,我确实看到了一些性能问题,返回FileContentResults从这样的数据库中拉出的图像.所以如果在我的应用程序缓存中找不到该文件的位置,我最终会在磁盘上缓存该文件.
所以我想我选择了混合动力车;
在任何时候我都可以删除磁盘上的缓存文件夹,并且当重新请求图像时,它们将在第一次命中时被重新复制并在之后从缓存中提供.
blob ×3
image ×3
mysql ×3
asp.net ×2
database ×2
php ×2
amazon-s3 ×1
architecture ×1
binary-data ×1
c# ×1
cdn ×1
document ×1
documents ×1
express ×1
file ×1
filesystems ×1
http-headers ×1
image-upload ×1
java-ee ×1
mongodb ×1
node.js ×1
performance ×1
profile ×1
sql-server ×1
storage ×1
streaming ×1
vb.net ×1