2013-04-27 87 views
0

我正在开发一个项目,我必须使用上传文件。我使用ASP.NET MVC3(C#)作为前端,SQL Server 2008 R2作为后端。现在上传一个文件,我必须选择:哪个更好?在DB中存储文件或在DB中存储其路径?

1)将文件上传到项目的特定目录并将其路径存储到数据库中(在将文件上传到该目录之前,我必须将文件名更改为当前时间戳,文件将具有唯一的名称。)

2)将文件直接上传到数据库中。

哪个选项会更好?我的项目以KBs(pdf/word/images)上传文件。

+0

@CodeIgnoto,okie。在这种情况下,第二种选择会有好处? – Dhwani 2013-04-27 06:56:38

回答

3

直接存储在文件系统上通常会提供更好的性能。在数据库中存储意味着您可以在同一个事务中完成文件的插入和元数据更新(我想你会将其存储在数据库的某个表中)。

第三种方法是使用MSSQL的文件流功能,它可以将文件作为数据库中的字段处理,但也可以通过共享将文件直接作为文件访问。

+0

okie。在这种情况下,第二种选择会有好处? – Dhwani 2013-04-27 06:54:54

+1

您可以获得文件处理的事务支持,因此您可以一起更新元数据和文件。你将所有的数据放在一个地方,简化备份等,你可以使用一个数据访问层。 – 2013-04-27 06:57:33

0

我更喜欢将文件存储在ftp服务器中并将其路径放入数据库中。另外,使用文件名的时间戳看起来不正确。使用数据库键值作为文件名是一个稍微好一点的想法。

当然,维护交易还有一个额外的复杂性 - 文件系统和数据库应该始终保持同步。

+0

okie。在这种情况下,第二种选择会有好处? – Dhwani 2013-04-27 06:56:03

+0

您不必明确处理交易。您可以在第二个选项中使用sql server事务。 – aquaraga 2013-04-27 07:02:52

0

存储路径。您可以更轻松地更改文件。