应该将文本文件存储在我的SQL Server数据库中吗?

问题描述:

我们使用多个文本文件作为模板来创建WCF数据服务 - 服务操作调用的结果。应该将文本文件存储在我的SQL Server数据库中吗?

该文本文件每个小于3000 Bites Max。

将我的模板文件与WCF数据服务文件一起存储在文件系统中与将它们存储在SQL Server 2008 R2服务器中有什么优缺点?

+0

是否有什么特别的原因让你更喜欢存储文件而不是文件的文本内容?好奇,这一切都是 – 2012-01-10 17:58:58

+1

3K是非常小的。即使在SQL 2005以前的版本中,您也可以将8K数据放入varchar中。所以这实际上是一个更通用的问题:“我应该在哪里放置配置数据,在文件还是数据库中?”关于这个话题写了很多。 – 2012-01-10 18:20:44

在SQL Server 2008之前,我强烈建议不要在数据库中存储大型对象(如文本文件)。它往往会降低访问速度,并使他们通常更难以使用。相反,我通常建议存储链接到有问题的文件。

当然,这意味着数据库不会保护文件,如果某人删除了他们不应该保存的文件,并且文件需要从数据库中单独备份和传输。

在SQL Server 2008中,我认为许多前面的问题已经被使用filestream函数克服了,我认为使用filestream存储文件有时会非常有用。它继续将实际数据存储在数据库之外,这避免了许多以前的复杂情况。但它仍然将两者绑定在一起,并允许数据库保护文件,而不仅仅依赖数据库中的链接才能正确。

存储方法有很多优点和缺点。如今(我的意见已经发生了变化,并且有可能在某一天再次发生变化),我将重点放在安全性和可管理性上。

  • 如果是敏感数据,可以通过将它们存储在数据库中来获得更高的安全性。如果没有其他的东西,那么破解数据库可能比文件系统更难。如果安全性不是那么重要,那么将其存储在操作系统上可能更容易/更简单。
  • 对于管理,如果数据得到更新(以及发生这种情况的频率如何),更新有多容易?数据库中的一个实例更新(或损坏...)比网上服务器场中的每个服务器上的实例更简单。 (1台服务器,没问题,20台服务器,可能会令人头疼)。

我认为最好是直接在数据库中存储数据。这使得访问速度更快,因为数据库在读取和处理数据方面效率更高。您可以随时将数据存储在数据库中 - 这没有问题。那么也可以传输大量数据。

出于安全原因,现有更多配置数据库的选项已足够。而且,如果您将数据库集群化 - 这更具可扩展性。