[转]Azure 表存储和 Windows Azure SQL Database – 比较和对待

正文转自:https://msdn.microsoft.com/library/azure/jj553018

 

履新时间: 2014年10月

作者:Valery Mizonov 和 Seth Manheim

审阅者:Brad Calder、Jai Haridas、Paolo Salvatori、Silvano
Coriani、Prem Mehra、Rick Negrin、Stuart Ozer、Michael Thomassy、Ewan
Fairweather

按部就班主题比较  支持之蝇头种植结构化存储类型: 表存储和 Microsoft Azure SQL
Database,后者在先称“SQL
Azure”。本文旨在提供相应技术的于,以便你得了解她中间的相似性与距离。这同一解析可辅助你对抉择能够太好地满足你的具体需要之技艺。

简介)


当考虑数据存储和持久性选项时, 提供了简单栽基于云的技能供你挑:Microsoft
Azure SQL Database 和  表存储。

Microsoft Azure SQL Database 是平栽将核心 SQL Server
功能扩展至云环境的关系数据库服务。通过采用 Azure SQL
Database,你得在云中设置和配备关系数据库解决方案。优势包括托管的基础结构、高可用性、可伸缩性、熟悉的出模型与数额看框架和工具
— 类似于人情 SQL Server 环境被之应和概念。Azure SQL Database
还提供了片效果,使你会当地面 SQL Server 数据库及 Azure SQL
数据库里展开搬迁、导出和不断同步(通过 SQL
数据并)。

表存储大凡平等栽容错且经 ISO 27001 认证的 NoSQL 键值存储区。
表存储可能适用于以下应用:必须存储大量之免关系数据且需要增大结构来储存此类数据。借助于表,可以经过简化的多寡访问模式,以低之应用程序成本对莫架构化的数量进行基于键的访问。尽管 
表存储于储存结构化数据常常并无使架构,但其不提供任何方法来代表数据中的干。

尽管在有的明白的差别,但 Microsoft Azure SQL Database 和 
表存储都是具备高可用性的托管服务,其 SLA 达到每月 99.9%。

表明存储和 SQL
Database)


与 Azure SQL Database 类似, 表存储可存储结构化数据。Azure SQL Database
与  表存储之间的主要区别是:Azure SQL Database
是一个关系数据库管理网,它根据 SQL Server
引擎并建于业内提到法和履基础之上。因此,它经过 Transact-SQL
查询、ACID 事务及在劳动器端执行之囤过程来供关系数据管理职能。

申存储是相同种灵活的键/值存储区,使您会轻松地构建云应用程序,而不肯定应用程序模型锁定到一定的同一组架构。它不是关系数据存储区,不提供以及
Azure SQL Database 相同之关系数据管理作用(如联接和仓储过程)。
表存储对服务器端查询提供了区区支持,但提供了作业功能。此外,同一个表中的匪同行在 
表存储着恐怕所有不同之布局。
表的这无异于无论是架构属性也要是你能够快地蕴藏和摸索简单的关系数据。

倘您的应用程序存储并寻找不欲丰富关系意义的特大型数据集,则 
表存储可能是重复好的选择。如果您的应用程序要求对架构化的多少集进行多少处理并当真相上属于干项目,则
Azure SQL Database 可能更契合你的消。在 Azure SQL Database 和 
表存储之间做出决定之前,应考虑多别因素。下一部分排有了内部的少数注意事项。

技能选择注意事项)


以规定哪种多少存储技术适用于给定的化解方案时,解决方案架构师和开发人员应考虑以下建议。

