GaussDB技术解读——GaussDB架构介绍(三)

news2025/6/25 18:51:52

目录

9  智能关键技术方案

智能关键技术一:自治运维系统

智能关键技术二:库内AI引擎

智能关键技术三:智能优化器

10  驱动接口关键技术方案


GaussDB架构介绍(二)从数据持久化存取层(DataNode)关键技术方案、全局事务管理层(GTM)关键技术方案、集群管理层(CM)关键技术方案、OM运维管理关键技术方案等方面介绍了GaussDB架构,本篇将从智能关键技术方案、驱动接口关键技术方案继续解读GaussDB架构。

9  智能关键技术方案

智能关键技术一:自治运维系统

GaussDB 自治运维系统“DBMind”的整体系统框图如下图所示,包含四个维度:

数据采集层

数据采集层主要功能实现指标数据采集,采集频率分为秒级采集和分钟级采集。其中秒级采集包括操作系统资源信息采集和数据库实例信息采集,例如操作系统层面CPU、内存、IO读写、网络资源信息采集,数据库实例状态、数据库内关键指标(内存、连接数、TPS、QPS、读写频率等);分钟级采集包括审计日志采集、数据库日志采集和全量SQL流水采集。

DBMind数据平台提供Agent进程用于采集上述指标;若客户系统配置普罗米修斯进行信息采集,DBMind提供openGauss-exporter,内置数据库多维度指标采集以及二次数据计算,实现与用户既有普罗米修斯平台对接。

数据库采集端程序需要部署在同数据库物理机节点,数据库多节点集群环境中,每个物理节点部署一个Agent采集端(或者普罗米修斯采集端)。数据库采集端程序通常占用资源很少,通过配置文件可以制定不同指标采集频率,以免占用资源影响数据库业务正常运行。

图1 DBMind整体系统框架图

  • 数据计算层

数据计算层提供数据存储、数据分析及元数据管理能力。其中数据存储用于接收来自数据采集层发生来的数据,存储数据源可以是多种维度或者类型,包括普罗米修斯、时序数据库(OpenTSDB)、MongoDB、SQLite等,DBMind内置对接接口,AI模块与存储数据源的交互,获取数据并进行处理。DBMind默认提供SQLite数据库,方便普通开发者来使用AI自治功能;在企业业务中,存储层设计要复杂的多,可以使用多个开源组件组合使用,例如普罗米修斯+时序数据库,或者kafka+时序数据库等多种方案。

若企业业务中,处理少量业务集群节点,可通过下面方案实现:

图2 小规模节点管控层方案

在图2方案,使用nginx进行业务分流,mgrsrv服务对数据进行初步处理后,将数据写入关系型数据库。基于可靠性考虑,对于三个组件,分别加入备机进行可靠性保护。

若企业业务处理上万业务节点的数据,图2方案无法满足客户业务诉求。故在方案设计时,需要引入分布式消息中间件、数据库中间件(DDM),同时因为nginx挂载节点有上限,需要对mgrsvr进行分区管理。

图3 大规模节点管控层方案

如图3所示,consumer服务可以和mgrsvr部署在同一个节点上,mq集合代表分布式消息中间件,通常可以采用开源软件rocketmq或者rabbitmq,引入消息中间件目的是降低目标数据库的压力。DDM是华为云的数据库中间件,若采用开源软件,也可使用mycat或者dble等,可进行存储大规模被采集的数据。在整体业务角度,纵向通过分层设计,横向通过分区设计,保证全部业务可通过管控层完成数据处理。

在数据计算层除了时序存储数据库外,还可以设计其他存储单元,例如算法模型库和故障规则库。其中算法模型库存储自治管理服务生成的AI模型,例如参数推荐训练模型;在算法模型库中,可以存储传统机器学习(例如监督学习)模型、强化学习模型。故障规则库是记录数据库常见故障案例,将这些案例通过拆解和分析,生成规则引擎。

自治服务层

