由于Azure更新较快,此文档基于Azure SQL V12 版本,文档时间:2017年9月24日
之前有很多朋友问,Azure SQL 与SQL Server有什么样的区别,我找了一些资料,也自己总结了一些内容。如下,但对于应用设计变化和分片处理等内容比较复杂,需要更深入的去探讨。这篇文章先把功能列表先给到大家。
1、基本对比
众所周知Azure SQL是属于PaaS层的服务,因此,在运维管理和使用上,都是数据库本身级别的使用和管理,我总结了几点如下:
项目 | SQL Server | Azure SQL数据库 |
数据库构建 | 关注服务器、操作系统、数据库实例、数据库设计管理 | 数据库设计 |
数据库管理 | 服务器硬件、操作系统、数据库实例、备份、数据库管理等 | 数据库基本管理 |
数据库调优 | 服务器硬件、操作系统、数据库实例、数据库索引、分区、磁盘等服务器硬件、操作系统、数据库实例、数据库索引、分区、磁盘等 | 数据库索引、设计 |
权限 | 操作系统级别 | 数据库级别 |
成本 | 硬件、操作系统、SQL 、管理成本 | 无硬件和管理成本 |
网络安全 | 配备防火墙、安全管理设计 | 已有免费防火墙 |
容量限制 | 基本无限制,受限于本地硬件,大512PB | 1TB |
构架设计 | 采用分区、文件分组等提高IO | 采用分片 |
应用设计理念 | 范式和反范式的权衡 | 采用横向扩展理念 |
容灾 | 搭建Alwayson | 可设置异地复制 |
备份 | 全备和日志备份 | 自动备份 |
还原 | 根据备份情况手动还原 | 可以还原到任何时间还原点 |
全文检索 | 支持 | 不支持第三方断字符 |
Agent作业 | 支持 | 不支持 |
日志传送 | 支持 | 不支持 |
2、应用设计变化
在应用设计上,云上的应用的理念应该向SaaS转换,需要设计多租户应用程序
在多租户应用程序中,可以轻松将数据和工作负荷分区。 由于大多数请求发生在租户的限定范围内,因此可以将数据和工作负荷分区(例如,沿租户边界)。
多租户应用程序开发人员选择的设计模式通常是出于以下考虑因素:
租户隔离。 开发人员需要确保租户不越权访问其他租户的数据。 这种隔离要求同时也针对其他属性,例如避开干扰性邻居、能够还原租户的数据,以及实现租户特定的自定义。云资源成本。 SaaS 应用程序需要具有成本竞争力。 多租户应用程序开发人员可能选择优化,降低云资源的使用成本,例如存储和计算成本。简化 DevOps。 多租户应用程序开发人员需要结合考虑隔离保护、维护和监视其应用程序与数据库架构的运行状况,以及排解租户的疑难问题。 应用程序开发与运营的复杂性直接导致成本增加和租户满意度难题。伸缩性。 以累加方式添加更多租户的能力,对于需要此能力的租户而言,这是 SaaS 运营成功不可或缺的能力。
常见的数据库模型设计实践:
租户各有数据库。 每个租户都有自己的数据库。 租户特定的所有数据局限在该租户的数据库内,与其他租户及其数据隔离。共享分片数据库。 多个租户共享多个数据库中的一个。 使用分区策略(例如哈希、范围或列表分区),可将一组不同的租户分配到每个数据库。 这种数据分布策略通常称为分片。共享单一数据库。 单一数据库有时很大,包含按租户 ID 列区分的所有租户的数据
3、详细功能对比
下面是SQL Server 与Azure SQL数据库的详细功能的对比。
功能 | SQL Server | Azure SQL 数据库 |
活动异地复制 | 不支持 - 请参阅 Always On 可用性组 | 支持 |
始终加密 | 支持 | 支持 - 请参阅证书存储和 Key Vault |
AlwaysOn 可用性组 | 支持 | 不支持 - 请参阅活动异地复制 |
附加数据库 | 支持 | 不支持 |
应用程序角色 | 支持 | 支持 |
自动缩放 | 不支持 | 支持 - 请参阅服务层 |
Azure Active Directory | 不支持 | 支持 |
审核 | 支持 | 支持 |
BACPAC 文件(导出) | 支持 | 支持 |
BACPAC 文件(导入) | 支持 | 支持 |
备份 | 支持 | 不支持 |
内置函数 | 支持 | 大多数 - 请参阅 单个函数 |
更改数据捕获 | 支持 | 不支持 |
更改跟踪 | 支持 | 支持 |
排序规则语句 | 支持 | 支持 |
列存储索引 | 支持 | 仅限 Premium Edition |
公共语言运行时 (CLR) | 支持 | 不支持 |
包含的数据库 | 支持 | 支持 |
包含用户 | 支持 | 支持 |
控制流语言关键字 | 支持 | 支持 |
跨数据库查询 | 支持 | 部分 - 请参阅弹性查询 |
游标 | 支持 | 支持 |
数据压缩 | 支持 | 支持 |
数据库备份 | 用户管理 | SQL 数据库服务管理 |
数据库邮件 | 支持 | 不支持 |
数据库镜像 | 支持 | 不支持 |
数据库配置设置 | 支持 | 支持 |
Data Quality Services (DQS) | 支持 | 不支持 |
数据库快照 | 支持 | 不支持 |
数据类型 | 支持 | 支持 |
DBCC 语句 | 支持 | 大多数 - 请参阅单个语句 |
DDL 语句 | 支持 | 大多数 - 请参阅单个语句 |
DDL 触发器 | 支持 | 仅限数据库 |
分布式事务 | MS DTC | 仅限受限制的 SQL 数据库内方案 |
DML 语句 | 支持 | 大多数 - 请参阅 单个语句 |
DML 触发器 | 支持 | 支持 |
DMV | 全部 | 部分 - 请参阅单个 DMV |
弹性池 | 不支持 | 支持 |
弹性作业 | 不支持 - 请参阅 SQL Server 代理 | 不支持 |
弹性查询 | 不支持 - 请参阅跨数据库查询 | 支持 |
事件通知 | 支持 | 支持 |
表达式 | 支持 | 支持 |
扩展的事件 | 支持 | 部分 - 请参阅单个事件 |
扩展的存储过程 | 支持 | 不支持 |
文件和文件组 | 支持 | 仅限主文件组 |
文件流 | 支持 | 不支持 |
全文搜索 | 支持 | 不支持第三方断字符 |
函数 | 支持 | 大多数 - 请参阅单个函数 |
内存中优化 | 支持 | 仅限 Premium Edition |
作业 | 请参阅 SQL Server Agent(SQL Server 代理) | 不支持 |
JSON 数据支持 | 支持 | 支持 |
语言元素 | 支持 | 大多数 - 请参阅单个元素 |
链接的服务器 | 支持 | 不支持 - 请参阅弹性查询 |
日志传送 | 支持 | 不支持 - 请参阅活动异地复制 |
Master Data Services (MDS) | 支持 | 不支持 |
批量导入时的小日志记录 | 支持 | 不支持 |
修改系统数据 | 支持 | 不支持 |
联机索引操作 | 支持 | 支持 - 按服务层限制的事务大小 |
运算符 | 支持 | 大多数 - 请参阅单个运算符 |
数据库时间点还原 | 支持 | 支持 |
Polybase | 支持 | 不支持 |
基于策略的管理 | 支持 | 不支持 |
谓词 | 支持 | 大多数 - 请参阅单个谓词 |
R 服务 | 支持 | |
资源调控器 | 支持 | 不支持 |
RESTORE 语句 | 支持 | 不支持 |
从备份还原数据库 | 支持 | 仅限从内置备份还原 |
行级别安全性 | 支持 | 支持 |
语义搜索 | 支持 | 不支持 |
序列号 | 支持 | 支持 |
服务中转站 | 支持 | 不支持 |
服务器配置设置 | 支持 | 不支持 - 请参阅数据库配置选项 |
Set 语句 | 支持 | 大多数 - 请参阅单个语句 |
空间 | 支持 | 支持 |
SQL Server 代理 | 支持 | 不支持 |
SQL Server Analysis Services (SSAS) | 支持 | 不支持 - 请参阅 Azure Analysis Services |
SQL Server 集成服务 (SSIS) | 支持 | 不支持 - 请参阅 Azure 数据工厂 |
SQL Server PowerShell | 支持 | 支持 |
SQL Server 探查器 | 支持 | 不支持 - 请参阅扩展事件 |
SQL Server 复制 | 支持 | 仅限事务和快照复制订户 |
SQL Server Reporting Services (SSRS) | 支持 | 不支持 |
存储过程 | 支持 | 支持 |
系统存储函数 | 支持 | 部分 - 请参阅单个函数 |
系统存储过程 | 支持 | 部分 - 请参阅单个存储过程 |
系统表 | 支持 | 部分 - 请参阅单个表 |
系统目录视图 | 支持 | 部分 - 请参阅单个视图 |
表分区 | 支持 | 支持 - 仅限主文件组 |
临时表 | 本地和全局 | 仅限本地 |
临时表 | 支持 | 支持 |
事务 | 支持 | 支持 |
变量 | 支持 | 支持 |
透明数据加密 (TDE) | 支持 | 支持 |
Windows Server 故障转移群集 | 支持 | 不支持 - 请参阅活动异地复制 |
XML 索引 | 支持 | 支持 |
总结:
以上列出了所有的功能列表, 可以点击链接看更详细的说明。
特别是不支持部分,需要深入了解。才能知道如何去使用Azure SQL