【问题标题】:Is it possible to map filegroups in sql server 2012 to Azure Blob Storage?是否可以将 sql server 2012 中的文件组映射到 Azure Blob 存储?
【发布时间】:2015-04-23 03:22:25
【问题描述】:
目前我们的 MS SQL server 2012(on-premises) 使用文件流来存储文件。文件流存储在单独的文件组中。但是随着文件数量的增加,我们担心它会影响数据库的整体性能。因此,我们计划将这些文件移动到 Azure Blob 存储。
我在 MSDN 中找到一篇关于将数据文件保存在 azure storage 中的文章:https://msdn.microsoft.com/en-us/library/dn466438.aspx
但请相信这是针对 SQL Server 2014 的。
那么,2012 年是否有类似的方法?
或者我是否要从应用程序将文件上传到 azure 并将路径保存在数据库中?从应用程序上传文件是一项非常大的返工,维护 ACID 属性是一个值得怀疑的问题。
【问题讨论】:
标签:
sql-server
sql-server-2012
azure-storage
【解决方案1】:
如您所知,FileStream 可确保 SQL Server 中的关系表与存储在 SQL Server 之外的文件系统中的 BLOB 之间的事务一致性。
SQL 仅存储对 BLOB 的引用以处理它们之间的 DML 操作。
这使他们的开销很小。维护操作(例如备份/恢复、索引重建等)仅适用于关系表(无 BLOB)。
因此,使用 FileStream 的部署可以扩展到 TB 的 BLOB,而不会显着影响 SQL Server 性能。要增加 I/O 吞吐量,请将跨不同磁盘条带化的多个文件添加到 FileStream 文件组。
其他建议https://technet.microsoft.com/en-us/library/dd206979(v=sql.105).aspx
SQL Server 数据文件(在 SQL14 中引入)不支持 FileStream/FileTable(底层驱动程序无法识别 Azure BLOB 路径)。无论如何,由于与本地存储相比,网络延迟较高,我预计这样做会影响事务性能。