自治服务层包含三个主要部分:SQL诊断和调优、自治安全、数据库智能运维。其中SQL诊断和调优提供多种SQL治理和调优能力,包括慢SQL发现、SQL表现评估、智能索引推荐、智能查询重写等服务。自治安全通过AI技术实现敏感信息发觉、SQL注入检测和异常行为分析。数据库智能运维功能实现在数据库系统、OS系统和数据库集群层面的运维和调优,其中数据库系统服务包括数据库参数智能推荐、智能巡检、数据库分布键推荐和智能业务调度;在操作系统层面,实现慢盘检测和恢复、网络丢包检测;在数据库集群层面,基于故障或者负载需求,提供自动扩缩容、异常节点修复服务。

监控展示层

DBMind提供监控展示层,通过WEB形式,方便用户直观感受运维管理带来的遍历。在展示界面方面,集成Grafana实现实施数据或指标的展示,同时AI趋势预测,给出后续时段的数据走向。告警界面展示系统中可能存在的问题或故障,分为致命、严重、一般,界面中只显示致命问题。

为方便用户系统观察集群状态,提供健康指数报告和详细综合报告。健康指数报告给出当前系统的健康评分等级,默认80分以上属于运行健康状况,小于60分则存在严重隐患,急需修复。综合报告详细描述系统各维度信息,包括集群状态、负载运行情况、常见数据库指标项信息。

智能关键技术二:库内AI引擎

GaussDB 库内AI引擎架构如下图:

图4 DB4AI架构图

用户接口层

在用户接口层,实现SQL-like语法,提供Create Model、Predict等关键字,支持AI算法训练和预测。当前支持的AI算法包括:GD(梯度下降法)、KMeans(聚类)、XGBoost、决策树等。

查询优化层

查询优化层提供AI训练执行计划和AI预测执行计划,该计划依据内部统计信息和AI算子调用关系,生成相应执行计划。可以把AI算子看做执行器中的计算单元,例如Join、AGG等,AI算子执行代价基于执行逻辑、获取的数据行数、算法复杂度共同决定。同时在执行计划生成后,可通过Explain语句查看详细的执行开销,分析路径选型的正确性。

AI底座和执行层

在AI底座中,提供超参优化能力,即用户不指定超参数或者指定超参数的范围,自动选择适合的参数,该功能极大提升用户使用的效率,同时达到最佳的训练性能。

在执行器中,提供多种AI算子,例如GD算子可支持逻辑回归、分类;KMeans算子支持聚类。在每个算子实现过程中,遵循执行器算子实现逻辑,下层对接Scan算子,上次提供AI算子的训练或推理结果。在训练完成后,训练模型将实时保存到系统表中,用户可以查询gs_model_warehouse系统表来获取模型信息。

存储层

在存储层,DB4AI提供数据集管理功能,即用户可以抽取某个表或多个表中的列信息,组成一个数据集,用于后续模型训练。数据集管理功能类似git模式提供多版本管理,目的是保障训练数据的一致性。同时在这过程中,可通过特征处理和数据清洗保障数据的可用性。

同时对已生成的模型进行管理,包括模型评估、定期模型验证、模型导入、模型导出等能力,在验证模型失效后,模型漂移功能可以进行模型刷新,保障模型可用。

异构计算层

DB4AI框架支持异构计算层,实现CPU和AI算力的统一调度,满足数据库语句执行和AI训练的完美结合。在实现方面,CPU算力,特指ARM及X86芯片,可用于基础机器学习算子调用及并行计算执行;AI算子,例如昇腾及GPU芯片,可用于重度分析算子(Join、AGG)及深度学习算子使用,加速大数据及多层网络场景下计算需求。

智能关键技术三:智能优化器

贝叶斯网络模型原理

贝叶斯网络是一种概率图模型,拓扑结构通常为一个有向无环图。贝叶斯网络的优势在于能够利用条件独立假设对多变量数据进行建模,并且自适应变量之间的相关性,具体是指每个变量的概率分布只和与它直接连接的父亲节点有关。使用这种方法能够比基于简单的独立性假设的模型获得更高的建模准确率,也能够比完整的联合分布建模获得更高的执行效率。在关系数据表中,每一列数据都可以成为一个变量,比如下表中包含A,B,C三列数据:

表1

A

B

C

A1

B1

C1

A1

B1

C1

A1

B1

C1

A2

B1

C1

A2

B2

C2

A2

B2

C2

分别使用基于独立性假设的单列建模和基于条件独立假设的贝叶斯网络计算查询 SELECT * FROM table WHERE A=A1 AND B=B1 AND C=C1的选择率:

