Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 存储上传图像、SQL数据库或磁盘文件系统的最佳位置是什么?_Database_Filesystems_Image Uploading_Binaryfiles - Fatal编程技术网

Database 存储上传图像、SQL数据库或磁盘文件系统的最佳位置是什么?

Database 存储上传图像、SQL数据库或磁盘文件系统的最佳位置是什么?,database,filesystems,image-uploading,binaryfiles,Database,Filesystems,Image Uploading,Binaryfiles,我正在编写一个应用程序,允许用户将图像上传到服务器上。我预计每天大约有20幅图像是jpeg格式的,可能没有经过编辑/调整大小。(这是另一个问题,如何在存储之前调整服务器端的图像大小。也许有人可以在评论中删除.NET资源)。 我现在想知道存储上传图像的最佳位置是什么 将图像作为文件存储在文件系统中,并在表中创建一条记录,其中包含该图像的确切路径 或者,使用数据库服务器的“图像”或“二进制数据”数据类型将图像本身存储在表中 我看到两者的优点和缺点。 我喜欢a),因为我可以轻松地重新定位文件,只需

我正在编写一个应用程序,允许用户将图像上传到服务器上。我预计每天大约有20幅图像是jpeg格式的,可能没有经过编辑/调整大小。(这是另一个问题,如何在存储之前调整服务器端的图像大小。也许有人可以在评论中删除.NET资源)。 我现在想知道存储上传图像的最佳位置是什么

  • 将图像作为文件存储在文件系统中,并在表中创建一条记录,其中包含该图像的确切路径

  • 或者,使用数据库服务器的“图像”或“二进制数据”数据类型将图像本身存储在表中

我看到两者的优点和缺点。 我喜欢a),因为我可以轻松地重新定位文件,只需更改表条目。另一方面,我不喜欢在web服务器上存储业务数据,我也不想将web服务器连接到保存业务数据的任何其他数据源(出于安全原因)
我喜欢b)因为所有的信息都在一个地方,并且很容易通过查询访问。另一方面,数据库很快就会变得非常庞大。外包这些数据可能会更加困难。

我通常将文件存储在文件系统中,因为这就是它的用途,尽管也有例外。对于文件,文件系统是最灵活和性能最好的解决方案(通常)

在数据库中存储文件有一些问题-文件通常比平均行大得多-包含许多大文件的结果集将消耗大量内存。此外,如果您使用的存储引擎使用表锁进行写操作(例如ISAM),则您的文件表可能会经常被锁定,具体取决于存储在其中的文件的大小/速率


关于安全性-我通常将文件存储在文档根目录之外的目录中(无法通过http请求访问),并通过首先检查正确授权的脚本为其提供服务。

我通常将文件存储在文件系统上,因为这就是它的用途,尽管也有例外。对于文件,文件系统是最灵活和性能最好的解决方案(通常)

在数据库中存储文件有一些问题-文件通常比平均行大得多-包含许多大文件的结果集将消耗大量内存。此外,如果您使用的存储引擎使用表锁进行写操作(例如ISAM),则您的文件表可能会经常被锁定,具体取决于存储在其中的文件的大小/速率


关于安全性-我通常将文件存储在文档根目录之外的目录中(无法通过http请求访问),并通过首先检查正确授权的脚本提供这些文件。

我们使用a。我会将其放在共享驱动器上(除非您不打算运行多台服务器)


如果到了无法扩展的时候,您可以研究缓存机制

我们使用A。我会把它放在一个共享驱动器上(除非你不打算运行多个服务器)


如果到了无法扩展的时候,您可以研究缓存机制

大多数实现都是选项A

有了选项B,当你将数据库中的数据整理成可以在浏览器上显示的内容时,你就可以打开一大罐whoop4S了。。。此外,如果数据库关闭,则图像不可用

我不认为空间是个太大的问题。。。TB的硬盘现在要几百美元


我们使用选项A实施,因为我们没有时间或资源来执行选项B。

大多数实施都是选项A

有了选项B,当你将数据库中的数据整理成可以在浏览器上显示的内容时,你就可以打开一大罐whoop4S了。。。此外,如果数据库关闭,则图像不可用

我不认为空间是个太大的问题。。。TB的硬盘现在要几百美元


我们使用选项A来实现,因为我们没有时间或资源来实现选项B。

绝对,积极的选项A。其他人提到,数据库通常不能很好地处理BLOB,无论它们是否设计成这样。另一方面,文件系统正是为了这些东西而存在的。您可以选择使用RAID条带化,跨多个驱动器传播映像,甚至跨地理位置不同的服务器传播映像


另一个优势是,数据库备份/复制将是巨大的

绝对的,积极的选项A。其他人提到,数据库通常不能很好地处理blob,不管它们是否设计成这样。另一方面,文件系统正是为了这些东西而存在的。您可以选择使用RAID条带化,跨多个驱动器传播映像,甚至跨地理位置不同的服务器传播映像


另一个优势是,数据库备份/复制将是巨大的

要自动调整大小,请尝试imagemagick。。。它用于许多主要的开源内容/照片管理系统。。。我相信它有一些.net扩展。

要自动调整大小,请尝试imagemagick。。。它用于许多主要的开源内容/照片管理系统。。。我相信它有一些.net扩展。

我们有几次客户在几个不同的后端坚持使用选项B(数据库存储),最终我们总是回到选项a(文件系统存储)

像这样的大BLOB即使是SQLServer2005也没有得到很好的处理,SQLServer2005是我们最新尝试的一款

具体来说,我们看到了严重的膨胀,我想可能是锁定问题

另一个注意事项:如果您使用的是基于NTFS的存储(Windows Server等),您可能会考虑找到一种方法来放置THO。