达梦MPP集群搭建、DEM管理工具搭建MPP集群应用

news2024/11/17 12:19:22

说明... 3

两节点MPP集群手动搭建... 4

1、配置dm.ini 4

2、配置dmmal.ini 5

3、配置dmmpp.ctl 5

4、启动EP01和EP02数据库实例,系统搭建完成。... 6

MPP使用:... 6

使用DEM管理系统搭建MPP3节点集群... 10

一、达梦DEM部署... 11

1、创建DEM库:dem_init.sql 11

2、tomcat安装部署... 12

3、修改server.xml配置文件... 12

4、修改jvm启动启动参数... 12

5、配置DEM... 13

6、解压dem.war 13

7、配置DEM中元数据库的连接信息... 13

8、重新打包... 14

8、授权... 15

9、启动tomcat 16

10、登录DEM系统... 16

11、连接数据库正常... 17

二、各节点AGENT部署... 17

1、dmagent下载... 18

2、修改dmagent配置... 19

3. 核对dmagent和DEM所运行机器时间... 19

4. 启动dmagent: 19

5、报错处理... 21

1)启动三台节点(100、101、102)agent但是只显示一台服务器... 21

2)查看日志... 21

4)永久修改错误连接的mac地址... 23

6、重新启动DEM... 23

三、使用DEM搭建MPP集群... 24

1、客户端工具--集群管理--点击"+"创建集群--选择大规模并行处理... 24

2、环境准备--找到需要部署的主机--实例规划... 25

3、在配置好各实例的参数后,点击“下一步”,进入“数据准备”页面。... 25

4、配置dm.ini相关参数... 26

5、配置dmmal.ini相关参数... 26

6、配置dmarch.ini参数... 27

7、上传的服务器文件... 27

8、开始执行部署任务--部署成功... 27

9、查验... 28

四、使用DEM监控MPP运行... 28

说明

达梦共享存储数据库集群全称 DM Data Shared Cluster,简称 DMDSC:

这种体系可实现多机并行,保证系统的高可用性,但需要通过一个数据管道将所有I/O信息过滤到共享存储子系统,对硬件的要求较高,且并非高性能解决方案。

达梦大规模并行处理 MPP(DM Massively Parallel Processing,缩写 DM MPP):

完全对等无共享式集群,通讯功能部署在一个高宽带网络互连体系上,没有主控制节点,所有节点完全对等,执行并行查询。支持最多 1024 个 EP。MPP特别适合于海量数据的存储和处理。一个EP故障停机,整个MPP系统不能使用,须配合数据守护(主备)使用。

达梦分布计算集群英文全称DM Distributed Processing Cluster,简称DMDPC:

提供了分布式计算集群才拥有的高可用、高扩展、高性能、高吞吐量和对用户透明等高级特性。

首先配置dmmpp.ini,然后利用dmctlcvt工具进行转换得到生成的dmmpp.ctl文件。

MPP系统中的每个EP都必须使用相同的dmmpp.ctl文件,进行文件拷贝即可。

MPP集群搭建

1、制定合适的DM MPP方案

1)应用是否适合使用DM MPP方案

MPP具有高性价比、高可靠性、功能强大等优点

MPP主要针对海量数据的OLAP应用而研发。

在合理规划的前提下,对普通的、并发量不大的一般OLTP或混合类型应用也适用,但不适合于高并发操作的OLTP类型应用

2)需要使用多大规模的DM MPP方案

DM MPP最多支持1024个EP节点,应用数据规模、硬件规划、网络带宽和项目预算情况而定。

理论上来说节点数越多越好,这样并行越充分,效率越高。

方案设计者应同时考虑到 EP节点间网络资源的情况,如果网络是瓶颈,则并不是节点数越多越好。

3)需要配置怎样的硬件资源

DM MPP采用完全对等不共享架构,不需要专用硬件,可以采用普通的PC服务器组建集群。

DM MPP系统需要通过网络在各EP间传递数据,因此网络的带宽对于MPP系统的效率非常重要,建议配置千兆或万兆内部网络,用户应根据实际需求、配置成本及实际条件等综合评估决定。

4)如何设计应用表

