数据库国产化之PanWeiDB

一、前言

《数据库国产化探究及升级改造过程指导》一文,本节我们来了解下国产化关系型数据库PanWeiDB(磐维数据库)。

在这里插入图片描述
磐维数据库(PanWeiDB)是中移信息首个基于中国本土开源数据库openGauss(开源协议友好)内核(NUMA化内核结构) 打造的面向ICT基础设施的自研数据库产品,华为官网显示GaussDB(for MySQL)提供百万级QPS,性能最高可以达到MySQL社区版本的7倍; GaussDB(for Mongo) 性能最高可以达到MongoDB社区版本的3倍,因此PanWeiDB也具备较高的性能,是一款出色的具备企业级复杂事务混合负载能力的全场景化OLTP数据库。中移于2022年发布行磐维云原生数据库1.0版本(基于 openGauss 3.0),2023年12月28日,在openGauss Summit 2023大会上,中国移动磐维数据库2.0版本(基于 openGauss 5.0)发布。PanWeiDB V2.0-53.0.0_Beta支持SQL 2003标准语法,性能方面实现了TPC-C1000仓170万的突破,支持行、列,内存表存储,支持主备部署,是一款全场景的高可用关系型数据库。PanWeiDB为数据管理提供了综合性解决方案,支持多种部署形态,具备行业内高质量安全生产能力,是企业数智化转型的坚实数据基座。它作为独立的数据库产品,可以广泛地用于中国移动B/O/M域的各种业务场景;信创方面,磐维数据库支持多种方式部署:集中式 ,分布式 ,云原生,已助力中粮集团完成数据库国产化改造,为客户提供了高效稳定的DBaaS服务。磐维数据库引入专属的图形化数据迁移平台和运维管理平台,数据迁移速率达到300M/S,校验速率超过150M/S,达到业界领先水平,适用于高并发、大数据量、以联机事务处理为主的交易型场景应用和数据写,分析,操作并用的场景。安全方面,磐维数据库支持从接入认证、用户及权限管理、安全审计、数据安全等多个方面端到端保障数据安全。同时引入SM3、SM4等国密算法,满足国家信息安全规范要求。目前,PanWeiDB已通多项标准认证,如下所示:

在这里插入图片描述
另外加密方面,为了防止数据文件被窃取后泄露用户数据,PanWeiDB安全增强选项提供了全库透明加密功能。数据将在写入磁盘时被自动加密,从磁盘中读取时被自动解密,整个过程对用户以及上层应用是透明的。由于数据读写时需要进行额外的加解密操作,故会对数据库性能造成一定影响。

关联资源磐维数据库官网磐维wikiopenGauss官网

二、数据库概述及架构

2.1、单机/实例部署:

即单实例独立主机部署,仅用于测试和小公司。

2.2、双机部署架构:

在这里插入图片描述
主备模式可理解为存储两个数据副本,主机和备机各一个数据副本,主备间 Quorum 复制,备机接受日志后做日志回放;其中,主负责读写,slave只读;主备之间可以通过switchover进行角色切换,主机故障后可以通过failover 对备机进行升主。另外还支持一主多备(多副本模式),最多支持8个slave;一般,一主两备即3个副本,这时可靠性就能达4个9,可以满足大多数应用的可靠性要求。

2.3、异地容灾

磐维数据库支持两地三中心容灾方案。可部署在两个或三个数据中心。在备用数据中心中采用级联备的方式,这样在每一个独立的数据中心中,都有主备的部署架构。采用这种部署方案,磐维数据库可以达到最高可用性5个9(99.999%)的标准。
在这里插入图片描述
在这里插入图片描述

2.4、分布式集群

磐维数据库支持分布式部署,它使用Share Nothing架构实现数据库的极致扩展与弹性伸缩,原生分布式方案支持复杂SQL查询,通过GTM管理执行分布式事务,使用严格的两阶段提交保障数据一致性。适用于大数据量高并发且追求数据一致性、安全性的场景。
在这里插入图片描述

2.5、读写分离架构

PanWeiDB支持资源池化:通过存储池化技术实现多节点共享一份存储,多节点数据实时一致。在集群管理上,基于双重心跳检测、共享盘仲裁、IO Fencing等技术实现集群节点故障自动检测、恢复和隔离,为资源池化提供一个高可靠的运行环境。
在这里插入图片描述
一般我们知道,对于外部连接最简单的处理模式是per-thread-per-connection模式,即来一个用户连接产生一个线程。这个模式好处是架构上处理简单,但是高并发下,由于线程太多,线程切换和数据库轻量级锁区域的冲突过大导致性能急剧下降,使得系统性能(吞吐量)严重下降,无法满足用户性能的SLA。因此,需要通过线程资源池化复用的技术来解决该问题。线程池技术的整体设计思想是线程资源池化、并且在不同连接之间复用。系统在启动之后会根据当前核数或者用户配置启动固定一批数量的工作线程,一个工作线程会服务一到多个连接session,这样把session和thread 进行了解耦。因为工作线程数是固定的,因此在高并发下不会导致线程的频繁切换,而由数据库层来进行session的调度管理。

2.6、兼容评估和迁移工具

