[SDK2.2]SQL Azure (13) Azure的两种关系型数据库服务:SQL Azure与SQL Server VM的不同
《Windows Azure Platform 系列文章目录》
如果熟悉Windows Azure平台的用户不难发现,对于SQL Server数据库来说,微软提供了两种服务,分别是:
-Windows Azure SQL Database(也就是以前的SQL Azure),提供PaaS的关系数据库服务
-Windows Azure SQL Virtual Machine (SQL VM),提供了IaaS的关系型数据库服务
有些读者可能会疑惑,为什么微软要提供以上2种的关系型数据库服务?我们在实际使用过程中应该如何进行选择呢?
本文将从以下几个方面,来比较和说明SQL Azure和SQL VM的不同:
-SQL Server兼容性
-成本分析
-高可用性
-维护性
-横向扩展性
总的来说,微软设计SQL Azure和SQL VM这两种不同的关系型数据库服务,出发点在于:
-微软对SQL Azure进行了优化,以降低使用成本。SQL Azure提供了一个非常快速、简单的方式,让用户可以在云中构建可以横向扩展(scale out)的数据库。同时还降低了后续的管理成本。因为客户不需要维护任何虚拟机或数据库软件。
-SQL VM是在Azure虚拟机中运行的,所以SQL VM的数据库版本与传统企业内部使用的SQL Server版本没有任何区别,这样就可以让现有的数据库应用直接迁移到Azure云上。SQL VM提供了完整的SQL Server产品功能,并给用户提供云端的、已经装好SQL Server实例的虚拟机。
1.SQL Server产品兼容性
1)SQL Server VM提供了传统企业内部使用的SQL Server的完全相同的功能(包括Data Engine, SSAS, SSIS, SSRS)。SQL Server VM与传统部署在企业内部的数据库主机区别在于:SQL Server VM是部署在云端的,你不需要考虑底层的网络、存储、虚拟化等等问题,这些微软的Windows Azure都帮你准备好了;如果你想将本地的数据库迁移到云端,只要将本地备份的bak文件在SQL Server VM上restore就可以了。而且微软提供了很多的虚拟机模板(image gallery),你只要在management porta里,选择你需要的SQL Server版本(2008/2012, standard/enterprise)等等,你就可以非常简单的创建云端的关系型数据库了。
另外微软提供了Windows Azure Virtual Network,这个功能可以将企业内部的网络和云端的网络打通,并且保证网络的安全可靠,这样我们就可以实现混和云。你可以想象一下,在混合云的情况下,当我们企业内部使用SQL 2012 Always-On,并且通过SQL Mirroring将数据保存至SQL Server VM,这样的DR(灾难恢复)模式可以保证我们的数据万无一失。
2)SQL Azure并不支持传统企业内使用的SQL Server的全部功能,但是它实现了其中相当大的一部分。它不同于SQL Server企业版,你可以认为它是SQL Server的特殊版本,面向PaaS。虽然SQL Azure很特殊,但是SQL Server Management Studio和SQL Server Data Tool还是可以用来管理SQL Azure。SQL Azure最大的特点是横向扩展能力,这会在随后的博文中做详细介绍。
我个人建议,对于传统企业级应用来说,使用SQ Server VM能保证最大的产品兼容性。但是对于新的基于云的应用来说,SQL Azure是更好的选择。
2.成本分析
1)SQL Server VM的使用成本会比较高,因为用户需要支付费用=OS+APP,比如Windows Server 2012 + SQL Server 2012 Enterprise。具体的费用可以参考:http://www.windowsazure.com/en-us/pricing/details/virtual-machines/#service-sql-server
2)SQL Azure的使用成本比较便宜,用户需要支付的费用=SQL Azure数据库大小。具体的费用可以参考:http://www.windowsazure.com/en-us/pricing/details/sql-database/
3.高可用性
1)单个SQL Server VM是无法实现数据库高可用性的。因为SQL Server VM的底层是虚拟化技术,在数据中心的服务器可能出现由于硬件问题导致的服务器故障。在故障发生的时候,Windows Azure后台的Fabric Controller就会自动将服务器内部的SQL Server VM迁移到同一数据中心的正常的物理服务器上。在只有一台SQL Azure VM的情况下,在发生故障导致的自动迁移的过程中,如果有客户端发起向云端SQL Server VM的请求时,就会造成请求的失败。不能提供高可用。
如果我们建立了多台SQL Azure VM(SQL Server 2012版本),加入Virtual Network,并且设置了AlwaysOn Availability Group(这里不详细介绍Always-On),这样就可以实现SQL VM的高可用了。但是这需要我们的IT管理人员手动来配置(Virtual Network, alwayson availability group etc.)。并且由于增加了额外的备用SQL VM节点,用户需要支付的云服务费用会增加。
2)SQL Azure在设计之初就考虑了高可用性,每次我们在SQL Azure创建数据库的时候,在后台会创建一个主数据库备份和2个备用的数据库(三重备份)。当主备份发生异常的时候,SQL Azure 会将备份节点替代主备份,不会出现宕机时间。所以SQL Azure会提供99.9%的高可用性,并且使用该高可用性是无需支付额外费用的。
4.维护性
1) SQL Server VM是IaaS。也就是说,用户需要自己维护操作系统和数据库软件,包括升级补丁、安装备份工具等。这会给IT人员增加额外的工作。
2)SQL Azure是PaaS的。Windows Azure平台会自动进行配置,微软的数据中心会自动帮你打补丁和升级软件。所以会减轻IT人员的工作。
5.可扩展性
可扩展性分为纵向(scale up)和横向(scale out):
scale up一般指提升单个节点的能力,scale out一般指从单节点扩展到多节点,并行计算
scale up
1)目前Windows Azure VM的最强计算能力是8 Core+14GB(extra large) or 8Core+56GB(A8),16TB的存储和800MB的网络带宽。我们如果要纵向扩展的话,会受到目前Azure VM的大小限制。
2)SQL Azure不能配置硬件设备。
scale out
1)Azure VM的scale out需要手动配置,比如Always On只读副本,数据库分区等等。
2)SQL Azure包含SQL Federation功能(我会在后续的文章中进行介绍)。有了SQL Azure Federation,我们可以将1个数据库分割在几个甚至上百个节点上,SQL Azure是天然支持横向扩展的。
其他SQL Azure Database的技术限制,请参考MSDN文章
https://msdn.microsoft.com/zh-cn/library/azure/ee336245.aspx
[SDK2.2]SQL Azure (13) Azure的两种关系型数据库服务:SQL Azure与SQL Server VM的不同的更多相关文章
- Azure的两种关系型数据库服务:SQL Azure与SQL Server VM的不同
Azure的两种关系型数据库服务:SQL Azure与SQL Server VM的不同 <Windows Azure Platform 系列文章目录> 如果熟悉Windows Azure平 ...
- [SQL]SqL给局部变量赋值有两种方法
给局部变量赋值有两种方法: .SET @variable_name=value .SELECT @variable_name=value 两者的区别:SET赋值语句一般用于赋给变量一个指定的常量,SE ...
- 在sql中case子句的两种形式
case子句,在select后面可以进行逻辑判断. 两种形式:判断相等.判断不等 一.判断相等的语法: case 列名 when ... then ... when ... then ... el ...
- sql sever 创建临时表的两种方法
创建临时表 方法一: create table #临时表名( 字段1 约束条件, 字段2 约束条件, .....) ...
- KETTLE 更新表的两种方式-更新控件和sql更新 2种方式的实现比较
在实际工作中,我们有可能遇见只更新不插入的情况,可以由以下2种方式去实现: 1.更新控件 如下图所示,根据id字段,更新name和cjsj时间字段 该控件不足的地方是,用来查询关键值得字段不够灵活,一 ...
- SQL中case语句的两种方式
- sql 语句 截取字符串的两种方案
方案一:使用内置的函数 SUBSTRING,CHARINDEX,LEN三个内置函数 理论: SUBSTRING语法 SUBSTRING ( value_expression , start_exp ...
- 学习并使用了两种linq to entity 的实现sql关键字in的查询方法
//构造Lambda语句 private static Expression<Func<TElement, bool>> BuildWhereInExpressi ...
- SQL 按月统计(两种方式) 分类: SQL Server 2014-08-04 15:36 154人阅读 评论(0) 收藏
(1)Convert 函数 select Convert ( VARCHAR(7),ComeDate,120) as Date ,Count(In_code) as 单数,Sum(SumTrueNum ...
随机推荐
- Greenplum安装
最近需要安装Greenplum测试一些东西,在安装过程中出现了许多问题,所以在这里将安装过程整理一下,主要参考<Greenplum企业应用实践>和http://jxzhfei.blog.5 ...
- LeetCode 387. First Unique Character in a String
Problem: Given a string, find the first non-repeating character in it and return it's index. If it d ...
- SQl 2005 For XMl 简单查询(Raw,Auto,Path模式)(1)
很多人对Xpath可能比较熟悉,但不知道有没有直接操作过数据库,我们都知道 在Sql2005里公支持的几种查询有Raw,Auto模式,页并没有Path和Elements用法等,如果在2000里使用过 ...
- git 开发merge rebase 记录
git status git lg git add src/ git commit -m "restful api and portal" //先commit到自己的本地branc ...
- [翻译] ORMLite document -- How to Use Part (二)
前言 此文档翻译于第一次学习 ORMLite 框架,如果发现当中有什么不对的地方,请指正.若翻译与原文档出现任何的不相符,请以原文档为准.原则上建议学习原英文文档. ----------------- ...
- Codeforces CF#628 Education 8 F. Bear and Fair Set
F. Bear and Fair Set time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- 图片采用base64压缩,可以以字符串的形式传送base64给服务端转存为图片
(function () { var coverImage = document.querySelector('<div id="coverImage">file< ...
- unity3D脚本中,update ,fixupdate 和lateupdate的区别
1.MonoBehaviour.Update 更新 当MonoBehaviour启用时,其Update在每一帧被调用. 2.MonoBehaviour.FixedUpdate 固定更新 当MonoBe ...
- 踏上Salesforce的学习之路(一)
相信通过前面的学习,大家已经拥有了一个属于自己的Salesforce开发者账号,下面,我们将用这个账号正式踏上Salesforce的学习之路. 首先,点击网址:https://developer.sa ...
- 代码-->发呆
代码,敲着敲着,就发呆了. 其实安安静静敲代码,是一种享受.开着不快不慢的音乐,徜徉在代码的世界里,忘记了时间的存在. 原本备忘录中提醒我13点看书,一小时又一小时的延后,已经不记得自己按了多少次一小 ...