当化解方案架构师/开发人员,在以下情形常常,乃答应考虑使用  表存储

  • 君的应用程序必须存储非常深的数据卷(几独
    TB),但以使资金维持以可比逊色档次。
  • 而的应用程序存储和寻找大型数据集,但从来不得劳务器端联接、辅助索引或复杂服务器端逻辑的纷繁关系。
  • 卿的应用程序需要巧的多寡架构以囤非一致性对象,而这些目标的结构在筹划时或者是雾里看花之。
  • 若的事务要求过多单地理位置执行难恢复法力,以便满足特定的合规性要求。
    表可每当一个大洲中隔数百英里的星星点点单数据基本间展开地理复制。这种复制可于出现重大灾难的情状下提供额外的数码而持续性。
  • 汝得仓储高于 150 GB 的多少,而休欲实现分片或分区逻辑。
  • 卿要贯彻高级别的可伸缩性,但不用手动对数码集分片。

当化解方案架构师/开发人员,在以下情况常,您答应考虑以 Microsoft
Azure SQL Database

  • 而的应用程序要求对架构化、高度结构化的数据集以及关系进展多少处理。
  • 卿的数量在精神上是关系数据,要求祭关系数据编程模型的要条件,以便利用数据唯一性规则、参考约束与主键或外键来实施一致性。
  • 当您的数据卷着,并置数据集的每个单位(这便转换为单个数据库)不跳
    150
    GB。但是,你得跨多独数据集对数据开展分区,以超乎规定的限制。请留意,这同样限将来恐怕会见进展反。
  • 幸存的坐数量为骨干的应用程序已经以 SQL
    Server,并且你要求经行使数据访问框架对结构化数据进行基于云的造访。同时,应用程序要求于本土和 
    之间有无缝的可移植性。
  • 您的应用程序计划下 T-SQL
    存储过程在数据层内执行计算,这样即使尽深限度地缩减了应用程序与数存储之间的过往次数。
  • 卿的利用要求通过同样的询问语义(包括连接、聚合和复杂性的谓词)来支持空间数据、丰富的数据类型以及错综复杂的数据看模式。
  • 汝的应用程序必须运用现成的告知工具,针对数据模型提供可视化和商业智能
    (BI) 报告。
备注
许多  应用程序可以同时利用这两种技术。因此,建议你考虑结合使用这些选项。

 

 

比 表存储和 Azure SQL
Database)


以下每有的表格提供了意义的逻辑分组,使您可以一目了然地比  表存储和
Microsoft Azure SQL Database 中的效能。

基本功作用)


斯部分较  表存储和 Azure SQL Database 提供的一些中坚存储功能。

 

比较条件 表存储 Azure SQL Database

数据关系

              

表存储不提供任何方式来表示数据之间的关系。你可以通过使用表的无架构属性并以所需格式对数据进行结构化,以获取简单的关系。

              

与 SQL Server 类似,Azure SQL Database 允许你通过使用外键来定义不同表中存储的数据之间的关系。

服务器端处理

              

支持基本操作(如 insertupdatedeleteselect),但它在存储引擎端上不支持联接、外键、存储过程、触发器或任何处理。

              

提供标准的 SQL Server 功能,如存储过程、视图、多个索引、联接和聚合。

事务支持

受限              

对同一个表和同一分区中的实体支持事务。一个事务中支持多达 100 个操作。支持开放式并发。有关详细信息,请参阅 TechNet 上的实体组事务

              

支持同一数据库中的典型 ACID 事务。但不支持跨数据库的事务。Azure SQL Database 也支持乐观并发。

地理复制

              

默认情况下,表复制到其他区域。这种复制可提供高级别的灾难恢复功能。

              

截至撰写本文之时,Azure SQL Database 实例不复制到其他区域。此行为在将来可能发生变化。

表架构

已放宽              

每个实体(行)都可以具有不同的属性。例如,在同一个表,你可以在一行中存储订单信息,而在另一行中存储客户信息。

托管              

在定义整个表的固定架构之后,可随时进行更改。所有行都必须遵守架构规则。考虑使用 XML 类型或稀疏列来获得附加灵活性。

与本地使用的现有数据存储区的相似性

              

基于云的存储,目前本地没有对应的替代项。

              

