一、配景
在信创“自主可控”的海潮下,政企行业首当其冲,基于国产化信创的要求,本部门某业务后端应用也需要针对分析开源组件的风险和开源协议的商业应用限制;能用国产化替代的评估后尽可替代割接,本期针对传统数据库Mysql向达梦数据库迁徙的记录。
相干资源:达梦官方文档、达梦在线服务平台、墨天轮排行榜、IDC数据报告、数据报告、洞见研报、达梦线上实验室
二、数据库现状
无论什么样的数据库都离不开数据库本身界说的作用,即它是一套承载相互有关联关系的多少数据的集合,负责构造、存储和管理数据的仓库,一样平常由一个数据库管理体系(DBMS)来控制。数据库按照不同维度,分类方法多种多样,按数据布局可分为关系型数据库和非关系型数据库(NoSQL数据库、NewSQL数据库等);按计划架构可分为单机数据库、集中式数据库和分布式数据库。按摆设方式可分为本地摆设和云摆设,按应用场景/功能可分为事务性数据库(OLTP)、分析型数据库(OLAP)以及混合型关系数据库(HTAP),还可按商业模式分为开源数据库和商业数据库(闭源)。
国内数据库的发展,传统厂商多接纳集中式计划架构,以达梦、人大金仓、南大通用、万里开源为代表,而新兴厂商则利用分布式举行换道超车,以PingCAP、巨杉数据库、星环等初创企业为代表,随着数据库云化摆设局势所趋,云厂商则分身了前2者,但也重要是以分布式为主,分布式数据库是通过计算机网络将物理分散的多个数据库单元连接构成的逻辑上统一的数据库;目前分布式数据库的技能路线分为三类:分库分表+中心件方案、共享存储分布式数据库、去中心化的分布式数据库。国内数据库市场,关系型数据库市场占比90%左右,这些年非关系型正在逐年上升。国产供应商重要代表有华为、阿里、达梦、人大金仓等,这4家合计占据约30%份额,根据IDC数据,截至2022年末,在国内关系型数据库中,公有云数据库的市场中以阿里云、华为、腾讯为代表的国产数据库厂商份额已远超海外数据库厂商。
2024年2月国内数据库排行榜:
三、达梦数据库
3.1、产物介绍
当前官网最新版本为DM8,相较于目前主流产物架构:不同特性依靠不同内核去实现,DM8独特接纳了双存储引擎架构,行存储引擎和列存储引擎可相互共同、协同工作。同时实现了计算层和存储层的分离,同一内核既支持共享存储式集群,也支持分布式事务集群。达梦数据库接纳分布式架构,可由多个节点构成,每个节点可以处置惩罚多个用户的请求,从而并发性能较好。达梦数据库目前已广泛应用于各种范畴,包括金融、电信、政府、教育、医疗等。
产物特性:
- 国产自研:官方声明未接纳任何开源内核,完全掌握核心技能。因此知识产权风险可控。
- 安全可靠,兼容性好:通过国家安全四级 EAL4+ 认证,支持国密算法以及第三方加密装备,号称是国内最高安全品级的数据库。它可适配各种软硬件体系,支持主流 SQL 标准和通用编程语言、接口、开辟框架。在高并发、大数据量的应用中优势明显;
- 高性能:接纳基于代价计算的优化器和独立的虚拟机实行器,通过批量数据向量化实行和 MVCC 多版本并发控制等技能提拔性能,实现双路 CPU 单节点 TPMC (吞吐量:transactions per minute)达到百万级。
- 支持混合型业务处置惩罚:行列融合存储技能,支持混合负载,一套体系上同时支持 OLAP 和 OLTP 业务场景,在此基础上,具备 HTAP 混合型业务处置惩罚能力。
- 易用:可按照用户业务需求配置为不同集群模式,支持集中式、分布式架构;官方提供迁徙评估和自动迁徙工具,使数据库迁徙更加便捷;支持柔性替换,降低体系迁徙风险。更符合中国技能职员使用风俗,配置一站式“驾驶舱”工具集,支持数据库统一运维管理、 SQL 调试分析和监控诉警。降低了使用、迁徙和运维成本。
3.2、产物架构
达梦数据库接纳多层架构,包括物理层、网络层、应用层和数据层。逻辑架构分为:统一接口层、应用集成数据层,物理层。此中,在应用层它接纳了多级缓存机制,包括内存缓存、文件缓存和磁盘缓存。内存缓存可以提高体系的相应速率,文件缓存可以提高数据的读取速率,磁盘缓存可以提高数据的存储速率。另外它支持多线程和多节点摆设,提高并发和可靠性。DM 数据库为数据库中的全部对象分配逻辑空间,并存放在数据文件中。全部的数据文件组合在一起被分别到一个大概多个表空间中,全部的数据库内部对象都存放在这些表空间中,表空间又被进一步分别为段、簇和页(也称块)。
架构说明:
- DM 数据库实例:从DM7 以及之后版本的数据库中,“数据库”和“实例”这两个概念之间出现了很大的差别,实例类似oracle界说,它是由一组正在运行的 DM 后台进程/线程以及一个大型的共享内存构成。实例是操作DM 数据库的一种手段/工具,是用来访问数据库的内存布局以及后台进程的集合。
- DM 数据库:也类同Oracle,它指磁盘上存放在 DM 数据库中的数据的集合,一样平常包括:数据文件、日志文件、控制文件以及临时数据文件等。
- DM逻辑存储布局内部如下:此中,页(数据页,也称数据块)是数据库中最小的单元,它是将簇进一步分别得到的逻辑页(块),DM 数据库中默认每个页默认 8KB(可以自界说巨细,好比:4KB、8KB、16KB 大概 32KB;另外区别于文件体系的页,谁人是为了跟内存交互使用,文件体系的内存页通常是 4K),页巨细一旦创建好数据库后,则在该库的整个生命周期内,页巨细都不能够再改变。一个簇由多个连续的页构成。(区别OS里的簇/块是操作体系中最小的逻辑存储单元,文件体系的默认分配单元巨细(簇)也是4096字节);对于上层的逻辑簇,它可以来自不同的数据文件,它由数据文件分别,每个簇的巨细是 128K(16 个连续的页,由用户在创建数据库时指定);1个或多个簇又构成了逻辑的段(aegment),因此段是能跨多个数据文件的;最上层就是标间,它不直接受理段,而是与数据文件建立关系,它由1个或多个数据文件构成,表空间里存放用户、表、存储过程等,作为数据库对象的存储单元使用。综上,从下到上为:数据表里的记录(行)—>页(Page)—>簇/区( Extent)—>段---->数据文件---->表空间----->数据库。留意:记录是不能跨页存储的,记录的长度受到数据页巨细的限制,DM 规定每条记录的总长度不能高出页面巨细的一半,因一部门存储页的元数据;
当创建一个表/索引的时候,DM为表/索引的数据段至少分配一个簇,也就对应分配了一组空闲页等候数据写入;当空间不足时,DM数据库会自动分配新的簇。默认DM数据库在创建表/索引时,初始分配1个簇,当初始分配的空间用完时,DM数据库会自动扩展。分配簇时,表空间会按文件从小到大的次序在各个数据文件中查找可用簇,找到后举行分配。
当用户删除了表中全部记录时,DM 数据库仍然会为该表保留 1-2 个簇供后续使用。若用户使用 DROP 语句来删除表/索引对象,则此表/索引对应的段以及段中包罗的簇全部收回,但其占用的表空间不会自动删除,这些开释的簇会继承供存储于此表空间的其他模式对象使用。对于临时表空间,DM 数据库会自动开释在实行 SQL 过程中产生的临时段,并将属于此临时段的簇空间还给临时表空间。对于回滚表空间,DM 数据库将定期查抄回滚段,并确定是否需要从回滚段中开释一个或多个簇。
对于最上层的数据段,在同一个表空间中,因段中的簇可以来自不同文件且簇时按需分配,故数据段中的不同簇在磁盘上一样平常是不连续的。
>\
- (物理)存储布局:包括配置文件(dm.ini、dmmal.ini、dmmarch.ini、dm_svc.conf、sqllog.ini、 dmrep.ini ),控制文件(记录文件分布,dm.ctl )、数据文件(保存用户实 际数据,*.dbf)、redo、归档和跟踪日志文件、备份文件;此中,每个DM数据库实例必须至少有 2 个重做日志文件,默认两个日志文件为DAMENG01.log、DAMENG02.log,这两个文件循环使用。非归档模式下,数据库会只将重做日志写入联机日志文件中举行存储;归档模式下, 数据库会同时将重做日志写入联机日志文件和归档日志文件中分别举行存储
\
- DM内存布局:DM 数据库管理体系的内存布局重要包括内存池、缓冲区、排序区、哈希区等;此中,内存池包括共享内存池和其他一些运行时内存池。缓冲区包罗数据缓冲区、日志缓冲区、字典缓冲区、SQL 缓冲区;排序缓冲区提供数据排序所需要的内存空间。当用户实行 SQL 语句时,常常需要举行排序,所使用的内存就是排序缓冲区提供的。可用参数 SORT_BUF_SIZE 在 DM 配置文件 dm.ini 中指定排序缓冲区巨细,默认值 20M;DM8 提供了为哈希连接而设定的缓冲区,不外该缓冲区是个虚拟缓冲区。当在举行哈希连接时,对 排序的数据量举行了计算。假如计算出的数据量巨细高出了哈希缓冲区的巨细,则使用 DM8 创新的外存哈希方式;假如没有高出哈希缓冲区的巨细,实际上照旧使用内存池来举行哈希 操作。可在 dm.ini 中使用参数 HJ_BUF_SIZE 来举行控制,该值的巨细可能会 限制哈希连接的效率,一样平常保持默认即可;HAGR_HASH_SIZE体现处置惩罚聚集函数时创建哈希表的个数,默认值100000。
\
- 表空间:DM数据库表空间分为普通表空间及混合表空间,普通表空间不能存储 HUGE 表,而混合表空间可以同时存储普通(非 HUGE)表和 HUGE 表,此中 HUGE 数据文件存储在混合表空间界说中指定的 HUGE 数据文件路径下。可以通过为普通表空间增长指定 HUGE 数据文件路径将普通表空间升级为混合表空间。在创建 DM 数据库时,会自动创建 4 个表空间:SYSTEM 表空间、ROLL 表空间、MAIN 表空间和 TEMP 表空间,此中ROLL表空间类似Oracle的UNDO表空间,MAIN表空间类似Oracle的User表空间。此中,SYSTEM 表空间存放了有关 DM 数据库的字典信息;ROLL 表空间用来存放事务运行过程中实行 DML 操作之前的值,从而为访问该表的其他用户提供表数据的读划一性视图,由 DM 数据库自动维护,用户无需干预。MAIN 表空间为混合表空间,它会在初始化库的时候,就会自动创建一个巨细为 128M 的数据文件 MAIN.DBF,以及一个 HMAIN 目次作为 HUGE 数据文件路径;另创建用户时,假如没有指定默认表空间,则体系自动指定 MAIN 表空间为用户默认的表空间;。默认的用户表空间是 SYSTEM,SYSDBA 的默认表空间为 MAIN,新创建的用户假如没有指定默认表空间,则体系自动指定 MAIN 表空间为用户默认的表空间。
\
DM 支持的共享存储有两种:裸装备和DMASM;此中,后者在前者的基础上,摆设并使用了 DMASM 文件体系。 DMDSC 是一个共享存储的数据库集群体系。DMDSC (达梦数据共享集群)集群基于单节点数据库管理体系之上,改造了 Buffer 缓冲区、事务体系、封锁体系和日志体系等,来适应共享存储集群节点间的全局并发访问控制要求。同时,引入缓存交换技能,提拔数据在节点间的传递效率。 DMDSC 集群是一个多实例、单数据库的体系。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的恣意一个数据库实例,获得完备的数据库服务。数据文件、控制文件在集群体系中只有一份,岂论有几个节点,这些节点都划一地使用这些文件。各个节点有本身独立的联机日志和归档日志。这些文件就保存在共享存储上。DMDSC 集群重要由数据库和数据库实例、共享存储、本地存储、通讯网络、以及集群控制软件 DMCSS 构成。
3.3、摆设配置
1)安装前预备
DM 完全安装需要至少 1 GB 以上的存储空间;支持x86_64 架构;安装前必须创建 dmdba 用户,禁止使用 root 用户安装数据库。
- groupadd dinstall -g dmdbmin
- useradd -G dinstall -m -d /home/dmdba -s /bin/bash -u dmdbmin dmdba
- passwd dmdba
- #修改系统连接数限制
- vi /etc/security/limits.conf #如下,其中后4条新增
- dmdba soft nice 0
- dmdba hard nice 0
- dmdba soft as unlimited
- dmdba hard as unlimited
- dmdba soft fsize unlimited
- dmdba hard fsize unlimited
- dmdba soft nproc 65536
- dmdba hard nproc 65536
- dmdba soft nofile 65536
- dmdba hard nofile 65536
- dmdba soft core unlimited
- dmdba hard core unlimited
- dmdba soft data unlimited
- dmdba hard data unlimited
- #验证
- su - dmdba
- ulimit -a
- #创建实例保存目录、归档保存目录、备份保存目录,默认配置 DM 数据库安装在 /home/dmdba 文件夹下
- ##实例保存目录
- mkdir /opt/dmdata/data
- ##归档保存目录
- mkdir -p /opt/dmdata/arch
- ##备份保存目录
- mkdir -p /opt/dmdata/dmbak
- #授权
- chown -R dmdba:dinstall /opt/dmdata/data
- chown -R dmdba:dinstall /opt/dmdata/arch
- chown -R dmdba:dinstall /opt/dmdata/dmbak
- chmod -R 755 /opt/dmdata/data
- chmod -R 755 /opt/dmdata/arch
- chmod -R 755 /opt/dmdata/dmbak
复制代码 2)数据库安装
- #软件下载,推荐下载docker版本
- https://eco.dameng.com/download/
- wget https://download.dameng.com/eco/dm8/dm8_20230808_rev197096_x86_rh6_64_single.tar #或
- docker pull registry.cn-shanghai.aliyuncs.com/techerwang/dbhub:jem_dm8
- #进入/opt目录,导入docker镜像包,从包名看有点老
- docker load -i dm8_20230808_rev197096_x86_rh6_64_single.tar
- #验证导入的镜像
- docker images
- #启动容器,将本地/opt/dmdbms/data下的
- docker run -d -p 30236:5236 --restart=always --name dm8_db1 --privileged=true -e PAGE_SIZE=16 -e LD_LIBRARY_PATH=/opt/dmdbms/bin -e EXTENT_SIZE=32 -e BLANK_PAD_MODE=1 -e LOG_SIZE=1024 -e UNICODE_FLAG=1 -e LENGTH_IN_CHAR=1 -e INSTANCE_NAME=dm8_db1 -v /data/dm8_db1:/opt/dmdbms/data dm8_single:dm8_20230808_rev197096_x86_rh6_64
- #验证
- docker ps
- docker logs -f dm8_db1
- #管理
- docker stop dm8_db1
- docker start dm8_db1
- docker restart dm8_db1
- #登陆,如果使用 docker 容器里面的 disql,进入容器后,先执行 source /etc/profile 防止中文乱码;.新版本 Docker 镜像中数据库默认用户名/密码为 SYSDBA/SYSDBA001
- disql SYSDBA/SYSDBA001
- SQL> desc v$database;
- SQL> select
- NAME,
- CREATE_TIME,
- ARCH_MODE,
- TOTAL_SIZE,
- OPEN_COUNT,
- STARTUP_COUNT from v$database;
- SQL> select * from v$tablespace;
- #创建表空间,初始大小为 128M
- create tablespace "spms" datafile '/data/dmdata/DAMENG/TEST.DBF' size 128 ;
- #修改表空间,打开自动扩展,每次制动扩展 100M ,扩展上限 10240M,使用 RC4 加密算法,自动扩展默认为打开状态
- alter tablespace "SPMS" datafile '/data/dmdata/DAMENG/TEST.DBF' autoextend on next 100 maxsize 10240 CACHE = NORMAL encrypt with RC4;;
- #创建用户
- create user "dmdba" identified by "DaM7777@123" hash with SHA512 salt
- encrypt by "123456"
- default tablespace "TEST"
- default index tablespace "TEST";
- #授权
- grant "PUBLIC","SOI","DBA","RESOURCE" to to "dmdba";
复制代码 3.4、配置及最佳实践
3.5、使用
- disql SYSDBA/SYSDBA@ip:端口 #连接数据库
- select * from v$tablespace; #查看表空间信息
复制代码 3.6、其他和FAQ
1)达梦数据库监控:DEM
DEM全称为Dameng Enterprise Manager,是一个Web的数据库监控体系,通过DEM可以同时对多套达梦数据库情况举行监控。DEM情况需要一台Web服务端,然后在每个达梦数据库端安装DEM署理。通过 DEM 工具来举行 DM 数据库的对象管理、状态监控、SQL 查询与调试。通过长途主机摆设署理,能够实现对长途主机状态和长途主机上 DM 数据库实例和集群状态的监控。镜像里默认配置了DEM,端口为8080,主机映射端口为58080,
以是DEM的访问地址为:http://192.168.1.54:58080/dem/;用户名为admin,密码为888888
2)开源工具监控
参看:DM监控
四、mysql数据库迁徙达梦
4.1、通过达梦数据库迁徙工具举行
达梦提供了迁徙工具DTS,它支持将主流数据库迁徙到达梦数据库,DTS提供了异构数据源之间的评估,迁徙和对比功能,以向导方式引导用户通过简朴的步调,完成从MySQL源数据库迁徙至达梦(DM8)目标数据库的操作。但留意的是:DM 数据库和 MySQL 体系布局上存在差异,SQL 语法也存在肯定的差异,DM 数据库针对 MySQL 做了精良的兼容性适配。更多参看官方迁徙引导。留意的是:迁徙之前⼀定要先创建所迁徙的模式对应的⽤户(⽤户名需要与所迁徙的模式相同)。
1)迁徙预备
- 确认要迁徙的用户(模式、数据库)
- 记录原数据库中要迁徙的对象的数量(数据量):表、分区表、视图、自界说类型、触发器、存储过程、函数、其他除迁徙工具外,需要人工对大表、大字段表是否单独迁徙举行评估及确
- 定如何配置大表、大字段表的迁徙策略。
- 记录原数据库中要迁徙的全部对象名称
- 记录原数据库中要迁徙的表的数据量(行数),了解迁徙数据量、字符编码、归档保留、数据库对象、表空间等信息,为后续迁徙做好规划和相干预备工作
- 克制应用,备份数据库
- 创建目标数据及实例
- 创建目标数据的表空间及用户
a. 创建DSM产物各服务所需的表数据空间(单元:M):CREATE TABLESPACE DSM_DATA_TABLESPACE DATAFILE 'DSM_DATA01.dbf' SIZE 5120;
b.创建DSM产物各服务所需的表索引空间(单元:M):CREATE TABLESPACE DSM_IDX DATAFILE 'DSM_IDX01.dbf' SIZE 200;
c. 创建DSM产物各服务所对应的⽤户,并授权DBA:CREATE USER "XXX" IDENTIFIED BY "XXXXXX" DEFAULT TABLESPACE "DSM_DATA_TABLESPACE" DEFAULT INDEX TABLESPACE "DSM_IDX";然后GRANT DBA TO USERXXX;
- 移植后的收尾工作包括:索引补录、更新统计信息、备份、整理对象脚本等内容,保障移植工作的完备性。迁徙完成后,修改应用连接到达梦数据库,验证体系移植的完备性,举行应用的相干功能和性能测试
2)打开DM迁徙工具,新建工程:
再输入目的数据库(DM 数据库)的信息:主机名 (IP) 、端口(DM 默认端口 5236),用户名和口令:
3)非标对象手动迁徙
对于非表对象,如存储过程、触发器、自界说类型、函数等对象。需要从源端MYSQL库导出为sql文件,并且颠末人工修改为满足达梦语法的sql文件,再导入达梦数据库。
- mysqldump -u 数据库用户名 -p -n -t -d -R 数据库名 > xx.sql
复制代码 4)验证
- select object_type,count(*) from all_objects where owner=root group by object_type order by 1;
复制代码 5)统计信息更新
数据查对完成无题目后,应举行一次全库的统计信息更新工作。更新统计信息的目的在于大批量迁徙数据后,可能会导致数据库优化器根据错误的统计信息得到错误的查询筹划,严峻影响查询性能。
- DBMS_STATS.GATHER_SCHEMA_STATS('用户名',100,TRUE,'FOR ALL COLUMNS SIZE AUTO');
复制代码 6)FAQ
1》 达梦里面int数据类型不需要设置精度。假如mysql里有int(10)类型,去除改为int;
2》时间类型修改:mysql中时间类型TIMESTAMP默认 default 设置为‘0000-00-00 00:00:00’,而在DM中TIMESTAMP类型数据不能为‘0000-00-00 00:00:00’,在DM中是不合法的,必须在‘0001-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’之间。以是处置惩罚方法,可以先在达梦修改该字段为varchar2,迁徙完数据后。在达梦处置惩罚掉这些不合法的数据,再将字段类型改为TIMESTAMP。
3》表记录长度限制:初始化库的时候,选择的页巨细影响背面表每行数据的长度,表每行的长度之和(普通数据类型)不能高出一页巨细,假如高出1页巨细即报记录超长的错误。办理办法:初始化库,选择合适的页巨细;也可以将varchar类型比力长的(如varchar2(8000)这种),修改成text类型;大概对表启用超长记录alter table 表名 enable using long row;
4》目标字段长度不够导致的字符串截断:一样平常是字符集、表字段长度不够。以是要根据源库选择合适的字符集,遵循源库是什么字符集,目标端也选择该字符集。目的端表字段长度不足,则需要手动将该字段长度增大,大概选择迁徙方式的时候,选择字符长度隐射关系为2(即将目的端字符串类型字段自动扩大2倍长度)。
5》留意外键束缚导致的迁徙失败:好比父表的数据没有迁徙,先迁徙了子表的数据。以是在迁徙数据的时候,可以分三步走,先迁徙表布局,再迁徙数据,最后迁徙索引、束缚等。
6》视图迁徙过程中次序题目报错:无效的用户对象;这个题目一样平常是由于在迁徙视图之前,没有将视图依赖的表迁徙过去。以是要遵循先迁徙表,再迁徙视图的次序。
五、数据库趋势
5.1、HTAP 数据库
HTAP,全称为Hybrid transaction and analysis processing,即混合事务和分析处置惩罚。HTAP是混合型关系数据库,是能同时提供OLTP和OLAP的混合关系型数据库。一样平常对OLTP的数据存储通常接纳行式构造,而OLAP接纳列式构造,OLTP( (On Line Transaction Processing,)是针对写优化计划的,OLAP(Online analytical processing)是针对读优化计划,OLTP的业务通常对实时要求比OLAP高许多,一样平常的做法是“”OLTP的数据定期会通过ETL(提取,转换,加载)工具把数据同步导入OLAP体系中,但这也导致OLAP的数据滞后,分析出来的结果时效性不够,对决策支持类如 BI 等体系的支持不够。随着越来越多的业务对于 AP 的要求越来越向着 TP 的指标看齐,对实时性要求同样高,要求 AP 体系能够实时反映出当前 TP 体系中的实际数据。同时,AP 体系应可以支持数据的更新等;人们渴望能够同时满足业务对于 TP 负载和 AP 负载的需求,基于此提出了HTAP,以实现混合 OLTP 和 OLAP 业务同时TP和AP,它打破了事务处置惩罚和分析之间的“墙”。它支持更多的信息和实时业务的决策。但真正的 HTAP 并不应该是简朴地将 TP 和 AP 相加:TP + AP ≠ HTAP。HTAP 肯定是将 TP 和 AP 举行高度融合的产物。
1)广义的HTAP数据库:
- 在关系数据模型上举行OLTP(联机事务处置惩罚)时具有强划一性; OLTP重要是根本的、日常的事务处置惩罚。强调数据库内存效率,强调内存各种指标的下令率,强调并发操作。
- 融合分布式能力,从而具有高扩展性以内存型主列存为基础+增量行存来实现支持HTAP;第一类:以列存为主,主列存重要处置惩罚OLAP类分析查询,增量行存负责OLTP类事务操作,并直接将更新数据定期归并到主列存中,以OLAP的性能很高,OLTP处置惩罚性能中等,代表:SAP HANA。第二类:分布式行存为主存储,列存为行存的副本,主节点在处置惩罚事务时写入日志,并异步式地向其他节点发送最新日志,通太过布式协议举行事务处置惩罚。此中,有部门节点会被选为列存节点,负责加快复杂查询,此类体系面向OLTP和OLAP的扩展性都很高,代表:TiDB。
2)狭义的HTAP数据库:指接纳行列混存或行列转化技能来同时支持事务能力和分析功能的数据库
- 行存为主,内存列存为辅:针对有需要的表会同时存在一份行存储和列存储,在列存储上做分析操作,在行存储上举行更新,定期同步到列存储里,可灵活指定需要接纳行存与列存的表。重要难点为哪些数据转为列存、如何用行存和列存回答查询,代表:Oracle;
- 主机行存、备机内存列存:备机通过日志复制转为内存的列存提供分析能力。代表体系为MySQL HeatWave,分析型查询由体系查询引擎基于代价估计后决定是否下推到内存列引擎中实行,常被访问的热数据将会留在内存中,不常使用的冷数据将会被压缩后持久化到外存中;
- 多副本行列共存,通过多副本举行存储,主接纳行存,副本接纳列存:代表性体系为TiDB,行存数据存储在TiKV中,列存数据存储在TiFlash中,行存和列存松耦合,通过异步复制Raft log的方式将更新从行存节点同步到列存节点,列存节点不参与Raft协议的日志提交和leader推举等分布式事务,具有较高负载隔离性和扩展性,数据分析奇怪度偏低;
- 列存为主,行存为辅:增量数据通过delta表定期转为列存,主列存重要处置惩罚OLAP类分析查询,增量行存负责OLTP类事务操作,并直接将更新数据定期归并到主列存中。此类体系由于以列存为主,以是OLAP的性能很高,且增量行存直接与列存连接,数据分析的奇怪度也很高。但缺点也很明显,就是OLTP处置惩罚性能中等,扩展性也不高,负载隔离性很低,代表体系为SAP HANA,主列存通过压缩、向量实行和OLAP多维分析等技能举行查询加快,同时利用CPU多级缓存机制优化事务处置惩罚。
随着数据技能的不停创新,未来 HTAP 数据库会进一步增强 AP 和 TP之间的连接和融合,在数据库内部实现 AP 和 TP 之间的内置流(Streaming)处置惩罚能力。通过将 ETL 工作内置于数据库当中,让 HTAP 数据库同时具备 AP、TP 和流(Streaming)能力。用户可以按需创建各类表,运用流处置惩罚能力将表连接,从而获得简朴、便捷的数据处置惩罚能力。另数据库与大数据技能边界不停模糊,呈现融合趋势,好比面向传统企业和中小企业的:湖仓一体;
相干资源:HTAP的关键技能有哪些?
5.2、列存储库:(代表Greenplum)
上面提到的HTAP,此中列存技能的发展是实现 HTAP 的基石;面向列存的数据,最早可以追溯到 1970 年,随着转置文件(transposed files)的出现,在面向时间的数据库(Time oriented Database)中使用转置文件举行医疗数据记录。Cantor 被称为是最早的一个与当代列存数据库相似的体系。
我们常见的传统数据库多以行存(Row-based)模型为主,它的数据物理上以行,页,段等方式举行分级管理的,表中的一行数据由 N 个数据属性构成,N 条数据构成一个页面,多个页面又构成了一个段,最后云云将浩繁的记录通过DBMS高效管理起来。对应行存方式构造数据,当在以分析型业务为主的体系中,分析所涉及的数据量通常非常多,将会有大量的记录会参与到分析计算中。而这些大量的记录需要从磁盘中读取到我们数据库的缓存中,由于数据是以行的方式构造,而我们的分析计算只需要特定的几个属性,但是需要把全部记录从需要从磁盘读取到缓存中,造成了不须要内存和IO资源的浪费;对此,列存储提出了DSM 模型,该模型中表的数据是按属性(列)的方式举行构造的,数据按属性形成一个新的子关系构造在一起,并独立于其他属性,这类数据在磁盘上存储时,我们可以对其举行压缩处置惩罚,从而节流存储,IO,内存等资源,另外,DSM 模型还属于 CPU Cache 友好型。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |