基本概念和技术指标

3.1 基本概念

  1. 计划生成节点(SQL Processor,SP)

对外响应数据库请求,生成并调度计划。

  1. 数据存储节点(Backend Processor,BP)

存储实际的数据,接收并执行发来的子计划。

  1. 元数据节点(Metadata Processor,MP)

提供元数据服务。

  1. BS 模式

BP 节点有两种启动模式:BP 模式和 BS 模式。

通常 BP 节点是以 BP 模式启动并运行,仅作为后台数据存储节点。

如果 BP 节点以 BS 模式启动运行,用户可直接登录 BP 进行操作,此时的 BP 同时具有前端 SP 节点的功能也具有 BP 的功能,生成分布式计划,并和 MP/其他 BP 甚至辅助 SP 进行数据交互。如果查询或修改的数据都在直连的 BP 本地,则类似于单节点,执行时无网络交互的代价,这相对于先连接到 SP,再查询或修改 BP 的模式,可获得性能上的提升。

  1. 查询调度总单元(Query Coordinator,QC)

在 SP 上,执行计划生成后拆分得到了一组子计划,执行期间由 QC 对执行计划的执行进行调度控制。

  1. 查询调度子单元(Sub Query Coordinator,SQC)

在 BP 上,为处理同一计划中的一个或者多个子计划,采用 SQC 来进行协调,为每一个子计划生成一组线程执行、协调。SQC 可以认为是 QC 在每个 BP 上的调度助手,由 SQC 向 QC 汇报某一个子任务的完成情况。

  1. 粒度迭代操作符(Granule Iterator,GI)

为充分利用 CPU 的多核特性,并发访问多个分区或者一个分区内的多个不同数据页,GI 操作符从 GIU 链表摘除任务,获取到的 GIU 信息被设置到叶子操作符中。

为充分利用 CPU 的多核特性,并发访问多个分区或者一个分区内的多个不同数据页,GI 操作符负责控制每路工作线程要访问的数据信息。

  1. 子计划(Sub Plan,SPLAN),子任务(Sub Task, STASK)

SP 所生成的计划按照通讯操作符 ERECV/ESEND 进行划分后得到的一系列小的计划单元。在计划生成阶段,这些小的计划单元被称为子计划。每个子计划可以有自己独立的并行度。在执行阶段,子计划被称为子任务。执行时,SP 将子任务分发给相关的 BP,这些子任务由 SQC 统一调度执行。

子计划和子任务就是同一对象在不同阶段的名称。

  1. 分区组(partition Group,PG)

分区组用于定义分区的类型、分区数量和分区字段类型等信息。创建分区表时,引用相同分区组的分区表将拥有同样的分区方式,优化器可以使用这些信息构建优化的执行计划。

  1. 大规模并行处理(Massive Parallel Processing,MPP)

集群间多个主机的实例并行协作完成一个查询计划,提升查询性能。

  1. 本地并行处理(Local Parallel Processing,LPQ)

同一实例内部多个线程并行协作完成一个查询计划,提升查询性能。

  1. RAFT 组

拥有相同数据的一个或多个节点共同构成一个 RAFT 组。RAFT 组中的节点个数为奇数。多副本系统基于 RAFT 算法,管理组内的节点,并始终维护一个主节点,保持 RAFT 组内的数据一致性。当 RAFT 组中含有三个或三个以上节点时,RAFT 组中的所有节点(三个或三个以上)共同构成一个多副本系统。当 RAFT 组中只有 1 个节点时,则该节点称为单副本系统。

对于 BP 来说,一个 DMDPC 架构可以配置一个或多个 RAFT 组。一个 BP 组可以包含一个或多个 RAFT 组。RAFT 组的创建不依赖于 BP 组,一个 RAFT 组既可隶属于多个 BP 组,又可独立存在,不加入任何 BP 组。在 BP 单副本系统中,一个 RAFT 组最多只能包含 1 个 BP。

对于 MP 来说,一个 DMDPC 架构最多只能配置一个 RAFT 组。在 MP 单副本系统中,一个 RAFT 组最多只能包含 1 个 MP。

对于 SP 来说,SP 是对用户开放的用于计算的实例进程,本身不包含数据,为了方便统一管理,配置时也会把 SP 注册到 RAFT 组中。

  1. BP 域和 MP 域

一个实例或一组实例所在的位置。DMDPC 中域分为两种:MP 域和 BP 域。例如:为了保证 MP 数据的安全,不至于同时被毁坏,现将两个 MP 分开部署,分别部署在 MP 域 1(北京)和 MP 域 2(上海)上。一个 RAFT 组在每个域上至少设有一个成员,从而使每一个域都拥有一份完整的集群数据。

一个 MP 域最多只能包含一个 MP 实例,一个 DMDPC 中的所有 MP 实例都属于同一个的 RAFT 组。

一个 BP 域包含多个 BP 实例,这些 BP 实例属于不同的 RAFT 组。

  1. 容错域

容错域是多个 MP、BP 节点在同一个物理区域内的集合(例如机架/机房/城市/地区等),它可以是 DMDPC 系统中所有 MP 和 BP 节点的全集、子集或空集。

容错域内可以同时存在 MP 和 BP,不允许 SP;每个容错域内包含 0-N 个不同 RAFT 组内的节点;同一个 RAFT 组内的不同节点不能包含在同一个域内。

在实际业务中,为了考虑数据的安全性,至少要求在一个物理区域内部署的节点数不能超过半数,否则该物理区域发生故障(例如机器)时,其他副本将无法接管。

  1. BP 组

BP 组是个逻辑概念,它是 BP RAFT 组的集合,可作为 DPC 系统中所有 BP RAFT 组集合的全集或子集,甚至可以为空集。