类似于具有某些限制的 SQL Server。有关详细信息,请参阅 TechNet 上的 一般性的指导原则和限制

向外扩展

自动              

基于 PartitionKey 属性进行分区。一个表可以存储在不同存储设备上的不同分区中。此结构允许客户端并行访问数据。

手动              

通过使用 SQL 联合或自定义分片方法,跨数据库实例的托管组进行分片。

数据类型

简单              

有关有关支持的数据类型的详细信息,请参阅“附加信息”部分的表。

简单、复杂和用户定义              

Azure SQL Database 支持一组丰富的数据类型,包括自定义的用户定义类型。

外消息)


  • 当您创造 
    表时,你不用定义任何列。表自身没有组织化且不拥有设计时架构。列名称是表明中蕴藏的实业(行)的如出一辙局部,它们对准单个表中的例外实体可能两样。
    表甚至可能有所两独特性名称相同之实业,但对此属于性值使用不同品类。但是,属性名称在么实体中要是绝无仅有的。
  • 发明存储不支持关系意义(如查询或作业中的对接和聚众)以超过多个说明协调修改。存储在 
    表中还富有同样分区密钥的实业是于存储区中联合供的。你可以高速地寻找这些实体,并得以用实体组事务以么请求中改其。
  • 采用实体组事务时,应留神某些限制。这些限制包括 4 MB
    最深批判处理大小,以及批判处理面临的富有实体都要共享相同之分区键值。有关详细信息,请参见本文。
  • 说明存储类型提供了一个聚集索引,结果始终按 PartitionKey
    RowKey 以升序排列。PartitionKeyRowKey
    值唯一标识表中之实行。如果你尝试使用同一之 PartitionKey
    RowKey 创建两履行,则会变动异常。
  • 本文提供关于以
    Azure SQL Database 与地面 SQL Server
    之间开展精选的决策树。还可以拿这些决定规则使为 Azure SQL Database
    与  表存储。
  • 用叫当时片种技术之吞吐量条件是一个独具许多变量的错综复杂方程式。这些因素概括查询类型及其复杂性、数据访问模式、结果集大小、存储基础结构的临近性以及网络延迟。始终建议您行好之习性测试,以还好及更保险地衡量相关的指标,同时考虑特定一类应用程序的切切实实细节。有关
    Azure
    表的有关最佳实践的详细信息,请参见这个博客文章。
  • 下表列有了针对性  表中的属性值支持之数据类型。有关 Azure SQL Database
    支持的数据类型的列表,请参见Data Types (Azure SQL
    Database)。

    ###  

    属性类型 详细信息

    Binary

    一个大小高达 64 KB 的字节数组。

    Bool

    一个布尔值。

    DateTime

    一个表示为 UTC 时间的 64 位值。支持的值范围为 1/1/1601 到 12/31/9999。

    Double

    一个 64 位浮点值。

    GUID

    一个 128 位的全局唯一标识符。

    Int

    一个 32 位整数。

    Int64

    一个 64 位整数。

    String

    一个 UTF-16 编码的二进制值。字符串值的大小可高达 64 KB。

尖端功能)


本节较  表存储和 Azure SQL Database 提供的尖端功能。

 

比较条件 表存储 Azure SQL Database

可通过本地应用程序或非  平台中承载的应用程序进行访问

              

              

一致性模型

              

              

Windows Communication Foundation (WCF) 数据服务客户端支持

              

              

REST 客户端支持

              

内在支持基于 REST 的访问。

              

通过在 SQL 数据库的顶部添加一个 OData 层,支持基于 REST 的访问。

防火墙防护(受限 IP 范围访问)

              

              

使用 Azure 防火墙,此防火墙可以从门户或使用命令行工具来配置。

事务限制行为

              

有关详细信息,请参阅 TechNet 上的 此博客文章

              

有关详细信息,请参阅 TechNet 上的 本文