单列建模:P(A=A1, B=B1, C=C1)=P(A1)P(B1)P(C1)=0.5 * 0.67 * 0.67=0.22

贝叶斯网络:P(A=A1, B=B1, C=C1)= P(A1)P(B1|A1)P(C1|B1)=0.5*1.0*1.0=0.5

可以看出贝叶斯网络在列相关性强的场景下能够更加准确地估计出多列查询选择率(和基数)。

贝叶斯网络结构搜索

贝叶斯网络的拓扑结构决定于变量之间的互相关性,直观上看,将互相关性强的变量进行连接并计算条件概率有助于提高分布建模准确性。假设有两列数据A和B,互相关性定义如下:

针对例1中的数据,可以计算出A和B列的互相关性:

在本功能中,对于P(a,b),P(a)和P(b)的计算通过使用哈希表统计获得,首先计算单列统计频率,然后计算两列统计频率,最后扫描两列统计表并且通过访问单列统计表获得单列频率,使用公式计算出相关性。最后计算总体相关性。

得到的临时表ab_mutual_correlation结构如下所示:

表2

counta

countb

countab

3

4

3

3

4

1

3

2

2

遍历上述临时表,对每一行求得互相关性,然后求和之后就是A和B列的整体相关性。

贝叶斯网络对于每个节点父亲节点的数量是没有要求的,但是父亲节点越多,条件概率建模的难度也越大,消耗的空间和时间代价也会相应变大。所以在本子系统中,我们只采用树型的网络拓扑结构。这种结构中每个节点只有一个父亲节点,所以只需要保存本节点可以另一个父亲节点的条件概率即可,示例如下:

图5

在有了树型限制之后,结构搜索空间就少了很多,现在的目标就是找到一颗总互相关性最大的生成树,这里本系统采用chow-liu算法,也是一种加权最大生成树算法,算法流程如下:

图6 贝叶斯网络结构搜索流程图

根据搜索出的贝叶斯网络结构,构造出包含所有边的字符串,比如”a,b,a,c”或者”a,b,b,c”传入贝叶斯网络算子进行模型创建。

贝叶斯网络训练

图7 贝叶斯网络训练流程图

贝叶斯网络训练过程中,算子首先会遍历一遍样本数据,获得每列数据不同值统计;然后对于每列数据,根据是否是连续数据类型进行数据分桶或者高频值抽取以减小存储和计算代价;对数据分桶采用等高分桶,尽量使每个桶内的频度是相似的,每个桶中范围值下界被存储在数据列表中,NULL值单独作为一个值放在列表最后;连续值高频值抽取会将频度最高的K各元素放置在数据列表中,除此之外的其他元素都被表示为一个通配符号放在列表最后;为了减少查找匹配代价,字符串类型数据会存储一个额外的哈希值;列表中每个元素表示结构如下所示:

typedef struct ValueInTuple {    Datum data;    Oid type;    bool isnull;    uint32_t hashval;} ValueInTuple;

概率建模过程中,针对形如P(离散值|离散值)的条件概率使用概率表记录每种值的概率;针对P(离散值|连续值),将连续值通过范围分桶当做离散值处理;针对P(连续值|离散值),使用高斯分布对连续值分布进行建模;针对P(连续值|连续值),使用高斯分布对条件连续值进行离散化分桶处理,对目标连续值进行高斯分布建模。

训练完成之后,将模型序列化成一个二进制字符串。

贝叶斯网络模型推理

图8 贝叶斯网络推理流程图

贝叶斯网络从第一个位置开始获得一个未访问节点,如果该节点存在未访问父亲节点,那么就递归访问父亲节点;如果父亲节点都已经被访问,那么利用条件独立性假设,利用概率表或者是高斯函数局部计算出当前节点的条件概率并且和父亲节点的概率相乘作为联合概率。然后判断当前节点是否是叶子节点,如果是叶子节点则将联合概率和选择率相乘,否则继续寻找下一个未被访问过的节点。最后返回选择率。

模型参数缓存策略

