【发布时间】:2014-04-04 15:11:00
【问题描述】:
我正在分析一个具有日常会计操作和数据以及客户关系管理 (CRM) 的系统。在系统的 CRM 部分,我们记录客户的电话并将其保存在某个地方,我们可能会保存客户的图片、徽标、签名、扫描文档等。所以我们应该处理范围广泛的文件(声音、图像、pdf、word 文档等......)
我需要帮助来决定将文件保存在哪里。
在旧系统中,我们将文件保存在硬盘驱动器空间并保存到数据库的路径,并在需要时使用它的地址打开文件。我认为(如果我错了,请纠正我)将文件保存在 HDD 上并不是一个好的解决方案,因为:
我们失去了数据完整性。文件名可能因任何原因被更改(重命名、移动、删除、覆盖),从而导致数据库中的路径错误。
移动整个数据(移动服务器)将是一个耗时的过程,假设我们有 1,000,000 个文件,总共达到 20 GB。如果我想将 100 万个文件从一台计算机移动到另一台计算机,假设我的 PC 确实容忍它并且不刻录,那么移动文件将需要很长时间(复制大量小文件的 I/O 时间超过复制一个大文件)但移动一个 20 GB 数据的单个文件(数据库文件)会快得多。
与复制文件相比,备份数据库中的数据更容易。使用完全备份和差异备份,我们可以一次备份正确的数据部分,我们也可以为我们制定一个定期的计划。
也许还有其他原因......
我的问题来了。
在 db 中存储文件并增加 db 是否会影响常规 db 操作?像选择、更新、查询表等等。我的意思是如果我将文件(CRM 数据)存储在同一个数据库中(对于会计数据),我的会计系统会变慢吗?
我应该将文件保存在哪里?在普通的桌子上?或者我应该将数据库分成两个文件?一个用于典型数据,一个用于文件?
Sql Server 2012 有空间限制吗?如果我的 db 文件部分增长,例如达到 500 GB(假设磁盘驱动器有足够的空间),Sql Server 会处理它吗?
使用数据库存储文件有什么缺点?我刚刚谈到了优点,可能有缺点。如果有,它们是什么?
【问题讨论】:
-
根据 SQL Server 2012 的Maximum Capacity Specifications,最大。文件大小为 16 TB - 您的数据库可以有 多个 文件。够好吗?
-
@marc_s 感谢您的回答,但我应该像其他数据一样将文件保存在数据库中,还是将我的数据库分成两个文件并将文件与其他数据分开?它会影响其他数据吗?有什么缺点?
标签: sql-server database file database-design file-io