当前位置: 首页 > 编程日记 > 正文

如何在Windows Azure VM上的SQL Server和Windows Azure SQL Database两者中做出选择

作者信息:本篇文章是由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之间的对比,并提供了选择数据库服务方法,根据该方法您可以选择与您期望的成本效率和控制相符的数据库服务。

决策树

在此决策树中,请考量以下几项应用程序或服务具体决定点:

  1. 新的或现有的应用程序或服务:通常迁移现有应用程序("升级和转化")比新的应用程序更需要模拟户内应用程序操作,新应用程序一般没有那个必要。
  2. 应用程序或服务要求:此决定点检查任何兼容性、 网络或可能需要在 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)
  3. 大规模经济(重新)架构/分区的意愿:此决定点检查是否使用SQL DB 扩展技术例如Federations in Windows Azure SQL Database来实现弹性和扩展需求。想要充分利用SQL DB大规模的经济和弹性带来的益处,通常需要一定程度的重新架构 (请参见SQL DB扩展注意事项在这里).
  4. 数据库大小: 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

转载于:https://www.cnblogs.com/wuwa/archive/2013/02/21/6192129.html

相关文章:

C语言网络编程:socket函数

函数描述 头文件 <sys/types.h> <sys/socket.h> 函数使用int socket(int domain, int type, int protocol); 函数功能&#xff1a;创建一个通信的终点&#xff0c;并返回一个文件描述符来代表通信的终点 函数参数&#xff1a; a. domain 代编当前创建的socket文…

python excel web_使用python在WEB页面上生成EXCEL文件

近日写的一个程序需要在WEB服务器上生成EXCEL文件供用户下载&#xff0c;研究了一下找到了以下比较可行的实现方案&#xff0c;下面以web.py为例&#xff0c;把相关代码贴出来供大家参考&#xff1a;首先需要下载生成EXCEL的模块&#xff0c;推荐使用xlwtimport xlwtimport Str…

dateTimePicker编辑状态下,取值不正确的问题

当对dateTimePicker进行编辑&#xff0c;回车&#xff0c;调用函数处理dateTimePicker的value值时&#xff0c;其取值结果是你编辑之前的值&#xff0c;而不是你编辑后的值&#xff0c;虽然dateTimePicker.text的值是编辑后的值&#xff0c;但使用起来不方便&#xff0c;因此暂…

RMAN Backups

oracle 主要的备份工具 RMAN 其中&#xff0c;open database backup, 不需要把数据库设置成backup状态, RMAN reads a block until a consistent read is obtained. 看来备份比较重要的三种文件分别是, data file, control file, archivelog file. Types of Recovery Manager B…

异步使用委托delegate --- BeginInvoke和EndInvoke方法

当我们定义一个委托的时候&#xff0c;一般语言运行时会自动帮委托定义BeginInvoke 和 EndInvoke两个方法&#xff0c;这两个方法的作用是可以异步调用委托。 方法BeginInvoke有两个参数&#xff1a; AsyncCallBack&#xff1a;回调函数&#xff0c;是一个委托&#xff0c;没有…

C语言网络编程:TCP编程模型

编程模型 TCP编程模型如下 TCP服务器的工作过程如下&#xff1a; 服务器创建一个专门的“文件描述符”来监听来自客户端的“三次握手”&#xff0c;然后建立链接链接建立成功后&#xff0c;服务器会分配一个专门的“通信文件描述符”&#xff0c;用于实现与该客户端的通信 …

九度 1553:时钟(模拟题)

题目描述&#xff1a;如图&#xff0c;给定任意时刻&#xff0c;求时针和分针的夹角(劣弧所对应的角)。 输入&#xff1a;输入包含多组测试数据&#xff0c;每组测试数据由一个按hh:mm表示的时刻组成。 输出&#xff1a;对于每组测试数据&#xff0c;输出一个浮点数&#xff0c…

python3.7.4安装教程桌面_Python 3.7.4 for Windows的安装

一、Python简介Python是一款通用型的计算机程序设计语言&#xff0c;Python对编程人员来讲是一款很是有利的工具&#xff0c;可让您快速编写代码&#xff0c;并且代码运行速度很是快。Python具备很是简捷而清晰的语法特色&#xff0c;适合完成各类高层任务&#xff0c;几乎能够…

