节点
SequoiaDB 巨杉数据库存储引擎采用分布式架构。集群中的每个节点为一个独立进程,节点之间采用 TCP/IP 协议进行通讯。 同一个操作系统可以部署多个节点,节点之间采用不同的端口进行区分。 SequoiaDB 巨杉数据库的节点分为三种不同的角色:协调节点、编目节点与数据节点。
协调节点
协调节点不存储任何用户数据。作为外部访问的接入与请求分发节点,协调节点将用户请求分发至相应的数据节点,最终合并数据节点的结果应答对外进行响应。
- 临时协调节点:通过资源管理节点 sdbcm 建立的协调节点。临时协调节点并不会注册到编目节点中,即该临时的协调节点不能被集群管理。临时协调节点仅用于初始创建 SequoiaDB 集群使用。
- 协调节点:通过正常的流程创建的协调节点组中的协调节点。该类协调节点会注册到编目节点中,并且可以被集群管理。
编目节点
编目节点主要存储系统的节点信息、用户信息、分区信息以及对象定义等元数据。在特定操作下,协调节点与数据节点均会向编目节点请求元数据信息,以感知数据的分布规律和校验请求的正确性。
编目节点中包含以下集合空间:
-
SYSCAT: 系统编目集合空间,包含以下系统集合:
集合名 描述 SYSCOLLECTIONS 保存了该集群中所有的用户集合信息 SYSCOLLECTIONSPACES 保存了该集群中所有的用户集合空间信息 SYSDOMAINS 保存了该集群中所有用户域的信息 SYSNODES 保存了该集群中所有的逻辑节点与复制组信息 SYSTASKS 保存了该集群中所有正在运行的后台任务信息 SYSDATASOURCES 保存了该集群中所有数据源的元数据信息 -
SYSAUTH: 系统认证集合空间,包含一个用户集合,保存当前系统中所有的用户信息
集合名 描述 SYSUSRS 保存了该集群中所有的用户信息 -
SYSPROCEDURES: 系统存储过程集合空间,包含一个集合,用于存储所有的存储过程函数信息
集合名 描述 STOREPROCEDURES 保存所有存储过程函数信息 -
SYSGTS: 系统自增字段集合空间,包含一个集合,用于存储所有的自增字段信息
集合名 描述 SEQUENCES 保存所有自增字段信息
数据节点
数据节点为用户数据的物理存储节点,海量数据通过分片切分的方式被分散至不同的数据节点。在关系型与 JSON 数据库实例中,每一条记录会被完整地存放在其中一个或多个数据节点中;而在对象存储实例中,每一个文件将会依据数据页大小被拆分成多个数据块,并被分散至不同的数据节点进行存放。
SQL节点
SQL 实例是系统提供 SQL 访问能力的逻辑节点,可以直接配置 MySQL、PostgreSQL 和 SparkSQL 实例,实现不同 SQL 访问方式。
SQL 实例支持水平伸缩,实例互相独立。当接收到外部请求时,SQL 实例会进行 SQL 解析并生成内部的执行计划,执行计划将下发至协调节点,汇总协调节点的应答后进行外部响应。一次外部请求只能在一个 SQL 实例内完成,因此,可以根据外部应用的压力来规划 SQL 实例的规模。
资源管理节点
资源管理节点(sdbcm)是一个守护进程,以服务的方式常驻系统后台。SequoiaDB 巨杉数据库的所有集群管理操作都必须有 sdbcm 的参与,目前每一台物理机器上只能启动一个 sdbcm 进程,负责执行远程的集群管理命令和监控本地的 SequoiaDB 巨杉数据库。sdbcm 主要有两大功能:
-
远程启动、关闭、创建和修改节点:通过 SequoiaDB 客户端或者驱动连接数据库时,可以执行启动、关闭、创建和修改节点的操作,该操作向指定节点物理机器上的 sdbcm 发送远程命令,并得到 sdbcm 的执行结果。
-
本地监控:对于通过 sdbcm 启动的节点,都会维护一张节点列表,其中保存了所有本地节点的服务名和启动信息,如启动时间、运行状态等。如果某个节点是非正常终止的,如进程被强制终止,引擎异常退出等,sdbcm 会尝试重启该节点。