我正在查看SQL Server中的FILESTREAM属性,以在其中存储文件。我了解它将文件存储在硬盘驱动器上,并将文件指针/路径信息存储在DB中。同样,在此过程中保持事务的一致性。
对于FILESTREAM属性,似乎还存在一个限制:“ FILESTREAM数据只能存储在本地磁盘卷上”。
如果我预计自己的Web应用程序将存储200,000张每个1-2mb的图像,那么我将需要大约200gb的硬盘驱动器空间来存储这些图像。由于FILESTREAM要求根据限制将所有数据仅存储在本地磁盘上,因此由于存储需求非常大,因此不可能在单个硬盘驱动器上存储数百万个文件。
我对限制的理解是正确的,还是我在这里遗漏了任何东西?
如果此限制是正确的,我会以普通blob的形式将其存储在db中,并将我的数据库集群化以增加存储需求,这对于FILESTREAM似乎是不可能的。
请分享您的想法!
更新: 关于文件流的其他几个问题:
FILESTREAM实际上不需要本地存储,而实际上不需要SMB网络存储。iSCSI或光纤通道SAN可以很好地存储FILESTREAM数据。每个表还可以具有多个文件流文件组,从而对数据进行分区。如果您严格针对sql server 2008,则几乎没有理由不对大型二进制数据使用文件流。此处有一个Microsoft白皮书描述文件流分区。