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的使用成本会比较高,因为用户需要支付费用=计算资源+存储资源,比如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

Azure的两种关系型数据库服务:SQL Azure与SQL Server VM的不同的更多相关文章

  1. [SDK2.2]SQL Azure (13) Azure的两种关系型数据库服务:SQL Azure与SQL Server VM的不同

    <Windows Azure Platform 系列文章目录> 如果熟悉Windows Azure平台的用户不难发现,对于SQL Server数据库来说,微软提供了两种服务,分别是: -W ...

  2. KETTLE 更新表的两种方式-更新控件和sql更新 2种方式的实现比较

    在实际工作中,我们有可能遇见只更新不插入的情况,可以由以下2种方式去实现: 1.更新控件 如下图所示,根据id字段,更新name和cjsj时间字段 该控件不足的地方是,用来查询关键值得字段不够灵活,一 ...

  3. 学习并使用了两种linq to entity 的实现sql关键字in的查询方法

    //构造Lambda语句        private static Expression<Func<TElement, bool>> BuildWhereInExpressi ...

  4. Response.Redirect 打开新窗体的两种方法

    普通情况下,Response.Redirect 方法是在server端进行转向,因此,除非使用 Response.Write("<script>window.location=' ...

  5. Response.Redirect 打开这两种方法的一种新形式

    在一般情况下.Response.Redirect 该方法是在server年底转向,因此,除非 Response.Write("<script>window.location='h ...

  6. Azure ARM (21) Azure订阅的两种管理模式

    <Windows Azure Platform 系列文章目录> 熟悉Azure平台的读者都知道,Microsoft Azure服务管理,分为三个层次: 1.企业服务合同 (Enterpri ...

  7. Windows Azure VM的两种shut down 方式

    今天在调查Azure的价格时,发现下面的语句,来自http://azure.microsoft.com/en-us/pricing/details/virtual-machines/ * If my ...

  8. Azure登陆的两种常见方式(user 和 service principal登陆)

    通过Powershell 登陆Azure(Azure MoonCake为例)一般常见的有两种方式 1. 用户交互式登陆 前提条件:有一个AAD account 此种登陆方式会弹出一个登陆框,让你输入一 ...

  9. SQL Azure (16) 创建PaaS SQL Azure V12数据库

    <Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China 最新的Azure PaaS SQL Database(SQL Azu ...

随机推荐

  1. [LeetCode] 033. Search in Rotated Sorted Array (Hard) (C++)

    指数:[LeetCode] Leetcode 解决问题的指数 (C++/Java/Python/Sql) Github: https://github.com/illuz/leetcode 033. ...

  2. 大话设计模式C++达到-文章16章-国家模式

    一.UML画画 二.概念 状态模式(State):当一个对象的内在状态改变时同意改变其行为.这个对象看起来像是改变了其类. 三.说明 以下是来自书本和网络的对状态模式的定义和分析: (1)状态模式同意 ...

  3. Jenkins + robot framework自动发送邮件报告

    一.Jenkins安装插件 进入系统管理—插件管理—可选插件下安装以下插件Email-ext plugin.Email-ext Template Plugin. 安装完如下: 二.系统设置 1.设置系 ...

  4. CSharp设计模式读书笔记(15):命令模式(学习难度:★★★☆☆,使用频率:★★★★☆)

    命令模式(Command Pattern):将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化:对请求排队或者记录请求日志,以及支持可撤销的操作.命令模式是一种对象行为型模式,其别名为 ...

  5. 流动python - 八皇后问题简单解决方案

    思维: 使用DFS. 坐标的一维阵列的表达,在标行,元素列.A[i]=j它表示第一i女王就行了j柱. 以穿越线,由线(从上到下),决定其列(左到右),所以,不要推断冲突的行,和主斜线副斜线冲突. (行 ...

  6. 【百度地图API】如何用圆形搜索获取中心点周围100米内全部关键点?如天安门附近所有的餐厅、加油站、宾馆、大厦等

    原文:[百度地图API]如何用圆形搜索获取中心点周围100米内全部关键点?如天安门附近所有的餐厅.加油站.宾馆.大厦等 摘要: 在LBS上有这样一个常用的功能,查找附近所有的关键点(POI点,比如标志 ...

  7. Java业务原子性的一种实现(key 独占访问)

    开发过程中,有时候为了解决多线程竞争问题需要加锁,通常锁定的对象是class,object,method,但在特定时候我们需要更细粒度的加锁,也就是根据不同输入参数来锁定不同的资源,这样只有调用此方法 ...

  8. 【百度地图API】如何制作泡泡放大镜?

    原文:[百度地图API]如何制作泡泡放大镜? 任务描述: 我不喜欢API提供的缩放控件耶…… 我能不能使用其他方式放大地图勒? 当然阔以啦! 现在就来教大家如何动手制作一个可爱的泡泡放大镜! 使用它, ...

  9. 安装ruby on rail

    安装: # nvm 安装, 两种方法 $ curl https://raw.githubusercontent.com/creationix/nvm/v0.8.0/install.sh | sh $ ...

  10. 基于C++ 苹果apns消息推送实现(2)

    1.该模块的用途C++ 和 Openssl 代码 它实现了一个简单的apns顾客 2.配套文件:基于boost 的苹果apns消息推送实现(1) 3.最初使用的sslv23/sslv2/sslv3仅仅 ...