讨论并比较可用于在 SQL Server 中存储文件和文档的选项。
将文件存储在数据库中 - 优点和期望
大部分企业数据本质上是非结构化的,通常以文件和文档的形式存储在文件系统中。 大部分数据由通过 Windows API 访问文件的应用程序生成、管理和使用。 企业通常在文件系统中保留此数据,同时将文件的相关元数据存储在关系数据库中。
将非结构化数据集成到关系数据库可提供显著优势。 这些优势包括:
集成存储和数据管理功能,例如备份。
集成服务,例如全文搜索和对数据和元数据的语义搜索。
便捷管理和制定非结构化数据策略。
然而,在大多数情况下,在关系数据库中存储非结构化数据并不方便。 以前不可能在关系系统上运行基于 Windows 的现有应用程序。 重写已建立的应用程序(如 Microsoft Word 或 Adobe Reader)在关系数据库 API 上运行并不可行。 这些应用程序只是希望通过 Windows API 访问数据。 换句话说,期望包括以下内容:
Windows 应用程序不知道数据库事务,也不需要它们。
Windows 应用程序需要与文件系统 API 的兼容性来获取文件和目录数据。
FILESTREAM
SQL Server 已具有 FILESTREAM 功能,它提供高效存储、管理和流式传输作为文件存储在文件系统上的非结构化数据。 但是,FILESTREAM 解决方案需要自定义编程,并且不满足上述完整 Windows 应用程序兼容性的要求。
FileTable
FileTable 功能基于现有的 FILESTREAM 功能构建,使企业客户能够在 SQL Server 数据库中存储非结构化文件数据和目录层次结构,方法是满足对基于文件的数据的非事务访问和 Windows 应用程序兼容性的要求。
比较 FILESTREAM 和 FileTable
| 功能 / 特点 | 文件服务器和数据库解决方案 | FILESTREAM 解决方案 | FileTable 解决方案 |
|---|---|---|---|
| 管理任务的单一故事 | 否 | 是的 | 是的 |
| 单个服务集:搜索、报告、查询等 | 否 | 是的 | 是的 |
| 集成安全模型 | 否 | 是的 | 是的 |
| 就地更新 FILESTREAM 数据 | 是的 | 否 | 是的 |
| 数据库中维护的文件和目录层次结构 | 否 | 否 | 是的 |
| Windows 应用程序兼容性 | 是的 | 否 | 是的 |
| 对文件属性的关系访问 | 否 | 否 | 是的 |
比较 FILESTREAM 和远程 BLOB 存储(RBS)
有关这两项功能的比较,请参阅 RBS 团队的此博客文章: SQL Server 远程 BLOB 存储和 FILESTREAM 功能比较。
详细信息
FILESTREAM (SQL Server)
FileTables (SQL Server)
远程 Blob 存储 (RBS) (SQL Server)