在数据库迁移方面,针对异构数据库迁移的痛点和难点,中移专门打造了一键式数据迁移的平台。集数据库迁移评估、应用迁移评估、自动采集、数据库结构迁移、数据迁移、数据校验等功能于一体。实际,PanWeiDB自身对MySQL较好兼容,能够支持MySQL以及其他商业数据库平滑迁移到磐维数据库。
在这里插入图片描述

三、数据库部署及配置

3.1、配置建议

资源 最低配置 建议配置
内存 功能调试建议内存 8GB 以上 性能测试和商业部署时,单实例部署建议内存 128GB 以上
CPU 功能调试时,CPU 配置最小为 1×8 核 2.0GHz 性能测试和商业部署时,单实例部署建议 1×16 核 2.0GHz 以上
硬盘 至少 1GB 用于安装 PanWeiDB 的应用程序包;每个主机需大约 300MB用于元数据存储;预留 30G 磁盘用于存放 WAL 数据文件;预留 70%以上的磁盘剩余空间用于数据存储 建议系统盘配置为 Raid1,数据盘配置为 Raid5,且规划 4 组 Raid5 数据盘用于安装 PanWeiDB
网络 单机安装最低为千兆网;集群安装最低为万兆网 单机安装时建议千兆以上网络;集群安装时建议万兆以上网络

3.2、行、列存储

一般情况下,如果表的字段比较多(大宽表),查询中涉及到的列不是很多的情况下,适合存储。如果表的字段个数比较少,查询大部分字段,那么选择行存储比较好。在大宽表、数据量比较大的场景中,查询经常关注某些列,行存储引擎查询性能比较差。例如气象局的场景,单表有200~800个列,查询经常访问10个列,在类似这样的场景下,向量化执行技术和列存储引擎可以极大的提升性能和减少存储空间。

默认创建表是行存储的类型。数据按行进行存储,即一行数据紧挨着存储。行存表支持完整的增删改查。适用于对数据需要经常更新的场景。列存储,即数据按列进行存储,即一列所有数据紧挨着存储。单列查询I/O小,比行存表占用更少的存储空间。适合数据批量插入、更新较少和以查询为主统计分析类的场景。列存表不适合点查询,insert插入单条记录性能差。列存表比行存表压缩率高但高压缩率会消耗更多的CPU资源。

场景需求描述 表存储类型
数据如果频繁更新 选择行存表
频繁的少量插入 选择行存表
一次插入大批量数据 选择列存表
表的列数很多 选择列存表
如果每次查询时,只涉及了表的少数(<50%总列数)几个列 选择列存表

四、其他配置

4.1、JDBC连接多IP的url格式及说明

PanWeiDB目前支持标准的 ODBC 3.5及JDBC4.0接口,其中ODBC支持centos,openEuler,麒麟、UOS、SUSE、Win32、Win64 平台,JDBC无平台差异;兼容 PSQL客户端,兼容PostgreSQL标准接口。

#JDBC连接panweidb驱动;其中,host1:port1,host2:port2,host3:port3分别是数据库集群三节点主机的IP和数据库服务端口号;targetServerType=master 用于指定连接主库,还可取其他值,比如:any(此为默认值),表示尝试连接URL连接串中的任何一个数据节点。
#master 尝试连接到URL连接串中的主库节点,如果找不到就抛出异常。
#slave 尝试连接到URL连接串中的备库节点,如果找不到就抛出异常。
#preferSlave 尝试连接到URL连接串中的备库节点(如果有可用的话),否则连接到主库节点。
#currentSchema=schema_name 设置当前连接的schema(一般为业务数据所在的schema),如果未设置,则默认schema为连接使用的用户名。这个schema_name是在“search-path”中指定要设置的schema。
#useUnicode=true&characterEncoding=utf-8 用于指定字符的编码方式和解码方式,防止因字符集不同而产生乱码。
jdbc:panweidb://host1:port1,host2:port2,host3:port3/database_name?targetServerType=master&currentSchema=schema_name&useUnicode=true&characterEncoding=utf-8
#JDBC连接postgresql驱动
jdbc:postgresql://host1:port1,host2:port2,host3:port3/database_name?targetServerType=master&currentSchema=schema_name&useUnicode=true&characterEncoding=utf-8

4.2、客户端使用

#判断主/备库
select local_role, db_state from pg_stat_get_stream_replications();
#三权分立配置:即系统管理员将不再具有CREATEROLE属性(安全管理员)和AUDITADMIN属性(审计管理员)能力。即不再拥有创建角色和用户的权限,并不再拥有查看和维护数据库审计日志的权限
gs_guc set -I all -N all -c "enable_separation_of_duty=on" #完成后重启数据库
#系统管理员(pwadmin)有权操作表空间、模式、表,无权操作审计日志、锁定、解锁用户和打开强制访问控制参数
#审计管理员(pwaudit)有权操作审计日志,无权操作表空间、模式和表、锁定、解锁用户和打开强制访问控制参数
#安全管理员(pwsso)有权锁定、解锁用户和打开强制访问控制参数,无权操作审计日志、操作表空间、模式、表

4.3、PanweiD8 V2.0-53.0.0_Beta 技术指标概览

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ximenjianxue/article/details/143201234