超大规模分布式功能体系结构
适用于:Azure SQL 数据库
“超大规模”服务层级利用了具有高度可缩放性和独立存储和计算层的体系结构。 本文介绍的组件使客户能够快速缩放超大规模数据库,同时受益于几乎即时的备份和高度可缩放的事务日志记录。
提示
SQL 数据库(超大规模)简化定价已于 2023 年 12 月推出。 有关详情,请查看超大规模定价博客。
超大规模体系结构概述
传统的数据库引擎将数据管理功能集中到一个进程中:即便是当今生产中所谓的分布式数据库也有单片数据引擎的多个副本。
超大规模数据库采用了不同的方法。 超大规模将查询处理引擎(其中各种数据引擎的语义不同)与为数据提供长期存储和持久性的组件分隔开来。 通过这种方式,可根据需要顺利地扩大存储容量,单一超大规模数据库可高达 128 TB。
超大规模组件之间的所有网络通信都使用具有内置冗余的 Azure 网络基础结构。
高可用性次要副本和命名副本是可按需添加的可选计算节点。 两者共享相同的存储组件,因此无需数据副本来启动新的副本。 可以在相同或不同的 Azure 区域中按需添加异地次要副本。 为了实现数据保护和冗余,异地次要副本具有独立于主要副本使用的存储组件。
下图说明了功能性超大规模体系结构:
该图显示了超大规模的计算层由主计算节点和辅助计算节点组成,每个节点都具有 RBPEX 数据缓存。 日志服务与计算笔记和页面服务器通信。 页面服务器存在于其自己的层中,并且还具有 RBPEX 数据缓存。
超大规模数据库包含以下类型的组件:计算节点、页面服务器、日志服务和 Azure 存储。
计算
计算节点是关系引擎所在的位置。 将在其中进行语言、查询和事务处理。 所有用户与“超大规模”数据库的交互都通过计算节点进行。 计算节点可以配置为使用无服务器计算或预配计算。
计算节点具有基于本地 SSD 的缓存,称为弹性缓冲池扩展(RBPEX 数据缓存)。 RBPEX 数据缓存是一种智能低延迟数据缓存,可最大限度地减少从远程页面服务器提取数据的需求。
超大规模数据库有一个主计算节点,用于处理读写工作负载和事务。 可按需添加最多四个高可用性次要计算节点。 它们充当用于故障转移的热备用节点,并可用作只读计算节点,以在需要时卸载读取工作负载。 命名副本是次要计算节点,它的主要目标是实现大量额外的 OLTP 读取扩展方案,并更好地支持混合事务和分析处理 (HTAP) 工作负载。 可以添加异地次要计算节点以实现灾难恢复目的,并用作只读计算节点,以卸载不同 Azure 区域中的读取工作负载。
在无服务器中,主副本和任何高可用性副本或命名副本各自根据其使用情况独立自动缩放。 主要副本和任何命名副本的计算自动缩放范围均为独立配置。 任何高可用性副本的自动缩放范围均继承自其关联的主副本或命名副本指定的自动缩放配置。
超大规模计算节点上运行的数据库引擎与其他 Azure SQL 数据库服务层相同。 当用户与超大规模计算节点上的数据库引擎进行交互时,除已知限制外,支持的外围应用和引擎行为与其他服务层级相同。
页面服务器
页面服务器是表示横向扩展存储引擎的系统。 每个页面服务器负责数据库中页面的一个子集。 每个页面服务器也有一个副本,是为冗余和可用性而保留的。
页面服务器的任务是按需向计算节点提供数据库页面,并在事务更新数据时持续更新页面。 页面服务器通过从日志服务重播事务日志记录来保持最新。
页面服务器还保留基于 SSD 的缓存,可提高性能。 数据页的长期存储保存在 Azure 存储中,可提高持续性。
日志服务
日志服务接受对应于主计算副本中的数据更改的事务日志记录。 然后,页面服务器从日志服务接收日志记录,并将更改应用于其各自的数据切片。 此外,计算次要副本从日志服务接收日志记录,并仅重播对缓冲池或本地 RBPEX 缓存中已存在页面所做的更改。 主要计算副本中的所有数据更改都通过日志服务传播到所有次要计算副本和页面服务器中。
最后,事务日志记录被推送到 Azure 存储的长期存储(本质上是一个无限期存储库)中。 此机制消除了频繁截断日志的需要。 日志增长的常见原因(例如日志备份缺失、次要副本的数据复制缓慢)不适用于超大规模。 日志服务具有本地内存和 SSD 缓存,可加快日志记录的访问速度。
Azure 存储
Azure 存储在某个数据库中包含所有数据文件。 页面服务器使 Azure 存储中的数据文件保持最新状态。 此存储还用于备份目的,可以根据存储冗余的选择在区域之间进行复制。
备份是使用数据文件的存储快照实现的。 无论数据大小如何,使用快照的还原操作都能快速完成。 数据库可以还原到数据库备份保留期内的任意时间点。
超大规模支持可配置的存储冗余。 创建超大规模数据库时,你可以从以下类型的 Azure 标准存储中选择:
- 本地冗余存储 (LRS)
- 区域冗余存储 (ZRS)
- 读取访问异地冗余存储 (RA-GRS)
区域冗余存储选项在具有可用性区域的 Azure 区域中可用。
所选存储冗余选项将在数据库的整个生存期内使用,以同时实现数据存储冗余和备份存储冗余。