CSS 合法颜色值

2019独角兽企业重金招聘Python工程师标准>>> 连接地址&#xff1a;http://www.w3school.com.cn/css/css_colors_legal.asp 转载于:https://my.oschina.net/syc2013/blog/109970

SQL 关于apply的两种形式cross apply 和 outer apply

SQL 关于apply的两种形式cross apply 和 outer apply阅读目录 SQL 关于apply的两种形式cross apply 和 outer applySql学习第四天——SQL 关于with cube &#xff0c;with rollup 和 grouping回到目录SQL 关于apply的两种形式cross apply 和 outer apply SQL 关于apply的两种形…

C语言网络编程:TCP客户端实现

文章目录客户端通信步骤为什么客户端没有bind和listen客户端connect函数介绍局域网内客户端和服务器通信代码实例客户端通信步骤 根据基本TCP网络通信编程模型 我们可以知道客户端的实现主要有几个步骤 socket创建客户端通信的套接字文件&#xff0c;并指定通信的协议族和数…

java不能对什么类型进行转换_关于java:“不兼容类型:void无法转换为…”是什么意思?...

Java编译消息是什么&#xff1a;"Incompatible types: void cannot be converted to ..."的意思&#xff0c;以及我该如何解决。 一些编译器使用不同的措词&#xff1b; 例如"Type mismatch: cannot convert from void to ..."要么"Incompatible type…

屏蔽Drupal中的“Notice: Undefined index”警告

原因&#xff1a;drupal默认使用E_ALL&#xff0c;即输出所有错误和警告。我们只需要修改错误显示级别即可。 方法&#xff1a; 1. 打开\sites\default\settings.php 追加一行 ini_set(error_reporting, E_ALL ^ E_NOTICE); 这句话的意思是输出除了所有警告的所有错误。 注意该…

【AJAX】DWR入门教程

DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给JavaScript就好像直接本地客户端调用一样(DWR根据Java类来动态生成JavaScrip代码).它的最新版本DWR0.6添加许多特性…

$.ajax居然触发popstate事件?

我使用$.ajax用来实现一个搜索效果 近段时间因为苹果上微信浏览器的不知明原因需要处理返回事件&#xff0c;因此加多了popstate事件监听用来分别处理苹果跟安卓的返回。 可是居然影响到了我前面的ajax搜索功能&#xff0c;异常情况是&#xff1a;点击搜索按钮-调用ajax请求-直…

C语言网络编程:UDP通信实现

文章目录UDP的特点&#xff1a;UDP的用途UDP编程模型UDP通信代码实现UDP的特点&#xff1a; udp 协议是一种无链接的不可靠传输协议&#xff0c;且UDP每次发送到分组数据大小都是固定的&#xff0c;它的主要特点如下&#xff1a; 不建立连接没有应答机制不会根据网络状况的好坏…

智能跳过节假日算法java_java计算两个日期之前的天数实例(排除节假日和周末)...

java计算两个日期之前的天数实例(排除节假日和周末)发布时间&#xff1a;2020-09-02 23:07:01来源&#xff1a;脚本之家阅读&#xff1a;108作者&#xff1a;jingxian如题所说&#xff0c;计算两个日期之前的天数&#xff0c;排除节假日和周末。这里天数的类型为double&#xf…

一步步学习SPD2010--第十四章节--在Web页面使用控件(3)--验证用户数据输入

通过使用验证控件&#xff0c;你可以验证用户输入到控件的数据。插入的控件可以是HTML标签或者标准ASP.NET控件。 在本次练习中&#xff0c;你创建数据输入表单&#xff0c;并使用RequiredFieldValidation控件来强制输入。 转载于:https://www.cnblogs.com/crazygolf/p…

【C#】Gif文件生成

使用codeplex的GifCreator http://gifcreator.codeplex.com 来处理Gif文件 引用库文件Gif.Components.dll 1、把Gif文件转成Png文件 /// <summary>/// 把Gif文件转成Png文件&#xff0c;放在directory目录下/// </summary>/// <param name"file">&…

