SQL Server 的 FILETABLE 是否适合存储大文件(大于 10 GB)?

huo*_*125 6 sql-server backup architecture filetable

有一个实验室项目。需要为研究保存实验室数据(原始数据相关信息)多年。

所以数据必须保存多年,但是数据这么大,每一个原始数据都超过10GB。如果我们将原始数据存储在 SQL Server 中FILETABLE,并将相关信息存储在标准 SQL Server 表中,几个月或几年后,数据库大小将如此之大,以至于我们必须将一些历史数据移出数据库。

也许我们可以使用将文件(在不同的硬盘上)添加到FILESTREAMfiletable的文件组(存储原始数据),但我觉得这不适合维护SQL Server。我们必须保持原始数据和相关信息的一致性。

我们考虑过使用磁带来保存历史原始数据。我们想用硬盘来保存最新的原始数据,用磁带来保存历史的原始数据。当我们将历史数据移动到磁带上时,我们将移动记录在日志表中,这样我们就可以知道历史数据移动到哪里并尽快提取。

有没有好的建议:

  1. 如何存储原始数据和相关信息?
  2. filetable适合这种情况?
  3. 这种情况有更好的解决方案吗?

Han*_*non 9

FILETABLEdata 基于FILESTREAMSQL Server的功能构建,并使用 Windows Server 文件系统将VARBINARY(MAX)数据存储在服务器本身文件系统上的离散 NTFS 文件中。此数据未存储在数据库中,因此数据库文件大小将不包括这些 10GB+ 的文件。默认情况下,数据库备份将包括数据。您可以通过使用部分备份来排除文件流文件组来阻止文件流数据的 SQL Server 备份。文件流数据不使用 SQL Server 缓冲区缓存,而是使用操作系统文件缓存。

Microsoft 建议反对使用FILESTREAM来存储平均小于 1MB 的文件,因为这会抵消使用 Win32 文件 API 修改相关数据所获得的效率。文件的最大文件大小FILESTREAM仅受操作系统最大文件大小的限制,对于当前版本的 NTFS,对于所有实际目的而言,最大文件大小是无限的(16 艾字节)。按照设计,FILESTREAMSQL Server对对象的大小没有任何限制。

如果您打算在SQL Server存储元数据必须存储在对象数据事务一致性FILESTREAM,你应该使用FILETABLE/FILESTREAM。如果存储在这些 10GB+ 文件中的对象数据与存储在 SQL Server 中的元数据在逻辑上没有关系,我预计使用FILESTREAM可能会适得其反。

简而言之,这取决于您的确切用例。在关于为什么要使用FILETABLE.

Microsoft 的 FILESTREAM 文档:http : //technet.microsoft.com/en-us/library/gg471497.aspx

[编辑]

鉴于您需要存储二进制 X 射线数据以及用于捕获 X 射线数据的机器参数,这听起来像是FILESTREAM. 但是,我会考虑使用DataCore SANSymphony-V,而不是归档到 TAPE具有多个存储层的软件 SAN。SANSymphony-V 允许您使用基于 Windows 的廉价商品服务器轻松可靠地扩展 SAN,使用 15k RPM Enterprise 驱动器(可能带有 SSD 层)作为主数据库,以及配置有标准 7200 RPM SATA 驱动器的层,用于存储x 射线数据。SANSymphony-V 已通过 SQL Server 认证,可提供一种相对便宜的方式来维护对新数据和旧数据的访问,而无需任何复杂的数据管理系统。如果需要考虑灾难恢复和高可用性,则整个 SANSymphony-V SAN 都可以在现场或异地进行镜像,距离最远可达 100 公里左右。

为了清楚起见,我与 DataCore 没有任何关联——我只是喜欢他们的设计。