【问题标题】:Which is better? Storing a file in DB or Storing its path in DB? [duplicate]哪个更好?将文件存储在数据库中还是将其路径存储在数据库中? [复制]
【发布时间】:2013-04-27 06:45:37
【问题描述】:

我正在开发一个必须使用上传文件的项目。我使用 ASP.NET MVC3(C#) 作为前端,使用 SQL Server 2008 R2 作为后端。现在要上传文件,我必须选择:

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

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

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

【问题讨论】:

  • @CodeIgnoto,好的。在哪种情况下,第二个选项将是有益的?

标签: c# sql-server asp.net-mvc-3 sql-server-2008


【解决方案1】:

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

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

【讨论】:

  • okie。在哪种情况下,第二个选项将是有益的?
  • 您可以获得文件处理的事务支持,因此您可以同时更新元数据和文件。您将把所有数据放在一个地方,简化备份等操作,并且您可以使用一个数据访问层。
【解决方案2】:

我更喜欢将文件存储在 ftp 服务器中并将其路径放入数据库中。此外,对文件名使用时间戳似乎也不正确。使用 db 键值作为文件名是一个更好的主意。

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

【讨论】:

  • okie。在哪种情况下,第二个选项将是有益的?
  • 您不必明确地处理事务。您可以在第二个选项中使用 sql server 事务。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 2013-11-17
    相关资源
    最近更新 更多