在基数估计的时候需要获得相应的模型参数,这个过程需要从磁盘读取以及反序列化两种操作,涉及到磁盘访问以及内存申请操作,效率较低,所以在模型数量不多的情况下可以利用全局共享缓存将其存在内存中,下次访问效率就会变高,但是在模型数量变多之后就需要缓存替换策略以保证内存使用是可控的。本子系统采用的是异步批量替换策略,在模型访问亲和性高的场景下,当前一段时间所需要的模型都放置在内存中,不会带来额外的性能损失,访问申请的也都是共享锁支持高并发;当负载偏移之后,新的模型会被访问,从磁盘中被加载到内存,内存中的数量就会超过阈值,这种情况下系统按照每个模型的最近访问时间归一化之后的概率选择1/3的旧模型替换出内存。这种一次性替换多个模型的方法可以避免每次读操作都要申请互斥锁维护链表并且降低替换操作触发的次数。并发analyze场景通过互斥锁进行共享缓存访问控制。

10  驱动接口关键技术方案

接口驱动兼容开源openGauss, 支持JDBC、ODBC、Python、GO等主流数据库驱动接口,适用于Java/C/C++/python/go 应用程序开发者。对于高级开发者而言,亦可采用libpq动态库接口的方式,对数据库进行接入访问。

以上内容为智能关键技术方案、驱动接口关键技术方案的相关内容,下篇图文将接着分享GaussDB云原生架构、关键技术方案的精彩内容,敬请期待!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1822923.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode 92.】 反转链表 II

1.题目 虽然本题很好拆解,但是实现起来还是有一些难度的。 2. 分析 尽可能抽象问题,然后简化代码 我在写本题的时候,遇到了下面这两个问题: 没有把[left,right] 这个区间的链表给断开,所以导致反转起来非常麻烦。…

梁建章等Nature发表论文:混合办公使员工离职率下降1/3

近日,斯坦福大学 Nicholas Bloom、香港中文大学(深圳)经管学院韩若冰、携程集团联合创始人兼董事局主席梁建章,在国际顶尖学术期刊 Nature 上发表了题为:Hybrid working from home improves retention without damagin…

cad怎么导出jpg格式高清图?推荐三款心动软件!

在数字化设计领域,CAD(计算机辅助设计)软件已经成为不可或缺的工具。然而,很多时候我们需要将CAD设计以图片的形式进行分享或展示。如何将CAD设计导出为高清JPG格式图片呢?今天,我将为大家推荐三款令人心动…

流体性能测试实验室建设需求参考

在第一次提需求的时候,很多人感到很迷茫,这里以某流体实验室建设为例,进行说明,希望抛砖引玉,能起到一点参考作用。 一、项目概述 学校拟建一座流体性能测试实验室,旨在兼顾教学和企业科研能力。实验室需…

为国产加油:“缺芯少屏”暂缓,另一领域,也要加把劲

说起咱中国之前的“缺芯少屏”,真的是让人挺闹心的。 不过呢,为了改变这个状况,咱们的工程师们可是费了不少劲儿,辛辛苦苦努力了数十年。现在好了,咱们也迎来了柔性屏的时代。 柔性屏 说起来,在触摸屏或者…

Ubuntu20.04部署Qwen2.openvino流程

下载代码 里面包含依赖 git clone https://github.com/OpenVINO-dev-contest/Qwen2.openvino.gitpython环境配置 创建虚拟环境 conda create -name qwen2openvino python3.10 conda activate qwen2openvino安装依赖 pip install wheel setuptools pip install -r requirem…

优维运营治理三件套:可用性x性能x容量管理

对于系统/应用运维人员,日常工作中需要保证系统/应用的可用性、稳定性和关注系统/应用的性能表现。为了帮助IT人员更好地管理和优化企业的系统和应用,我们引入了三大关键能力:可用性管理、性能管理和容量管理。这些能力不仅能够帮助IT人员发现…

图解系列 图解Kafka之Consumer

文章目录 术语消息主题和分区集群和分区副本消费者组重新平衡组/分区再均衡消费者的分区策略群组协调者Coordinator 和群组领导者 Group Leader 流程初始化流程消费流程Consumer重平衡 消费者核心配置示例代码高级提交偏移量的几种方式自动提交手动同步提交手动异步提交提交特定…

Python深度学习基于Tensorflow(16)基于Transformer的对话实例

文章目录 基础数据清洗数据生成词汇表定义分词器并制作数据集构建Transformer模型并训练模型推理 Tensorflow 的核心就是注意力机制,在之前详细的介绍过,具体可以看这个:Python深度学习基于Tensorflow(9)注意力机制_te…