深度学习各种环境问题积累

1. Pytorch 首先要安装anaconda&#xff1a; 推荐清华镜像 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 拖到最后&#xff0c;下载最新版即可。 安装完毕要安装pytorch运行环境&#xff1a; # If your main Python version is not 3.5 or 3.6 conda create -n te…

C语言网络编程:TCP实现多线程实现多客户端

TCP通信的编程模型如下&#xff1a; TCP通信是必须要有一个服务器&#xff0c;通过accept函数与客户端socket进行三次握手连接创建的通信描述符与客户端进行数据传输。 此时可以将accept函数的连接设置为多线程形式&#xff0c;轮训监听&#xff0c;每获取到一个客户端的连接&…

Linux C连接Mysql

首先确定系统上安装了GCC和MYSQL了没有, 如果没有先安装.CentOS用 yum -y install gcc yum -y install mysql-server 此外还必须安装mysql-devel 安装成功检测: [rootliu mysql]# rpm -qa | grep gcc libgcc-4.4.7-4.el6.x86_64 gcc-4.4.7-4.el6.x86_64 [rootliu mysql]# rpm…

java servlet 多线程_Servlet的多线程和线程安全

线程安全首先说明一下对线程安全的讨论&#xff0c;哪种情况我们可以称作线程安全&#xff1f;网上对线程安全有很多描述&#xff0c;我比较喜欢《Java并发编程实战》给出的定义&#xff0c;“当多个线程访问某个类时&#xff0c;不管运行时环境采用何种调度方式&#xff0c;或…

JMeter 聚合报告之 90% Line 参数说明

其实要说明这个参数的含义非常简单&#xff0c;可能你早就知道他的含义&#xff0c;但我对这个参数一直有误解&#xff0c;而且还一直以为是“真理”&#xff0c;原于一次面试&#xff0c;被问到了这个问题&#xff0c;所以引起我这个参数的重新认识。 先说说我错误的认识&…

CCF-碰撞的小球

问题描述数轴上有一条长度为L&#xff08;L为偶数)的线段&#xff0c;左端点在原点&#xff0c;右端点在坐标L处。有n个不计体积的小球在线段上&#xff0c;开始时所有的小球都处在偶数坐标上&#xff0c;速度方向向右&#xff0c;速度大小为1单位长度每秒。当小球到达线段的端…

C语言网络编程:多路IO select实现多客户端

文章目录阻塞式的服务器程序多线程服务器程序非阻塞式服务器程序基于事件响应的服务器程序事件响应服务器程序的实现select阻塞式的服务器程序 我们接触过最多的最基础的网络通信模型为TCP/UDP通信模型&#xff0c;以下为TCP通信模型的基本流程C语言网络编程&#xff1a;TCP客…

MVC 中的 ViewModel

此文章总结自&#xff1a;http://rachelappel.com/use-viewmodels-to-manage-data-amp-organize-code-in-asp.net-mvc-applications ViewModel 这个概念不只是在在MVC模式中有&#xff0c;你会在很多关于MVC、MVP、MVVM的文章中见到这个说法&#xff0c;并且这个概念在任何技术…

java udp tcp协议_【java】TCP和UDP传输协议

TCP协议和UDP协议的比较TCP的全称是Transmission Control Protocol (传输控制协议)传输控制协议&#xff0c;是一种面向连接的协议&#xff0c;类似打电话在通信的整个过程中保持连接保证了数据传递的可靠性和有序性是一种全双工的字节流通信方式服务器压力比较大&#xff0c;资…

dot3_bump_mapping

为什么80%的码农都做不了架构师&#xff1f;>>> //----------------------------------------------------------------------------- // Name: ogl_dot3_bump_mapping.cpp // Author: Kevin Harris // Last Modified: 04/21/05 // Descript…

WPF入门教程-转载

最近为了做炫酷的UI&#xff0c;了解了WPF&#xff0c;之前一直是使用winform的&#xff0c;界面也是古老的不行。在园里找到了一个大佬以前写的教程&#xff0c;备注一下。按照系列教程走下来&#xff0c;可以直接上手了。备忘传送门>>>link&#xff1a;DotNet菜园-W…