容错

              

为了提供高级别的容错功能,将在区域内复制三次存储的数据,并在另一个相隔至少 400 英里(644 公里)的区域内另外复制三次。

              

在所选的数据中心内保留 Azure SQL Database 实例的三个副本。

日志记录和度量

              

有关详细信息,请参阅 TechNet 上的 此博客文章

              

事务日志

              

              

事务日志大小上限为 10 GB,单个事务限制为 1 GB。

旁信息)


  • 得运用内置的防火墙功能于网级别限制对 Azure SQL Database
    实例的拜访。此外,还可由此 
    门户配置防火墙访问规则。相比较而言,任何可经过 HTTP/HTTPS 连接到 
    存储帐户端点的客户端都得得对  表的访权限。
  • 发明存储吗对表中单一实体的插/更新/删除事务及实体组事务提供 ACID
    事务保证。为对服务之每个单一查询请求提供快照隔离。执行查询时,从该查询开始与一切工作间,将保持分区的同一视图。应用程序开发人员荷掩护多个表之间的一致性。
  • 发明支持日志记录,使你可知查阅针对你的劳务实践的每个请求。日志记录还提供针对性你的服务之汇聚请求度量。
  • Microsoft Azure SQL Database
    目前休提供日志记录以及心地;但它提供动态管理视图
    (DMV)
    子集,以诊断查询性能问题、监视数据库连接、查看活动之业务并检讨查询计划。
  • 因 Microsoft Azure SQL Database 建立于 SQL Server
    引擎基础之上,所以某些概念(如 TempDB
    和作业)仍然是系的。为了防范事情日志文件的增高逾预想,Azure SQL
    Database 对日记大小强加了 10 GB 的克。Azure SQL Database
    基础结构管理而无法直接看的这些事情日志。
    表存储没有和工作日志等同的起。
    表存储支持之日志记录及胸襟功能差为事情日志,因为它们跟对劳务的伸手,而非跟正在改的实在多少。
  • 也防在多租户环境面临过度占用资源, 表存储和 Azure SQL Database
    两者都用可决定体系阈值的编制。此编制为叫“限制”,其行事在就点儿起服务期间悬殊。例如,Azure
    SQL Database
    使用简单种限制政策:“软限制”“硬限制”。本文翔介绍了这些限制机制。

容量和配额)


按部就班有的于可能适用的容量与配额的角度比较  表存储和 Azure SQL
Database。请小心,此处说明的具备容量与配额将来恐怕会见开展更改。

 

比较条件 表存储 Azure SQL Database

最大行大小

1 MB              

属性不超过 255 个,包括三个必需属性:PartitionKeyRowKeyTimestamp

2 GB              

可包含多达 1024 列(或者,如果使用稀疏列,则为 30,000 列)。使用 varchar(max)varbinary(max)xmltextimage 列可提供高达 2 GB 的行外存储。

最大数据大小

每个表 200 TB              

如果是在 2012 年 6 月 8 日或之后创建的,单个存储帐户(包含表、blob 和队列)可最多包含 200TB 的 blob、队列和表数据;对于在该日期之前创建的存储帐户,总容量为 100TB。因此, 表的最大大小为 200 TB。

每个数据库 150 GB              

尽管允许的最大数据库大小将来可能会增加,但请考虑使用 SQL 联合(或自定义分片)来存储更大的数据集。

每个查询检索的最大行数

1,000              

响应单一请求时,返回的行(实体)数不超过 1,000。如果查询结果多于此数值,将返回一个继续标记,以允许查询继续处理更多请求。

无限制              

如果未正确优化,连接和查询超时可能会限制所提取的行数。