解决浏览器缩放的时候,重新设置滚动条的位置,使页面滚动条固定悬浮在页面底部

项目场景: 浏览器调试页面兼容页面时,缩放页面宽度,整体超出时滚动条出现在页面最底部,不是悬浮在页面下面,只有滚动到最底部才出现,需要的是悬浮在页面底部,不是滚动到最下面才出现 解决方案…

二维数组的遍历

旋转图像 class Solution {public void rotate(int[][] matrix) {for(int i0;i<matrix.length;i){for(int ji1;j<matrix[0].length;j){int tempmatrix[i][j];matrix[i][j]matrix[j][i];matrix[j][i]temp;}}for(int[] arr:matrix){reverse(arr);}}void reverse(int[] arr)…

Ant-design-vue开源项目介绍、应用场景、组件有哪些

文章目录 一、Ant-design-vue项目介绍二、Ant-design-vue项目特点三、Ant-design-vue应用场景四、Ant-design-vue有哪些组件五、Ant-design-vue案例代码1. 后台管理系统登录页面的例子2. Table组件使用案例 开源项目地址 一、Ant-design-vue项目介绍 Ant-design-vue 是一个基于…

java面试题:springMVC的执行流程

请求到达前端控制器DispatcherServlet&#xff0c;该组件是SpringMVC的核心组件&#xff0c;负责接收所有的请求。 DispatcherServlet根据请求中的URL和HandlerMapping找到对应的Controller对象&#xff0c;HandlerMapping是一个接口&#xff0c;定义了请求的URL和对应的Contro…

刺客信条找不到emp.dll怎么解决?emp.dll缺失的解决方法解析

emp.dll 是一个动态链接库文件&#xff0c;它在Windows操作系统中扮演着重要的角色。这个文件包含了多个函数和接口&#xff0c;允许其他程序调用这些功能来实现对多媒体设备的控制和管理。根据搜索结果&#xff0c;emp.dll 主要负责以下功能&#xff1a; 多媒体设备管理&…

进阶篇03——SQL优化

insert 优化 主键优化 不好做笔记&#xff0c;但是挺重要的&#xff0c;留个视频链接&#xff1a;主键优化 order by 优化 视频链接&#xff1a;order by 优化 group by 优化 放视频&#xff08;好吧&#xff0c;这篇文章感觉还是看视频容易懂一点&#xff09;&#xff1a;…

一文了解JVM(中)

HotSpot 虚拟机对象探秘 对象的创建 Header解释使用 new 关键字调用了构造函数使用 Class 的 newInstance 方法调用了构造函数使用 Constructor 类的newInstance 方法调用了构造函数使用 clone 方法没有调用构造函数使用反序列化没有调用构造函数说到对象的创建,首先让我们看…

45.Python-web框架-Django - 开始建立第一个项目

目录 1.django是什么&#xff1f; 2.Pycharm 社区版&#xff0c;还是专业版&#xff1f; 3.开始django&#xff0c;Pycharm专业版 创建一个Django项目 运行一个Django项目 运行方法一&#xff0c;命令行的方式 运行方法二&#xff0c;配置Django Server的方式 4.django尊…

编译原理:语法分析之LR分析

自底向上分析方法&#xff08;LR分析算法&#xff09;bottom-up parsing 引言. 运算符 LR(0)LR(0)的项&#xff08;构建有穷自动机的状态&#xff09;LR(0)的项目闭包&#xff08;构建有穷自动机的状态&#xff09;GOTO函数有效项目LR(0)有穷自动机的构建 SLRLR(1)LALR 引言 L…

树莓派4B学习笔记7:(Python)_TTL串口收发数据_

今日继续学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1&#xff1a; 今日尝试使用树莓派的TTL串口进行收发数据&#xff1a; …

Web应用安全测试-业务功能滥用(二)

Web应用安全测试-业务功能滥用&#xff08;二&#xff09; 7、未验证的URL跳转 漏洞描述&#xff1a;服务端未对传入的跳转url变量进行检查和控制&#xff0c;可能导致可恶意构造任意一个恶意地址&#xff0c;诱导用户跳转到恶意网站。由于是从可信的站点跳转出去的&#xff…