DM MPP系统中的数据分布在各EP中,支持表数据的哈希分布、随机分布、复制分布、范围分布、LIST分布类型

除了表的分布类型,还应根据情况确定表的分布列、分布列的数据类型以及是否需要组合分布列等,查询连接使用频率较高的连接键等可以考虑作为分布列。

5)如何配置DM MPP系统参数

数据库实例配置文件dm.ini和MAL系统配置文件dmmal.ini中一些参数的配置会影响MPP系统的运行性能。

应根据应用和硬件的实际情况对这些参数进行适当的配置。同时应注意各EP必须保持一致的INI参数

两节点MPP集群手动搭建

两台双网卡服务器,均安装并初始化数据库实例。2c2g

EP01:

192.168.16.100

10.10.10.100

EP02:

192.168.16.101

10.10.10.101

 注意:各EP使用的DM数据库版本应一致,各EP所在主机的操作系统位数、大小端模式、时区及时间设置都应一致。

两台服务器停止数据库服务

./DmServiceDMSERVER stop

1、配置dm.ini

各EP的数据库初始化参数都保持一致

EP01

INSTANCE_NAME = EP01

PORT_NUM = 5236

MAL_INI = 1

MPP_INI = 1

EP02

INSTANCE_NAME = EP02

PORT_NUM = 5237

MAL_INI = 1

MPP_INI = 1

2、配置dmmal.ini

两节点配置完全一样

dmmal.ini与dm.ini放在相同的目录下。

[MAL_INST1]

MAL_INST_NAME = EP01

MAL_HOST = 10.10.10.100

MAL_PORT = 5269

MAL_INST_HOST = 192.168.16.100

MAL_INST_PORT = 5236

[MAL_INST2]

MAL_INST_NAME = EP02

MAL_HOST = 10.10.10.101

MAL_PORT = 5270

MAL_INST_HOST = 192.168.16.101

MAL_INST_PORT = 5237

3、配置dmmpp.ctl

两节点配置完全一样

需要先配置dmmpp.ini

[SERVICE_NAME1]

MPP_SEQ_NO = 0

MPP_INST_NAME = EP01

[SERVICE_NAME2]

MPP_SEQ_NO = 1

MPP_INST_NAME = EP02

使用dmctlcvt将dmmpp.ini转换成dmmpp.ctl

dmmpp.ctl需要放在dm.ini的同一个目录

TYPE=2表示将文本文件转换成控制文件

TYPE=1进行逆向转换,文本转为控制文件

dmctlcvt TYPE=2 SRC=/dm/data/DMDB/dmmpp.ini DEST=/dm/data/DMDB/dmmpp.ctl

4、启动EP01和EP02数据库实例,系统搭建完成。

之前注册过直接启动即可

./DmServiceDMSERVER start

MPP使用:

建立分布表

哈希分布、随机分布、复制分布、范围分布、LIST 分布

MPP的数据分布类型和具体设置在建表时指定

CREATE TABLE T_HASH(C1 INT, C2 CHAR(10))DISTRIBUTED BY HASH (C1);

CREATE TABLE T_RANDOM(C1 INT, C2 CHAR(10))DISTRIBUTED RANDOMLY;

CREATE TABLE T_FULLY(C1 INT, C2 CHAR(10))DISTRIBUTED FULLY;

CREATE TABLE T_RANGE (C1 INT, C2 CHAR(10))DISTRIBUTED BY RANGE (C1)

(VALUES EQU OR LESS THAN (100) ON EP01, VALUES LESS THAN(MAXVALUE) ON EP02);

CREATE TABLE T_LIST(C1 INT, C2 CHAR(10))DISTRIBUTED BY LIST (C1)

(VALUES(3) ON EP01,VALUES(4) ON EP02);

CREATE TABLE T_HASH_RANGE_PARTITION(C1 INT, C2 CHAR(10), C3 CHAR(10))

PARTITION BY RANGE(C1)

(

PARTITION PART_1 VALUES LESS THAN(0) ,

PARTITION PART_2 VALUES LESS THAN(10) ,

PARTITION PART_3 VALUES LESS THAN(100) ,

PARTITION PART_4 VALUES LESS THAN(MAXVALUE)

)

