概览
概览#
OushuDB 是一款云原生架构的分布式数据库,支持高并发,高吞吐,高性能的弹性计算。 支持多主节点,多虚拟计算集群和多虚拟存储集群。任一层级节点都可以水平扩展,存储与计算完全分离。图1给出了一个典型的 OushuDB 集群的主要组件。

图1. OushuDB 6.0 体系架构
在 OushuDB Main 节点内部有如下几个重要组件:资源管理器,查询解析器(Parser/Analyzer),优化器,容错服务,事务管理,权限安全与调度服务。在查询执行时,针对一个查询,弹性执行引擎会启动多个虚拟 Segment 同时执行查询,节点间通过 Interconnect(高速互联网络)交换数据。例如,一个查询启动了 1000 个虚拟 Segment,即这个查询被均匀的分成了 1000 份并行任务。所以说虚拟 Segment 数其实表明了查询的并行度。查询的并行度是由弹性执行引擎根据查询大小以及当前资源使用情况动态确定的。这些组件的作用以及它们之间的关系如下:
资源管理器:负责整个集群的资源管理,感知集群健康状态,动态识别集群节点,协调并发查询之间的资源分配,避免查询之间相互影响,提升系统的可用性。
查询解析器:负责解析查询,检查语法及语义。最终生成查询树传递给优化器。
分析器:针对语法树结构进行检查,对语法树进行数据补充或者必要的优化改进,在 OushuDB 中分析器和查询解析器是合并的。
优化器:负责接受查询树,生成查询计划。针对一个查询,可能有数亿个可能的等价的查询计划,但执行性能差别很大。优化器的作用是找出优化的查询计划。
容错服务:检测节点可用性,将不可用节点排除出资源池,保障系统稳定。
事务管理: 提供分布式事务控制,支持多版本事务隔离,确保数据一致性。
权限安全:负责控制用户的行为,对用户权限进行约束,保障数据库访问安全。
调度器:负责将优化后的查询计划分发到各节点执行,并协调整个查询过程,是并行系统的核心粘合剂。
虚拟计算集群 (Virtual Compute Cluster ,VC) 是 OushuDB 的计算层,是由多个计算节点组成的。在每个计算节点上会运行一个 OushuDB Segment。Segment 实现了 OushuDB 的计算,在执行查询时,会在资源容器中启动多个查询执行器(QE),实现对数据的高效并行处理。计算层采用全新的 SIMD 向量化执行引擎,相比于传统的MPP数据库能够实现数量级级别的查询性能提升。 计算层可划分为多个相互独立、支持弹性扩展的虚拟集群。节点只需加入某个虚拟集群即可参与查询。 在每个虚拟集群下节点可以分属于不同的虚拟集群实例,这些实例能够很方便的提供多租户支持。 集群虚拟化实现了物理层面的计算资源隔离,能够高效隔离执行错误、快速容错、增强弹性,并通过集群内数据共享解决数据孤岛问题。
虚拟存储集群 (Virtual Storage Cluster ,VSC) 是 OushuDB 的存储层,由存储节点组成的多个可插拔存储集群组成。 OushuDB 支持包括 Magma、HDFS 在内的多种可插拔存储,用户可根据特性和用途对存储集群进行分组,实现虚拟存储集群。存储集群虚拟化支持更大规模的存储,支持多租户的存储资源隔离,并且可以提供全球级别的数据分布以及更完善的容灾级别。 Magma 是 OushuDB 自研的存储模式,是一种高可用的支持分布式事务的高性能分布式存储,支持存储与计算分离架构。 在虚拟存储集群中,主要分两类:元数据集群与数据集群。元数据集群依托于 Magma 存储,是 OushuDB 用来管理元数据的集群,相比于传统的集中式元数据管理,元数据集群能够极大的提高元数据管理上限,提升数据库容错能力。而用户数据存储则到数据集群中。