7

我正在考虑使用文件表,而不是简单地将文件作为二进制数据存储在数据库中,或者在数据库中存储包含文件共享 URL 的列。我们的应用程序使用实体框架,所以这是我看到的一个小问题,但很容易解决。另一个是,据我所知,文件必须存储在与数据库相同的服务器上的文件夹路径中,例如“MachineName\InstanceName\FileShare”(可以配置为使文件夹可以存在于另一台服务器上吗? )。

使用 FileTables 还有其他缺点吗?

4

1 回答 1

3

至于文件表的缺点,除了启动它们所需的稍微繁琐的设置之外,我唯一能想到的是,如果您的 BLOB 大小小于 1Mb,则文档建议将它们存储在数据库中而不是文件系统中将提供更好的性能。

关于将文件流文件组放在网络共享上,这是行不通的。对文件流/文件表的常见误解之一是,创建的文件共享只是一个普通的 Windows 文件共享,就像任何其他文件共享一样。并非如此,文件存储在文件系统上称为 NTFS 数据容器的特殊位置,然后通过 NTFS 流 API 作为文件共享呈现给外界。这些文件必须在机器本地,因为那些 NTFS API 不能在 UNC 上工作。

真正让它在另一台机器上工作的唯一方法是使用 iSCSI 驱动器,这样 NTFS API 仍然可以工作,但文件物理上位于另一台机器上。

于 2013-11-07T09:11:07.060 回答