我正在查看 SQL Server 中的 FILESTREAM 属性以在其中存储文件。我了解它将文件存储在硬盘驱动器上并将文件指针/路径信息存储在数据库中。此外,还保持流程中的事务一致性。
FILESTREAM 属性似乎还存在“FILESTREAM 数据只能存储在本地磁盘卷上”的限制。
如果我预计我的网络应用程序将存储 200,000 个图像,每个图像大小为 1-2mb,那么我将需要大约 200GB 的硬盘空间来存储图像。由于 FILESTREAM 根据限制要求所有数据只能存储在本地磁盘上,因此不可能在单个硬盘上存储数百万个文件,因为存储需求将非常大。
我对限制的理解正确还是我在这里遗漏了什么?
如果这个限制是正确的,我会将其作为普通 blob 存储在数据库中,并集群我的数据库以增加存储需求,这对于 FILESTREAM 来说似乎是不可能的。
请分享您的想法!
更新:
关于 FILESTREAM 的更多问题:-
- 万一发生数据恢复如何处理 数据容器损坏?
- 我们可以只备份数据库吗? 文件系统数据? [假设数据 位于 SAN 中,无需移动]
- 我想要备份或恢复 数据库并重新映射文件组 [映射到 SAN] 的路径信息。 这可能吗?
最佳答案
FILESTREAM 实际上并不需要本地存储,只是不需要 SMB 网络存储。 iSCSI 或光纤 channel SAN 可以很好地存储 FILESTREAM 数据。每个表还可以有多个文件流文件组,本质上是对数据进行分区。如果您严格以 SQL Server 2008 为目标,则没有理由不对大型二进制数据使用文件流。有一份 Microsoft 白皮书描述文件流分区 here .
关于SQL Server FILESTREAM 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1419546/