DISTRIBUTED BY HASH (C1);

注意:

MPP模式下创建分布表,如果未指定列则默认为RANDOMLY(随机)分布表;

分布列类型不支持BLOB、CLOB、IMAGE、TEXT、LONGVARCHAR、BIT、BINARY、VARBINARY、LONGVARBINARY、BFILE、时间间隔类型、虚拟列和用户自定义类型;

FULLY(复制)分布表,只支持单表查询的更新和删除操作,并且查询项或者条件表达式中都不能包含ROWID伪列表达式;

RANGE(范围)分布表和 LIST(列表)分布表,分布列与分布列值列表必须一致,并且指定的实例名不能重复;

引用约束的引用列和被引用列都必需包含分布列,且分布情况完全相同;

随机分布表不支持UNIQUE索引。

快速数据装载:dmfldr

dmfldr支持MPP环境下的两种数据加载模式:客户端分发模式(默认,数据在dmfldr客户端进行分发后直接向指定EP发送数据)和本地分发模式,通过参数MPP_CLIENT进行设置。

停止MPP系统:数据库实例停库即可

MPP相关系统过程与函数

MPP系统设置当前会话是否只查询本节点数据。

SP_SET_SESSION_MPP_SELECT_LOCAL(0); --0查询全部节点数据;1只查询本节点数据

SF_GET_SESSION_MPP_SELECT_LOCAL(0); --用法与上面set一样啊

MPP本地登录时,设置本会话上是否允许DDL操作。本地登录默认不允许DDL操作。

SP_SET_SESSION_LOCAL_TYPE (1); --1表示允许

CREATE TABLE TEST(C1 INT);

SP_SET_SESSION_LOCAL_TYPE (0);

根据查询出的行数据的ROWID获取本条数据来自哪个EP。

SF_GET_EP_SEQNO(ROWID);

select SF_GET_EP_SEQNO('AAAAAAAAAAAAAAAAAD');

获取本会话连接的EP序号。

SELECT SF_GET_SELF_EP_SEQNO();

统计MPP环境下表在各个节点的数据行数。

SP_GET_EP_COUNT('SYSDBA','T'); --模式,表名--ER02中也有该表,但是mpp从01库中查出后不会去查02库,所以1库3行2库0行数据。

获取EP节点配置信息

SELECT * FROM V$MPP_CFG_ITEM WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();

获取当前会话连接的实例名

SELECT NAME FROM V$INSTANCE WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();

获取MPP系统内所有EP的所有会话

SELECT * FROM V$SESSIONS;

获取当前连接的实例上的所有会话

SELECT * FROM V$SESSIONS WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();

获取实例EP01上的所有会话

SELECT * FROM V$SESSIONS WHERE SF_GET_EP_SEQNO(ROWID) = (SELECT DISTINCT EP_SEQNO FROM V$MPP_CFG_ITEM WHERE INST_NAME ='EP01');

获取所接实例上的表DEPT的使用空间

SELECT TABLE_USED_PAGES('SYSDBA','DEPT');

获取每个实例上的表TEST使用空间

SELECT TABLE_USED_PAGES('SYSDBA','DEPT'), NAME FROM V$INSTANCE;

获取所有实例上表DEPT的总使用空间

SELECT SUM(TOTAL_SIZE) FROM (SELECT TABLE_USED_PAGES('SYSDBA','DEPT') TOTAL_SIZE, NAME FROM V$INSTANCE);

使用DEM管理系统搭建MPP3节点集群

说明:

DM web 版数据库管理工具(DEM)提供了图形化部署与监控MPP的功能。

在使用DEM对集群进行部署和监控之前需要在各节点所在机器部署数据库代理工具DMAgent

服务器规划:

EP01:

192.168.16.100

10.10.10.100

EP02:

192.168.16.101

10.10.10.101

EP03:

192.168.16.102

10.10.10.1022

DEM单独搭建:2c4g

192.168.16.69

10.10.10.69

一、达梦DEM部署

69DEM库

1、创建DEM库:dem_init.sql

start /dm8/web/dem_init.sql

SELECT DISTINCT owner,object_name FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'SCH';

2、tomcat安装部署

上传安装包,并解压,重命名