其他消息)


  • 申存储在响应标题中采取持续标记,以指示查询所有更多结果。你可以通过发出任何一个要(已经过连续标记进行参数化)来搜寻这些结果。通过是方案,你摸的宗可超过
    1,000
    单实体的克。将对准每个请求维护快照一致性,但非见面超越查询的后续标记请求维护快照一致性。
  • 表行(实体)中有着字段(属性)的重组大小非可知跨越 1
    MB。此限包括属性名称的分寸和属性值或该类别,包括个别只必要的根本特性(PartitionKey
    RowKey)。
  • Azure SQL Database 目前支撑 5 GB 数据库 (Web Edition) 或高 150 GB
    数据库 (Business
    Edition)。为了将该大小保持在给定的阈值内,开发人员应负担监视数据库。Azure
    SQL Database
    最特别尺寸可经管制操作进行预配置,而未会见趁着存储的数码卷增长自动递增。有关详细信息,请参见
    TechNet 上之 Azure SQL Database 文档中之 ALTER DATABASE (Azure SQL
    Database)。
  • 好端端 Azure SQL Database 表中之列数限制也 1024(类似于地方 SQL
    Server)。使用稀疏列时,一个阐明得分包多达 30,000 列,其中最为多起
    1023 列可以是非稀疏列。但是,至少 28,976
    列必须是雅疏列。如果总列数大于
    1024,则将一个非稀疏列用于必需的列集。

管理与操作)


据有较  表存储和 Azure SQL Database 提供的管住职能。

 

比较条件 表存储 Azure SQL Database

管理协议和工具

HTTP/HTTPS 上的 REST              

可以使用 Azure 存储资源管理器或其他第三方工具,如 Cloud Storage Studio。

ODBC/JDBC              

HTTP/HTTPS 上的 REST              

可以使用  管理门户或 SQL Server Management Studio 来管理 Azure SQL Database 实例。

数据访问

OData 协议接口              

你可以通过使用 Azure SDK 中随附的 HTTP(S) REST API 或用于 WCF Data Services 的 .NET 客户端库来访问数据。

ODBC/JDBC              

通过使用现有技术(如 ADO.NET 和 ODBC)编写的可与 SQL Server 通信的应用程序,只需经过很少的代码更改,即可访问 Azure SQL Database 实例。

Java API 支持

              

              

Node.js API 支持

              

              

PHP API 支持

              

              

LINQ 支持

              

              

Python 支持

              

              

离线开发人员体验

              

由  SDK 中随附的本地存储模拟器提供。

              

SQL Express 或 SQL Server 的其他版本是不同的产品,不提供对 Microsoft Azure SQL Database 环境的完全模拟。

其他信息)


  • 尽管可以于地头 SQL Server 安装着效仿 Azure SQL
    Database,但此方法不同意复制行为,这种作为才适用于基于云的劳务,如限制还是任何适用的局限性。
  • Microsoft Azure SQL Database 提供基于 Web
    的并行查询条件。可透过即席客户端控制台工具(如 SSMS)或支撑 ODBC
    的老三正 RDBMS 查询工具访问 Azure SQL Database。
  • T-SQL 功能于 SQL Server 与 Azure SQL Database
    之间悬殊。某些意义受限及免叫支持,而一些功能有所明显的异样(如创建数据库及一道)。

身份验证和授权)


随有讨论  表存储和 Azure SQL Database 支持的身份验证和授权功能。

 

比较条件 表存储 Azure SQL Database

身份验证

对称密钥              

共享的访问签名              

512 位 HMAC 密钥用于验证用户的身份。

SQL 身份验证              

标准 SQL 身份验证用于验证用户的身份。

基于角色的访问

              

              

支持标准的 SQL 数据库和应用程序角色。

支持 Azure Active Directory(以前称为 ACS)

              

              

标识提供商联合

              

              

