达梦数据库架构
1、达梦数据库简介
DM8是达梦公司在总结DM系列产品研发与应用经验的基础上,坚持开放创新、简洁实用的理念,推出的新一代自研数据库。
DM8吸收借鉴当前先进新技术思想与主流数据库产品的优点, 融合了分布式、弹性计算与云计算的优势,对灵活性、易用性、可靠性、高安全性等方面进行了大规模改进,多样化架构充分满足不同场景需求,支持超大规模
并发事务处理和事务-分析混合型业务处理,动态分配计算资源,实现更精细化的资源利用、更低成本的投入。一个数据库,满足用户多种需求,让用户能更加专注于业务发展。
2、数据库架构
DM8 采用了独特的双存储引擎架构,行存储引擎和列存储引擎可相互配合、协同工作。同时实现了计算层和存储层的分离,同一内核既支持共享存储式集群,也支持分布式事务集群。
达梦数据库属于单进程多线程
dmserver | 主进程 |
---|---|
checkpoint线程 | 负责在定期或特定条件下将内存中的数据刷写到磁盘,确保数据库的持久性。这有助于恢复和保持数据的一致性。 |
I/O线程 | 负责处理与数据读写相关的输入输出操作,这通常包括与文件系统的交互以及数据库的数据文件和日志文件的读写。 |
监听线程 | 监听数据库服务端口,处理客户端的连接请求,为每个新的客户端请求分配处理资源。 |
日志写线程 | 负责将事务日志记录到日志文件中。这是确保事务在系统故障后能够恢复的关键部分。 |
MAL线程 | 内存分配器线程,负责管理内存请求和优化内存使用,以提高数据库操作的效率。 |
Purge线程 | 负责清理不再需要的数据库对象或数据,如删除的行或过期的事务日志,以释放空间。 |
Audit Flush线程 | 负责将审计日志记录从内存刷写到磁盘,以确保对数据库操作的审计跟踪。 |
调度线程 | 管理和调度其他线程的执行,确保线程按优先级和需求高效运行。 |
Task线程 | 执行特定的后台任务,如统计信息的收集、监控任务的执行等。 |
Worker线程 | 执行用户查询和事务处理,是数据库操作的主要执行者。 |
DB/UTHR线程 | 用户线程管理 |
ORACLE数据库启动
达梦数据库启动
可以看到达梦和Oracle的架构设计和操作灵活性方面的不同
Oracle数据库状态转换
Oracle的状态转换比较规范且分阶段清晰,符合其多进程架构的特点:
- 关闭 -> NOMOUNT:启动数据库实例但不加载数据库,仅初始化内存结构和后台进程。
- NOMOUNT -> MOUNT:加载控制文件,准备读取数据库文件但不允许用户访问。
- MOUNT -> OPEN:打开所有数据文件和日志文件,使数据库完全可用。
- OPEN -> 关闭:关闭数据库,逐步撤销OPEN和MOUNT所执行的操作,最终关闭数据库实例。
这种分阶段的启动和关闭过程有助于在数据库管理中进行更细粒度的控制,比如在恢复和备份时,可以选择在MOUNT阶段操作,不完全打开数据库,以保持操作的安全性。
DM数据库状态转换
达梦数据库的状态转换提供了更高的灵活性,允许除了MOUNT和SUSPEND之间的直接转换外,其他状态之间可以任意转换:
- 这种设计使得DM数据库可以更灵活地响应不同的运维需求,如从任何状态快速挂起或关闭,增强了对突发事件的处理能力。
- 不允许MOUNT和SUSPEND直接转换可能是因为从数据库装载到挂起状态涉及到复杂的内部状态调整,可能需要经过数据库完全打开才能正确处理。
对比和观点
- 架构差异:Oracle的多进程设计与DM的单进程多线程设计导致了状态管理上的不同策略。多进程设计在稳定性和隔离性上有优势,而单进程多线程设计在资源利用和操作效率上表现更好。
- 操作复杂度:Oracle的操作可能在某些情况下更复杂,因为需要严格按照状态转换规则来执行,而DM的灵活性可能在日常运维中提供更多便利。
- 使用场景:Oracle的严格状态管理非常适合需要高稳定性和安全性的大型企业和关键应用,而DM的灵活状态转换更适合追求高效率和快速响应的环境。
3、产品特性
3.1、通用性
DM8[数据库](https://link.csdn.net/?target=https%3A%2F%2Fgitcode.com%2FSequoiaDB%2FSequoiaDB%2Foverview%3Flogin%3Dfrom_csdn)兼容多种硬件体系,可运行于X86、X64、SPARC、POWER等硬件体系之上。DM8各种平台上的数据存储结构和消息通信结构完全一致,使得各种组件在不同的硬件平台上具有一致的使用特性。
DM8数据库产品实现了平台无关性,支持Windows系列、各版本Linux(2.4及2.4以上内核)、Unix、Kylin、[AI](https://link.csdn.net/?target=https%3A%2F%2Fgitcode.com%2FAUTOMATIC1111%2Fstable-diffusion-webui%2Foverview%3Flogin%3Dfrom_csdn)X、Solaris等各种主流操作系统。DM8数据库的服务器、接口程序和管理工具均可在32位/64 位版本操作系统上使用。
-
开发工具
****支持的开发工具包括 PowerBuilder、Delphi、Visua l studio、.NET、C++Builder、JBuilder 等;支持各种持久层组件技术,主要有Hibernate、IBATIS sqlmap 等;支持主流系统中间件, 包括 Weblogic、Websphere、Tomcat、Jboss、东方通、金蝶、中创中间件等。
-
SQL标准
****DM8支持 SQL92 及 SQL99 核心级规范。同时在标准化的 SQL 访问语言基础上,DM8 进一步扩展了 SQL 的特性支持。DM8 增加了对多种非关系数据的操作支持,包括 SQL 对 XML 数据、地理信息数据、 json 数据等多种数据的能力。在复杂文本匹配方面,DM8 增强了 SQL 对正则表达式的支持,现在 DM8 可在 DML 语句中的查询列表、过滤条件等位置嵌入 POSIX 风格的正则表达式,实现由 SQL 处理的复杂文本匹配。在过程性语言支持方面,DM8 为外部函数(基于 C 语言或 Ja va 语言)引入了新的辅助插件式执行机制,既保持了外部函数执行的安全性,又避免直接创建子进程对服务器造成的 稳定性破坏。同时 DM8 还对 DM7 引入的 JAVA CLASS 进行了升级,引入了继承机制,使得DM JAVA CLASS真正具备了面向对象语言不可或缺的多态特性。DM8 进一步增强了 DM SQL 的调试功能,提供了命令行和图形化两种调试工具;改善 了错误语句定位的准确性;新增了对包方法的调试能力;特别的,DM8 支持了对存储过程 中执行的SQL的执行计划的准确跟踪能力,使得DM8 SQL调试工具不仅可用于调试程序错误,还可用于对复杂存储过程、存储函数、触发器、包、类等高级对象进行性能跟踪与调优。
-
网络通信协议
****DM8数据库支持多种网络协议,包括IPV4协议、IPV6协议等。完全支持Unicode、GBK18030等常用字符集。
3.2、兼容性
为保障用户现有应用系统上的投资,降低系统迁移到 DM8 的难度,DM8 提供了许多与其他[数据库](https://link.csdn.net/?target=https%3A%2F%2Fgitcode.com%2FSequoiaDB%2FSequoiaDB%2Foverview%3Flogin%3Dfrom_csdn)系统兼容的特性,具体如下:
支持分析函数包括AVG、COUNT、MAX、MIN、SUM、RANK、DENSE_RANK、ROW_NUMBER。支持层次查询包括相关伪列 LEVEL、CONNECT_BY_ISLEAF、CONNECT_BY_ISCYCLE。支持伪列包括 ROWNUM、ROWID、UID、USER、TRXID。方差集函数实现包括AVG、MAX、MIN、SUM、COUNT(DISTINC | ALL)、 VARIANCE、STDDEV、STDDEV_SAMP。支持常用系统函数库包括 TO_CHAR、LENGTH、SUBSTR、TO_DATE、SYSDATE 等。复合数据类型兼容特性包括%TYPE、%ROWTYPE、记录类型等。支持循环结构包括 LOOP 语句、FOR 语句、while 语句等。数据类型兼容性包括 VARCHAR2、NUMBER、BLOB、CLOB 等。外连接(+)语法支持、多列 IN 实现以及相关的优化、按名调用存储过程功能、支持 comments 注释、静态数据字典视图以及部分系统包。
3.3高性能
支持列存储、数据压缩、物化视图等面向联机事务分析场景的优化选项;通过表级行存储、列存储选项技术,在同一产品中提供对联机事务处理和联机分析处理业务场景的支持;具有对数据分区管理能力,支持对表进行范围分区、哈希分区、列表分区、垂直分区的分区机制,支持多级分区机制。支持分区并发数据处理,包括文字分段并发读取,数据转换规则并发执行,数据并发快速装载,支持100TB级数据处理能力单节点(4路6核,512G内存以上配置)联机事务处理性能达到60,000TPS(参照TPC-C性能基准,TpmC>2,000,000);支持2000个以上的高并发处理。
3.4高可用
可配置数据守护系统(主备),自动快速故障恢复,具有强大的容灾处理能力。支持物理备份和恢复,支持在线和离线备份,支持对库、表空间、表、归档等多种粒度的备份,支持基于备份集的方式进行备份,支持完全备份、增量备份的备份和还原,支持基于时间点的还原。支持逻辑备份恢复,可对库、用户、表进行备份和恢复,支持压缩、并行处理,支持跨平台恢复。支持逻辑备份恢复和物理备份恢复,并且备份文件可以跨windows和linux、32位和64位等不同的操作系统平台。
3.5跨平台
DM8 在国产平台的兼容和支持方面做了大量工作。用户可以自由选择龙芯 2F、龙芯 3A/3B 系列,飞腾 1500A、飞腾 2000+ 64 系列,申威 410、申威 1610 系列,以及兆芯 ZX-D、华为 Hi1620、海光 Dhyana、鲲鹏 9 系列等多种不同 CPU 架构的服务器设备,及配套的中标麒麟、银河麒麟、中科方德、凝思、 红旗、深之度、普华、思普等多种国产 Linux 操作系统发行版来部署 DM8。
3.6平滑迁移
提供迁移评估和自动迁移工具,使[数据库](https://link.csdn.net/?target=https%3A%2F%2Fgitcode.com%2FSequoiaDB%2FSequoiaDB%2Foverview%3Flogin%3Dfrom_csdn)迁移更加便捷;支持柔性替换,降低系统迁移风险。
特征 | 分类 | DM8 | GAUSSDB |
---|---|---|---|
产品架构 | 物理架构 | 单机/一主一备/一主多备 | 单机/一主一备/一主多备 |
通用性 | 可运行于X86、X64、SPARC、POWER等硬件体系,支持Windows系列、各版本Linux(2.4及2.4以上内核)、Unix、Kylin、AIX、Solaris等各种主流操作系统。支持龙芯 2F、龙芯 3A/3B 系列,飞腾 1500A、飞腾 2000+ 64 系列,申威 410、申威 1610 系列,以及兆芯 ZX-D、华为 Hi1620、海光 Dhyana、鲲鹏 9 系列等多种不同 CPU 架构的服务器设备,及配套的中标麒麟、银河麒麟、中科方德、凝思、 红旗、深之度、普华、思普等多种国产 Linux 操作系统。 | x86服务器支持Kylin V10 SP1( intel、 hygon)。ARM服务器支持Kylin V10 SP1( kunpeng、 phytium)。 | |
并行优化 | 存储格式 | 行列混存 | 行列混合存储 |
压缩粒度 | 表级和列级压缩 | 表级和列级压缩 | |
压缩算法 | SNAPPY 、ZLIB压缩算法 | RLE、DELTA、BYTEPACK/BITPACK、LZ4、ZLIB、LOCAL DICTIONARY等 | |
索引类型 | 唯一索引、函数索引、位图索引、位图连接索引、全文索引、空间索引、数组索引、普通索引、分区索引 | ||
其他 | 全文检索 | ||
并发度 | 上百并发 | ||
备份恢复 | 数据高可用 | 支持全量备份、增量备份、脱机备份、表空间备份、表备份、归档日志、重做日志 | 行存表(ASTORE存储引擎)支持的索引类型:btree(行存表缺省值)、gin、gist。行存表(USTORE存储引擎)支持的索引类型:ubtree。列存表支持的索引类型:Psort(列存表缺省值)、btree、gin。 |
SQL核心能力 | ANSI SQL标准 | 支持 | 支持 |
存储过程 | 支持 | 支持 | |
SQL兼容性 | 兼容Oracle为主 | 无侧重 | |
事务ACID | 支持 | 支持 | |
数据分区 | 范围分区、哈希分区、列表分区、组合分区、间隔分区 | 范围分区、列表分区、哈希分区、间隔分区、二级分区 | |
读写并发 | / | MVCC | MVCC |
配套工具 | 运维监控 | NMON开源性能监控工具 | TPOPS |
sql命令行 | disql | gsql | |
图形化开发 | DM Manager | 第三方dbeaver,navicat等 | |
数据导入导出 | dmfldr | gs_restore,gs_dump | |
异构数据迁移工具 | DM DTS迁移工具支持:Oracle、MySQL、DB2、SQLSever、PostgreSQL语法迁移与数据迁移。 | DRS,UGO迁移工具支持MySql、SQL Server、ORACLE、PostgreSQL、Mongodb等语法迁移与数据迁移 | |
文档能力 | 公开文档详细程度 | 非常详细 | 非常详细 |
3.6 工具生态完整性
序号 | 工具产品类型 | Oracle | DM | 功能 | 差异 |
---|---|---|---|---|---|
1 | 管理和开发 | sgl developer | DM Manager | 客户端运维开发对表或其他对象的管理 | 类同 |
2 | 命令行 | sqlplus | disql | 服务器端运维开发对表或其他对象的管理 | 类同 |
3 | 备份 | RMAN | DMRMAN | 物理备份 | DMRMAN只支持脱机备份 |
4 | 备份 | exp/imp | dexp/dimp | 逻辑备份 | dexp不能导出远程服务器端的数据到本地 |
5 | 高可用 | RAC | DSC | 实例级的冗余,共享存储ASM | 类同 |
6 | 高可用 | DG | DM DATAWATCH | 数据库级的几余 | 类同 |
7 | 迁移 | sqlldr | dmfldr和DTS | 快速数据装载,多用于异构平台迁移 | 类同,DTS图形化操作便捷 |
8 | 同步 | OGG | DMHS | 读写分离 | 类同 |
9 | 监控 | OEM | DEM | 监控数据库运行和负载情况 | 监控指标有一定差异 |
10 | 审计 | audit开关 | analyzer审计分析工具 | 建立审计规则,然后分析审计情况 | dm三权分立,图形化操作审计更便捷 |