在 SQL Server 中存储数 TB 的数据

The*_*aut 5 sql-server sql-server-2012

我需要开发一个生产系统,能够为生产的每件产品存储 100 kb 的文本文件和序列号。我知道 2 年的大致输出,必须存储数据的时间,并计算出需要大约 25-30 TB 的存储空间。

我有一些使用数据库的经验,但处理如此大量的数据对我来说是新的。

我的第一个猜测是简单地将文件作为 blob 存储在数据库的表中。将大量数据存储在单个表中有什么问题?什么是可能的备份方案?

另一种方法是将数据存储在多个表中(例如,每个月一个表)。

第三种方法是在 SQL Server 中存储对数据的引用,压缩文件,然后将它们存储在其他地方。

该存储系统的目的是通过序列号查询文本文件。

你会怎么办?

Kev*_*sel 4

从历史上看,我会避免将文件存储在数据库中,而是包含像替代方案 3 中那样的指针。但是,使用 SQL Server 2012,您可能会研究 FileTable功能。这些文件仍然存储在 SQL Server 中(这意味着您必须了解对备份策略的影响),但也可以通过标准 Windows API 轻松访问,以便您可以在 Windows 资源管理器或 PowerShell 中操作它们。如果您实际上还需要在文本文件中搜索,FileTable 可以做到这一点

另一方面,在 SQL Server 数据库中存储 25-30“额外”TB 的数据将是维护的挑战。如果这只是为了合规性/审计目的(即,某人实际查看特定文件的可能性很低)并且文件不经常插入,那么我可能会坚持使用指向文件的方法。但是,如果您需要频繁访问或有很多更改,则 FileTable 具有优势,因为它负责处理过程中的指针处理部分。