3、修改server.xml配置文件

在conf/server.xml中追加属性字段追加属性字段 maxPostSize="-1"

vim /tomcat/tomcat/conf/server.xml

4、修改jvm启动启动参数

vim /tomcat/tomcat/bin/catalina.sh

/cygwin=false --搜索在这个上面添加,达梦自带Java路径

JAVA_OPTS="-server -Xms256m -Xmx1024m -XX:MaxPermSize=512m -Djava.library.path=/dm8/bin"

5、配置DEM

把DEM项目复制到tomcat的webapps

cp /dm8/web/dem.war /tomcat/tomcat/webapps/

6、解压dem.war

unzip -oq dem.war -d dem

-d:指定解压输出目录

7、配置DEM中元数据库的连接信息

修改DEM解压文件中的db.xml文件

vim /tomcat/tomcat/webapps/dem/WEB-INF/db.xml

8、重新打包

先授权

chown -R dmdba:dinstall /tomcat

使用dmdba

cd /tomcat/tomcat/webapps/dem

jar -cvf dem.war *

echo $JAVA_HOME

配置java环境变量

find / -name jar查询jdk路径

然后打包替换即可

cd /tomcat/tomcat/webapps/dem

jar -cvf dem.war *

mv dem.war ../

重启tomcat

cd /tomcat/tomcat/bin

./shutdown.sh

./startup.sh

8、授权

chmod -R 755 tomcat

9、启动tomcat

./startup.sh

10、登录DEM系统

在浏览器中输入dem的地址即可进入DEM的登录页面了

http://192.168.16.69:8080/dem/

输入账号密码admin/888888

11、连接数据库正常

二、各节点AGENT部署

100服务器

dmagent配置及启动应用 root用户操作

1、dmagent下载

1) 达梦数据库安装目录的tool下存有dmagent --本次使用

2) 登录部署好的DEM,资源包,下载dmagent。 拷贝dmagent到要部署的机器上。

2、修改dmagent配置

配置dmagent目录下的agent.ini:

center.url=http://192.168.16.69:8080/dem #DEM访问地址

gather_enable=true #开启收集监控数据功能,默认打开

service_enable=true #开启远程调用功能,部署时需要打开

3. 核对dmagent和DEM所运行机器时间

一般要求dmagent和DEM所运行机器时间一致,最多不要相差5分钟。

4. 启动dmagent:

root

./start.sh /dm8/tool/dmagent/agent.ini #进程方式运行

=====

服务注册的方式启动

[root@localhost dmagent]# ./service.sh install

[root@localhost dmagent]# ./service.sh start

这里注册服务后,linux服务器重启dmagent也会启动的

====

101及102服务器同样操作启动

DEM上修改内外网配置

5、报错处理

1)启动三台节点(100、101、102)agent但是只显示一台服务器

2)查看日志

因为是克隆的机器这三台不同ip但是macaddr地址是同一个,所以一直报错

3)查看mac地址并修改

ifconfig

4)永久修改错误连接的mac地址

查看ifconfig配置正常使用的ens33和ens37显示mac地址每台服务器均不同。只有这个virbr0使用同一个mac地址。

这里直接停掉virbr0网桥即可。

停网桥virbr0

ifconfig

brctl show //查看网桥

ifconfig virbr0 down

brctl delbr virbr0 //删除网桥

systemctl disable libvirtd.service //禁用libvirtd服务开机自启动

systemctl mask libvirtd.service

ifconfig查看,即可发现virbr0不在了

6、重新启动DEM

启动各节点agent即可 --正常显示了

三、使用DEM搭建MPP集群

1、客户端工具--集群管理--点击"+"创建集群--选择大规模并行处理

2、环境准备--找到需要部署的主机--实例规划

3、在配置好各实例的参数后,点击“下一步”,进入“数据准备”页面。

4、配置dm.ini相关参数

5、配置dmmal.ini相关参数

6、配置dmarch.ini参数

7、上传的服务器文件

(需要指定dmserver文件,这里直接指定bin目录即可)

8、开始执行部署任务--部署成功

9、查验

直接连接第一次手动配置的mpp集群还在

连接DEM搭建的三节点mpp集群正常

四、使用DEM监控MPP运行

