作者信息:本篇文章是由SQL Server Cloud Infrastructure Team的 Madhan Arumugam 和 Guy Bowerman共同著作。
简介
把SQL 数据托管在哪里,Windows Azure 为您提供了两个选择,VM上的SQL Server(以下简称 SQL/VM)和 Windows Azure SQL 数据库(以下简称 SQL DB)。SQL/VM 和 SQL DB 都生成自单一代码库,并且在云部署时都有其自己的长度。本文我们将借鉴之前的博客SQL Server in Windows Azure Virtual Machine vs. SQL Database,并提供简单的决策树来帮助您为您的应用程序或服务在Windows Azure上选择最佳的 SQL 数据库解决方案。Windows Azure SQL DB 作为 Microsoft 平台即服务 (PaaS) 投入生产已经好几年了。Windows Azure Virtual Machine上的SQL Server 作为Microsoft基础设施即服务(IaaS) 提供集成的数据库服务器实例,可作为一组预配好的平台图像。目前Public Preview提供Windows Azure Virtual Machine。
本文的重点是 SQL Engine,而不是 BI 和reporting。之后将详细探讨如何在BI和Reporting中做出选择。
为什么选择 Azure 来托管SQL ?
Windows Azure 高度集成了跨 Microsoft 堆栈,例如像SharePoint 和Active Directory这样的应用程序,同时,通过统一开发经验来整合不同部署模块的授权。这些集成经过了和Microsoft 产品一起协作的大量测试。它还提供了很强的互操作性。除了支持多种操作系统包括 Linux外, Windows Azure VMs 还基于标准 VHD 格式,使之容易的在Azure环境中导入和导出它们。
如此的一体化、 标准化和互操作性使得Azure成为理想的云环境来运行SQL Server,同时还为Microsoft 资产从传统上的户内平台到私有云以及公共云,提供了衔接一致的体验。
SQL/VM 和 SQL DB的不断创新不仅使管理已有应用程序或服务的综合TCO降低,也为新一代的云应用程序或服务提供了高效的平台。此外,它还能够搭配已有及新的应用程序在同一托管服务上,也能集合户内应用程序和网络成为混合模型从而提供了极大的灵活性。
选择正确的数据库解决方案
Microsoft 数据库产品适用的范围包括物理户内机、私有云环境、 第三方托管私有云环境和公共云。它提供了一系列的 SQL Server 产品使之成为一个既连贯又灵活的开放数据平台。
每一种产品都可以按您对基础设施的控制水平,实现数据库的整合和自动化程度的成本效益做出区分。当然也有其他的方面加以区分,例如兼容性,我们将在下面的决策树中详细介绍。
本篇文章侧重于 SQL/VM 和 SQL DB之间的对比,并提供了选择数据库服务方法,根据该方法您可以选择与您期望的成本效率和控制相符的数据库服务。
决策树
在此决策树中,请考量以下几项应用程序或服务具体决定点:
- 新的或现有的应用程序或服务:通常迁移现有应用程序("升级和转化")比新的应用程序更需要模拟户内应用程序操作,新应用程序一般没有那个必要。
- 应用程序或服务要求:此决定点检查任何兼容性、 网络或可能需要在 VM 中的 SQL Server 的安全要求。详细信息请参阅SQL Server in Windows Azure Virtual Machine vs. SQL Database和 MSDN 文章关于SQL DB和 SQL/VM 功能兼容性差异的完整列表Guidelines and Limitations (Windows Azure SQL Database)。
- 大规模经济(重新)架构/分区的意愿:此决定点检查是否使用SQL DB 扩展技术例如Federations in Windows Azure SQL Database来实现弹性和扩展需求。想要充分利用SQL DB大规模的经济和弹性带来的益处,通常需要一定程度的重新架构 (请参见SQL DB扩展注意事项在这里).
- 数据库大小: SQL 数据库版本是有大小限制的,目前单个 Azure SQL DB最大为 150 GB。然而 SQL/VM,目前最大 VM 大小是 ExtraLarge (8 CPU 内核、 14 GB RAM 和高达 16 TB 的磁盘空间)。VM 大小的详细信息请参阅 MSDN 文章How to Configure Virtual Machine Sizes。
其他注意事项
除了这些高级别决定点之外,还有一些较低级别的设计标准和大小期望,也会影响数据库的解决方案,例如一个新的应用程序可能需要一特殊功能而是SQL DB所不具备的。此决策树使用的框架只是提供一个简单的方法来帮您快速评估您的应用程序需求。
一个重要的考量是 IaaS 与 PaaS 数据库解决方案所提供的 SLA。例如在 IaaS,Windows Azure所有的 VM 存储都有 SLA。当 Windows Azure VM 可用时 一般两个或多个实例的 99.95%的Windows Azure VM-level SLA会在一个可用集中。在 SQL DB中有数据库级可用性 SLA。更多详细信息,请参阅http://www.windowsazure.com/en-us/support/legal/sla/。SLA 所不覆盖的操作都需要用户自己来完成。
应用程序或服务不需非要在 IaaS 和 PaaS 两者之间做出选择。混合型的应用程序模式包括 PaaS 和 IaaS 服务两者 (例如,在 Azure上的 SQL DB和 SQL/VM),它代表了一种现实可能,就是让应用程序开发和部署允许应用程序在VMs上运行组件,这需要从户内迁移数据时,实现兼容和控制如 BI 或应用程序,并且使用 SQL DB中的数据库把DBA 和数据库的成本降到最低。
结论
Windows Azure SQL 数据库和 Windows Azure 虚拟机上运行的 SQL Server都是不错的方法来实现不同的数据库应用程序需求。
总之,如果符合下面条件,选择 SQL/VM:
- 您需要与户内 SQL Server 完全兼容。
- 您希望用最小改动来实现现有的应用程序。
- 您需要基础设施层隔离。
- 您的应用程序或服务专为"计划数据库表"设计(AKA 扩展)。
如果符合下面条件,选择 SQL DB:
- 您正在基于应用程序创建净新增云。
- 您想要减少数据库管理的成本并把重点放在应用程序层。
- 您需要数据库层的隔离。
- 您的应用程序或服务专为"无计划也无限制数据库表"设计 (通过扩展的弹性)。
引用
Gregory Leake’s blog post on SQL Server in Windows Azure Virtual Machine vs. SQL Database:http://blogs.msdn.com/b/windowsazure/archive/2012/06/26/data-series-sql-server-in-windows-azure-virtual-machine-vs-sql-database.aspx
Guidelines and Limitations (Windows Azure SQL Database)
SQL Server Virtualization support statement covering virtualized environments beyond Hyper-V:http://support.microsoft.com/kb/956893
本文翻译自: http://blogs.msdn.com/b/windowsazure/archive/2013/02/14/choosing-between-sql-server-in-windows-azure-vm-amp-windows-azure-sql-database.aspx