《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

本文转自Lei Zhang博客园博客,原文链接:http://www.cnblogs.com/threestone/p/3439856.html,如需转载请自行联系原作者

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

  1. mysql 查询慢 分析_MySQL优化:定位慢查询的两种方法以及使用explain分析SQL

    一条SQL查询语句在经过MySQL查询优化器处理后会生成一个所谓的执行计划,这个执行计划展示了具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等. 本章的内容就 ...

  2. SQL语句中 Case具有两种格式:简单Case函数和Case搜索函数

    转自:http://blog.csdn.net/IBM_hoojo/article/details/5546868 Case具有两种格式.简单Case函数和Case搜索函数.  --简单Case函数 ...

  3. SSIS Execute SQL Task assign output 的两种方法

    按一个SQL语句select count(1) from tmp为例. 可以用: 1.存储过程+Output参数 2.SQL语句+result set ------------------------ ...

  4. 在sql中case子句的两种形式

    case子句,在select后面可以进行逻辑判断. 两种形式:判断相等.判断不等 一.判断相等的语法: case 列名 when ...  then ... when ...  then ... el ...

  5. 玩转oracle 11g(52):Oracle导出导入表(.sql、.dmp文件)两种方法

    提示:在导入sql和dmp文件之前,先建立用户,指明表空间.其中要注意用户名和表空间最好跟sql文件中的一样. 方法一:.sql文件的导出与导入 导出步骤 使用PL/SQL Developer登录你需 ...

  6. 【sql】178. 分数排名---两种解决方法,是否使用group by分组成为重点,建议使用分组!!!

    SQL架构 编写一个 SQL 查询来实现分数排名. 如果两个分数相同,则两个分数排名(Rank)相同.请注意,平分后的下一个名次应该是下一个连续的整数值.换句话说,名次之间不应该有"间隔&q ...

  7. linux sql生成随机数,Linux的两种随机数生成器

    Linux下有两个特殊设备文件/dev/random和/de/urandom,用于生成随机数./dev/random生成的随机数与当前使用的计算机硬件状态相关,提高了安全性,非常适合对随机数质量要求很 ...

  8. SQL事务回滚的两种方式

    1.XACT_ABORT 1)set XACT_ABORT off时,回滚产生错误的Transact-SQL语句,而事务将继续进行处理,(注:错误严重或者语法错误时可能回滚整个事务) 2) set X ...

  9. SQL 行转列的两种做法

    if object_id('tb')is not null drop table tb Go create table tb(姓名 varchar(10),课程 varchar(10),分数 int) ...

最新文章

  1. 46个经典Linux面试题!
  2. java中的Executors简介与多线程在网站上逐步优化的运用案例
  3. [题解] 2019牛客暑期多校第三场H题 Magic Line
  4. jvm默认垃圾收集器
  5. 让select查询结果随机排序
  6. VS2013 MFC基于对话框编程(创建工程)
  7. Flex sdk4 布局与更新
  8. 1.the linux device model--kobject kset学习笔记
  9. 【FFMPEG系列】之windows下编译FFMPEG篇----之三(MingW64)
  10. 函数拾取-python
  11. OpenGeoSys模拟THMC复杂过程的软件工具
  12. 153. php 引用
  13. CHAPTER 28 VMX SUPPORT FOR ADDRESS TRANSLATION
  14. Linux操作系统安装过程
  15. uniGUI session超时时间设置
  16. 数字图像处理实验六--图像复原
  17. Whitebox 白盒--密码算法的安全工具
  18. 计算机考研用python_20年苏州大学计算机考研经验
  19. XFTP中文目录乱码
  20. mmsegmentation 训练自制数据集

热门文章

  1. golang 筆記:make 與 new 的差別
  2. System.getProperty(user.dir) 获取jar包所在目录
  3. Java高并发编程详解系列-内存模型
  4. linux行位换行符,换行符或标点符号作为elasticsearch中的位置间隔
  5. ssm框架搭建+easyui增删改查实现
  6. 阿里 异构数据 mysql_异构数据库迁移
  7. java使用netty
  8. solidity数据位置-memory,storage和calldata
  9. 如何在修改 gulpfile.js 文件后自动重启 gulp?
  10. 网络虚拟化基础一:linux名称空间Namespaces