监控与告警--数据库--添加--集群--xxx

其他:

MPP的DDL克隆与还原

DDL 克隆可以把系统中的对象定义信息进行备份,之后再还原到别的数据库节点。利用这个功能,可以将一个MPP系统的对象定义信息克隆并还原到另一个MPP系统中,且两个MPP系统的节点数不必一致。

在执行完还原操作后,需要使用dmctlcvt工具,将当前环境的dmmpp.ini再次生成dmmpp.ctl,替换还原生成的dmmpp.ctl(因还原覆盖了目标系统的ctl文件)。

MPP主备系统

MPP备库不参与MPP操作,与其他MPP备库之间也没有任何关系,MPP备库只能以单节点方式提供只读服务,但不提供全局的MPP只读服务。

为了提高系统可靠性并节约硬件资源,DM MPP主备系统可采用交叉守护的方式,即每个EP和其对应的备库实例不在同一台主机上,将EP与别的EP的备库放在一台主机上。

达梦数据库社区地址:https://eco.dameng.com

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

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

相关文章

计算机网络管理 常见的计算机网络管理工具snmputil,Mib browser,SNMPc管理软件的功能和异同

⬜⬜⬜ 🐰🟧🟨🟩🟦🟪(*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜ ✏️write in front✏️ 📝个人主页:陈丹宇jmu &am…

【C++ 基础篇:25】:【重要模板】C++ 算术(赋值)运算符重载及自增自减运算符重载【以 Date 日期类为例】

系列文章说明 本系列 C 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C 学习系列将分为三个阶段:基础篇、STL 篇、高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C的三大…

LabVIEW开发监测太阳能电池和损伤检测

LabVIEW开发监测太阳能电池和损伤检测 使用LabVEW监测太阳能电池的实时数据,利用LabVIEW实现太阳能跟踪和损伤检测。使用了太阳能电池板,Arduino UNO板,电压(0-25V)传感器LDR,温度传感器和伺服电机。Solar…

基于ubuntu20.4搭建的K8S集群新增工作节点带GPU显卡过程记录

基于ubuntu20.4搭建的K8S集群新增工作节点带GPU显卡过程记录 1、创建虚拟机引导选择efi 2、添加显卡,修改虚拟机-高级参数,添加以下两个参数 pciPassthru.64bitMMIOSizeGB:192 pciPassthru.use64bitMMIO:TRUE否则可能无法开机。 3、添加直通显卡,安装显卡驱动。 3.1、查…

Redis集群详细介绍从0开始-包括集群的Jedis开发

集群 为什么需要集群-高可用性 1、生产环境的实际需求和问题 容量不够,redis 如何进行扩容?并发写操作, redis 如何分摊?主从模式,薪火相传模式,主机宕机,会导致ip 地址发生变化,…

linuxOPS系统服务_linux文件权限管理

什么是权限 **权限:**在计算机系统中,权限是指某个计算机用户具有使用软件资源的权利。 权限的目的 文件权限的设置目的:是想让某个用户有权利操作文件 权限的分类 普通权限rwx 用户正常情况去操作文件所具有的权限 高级权限st 用户对某…

FPGA基础知识-任务和函数

目录 学习目标 学习内容 1.任务和函数的区别 2.任务 3.函数 学习时间 学习总结 学习目标: 1.理解任务和函数之间的区别。 2.理解定义任务所需的条件,学会任务的声明和调用。 3.理解定义函数所需的条件.学会函数的声明和调用。 学习…

JavaScript之ES6高级语法(四)

本文是我在学习过程中记录学习的点点滴滴,目的是为了学完之后巩固一下顺便也和大家分享一下,日后忘记了也可以方便快速的复习。 ES6高级语法(四) 前言一、深浅拷贝1.1、浅拷贝1.2、深拷贝1.2.1、递归实现深拷贝1.2.2、js库lodash里面cloneDee…

你们软件测试面试最难的一道题是什么?

在测试面试时,面试官往往会出一个简单的场景让大家进行测试点设计来考察大家的测试设计能力,题目看似简单实则蕴藏杀机,测试人员需要根据自己的工作年限做出不同的回答方可过关。 如果你工作1-2年,那么你只需要回答功能方面的测试…

源来Intel——开放原子全球峰会

文章目录 Intel的开源之路AI领域边缘人工智能在中国的发展趋势边缘人工智能领域的挑战生态系统解决方案英特尔针对边缘人工智能的产品总结 英特尔基础软件赋能中国生态Intel : 软件优先 推动中国市场中国Linux操作系统生态Intel全力投入中国开源社区开发国产Linux厂商&#xff…

I2C中的时钟同步与仲裁

时钟同步和仲裁 在单主设备中,不需要时钟同步和仲裁。而在多设备时,多个主设备可以同时在空闲的总线上开始发送数据,这时就需要仲裁决定哪一个来控制总线并完成它的数据传输,有时候也需要时钟同步来协同设备间的工作。而这正是通过…

Android音视频开发实战02-Jni

一 JNI 1.1 什么是JNI JNI是Java Native Interface的缩写,是Java提供的一种机制,用于在Java代码中调用本地(C/C)代码。它允许Java代码与本地代码进行交互,通过JNI,Java应用程序可以调用一些原生库或者操作…

Maven编译常见问题收集

1、父pom里面有引入lombok依赖&#xff0c;为什么子pom有用到lombok&#xff0c;依然识别不到呢 这是因为父pom引入依赖的时候&#xff0c;把 <dependency></dependency>依赖标签&#xff0c;最外层包 在了<dependencyManagement></dependencyManagemen…

Python学了基本语法 下一步该干什么 ?

刚入门Python,学习了基本语法后&#xff0c;你可以开始编写简单的程序了。接下来&#xff0c;你可以学习Python的标准库和第三方库&#xff0c;掌握更多的编程技巧和知识&#xff0c;提高自己的编程能力。同时&#xff0c;也可以通过实践项目来巩固所学知识&#xff0c;提高自己…

web3描述以太坊与区块链之间的操作关系

好通过前面两篇文章 Web3.0概念 web3带大家简单建立区块链概念 大家开始明白 web3.0是基于区块链为基础开发的 我们讲区块链多次提到以太坊 EVM 那这个东西到底是什么呢&#xff1f; 就现在的情况来讲 从零到一去搭建一个区块链环境 那可太难了 所以 以太坊一开始 确实是做一…

关于GPT-3和GPT-4,你需要知道都在这里

友情提示 提示&#xff1a;本文约3500个文字&#xff0c;字数较长&#xff0c;可直接点击序号进入相关目录阅读字数 文章目录 友情提示前言一、什么是 GPT-3、GPT-4 和 ChatGPT&#xff1f;二、对未来的担忧三、什么时候可以用GPT4&#xff1f;四、GPT-4用在什么地方五、GPT-4能…

json_decode返回NULL

json_decode返回NULL 最近在调用某公司的API时&#xff0c;将对方返回的数据&#xff0c;使用PHP的json_decode函数解析&#xff0c;但是返回NULL,最终排查为对方传送来的json格式有误 打印$_REQUEST&#xff0c;数据结构大致如下&#xff1a; 1 2 3 4 5 6 7 8 9 10 array (…

Android 面试延伸技术点有哪些,你能答上几个?

1、如何进行单元测试&#xff0c;如何保证 App 稳定 &#xff1f; 参考回答&#xff1a; 要测试 Android 应用程序&#xff0c;通常会创建以下类型自动单元测试 本地测试&#xff1a;只在本地机器 JVM 上运行&#xff0c;以最小化执行时间&#xff0c;这种单元测试不依赖于 An…

JavaScript之ES6高级语法(三)

本文是我在学习过程中记录学习的点点滴滴&#xff0c;目的是为了学完之后巩固一下顺便也和大家分享一下&#xff0c;日后忘记了也可以方便快速的复习。 ES6高级语法(三&#xff09; 前言一、原型对象1.1、constructor 属性1.2、对象原型 二、原型继承三、原型链 前言 今天学习的…

【C++】红黑树的概念与模拟实现

红黑树的概念与模拟实现 红黑树的概念红黑树的性质红黑树节点的定义红黑树的迭代器红黑树的插入红黑树和AVL树的比较红黑树的模拟实现 红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。…