一个 BP 组由一个或多个 BP RAFT 实例组成,这些实例可以来自不同的 BP 域,也可以来自同一 BP 域。各个 BP 组所包含的 RAFT 组互不相关。BP 组只是用来简化用户建表操作中对存储 BP 的指定,实际使用中也可不创建任何 BP 组。指定 BP 组创建的分区表的数据,其数据按子表为单位分布在不同的组内 BP 上。一个子表的数据只能属于一个 BP,一个 BP 可以管理多个子表。其具体分布方式按分区类型以及分区数量的不同由系统确定。

  1. SP 组

SP 组是个逻辑概念,它是 SP RAFT 组的集合,可作为 DPC 系统中所有 SP RAFT 组集合的全集或子集,甚至可以为空集。

一个 SP 组由一个或多个 SP RAFT 组成。SP 组的作用是将不同用户、不同应用使用的计算节点进行隔离,以便更好地管理硬件资源。

SP 组的存在会影响计划生成阶段所使用的计算节点,具体参考 5.9 计算与存储分离

  1. 表空间

在 DM 数据库中,表空间由一个或者多个数据文件组成。DM 数据库中的所有对象在逻辑上都存放在表空间中,而物理上都存储在所属表空间的数据文件中。

  1. 表空间组

表空间组是一组位于相同 RAFT 或者不同 RAFT 上的表空间集合,用于用户建表或者指定用户默认的存储位置。表空间组中的表空间可动态扩展和收缩。且能同时包含非 HUGE 表的普通表空间和 HUGE 表专用的大表空间。

  1. 日志包(Rlog Package,RLOG_PKG)

保存物理事务产生的 Redo 日志的数据单元。

  1. 日志包的全局包序号(Global Sequence Number,G_SEQNO)

全局包序号由多副本系统中的主备库共同维护,具有全局唯一、连续、递增的特性。

  1. 日志包的本地包序号(Local Sequence Number,L_SEQNO)

本地包序号由多副本系统中的主备库各自在本地维护,具有本地唯一、连续、递增的特性。

  1. 已刷盘的最大全局包序号(File Sequence Number,F_SEQNO)

已写入联机日志文件的最大 G_SEQNO,在日志包刷盘时修改维护。

  1. 已刷盘的最大 LSN 全局包序号(File Log Sequence Number,F_LSN)

已写入联机日志文件的最大 LSN,在日志包刷盘时修改维护。

  1. RAFT 协议

一种分布式数据一致性协议。RAFT 协议包括领导者选举、日志同步、日志安全(提交到多数节点的日志不会丢失)和角色转换等关键算法。

一个多副本集群会包含若干节点,在任何时刻,每一个节点都处于一种角色(领导者、跟随者、候选者)。在不同的场景中,角色可发生转换。正常情况下,一个多副本系统中只有一个领导者和若干跟随者。发起选举时,发起者(跟随者或候选者)会转换为候选者,选举结束时推选出一个领导者和若干跟随者,此时候选者会相应地转换成领导者或跟随者。

  1. 领导者(LEADER)

RAFT 协议中的领导者。

  1. 跟随者(FOLLOWER)

RAFT 协议中的跟随者。

  1. 候选者(CANDIDATE)

RAFT 协议中的候选者,发起选举时会切换为此角色。

  1. 学习者(LEARNER)

RAFT 协议中的学习者,动态增加节点时的临时角色,不参与选举和日志推进。当学习者成功加入多副本集群,成为一名正式成员后,才可以转换为 CANDIDATE、FOLLOWER 或 LEADER 角色。

  1. 领导者任期号(Leader TermID,L_TERM_ID)

RAFT 协议中当前领导者的任期号,在每次发起选举时递增。

  1. 已刷盘的任期号(TERM_ID)

已写入联机日志文件中的最后一个日志包的任期号,此任期号小于等于 L_TERM_ID。

  1. 已提交的包序号(Commit Seqno,C_SEQNO)

已提交到联机日志文件中的最大全局包序号。

  1. 已提交的 LSN(Commit LSN,C_LSN)

已提交到联机日志文件中的最大全局包序号的 MAX_LSN。

  1. XMAL 系统

XMAL 系统是基于 TCP/IP 协议实现的一种内部通信机制,具有可靠、灵活、高效的特性。XMAL 专门用于 DMDPC 分布式架构中。DM 通过 XMAL 系统实现 REDO 日志传输,以及其他一些实例间的消息通信。

DMDPC 使用 XMAL 系统管理各部件节点网络信息,建立节点间的通信机制。用户只需要将 SP 和 BP 节点的 IP 地址和端口等信息注册到 MP 上即可,使得增删节点的部署能够做到快速且便捷。XMAL 系统负责自动建立节点间的 TCP 通讯链路,每个节点对应一个站点编号,采用消息盒子(XBOX)的方式进行通信,只要指定站点编号和消息盒子编号即可实现节点之间的点对点消息收发。XBOX 是用来存放和管理消息的一块内存区域。

XMAL 相关的 INI 参数有 DPC_SYNC_TOT、XBOX_MEMORY_TARGET、XBOX_DUMP_THRESHOLD、XBOX_DUMP_PATH 和 STMT_XBOX_REUSE 等。

3.2 主要技术指标

  1. BP 上的最大存储空间为 PB 级;
  2. 最大 SP 组和 BP 组总数为 1024;
  3. 最大的 RAFT 组数(包括 MP/SP/BP)为 1024;
  4. 最大的实例数(包括 MP/SP/BP)为 4096;
  5. 最大副本数为 9;
  6. 最大表空间组个数 65534;
  7. 一个表空间组中的最大表空间个数 1536;
  8. 每个容错域至多包含 4096 个实例节点;
  9. 其它指标和普通单机数据库一样。
微信扫码
分享文档
扫一扫
联系客服