如何在服务器上正确存储图像并在数据库中引用它们?

时间:2018-09-07 20:28:13

标签: sql-server image stored-procedures

我正在处理一个需要存储大量图片的Web应用程序。我尝试将它们以blob格式存储在数据库中,但是我很快发现,从数据库中检索图片花费的时间太长。

我在一些不同的论坛上读到,可以将图片与Web应用程序一起存储在实时服务器上的文件夹中,并且在性能等方面,此选项要优越得多。

所以我的问题是;如果我将这些图片存储在实时服务器上,那么我将如何在SQL Server数据库中引用这些图片,其次,我将如何创建“模拟数据”来测试我的存储过程?

我意识到这是我的第一篇文章,对于大多数有经验的程序员来说,这可能是非常基本的。

但是,我尝试在此站点(和其他站点)上阅读,但是我一直找不到答案。

最诚挚的问候

布拉德比特

2 个答案:

答案 0 :(得分:2)

通常,您会将文件存储在服务器文件系统(或某些可访问的网络文件夹)中,而数据库应存储它们的相对或完整路径。

这样,如果用户请求ID为250的文件,则将从数据库“文档”(或任何)表中检索条目,并获取其完整路径。

答案 1 :(得分:0)

考虑到(大多数)文件系统经过优化,可以分层访问数据(即,在文件夹中),如果您有一个大文件夹(例如有数百万个文件),则性能会很差。 Here is more on NTFS performance

要避免瓶颈,请创建一个n级文件夹结构,其中每个级别的名称是一个数字。例如xxx / yyy / zzz / qqq.jpg。

其中xxx,yyy,zzz和qqq是数字000-999。这足以存储1 000 000 000个文件,并将单个文件夹中的文件/文件夹数量保持在限制范围内。

在数据库中创建一个表(file_id,level1,level2,level3,level4)以存储每个文件的位置。创建一个过程来获取文件,确定放置位置并在数据库中写入位置。