Python电影网站开发,上海平台网站建设哪家有,网创八步的第七步,医院网站建设的规划目录
9 智能关键技术方案
智能关键技术一#xff1a;自治运维系统
智能关键技术二#xff1a;库内AI引擎
智能关键技术三#xff1a;智能优化器
10 驱动接口关键技术方案 GaussDB架构介绍#xff08;二#xff09;从数据持久化存取层(DataNode)关键技术方案、全局事…目录
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 AA1 AND BB1 AND CC1的选择率
单列建模P(AA1, BB1, CC1)P(A1)P(B1)P(C1)0.5 * 0.67 * 0.670.22
贝叶斯网络P(AA1, BB1, CC1) P(A1)P(B1|A1)P(C1|B1)0.5*1.0*1.00.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云原生架构、关键技术方案的精彩内容敬请期待