Windows Azure云服务基础–RDBMS的分区

编辑人员注释:本文章由AzureCAT 云与企业工程组的高级项目经理 Shaun Tinline-Jones 和 Chris Clayton 共同撰写。

“云服务基础”应用程序也称作“CSFundamentals”,展示如何构建数据库支持的 Azure 服务。这包括描述日志记录、配置和数据访问的使用场景、实施体系结构及可复用组件。代码库旨在用于根据 Windows Azure 客户咨询团队进行的生产部署,深入挖掘在 Azure 上交付可伸缩的可用服务的最佳实践。

目前大多数公司都在努力推进其云计划,但特定解决方案的业务驱动因素各不相同,例如降低成本以及大幅提高敏捷性和扩大规模。当解决方案试图实现“云规模”时,“纵向可伸缩性”战略已被“横向可伸缩性”取代。前者通过升级硬件来提高容量,后者可增加共同完成某个特定任务的计算机数量。此权衡的一个绝佳示例是,选择创建具有许多提供相同网站内容的服务器的 Web 场,还是让单台机体试图处理负载。

大多数人从计算节点着手开始实施此横向可伸缩性计划,但忽略了更复杂且可能更重要的状态层级,例如关系数据库管理系统 (RDBMS) 和缓存。这些服务通常为 IO 密集型,且只有单个实例。在状态层级中实施横向可伸缩性的一个方法称作分区,它是指从逻辑上将 RDBMS 数据分成多个数据库,每个数据库通常采用相同的表结构。例如,一张员工信息表可以拆分到三个不同的数据库,每个数据库存储不同部门员工的信息。

分区的优势远不止体现在与容量相关的场景中。本文章将着重阐述在 Azure SQL 数据库平台中实施的且主要用于 OLTP 场景的 RDBMS 分区。分区数据库结构可带来优势的示例场景包括:

限制阀值或吞吐量限制的命中频率过高。 数据量太大(索引重新构建、备份等)。 一个数据库不可用影响所有用户(而单个分区则不会)。 数据库难以按需求向上和向下伸缩。 某些业务模型,例如多租户或软件即服务方案。

使用多租户数据库(如 Windows Azure SQL 数据库)作为服务解决方案时,通常会在各种条件下对客户端进行限制的服务质量 (QOS) 控制。限制通常会在资源压力攀升时发生。分区是一种帮助降低资源压力的关键战略,它可以将通常影响单台服务器的负载分散到多台服务器上,每台服务器均包含一个分区。例如,假定负载均匀分配,那么创建五个分区,就可以将每个数据库上的负载降低为大约百分之二十。

但任何东西随着功能变得更强大,也难免要做出一些牺牲。分区可能会增加多个关键领域的复杂性,因此需要更完善的计划。这些关键领域包括:

所有分区的标识列应保持全局唯一性,以防将来的业务需求要求减少分区数。如果所有分区的标识不唯一,两个分区合并时会发生冲突。 引用完整性无法引用其他分区中的行或者强制与这些行建立关系,因为它们属于独立的数据库。 应尽量避免跨分区查询,因为这要求对每个分区进行查询并合并结果。跨分区“扇出”查询不仅从性能角度来说成本极高,而且会增加为其提供支持的分区框架的复杂性。如果必须进行跨分区查询,则通常的策略是对每个分区进行异步查询。
但是,有时同步查询方法可以对结果集
大小进行更好的控制。    

大多数情况下,分区是一个数据访问层 (DAL) 概念,为更高级别的复杂应用程序逻辑抽象化复杂的数据结构。

如何定义“租户”是您构建分区化体系结构时作出的最重要的决策之一。租户是必定位于相同分区上的最大唯一数据分类。限制在单个租户中执行的查询通常速度更快,因为这种查询无需在正常操作状态下执行扇出操作。影响对应租户定义决策的部分因素如下:

对标识符的更高级别应用程序代码的了解程度。 在此级别上执行大多数核心业务事务的能力。 在租户级别避免限制常规日常操作的能力。