其余信息)


  • Azure SQL Database
    支持之依据角色的拜会提供了一心的油滑,用于配置才念、只写及读写模式。此作用可以供平等组丰富的多少看选项,具体在各应用程序的需要。
  • 以不管一种技术时犹无支持并身份验证、基于证书之身份验证或 Active
    Directory 身份验证,所以,你得保证平安凭据(例如,HMAC 密钥或 SQL
    用户名和密码)由相当的保护措施(如加密)来含有。当对这些证据的访问使抱
    IT 策略时,这种保护愈要。
  • 发明存储提供经过签字的依据 URL 的访,称为“表
    SAS”(共享的看签名)。通过
    SAS,你可给对客户端的因时间的访问,而休需要泄露存储帐户密钥。有关详细信息,请参考此博客文章。

成本)


准有由本角度对  表存储和 Azure SQL Database
进行较。此处说明的享有资产将来恐会见开展变更。

 

比较条件 表存储 Azure SQL Database

存储成本

$0.125              

每月存储的每 GB(基于日平均值)

有关定价详细信息,请参阅 Azure 定价概述

根据数据库大小按照渐变费率进行计费。

有关定价详细信息,请参阅 Azure 定价概述

事务成本

$0.01              

每 100,000 个存储事务。

$0.00              

Azure SQL Database 不对事务进行收费。

计费操作

全部              

除了存储成本之外,还将根据针对表的事务量来计算事务成本。

              

成本不依赖于事务量,而只取决于数据库大小。

流出成本

$0.12 – $0.19              

每 GB,基于渐变、特定于区域的规模

$0.12 – $0.19              

每 GB,基于渐变、特定于区域的规模

旁信息)


  • 流出资金基于通过 Internet 离开 
    数据核心的数目总量。当应用程序从各自的数据服务执行查询并接受结果经常,在加以的计费期间内计算是数。
  • 同 Azure SQL Database 不同,
    表存储按每个业务施加成本。这种结算模型意味着,在同基金有关的设想事项被,应包括仓储业务之效率。

结论)


决定何时使用  表存储或 Microsoft Azure SQL Database
取决于很多元素。这些要素可能大非常程度及取决于应用程序的新鲜需要、其系统布局与工作负荷和数据看模式。这同一有的汇总了一部分第一注意事项。

申存储支持以大量数目存储于叙蒙有着极高可伸缩性的表中。这些发明可以储存 TB
级的数量和几十亿只实体。为了达到这等同可伸缩性级别,
表存储采用扩展模型以以差不多个存储节点内分布实体。它用 NoSQL
数据模型来支持这样大之可伸缩性和强一致性。假如您要求以较逊色之基金持久保留大量之非关系或简化数据模型,请考虑采取 
表存储。

君得以 Microsoft Azure SQL Database 视为扩张至讲话平台的 SQL Server
数据库引擎,同时提供熟悉的 SQL Server
开发人员体验、丰富的查询语义、通过不同隔离级别支持 ACID
事务和错综复杂的数量处理功能。要你的数目属于高度关系数据,并且你要求关系数据管理与这些力量相互结合,则
Azure SQL Database 可能是重新好之挑三拣四。

在意,决定何时使用一定的技能并非总是两者选一的题目,你可能一味无法控制偏爱某个单一技术。你可以评估是否能够用随即半种技术平衡结合为满足你的缓解方案的需要,并考虑以各自领域以即简单种技术来缓解而要是缓解之一定问题项目。

经过对个别栽技术的又深切了解,你可以进一步旗帜鲜明地控制于 
中运用啊种多少存储技术以及以何种状况下利用。

其他请求参见      

其它资源

SQL Azure 和 Azure
表存储        
Azure 表存储 –
不是若爹的数据库        
Azure 表 –
详细的艺概述        
什么充分利用 Azure
表        
用户表 – 使用 SQL Azure
还是表存储?        
使用 SQL Azure 替代 Azure 存储 Blob
和表吗?        
Azure 表存储和 Windows SQL
Azure        
SQL Azure 与 Azure
表存储于起来何等?        
SQL Azure 或说明服务 –
如何挑选?        
Azure SQL
数据库交付指南        

网站地图xml地图