为了更形象地说明这些概念和想法,Windows Azure 客户咨询团队在云服务基础 (CSF) 数据包 (http://code.msdn.microsoft.com/Cloud-Service-Fundamentals-4ca72649) 中构建了一个基本分区数据访问层 (DAL)。

CSF 中将租户定义为单个用户。促使选择此租户的因素包括:

大多数核心业务需求都不要求跨多用户查询。 一个分区不可用只会影响某组用户组,而其他用户可继续正常使用系统。单个分区上的用户数可以控制为企业可承受的数量。

对租户的定义和实施可确保不需要执行跨数据库事务。在图 1 中,我们将此数据集称为 shardlet,即数据模型事务边界。

图 1 - 数据模型事务边界

用户首次在会话中连接到数据库时,可以执行一系列简单查询,以了解是否有任何功能由于脱机分区而不可用。

为了简化 CSF 中演示的分区方法,我们决定创建一个分区集,这些分区拥有足以满足可预见将来的容量需求的存储空间。通过选择固定大小,就不再需要演示分区数量的增加和减少,也就无需执行租户迁移之类的操作。通过对租户名称执行哈希算法,可以生成一个整数,此 ID 可用来在“分区图”中查询匹配范围。CSF 使用基于范围的机制,其中一个特定分区(在“分区图”中捕获)将被分配一个这些数字的范围。

如果需要向分区集添加分区或从分区集中删除分区,租户需要在迁移到新分区之前变为不可用。由于此严重限制,因此要求在首次创建分区集时对分区集进行大幅超额配置,以缓解或消除执行复杂分区管理的需要。

此解决方案要求数据访问层 (DAL) 能检测到租户 ID,以确定租户在分区集中的位置。如果执行的查询包括不可用的分区,整个查询将失败。如果 DAL 不包括租户 ID,则必须查询所有分区,这会导致失败概率提高并使性能降低。

目前正在进行一些预备工作,以提供可演示更高级分区方法的更多示例代码。这些示例可改进以下领域:
被动式和主动式分区管理。

全局唯一性和标识管理。 分区集内分区之间的租户迁移。 分区集的扩展和收缩。 对无法检测租户的查询的改进。

总而言之,云服务基础示例代码是开始探讨基本分区概念的一个绝佳途径,而分区则是创建“云规模”应用程序的一个重要方法。

时间: 2024-08-02 13:29:08

Windows Azure云服务基础–RDBMS的分区的相关文章

在Windows Azure云服务上设计大型服务的最佳做法

今天的帖子来自于http://www.aliyun.com/zixun/aggregation/16689.html">Jason Roth,主编程作家.他提供了来自我们的客户咨询团队的新白皮书的概述,涉及在Windows Azure上 设计大型服务的最佳做法.我们最近发行了新的白皮书:在Windows Azure 云服务上设计大型服务的最佳做法.这份文件汇集了基于实际的客户约定的设计模式和指导方针.它结合了最好的策略和设计模式,始终如一地证明了真实世界的 Windows Azure 应用

Windows Azure云服务用命令行管理云端

几个星期前,我发表了一篇关于Windows Azure 云服务的博客.我正在挖掘新的东西,并且在Mac,PC和Linux(我更喜欢Ubuntu)上做着不同的尝试.作为很长一段时间的PowerShell和命令行的粉丝,我一直在寻找在"文本模式"中处理事务的方法,以及脚本站点的创建和部署. 原来有一大堆用命令行访问Azure的方法-比我想象的还多.有一个基于JSON的Web API,这会让那些工具终止对话.如果你想的话,你当然可以直接调用那些API,但是命令行工具确实非常有趣. Windo

微软推出了最新的Windows Azure云服务

WPC 2012 大会上,微软推出了最新的Windows Azure云服务,主要面向Windows平台的虚拟主机和网站托管服务. Windows Server 管理门户网站.API 建设.虚拟机等服务,使托管服务供应商可以轻松地在基于 Windows Server 的环境服务方案中提供高密度的网站设施和基础设施. 微软为上周Azure云计算机服务在欧洲中断一事发表了简短说明,并发布了后续将进行的工作.在这件事发生之后,该公司把责任归咎于"配置网络设置",声称是它导致了Azure内部的交

Windows Azure云服务和虚拟机预留IP地址将正式发布

什么是预留 IP 地址?何时需要预留 IP 地址?   随着最近 PowerShell 的发布, Microsoft Azure 允许用户在 Azure 订阅中预留公共 IPv4 地址.您可以将 IP 地址在订阅中保留任意时间,也可以将其与预留 IP 地址所在地区的云服务部署关联.此新公告专门针对面向公共英特网的 IP 地址.Azure平台已经支持预留内部 IP,如此处所述.   需要预留 IP 地址有多种原因   A-Record DNS 更简单:由于在删除和关闭 VM 后维护 同一公共 IP

微软宣布在Azure云服务中提供Linux操作系统

在把Linux当成威胁进行了多年的斗争之后,微软现在在其Windows Azure云服务中提供基于Linux的操作系统. Linux服务将在美国东部时间星期四早上4点(北京时间周四17点)开始在Azure平台上提供.在这个时候,Azure门户将提供许多Linux发布版软件,包括Suse Linux Enterprise Server 11 SP2.OpenSuse 12.01.CentOS 6.2和Canonical Ubuntu 12.04.Azure用户将能够选择和部署微软Windows A

微软Azure云服务将支持iOS和Android设备

北京时间5月16日下午消息,据美国IT网站PCWorld报道,微软正在将Windows Azure云服务定位为给包括苹果iOS和谷歌Android在内的移动设备提供后台服务的平台. 微软正通过其设备工具箱Windows Azure Toolkits for Devices来实现这个目标.这个工具箱包括本地数据库.样本及相关文件等.微软上周发布的Windows Azure Toolkit for iOS旨在帮助iOS应用开发人员使用Windows Azure服务. 微软开发人员部门高级副总裁S.索

Windows Azure中远程监控基础知识和故障排除

在用于构建强大云应用程序的组件块博客文章中,我们介绍了 Azure CAT 团队的系列博客文章和技术文章,这些文章说明了 MSDN 代码库上发布的 Windows Azure 中的云服务基础代码项目.在该系列中,我们要介绍的第一个组件是远程监控.这是我们在执行各种规模的 Windows Azure 客户项目时最先构建的可复用组件之一.事实上,有人曾经说过:"试图管理复杂的云解决方案,但却没有合适的远程监控基础设施,就像是眼瞎耳聋的人试图穿过一条繁忙的公路".您不确定或不知道哪里会出现问

azure-请问下Azure 云服务的缩放设置的队列 中队列名称怎么选择

问题描述 请问下Azure 云服务的缩放设置的队列 中队列名称怎么选择 大家好哦!!请问下Azure 云服务的缩放设置的队列 中队列名称怎么选择??求解答!!! O(∩_∩)O谢谢 解决方案 您好,队列的选择主要取决于您在cloud service中使用到的message的种类.当前windows azure提供的queue的选则是Azure storage queue和service bus queue,如果您的项目中有用到他们,并需要根据他们的数量进行autoscale,那您可以选择对应的n

Windows Azure云平台如此热门

最近几年,微软内部的专利总数已超过4万件,微软全球每年都投入90亿美元以上用于研发,说微软是一座宝矿毫不夸张,因为它是在有太多好的技术.资源沉淀在那里. 从Windows最早版本的发布,到如今Windows Azure云平台的发布,有无数的程序员对微软Visual Studio耳熟能详,同时有无数的合作伙伴在Windows平台开发应用,在他们眼里,微软一直以来都是业内的技术领头羊. Windows Azure这个里程碑式云平台的发布,标志着微软将带领合作伙伴一同进入云计算时代,在中国,入选云加速