一、概述
互联网、物联网、云计算、人工智能的发展极大改变了信息系统建设的技术架构和发展方向,数据库成为 IT 系统中的性能、可靠性和扩展性焦点。数据库技术与形态进入持续数年的剧烈重塑期。
业界的技术探索为数据库产品带来新特性的同时,也导致产品能力的局限与缺失。时至今日,业界对新技术的产品化尝试,仍然未能达到数据库产品的理想状态——性能强悍、扩展灵活、功能全面、运维简便、安全无忧。
作为数据库软件的专业研发与服务者,达梦坚持产品的通用与简洁理念,希望为用户提供技术先进、同时更充满细节的产品。历经五年打磨,集未来与积淀于一体,推出新一代数据库产品 DM8。
二、通用性
- 兼容多种硬件体系和操作系统
云计算技术的迅猛发展,使得 IaaS 构成技术产生了巨大变化,传统的虚拟机环境部署数据库实例已经不再能满足用户更加多样化的云计算基础设施架构方案。
DM8 适应不断发展的云计算技术,能够支持多种云计算基础设施环境,用户可以在传统的虚拟机环境进行虚拟化部署,也可以通过 Docker 进行容器化部署,或在裸金属环境下部署 DM8 实例。在不同的平台环境下,DM8 能够提供与本地服务器相同的功能、安全和可靠性体验。
作为立足中国的本土数据库管理系统厂商,达梦公司的 DM8 在国产平台的兼容和支持方面做了大量工作。用户可以自由选择龙芯 2F、龙芯 3A/3B 系列,飞腾 1500A、飞腾 2000+ 64 系列,申威 410、申威 1610 系列,以及兆芯 ZX-D、华为 Hi1620、海光 Dhyana、鲲鹏 9 系列等多种不同 CPU 架构的服务器设备,及配套的中标麒麟、银河麒麟、中科方德、凝思、红旗、深之度、普华、思普等多种国产 Linux 操作系统发行版来部署 DM8。
除此之外,用户仍可基于 X86、Power 等传统硬件平台,以及 Windows、AIX、主流 Linux 发行分支如 RedHat、Debian、Ubuntu、CentOS 等操作系统作为 DM8 的运行平台。DM 兼容 SMP 和 NUMA 的运行环境。
- 编程语言、接口与开发框架支持
达梦持续跟踪业界技术发展,DM8 新增和改善了 56 项对多种编程语言、接口和开发框架的支持特性。
表 编程语言、接口与开发框架支持特性
| 编程语言 | 接口与开发框架 | 新增特性 |
|---|---|---|
| C/C++ | DPI(DM 原生编程接口) | 新增元数据获取接口、读写分离集群的主备切换自动处理、语句分配释放处理性能优化等 7 项特性 |
| DM OCI(OCI 风格兼容的 C 语言编程接口) | 新增大对象文件 BFILE、大字段的分片装载、衍生支持面向行业的 NCI 接口、旧版本 OCI 7.X 兼容等 7 项特性 | |
| DM OO4O | 实现 OO4O 接口的移植兼容 | |
| ODBC | 新增支持达梦高性能数据批量加载接口、UTF-16 编码格式支持 2 项新特性 | |
| OCCI | 新增支持返回游标类型、支持 clob/blob 类的相关方法 2 项特性 | |
| OOPI | 实现面向行业的 OOPI 接口移植兼容 | |
| OTL v4 | 实现针对 OTL v4 库的兼容支持 | |
| QT | 实现 QT 环境下兼容 DM8 的接口(QDM) | |
| 嵌入式 C(Pro*C) | 新增支持绑定的指示符变量为结构、上下文对象作用域识别、支持 CHAR_MAP=STRING 等 7 项特性 | |
| Python | Python3 | 实现满足 Python3 标准的 dmPython 包 |
| django | 支持 django1.9.6 | |
| sqlalchemy | 支持 sqlalchemy 方言包 | |
| JAVA | JDBC | JDBC 重构,显著提升 JDBC 执行性能;并新增 JDBC 4.2 规范的支持、适配 GeoServer、监控及日志模块功能改造等 9 项特性 |
| hibernate | 新增 hibernate spatial 方言包支持 | |
| .Net | .NET DATA PROVIDER | 增加支持读写分离集群的切换功能 |
| EFDmProvider | 新增支持 EF6.0 框架、支持 CodeFirst 模式及 AutoMigration 2 项特性 | |
| EFCore | 新增 EFCore.dm 支持 | |
| NHibernate | 新增对 Linux 平台的 NHibernate 支持 | |
| DDEX 插件 | 新增面向 Microsoft Visual Studio 的 DM8 DDEX 插件 | |
| Go | ODBC | 实现与 Go 语言 ODBC 框架的适配兼容 |
| PHP | - | 增加对 PHP5.6 和 PDO5.6、重构 PDO 的代码 2 项特性 |
| Node.js | - | 新增对 NODE.js 的支持 |
| 其他 | - | 新增列式结果数据集格式支持、DM_SVC.CONF 配置文件支持全局配置和特定服务的配置等 3 项特性 |
- 支持主流开发工具
支持的开发工具包括 PowerBuilder、Delphi、Visual studio、.NET、C++Builder、JBuilder 等;支持各种持久层组件技术,主要有 Hibernate、IBATIS sqlmap 等;支持主流系统中间件,包括 Weblogic、Websphere、Tomcat、Jboss、东方通、金蝶、中创中间件等。
- SQL 标准
DM8 支持 SQL92 及 SQL99 核心级规范。同时在标准化的 SQL 访问语言基础上,DM8 进一步扩展了 SQL 的特性支持。
在复杂文本匹配方面,DM8 增强了 SQL 对正则表达式的支持,现在 DM8 可在 DML 语句中的查询列表、过滤条件等位置嵌入 POSIX 风格的正则表达式,实现由 SQL 处理的复杂文本匹配。
在过程性语言支持方面,DM8 为外部函数(基于 C 语言或 Java 语言)引入了新的辅助插件式执行机制,既保持了外部函数执行的安全性,又避免直接创建子进程对服务器造成的稳定性破坏。同时 DM8 还对 DM7 引入的 JAVA CLASS 进行了升级,引入了继承机制,使得 DM JAVA CLASS 真正具备了面向对象语言不可或缺的多态特性。
DM8 进一步增强了 DM SQL 的调试功能,提供了命令行和图形化两种调试工具;改善了错误语句定位的准确性;新增了对包方法的调试能力;特别的,DM8 支持了对存储过程中执行的 SQL 的执行计划的准确跟踪能力,使得 DM8 SQL 调试工具不仅可用于调试程序错误,还可用于对复杂存储过程、存储函数、触发器、包、类等高级对象进行性能跟踪与调优。
- 多字符集与国际化
DM8 支持多种字符集,包括 Unicode、GBK18030 以及 EUC-KR 字符集。同时 DM8 针对系统管理工具、服务器端及系统错误信息均实现了简体中文和英文信息输出。
- 网络通信协议
DM8 实现了 IPv4 和 IPv6 的支持,同时 DM8 还实现了对 RDMA 协议的支持与优化。
三、基础功能
- 数据类型
DM8 支持常用基础数据类型:数值型、字符型、二进制类型、日期和时间类型、大文本、大对象、间隔类型等。
支持多种非关系型数据类型:json、xml、地理信息数据、几何类型等。
除此之外,还支持用户自定义数据类型。
- 数据库对象
DM8 支持以下数据库对象:用户、角色、存储过程、表、序列、约束、游标、视图、函数、触发器、外部连接。
约束支持:主键、联合主键、外键、唯一性约束、检查约束。
函数支持:计算函数、字符函数、日期函数、间隔函数、类型转换函数、位运算函数、聚合函数、格式化函数、系统信息函数等
支持数据库对象的创建、删除、更新以及属性查询等基本功能,同时也支持在线变更表结构、索引,以及对数据的增删改查操作。
- 操作符
DM8 支持逻辑操作符、比较操作符、运算操作符。
- 表连接
DM8 支持左外连接、右外连接、内连接、全连接。
- 条件表达式
DM8 支持对比表达式、逻辑表达式、空值表达式、等于表达式、模糊匹配、区间表达式、in 表达式、存在表达式及以上表达式的复合表达式。
- 分区表及其操作
DM8 分区表支持多种分区方式:哈希分区、范围分区、列表分区、间隔分区,支持多列分区,支持多种方式混合的组合分区即多级分区,分区方式不受 CPU 核数、集群节点数的影响。
支持对分区表进行如下操作:增/删分区、合并/拆分分区、交换分区、截断分区、重命名分区、分区表行迁移
- 执行计划
DM8 支持 SQL 执行计划功能,通过绑定 SQL 计划,可以使特定的 SQL 语句走预设的执行计划,从而实现预期的查询性能。
- 事务特性
DM8 支持事务的 ACID 特性,包括原子性、一致性、隔离性和持久。
- 死锁检测与处理
DM8 支持在并发执行过程中自动检测死锁,支持死锁超时自动回滚,超时时间可配置,具备死锁检测与处理记录功能。
- 全文索引与中文检索
DM8 支持全文索引,全文索引支持中文,支持 AND、OR、AND NOT 组合检索条件;投影查询,用户可以指定要返回的列;通配符查询,用户在模糊匹配时使用通配符来代替字符。
- 对象和系统信息
DM8 支持查看数据库对象信息(如表、索引、字段、约束等)以及数据库实例信息、表空间信息等功能。
DM8 提供日志查询功能,对于数据缓存、日志缓存、数据字典等系统信息,提供了对应的查看工具或视图。
- 日志、系统表/视图
DM8 提供丰富的日志和系统表、系统视图,记录系统的运行历史和状态,供日常监控运维使用。
DM8 具备对各类事件进行日志记录的功能,通过可读文本形式进行记录和展示,可通过日志查看操作内容、执行过程和结果;具备提示和警告功能,提示或警告数据库结构修改、数据库运行配置修改等重要操作;具备中文日志。
DM8 提供查询会话、进程/线程、用户等信息的系统视图,以及相关的图形化监控工具,可以满足用户查看会话标识、连接状态、用户标识、当前事务、最近命令等需求。对于等待会话的锁信息、统计信息等,达梦也提供了对应查看的视图,可以进行状态监控。
- 完整性
DM8 提供数据完整性管理功能,包括:表存储、索引存储、存储结构、视图定义、存储过程/函数定义的完整性,并提供完整性验证工具。
- 地理信息数据
达梦空间数据库是基于 DM8 的基础上,采用系统包的方式支持空间数据管理,因此自身具有关系型数据库的基础能力,同时又兼具空间数据存储和空间函数计算的强大能力。达梦空间数据库支持几何和地理类空间数据存储及计算,支持栅格类型数据存储及计算,支持拓扑类型数据存储及计算,提供 pgroutng 相关函数兼容,支持空间路径和网络分析功能,支持空间索引。支持 2 维和 3 维几何类型,支持 654 个空间函数,支持 24 个几何空间索引函数计算和 3 个地理运算。DMGEO 和 DMGEO2 支持了 SFA 标准,兼容适配了多种主流 GIS 平台如 ArcGis、MapGis、易智瑞等。支持空间数据导入导出,支持从其他数据库到达梦的空间数据迁移以及空间数据实时同步。
- 外部链接
DM 通过 dblink 提供异构数据库数据联机访问能力,dblink 支持国内外主流数据库。
四、可靠性
- 备份恢复
DM8 为备份还原提供了通用功能与多个改进的特性,包括:
支持故障恢复功能,包括系统故障重启后能正常运行且支持数据一致性,支持完全媒体故障恢复的能力。支持多种故障级别的恢复能力,包括文件损坏、数据页损坏、SQL 语句触发版本 bug、磁盘问题导致故障、磁盘空间不足导致故障和 CPU 占用过高导致实例被操作系统 kill 掉等情况。
引入基于 AP 独立进程的备份与还原,通过独立的 AP 进程设计,隔离了引入第三方备份带来的稳定性风险。
支持在运行状态下对数据库进行全库备份、部分备份和增量备份。这些功能可以通过使用 DMRMAN 工具进行脱机备份或使用客户端工具连接到数据库实例后,通过执行 SQL 语句进行联机备份来实现。部分备份支持用户级、模式级、B 树/堆表级。
支持备份数据的加密、压缩和存储。在使用控制工具进行备份还原时,可以进行多种选择:完全备份还是增量备份,是否对备份大小进行限制,备份是否压缩。
通过备份中断机制,用户可根据系统负载峰谷状态随时中止或恢复备份流程。
借助归档日志,用户可以进行基于时间点的备份和恢复操作。
为保证用户数据一致性,DM8 还提供了备份校验和归档修复功能,可通过命令或控制台工具进行备份数据的一致性校验,可将联机日志补齐到归档日志文件中,确保系统可以恢复到最新状态。
支持多种备份存储媒体,如本地磁盘、网络共享储存、磁带设备等,支持多种存储媒体的部分、完整数据库数据还原处理能力。达梦数据库提供了多种工具,如 CONSOLE 工具和 MANAGER 工具,用于进行备份和还原操作。
与 DM8 DSC 集群相匹配,备份还原系统还支持了 DSC 系统的备份与还原,用户可以将单机的备份在 DSC 上进行还原,亦可反向执行,将 DSC 的备份用于单机环境进行还原。
除此之外,DM8 共提供了 20 项备份还原功能的细节完善与丰富。
- 集群功能
达梦数据库致力于数据库全栈产品解决方案,提供了多种集群架构以应对各种业务场景,如:主备、读写分离、MPP、DSC、分布式等集群架构,还有图数据库、内存数据库等非关系型数据库架构可供选择。
DM 数据库集群支持在主流硬件环境和操作系统上进行配置和运行,配置内容包括:运维管理、容灾管理、日志管理、备份管理、监控等。
DM 共享存储集群 DM DSC 每个节点均支持写入且支持多节点间的缓存一致性;具备多节点负载均衡能力;支持不依赖第三方的自动存储管理系统(ASM) ,支持创建、添加、删除磁盘组及在线添加磁盘,支持新建、删除、截断及动态扩展文件。
- 检测报警
DM 提供数据库实例启动时对数据及数据文件进行错误检测的能力、加载不同格式/大小的数据文件时的数据检测功能、执行备份/恢复过程中异常故障时的报错功能。
- 数据守护容灾
DM 数据守护(Data Watch)是一种集成化的高可用、高性能数据库解决方案,是数据库异地容灾的首选方案。通过部署 DM 数据守护,可以在硬件故障(如磁盘损坏)、自然灾害(地震、火灾)等极端情况下,避免数据损坏、丢失,保障数据安全,并且可以快速恢复数据库服务,满足用户不间断提供数据库服务的要求。与常规的数据库备份(Backup)、还原(Restore)技术相比,数据守护可以更快地恢复数据库服务。随着数据规模不断增长,通过还原手段恢复数据,往往需要数个小时、甚至更长时间,而数据守护基本不受数据规模的影响,只需数秒时间就可以将备库切换为主库对外提供数据库服务。
DM 数据守护集群提供多种解决方案,可以配置成实时主备、MPP 主备、或读写分离集群,满足用户关于系统可用性、数据安全性、性能等方面的综合需求,有效降低总体投入,获得超值的投资回报。
DM 数据守护集群可以配置多个容灾备库,主库与备库之间可实时同步数据,同步延迟在毫秒级。当单个实例出现故障时,服务可以自动切换到其他节点,业务不中断。通过主备实时同步日志到其它节点实现 RPO 为 0 的数据零丢失,故障切换时间可以控制在秒级内。
DM 数据守护(Data Watch)的实现原理非常简单:将主库(生产库)产生的 Redo 日志传输到备库,备库接收并重新应用 Redo 日志,从而实现备库与主库的数据同步。DM 数据守护的核心思想是监控数据库状态,获取主、备库数据同步情况,为 Redo 日志传输与重演过程中出现的各种异常情况提供一系列的解决方案。
DM 数据守护系统结构参考图 4.1。主要由主库、备库、Redo 日志、Redo 日志传输、Redo 日志重演、守护进程(dmwatcher)、监视器(dmmonitor)组成。
图 4.1 数据守护系统结构图
数据库(Database)是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件),保存在物理磁盘或文件系统中。
数据库实例(Instance)就是一组操作系统进程(或者是一个多线程的进程)以及一些内存。通过数据库实例,可以操作数据库,一般情况下,我们访问、修改数据库都是通过数据库实例来完成的。
- 容灾部署
DM 主备集群支持远程容灾部署,可以在不同机房之间实现主备容灾。可以支持同城双中心容灾部署。通过达梦数据守护技术实现主备中心的数据同步,发生断电、火灾等区域级故障时,可以快速进行主备中心间切换,保证业务连续性,切换前后数据无丢失 RPO=0,切换用时 RTO 小于一分钟。
达梦数据库支持基于数据守护的两地三中心灾备环境部署方案,这种方案是主机房 + 同城机房实时备库 + 异地异步备库的部署模式,当发生地政等城市级灾难时,可以将业务手动切换至异地容灾机房,保障金融级核心业务运行,切换前后 RPO 小于 1 分钟,RTO 小于 10 分钟。
- 服务端稳定性
达梦数据库支持用户自定义的存储过程和函数。在编写过程和函数时,可以在异常处理部分添加代码来处理运行异常,同时设置保存点,在出现意外异常时可以回滚到保存点,防止事务出错,以确保数据库稳定运行。
- 网络容错
达梦数据库支持事务一致性,即使在网络中断时也能保证。事务一致性是指表示客观世界同一事务状态的数据,不管出现在何时何处都是一致的、正确的、完整的。
五、易用性
- 安装与升级
达梦数据库支持命令行或图形化的安装方式,提供图形化的组件管理向导工具,支持软件安装日志和配置日志,支持图形化或命令行的方式配置网络服务。
达梦数据量可依据安装环境提供相应的初始化参数配置,具备依据工作负载和运行环境提供配置参数修改的能力,修改后的数据库配置参数立即生效或重启生效,并在产品手册中对配置参数进行明确介绍。
达梦数据库支持版本升级,保证版本间功能和数据的兼容性,可提供差异说明文档,介绍当前版本与历史版本的变化与改进。
达梦数据库支持在不同 CPU 架构的节点上进行安装配置、升级,且安装配置、升级数据库的命令行或图形界面相同或相似。
- 重启
DM 支持命令行或图形化方式启停数据库服务,重启服务前后数据保持一致。
- 存储引擎
达梦数据库采用自研的数据库存储引擎,提供数据库级物理存储位置、逻辑存储参数配置功能,在数据库初始化阶段,提供数据库物理读写块大小的配置功能,提供数据库存储对象空间使用参数的配置功能,提供索引数据存储参数管理功能。
- 内存管理
达梦数据库采用自研的内存管理程序进行内存的自动化管理,根据数据库中子模块的不同功能,对内存进行了划分,区分为内存池、缓冲区、排序区、哈希区等,并采用了不同的管理模式,可依据物理内存自动规划并配置内存相关参数,依据内存和负载情况自动管理数据缓存区。
- SQL 检测与优化建议
达梦数据库支持 SQL 监测与优化建议功能。提供实时监测 SQL 执行过程中资源使用情况的功能。此外,达梦数据库还提供了查询计划的缓存管理功能,还能够提供 SQL 改写的优化建议。
- 集中式运维管理工具—DEM
DM8 提供了全新的基于 Web 开发的数据库管理服务平台(DEM)用于数据库的远程统一维护, DEM 不仅包含了与传统桌面工具系统(管理工具 Manager,数据迁移工具 DTS,性能监视工具 Monitor)对等的功能,还提供了集群部署(Deploy)功能、监控功能和告警功能。
用户通过 DEM 可快速和简单地在多台主机上部署 MPP 集群、DMDSC 集群、数据守护集群,以及 DM8 分布式计算系统,并可以远程启停集群服务和数据库实例。
图 DEM 集群部署
DEM 监控功能通过部署在远程主机上的代理,实时监控远程主机的运行状态(CPU 利用率、内存、IO、网络等)和远程主机上数据库实例的运行状态(事务、IO、会话等),并且能够保存历史数据和查询实例日志,通过对数据的分析提供相关的性能分析报告。
图 DEM 系统监控
DEM 告警功能依赖于监控功能。用户可对监控数据设置阀值(基线),当主机或数据库的相关数据达到阀值时,DEM 通过邮件或短信等形式通知管理员。快速预警系统中产生的问题,使其得到快速处理,保证系统的平稳运行。可提供报警相关 API 接口。
图 DEM 系统报警策略配置
在性能分析方面,DM8 DEM 为“时间线”监控分析方法提供了功能支持,运维人员可根据基于时间线的系统状态宏观曲线,选取特定时间点的 SQL 状态切片,方便的分析由异常 SQL 造成的系统状态波动问题。
图 DEM 时间切片的性能分析手段支持
DEM 支持性能状态统计功能,包括:TPS、QPS、高频 SQL、错误 SQL、慢 SQL、等待事件等。
DEM 慢 SQL 统计功能,统计内容包括:SQL 语句、执行次数、最大耗时、最小耗时平均耗时等。
- 动态管理视图
达梦数据库中的动态性能视图能自动收集数据库中的一些活动信息,系统管理员根据这些信息及时了解数据库运行的基本情况,为数据库的维护和优化提供依据。动态性能视图信息是数据字典的一部分,动态视图信息随着数据库的运行随时更改,具有即时性的特点。
DM 动态管理视图覆盖系统运行各个方面的信息。可以监控的信息类别包括:存储模块信息、内存管理信息、事务信息、线程信息、操作历史信息、MPP 配置信息等。
- C 语法的 PL/SQL
在 DM8 中,第一次实现了用 C 语言语法作为 PL/SQL 的一个可选语法,为那些了解 C 语言的程序员提供了很大的方便性,无需查看 PL/SQL 语法手册就可以很自如的完成一个语句块,对 SQL 程序员而言,这个功能无疑是他们梦寐以求的。
用 C 语法的 PL/SQL 时,可以自由调用一些系统内部函数、存储函数、过程等;可以定义像 C#中的一些数据类型,如 STRING 类型等;还可以定义 C 语言中的基本数据类型,如 INT 等;另外还支持全部的 SQL 类型。DM 内部定义的类类型包括 EXCEPTION 类、数组类型、游标类型等。
- 系统包
DM8 以系统包的形式提供了许多扩展功能,包括空间数据支持包 DBMS_GEO、日志分析工具包 DBMS_LOGMNR、定时任务管理包 DBMS_JOB、预警事件管理包 DBMS_ALERT 等。
由于支持的系统包较多,为了保持系统本身的轻量级,用户在使用系统包之前,应根据实际需要,有选择地手动执行与各包相对应的 SQL 脚本文件,即可完成对应系统包的加载,之后就可以无障碍地使用加载的系统包的功能了。
- 图形化开发测试工具
达梦数据库提供了一系列与数据库管理系统进行交互的开发调试工具,方便运维工作的开展,包括命令行工具、图形化的管理工具。
达梦提供图形化数据展示工具--达梦启智大数据可视化系统,支持多种数据源接入、配置和数据实时同步更新,系统内置多种行业模板,提供丰富的图形组件,实现 0 代码一键使用,自定义布局展现关键指标。利用大数据分析手段,依托业务数据分析模型,将分析结果通过可视化界面展示,充分展现数据价值,为用户提供最直观的决策支持。
DM 数据库配置助手 DBCA 工具提供了资源配置向导功能。
DM 的控制台工具支持创建/修改/删除数据库,以及配置数据库属性相关参数(如最大连接数等)。
DM 的系统管理工具 Manager 可以图形化、多层次地展示各种元数据界面和字典信息。支持以图形化的方式完成下列操作:导入/编辑/保存/执行 SQL 语句和 SQL 脚本功能、查看 SQL 执行计划和统计信息、复制/编辑现有数据库对象、创建/修改/删除用户(包括口令、资源限制项等)、创建/修改/删除角色、用户自定义角色、定义/修改/删除表空间、定义/修改/删除表(包括表结构、约束、自增列、存储配置等)、定义/修改/删除索引(包括索引结构、类型、存储配置等)、定义/修改/删除视图、定义/修改/删除约束等功能、创建/修改/删除触发器、设置触发器的触发条件和事件,创建/修改/调试/删除存储过程和函数、创建/修改/删除同义词、创建/修改/删除序列、创建/修改/删除物化视图、创建/删除自动化调度作业、配置/修改 IP 黑白名单、分析审计数据和配置审计策略、配置数据文件/日志文件/归档文件的存储位置、开启/停用归档、备份还原操作等。
DM 系统管理工具 Manager 支持图形化展示数据库管理的各种元数据界面,包括模式和非模式的数据字典信息等。此外,提供通过 ODBC、JDBC 等接口与第三方的图形化数据展示工具进行连接和交互,例如 Power BI、FineReport 等。这些工具可以根据用户的需求和喜好,选择不同的图表类型、颜色、样式等,将达梦数据库中的数据进行可视化呈现。用户可以通过这些工具来创建仪表盘、报表、地图等,实现数据的动态展示和交互。
DM8 为系统管理工具 Manager 提供了全新的 SQL 助手 2.0。SQL 助手 2.0 包含了 SQL 语法检查功能和 SQL 输入助手功能。SQL 语法检查功能对用户输入的 SQL 语句进行实时的语法检查,定位错误的 SQL 语法。SQL 输入助手能够对用户输入 SQL 进行实时的智能提示,提示的内容包括数据库对象和 SQL 关键字等。特别的,即使处于脱机状态,Manager 的 SQL 助手 2.0 也能支持上下文相关对象的智能提示。
图 DM8 Manager 管理工具的 SQL 助手 2.0
- 导入导出工具
DM8 为用户提供导入导出工具,支持导出不同格式,可以将不同格式数据导入到数据库中。支持不同级别和不同数据库对象的导入/导出功能,可以从文本文件或者其他上游数据源将数据导入,并支持 SQL 脚本进行导入导出。
- 运行环境提示与误删保护
近年来用户数据误删事故的大量曝光,使 IT 运维管理及开发人员充分意识到保证操作规范性,以及通过技术手段提示、防止乃至挽救误删数据的重要性。
DM8 通过多种技术手段,为技术人员提供尽可能的提示与挽救措施。
达梦为 DM8 管理工具新增了一个提示机制,可以向开发和运维人员提示当前操作界面所连接的数据库系统类型为生产库,或是开发/测试库。
图 DM8 管理工具生产环境提示
同时 DM8 服务端还新增了一个配置项,管理员可通过添加参数,来控制对表执行影响超过一定行数的更新/删除操作,并支持添加 HINT 的方式实时控制一个 SQL 语句是否开启此功能,或者设置其最大允许影响的行数。
事后补救机制方面,从 DM6 开始支持的“闪回查询”特性,在 DM8 中得到了继承,并新增了“闪回恢复”功能,用户可在开启该功能后,通过构造闪回查询语句找回指定时间点或 SCN 点的数据。
对于数据文件的误删除,DM8 提供表空间镜像机制,当运维人员不慎删除数据文件后,还可通过镜像表空间找回数据文件。
六、兼容性
为保障用户现有应用系统上的投资,降低系统迁移到 DM8 的难度,DM8 提供了许多与其他数据库系统兼容的特性,具体如下:
- 支持分析函数
包括 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 注释
-
静态数据字典视图
DM8 支持常用的静态视图,用户可以方便地查询数据库对象定义信息。主要包括:
1.用户本地对象定义视图。(前缀为 USER_):记录当前登录用户所拥有的对象的定义信息。包括 USER_OBJECTS、USER_SOURCE、USER_TABLES、USER_INDEXES 等。
2.所有用户的对象定义视图。(前缀为 DBA_):记录数据库中所有对象的信息。包括 DBA_OBJECTS、DBA_TABLES、DBA_INDEXES 等。
- 系统包
| 包名 | 功能 |
|---|---|
| DBMS _ADVANCED_REWRITE | 查询重写 |
| DBMS _BINARY | 读写二进制流 |
| DBMS _MEEADATA | GET_DDL 函数用于获取数据库对象 DDL 语句 |
| DBMS _ALERT | 预警事件 |
| DBMS _RANDOM | 随机数 |
| UTL_INADDR | 网络地址转换 |
| UTL_FILE | 读和写操作系统数据文件 |
| UTL_TCP | 与外部 TCP/IP 服务器通讯 |
| DBMS _SQL | 动态 SQL 访问数据库 |
| DBMS _SPACE | 展示所有物理对象和逻辑对象的存储空间信息 |
| DBMS _PAGE | 获取页信息 |
| DBMS_OUTPUT | 调试 PL/SQL |
| DBMS_JOB | 定时任务的创建 |
| DBMS_LOGMNR | 日志分析 |
DM8 进一步丰富了 SQL 特性支持,在上一代 DM7 的基础上进一步新增了 143 项 SQL 特性支持,可支持更广泛的、与多种数据库语法兼容的 SQL 使用方法。基于广泛的 SQL 语法兼容,用户和开发人员可以将原有的基于其他主流数据库的开发经验直接带入 DM8,无需学习不同的 SQL 编写方式,就能完成应用系统的迁移和开发工作。
表 SQL 语法兼容性
| SQL 特性分类 | 新增特性 |
|---|---|
| 程序包(Package)特性及系统包 | 新增 DBMS_LOB、DBMS_RLS、DBMS_LOCK 等 22 项系统包,及上下文 CONTEXT 支持、包方法互引用等 5 项 Package 特性改进 |
| 外部链接 | 新增外部链接事务支持、外部链接的远程批量插入、提供外部链接调用远程存储过程等 10 项特性 |
| 系统监控视图与系统函数 | 新增 DBA_TAB_COLS、ALL_TAB_COLS、DBA_PART_KEY_COLUMNS 等 13 项系统监控视图;新增 STDDEV_POP, VARIANCE, VAR_SAMP, VAR_POP 等 18 项分析函数和集函数;以及新增 6 项与用户自定义函数、系统标量函数相关特性 |
| DDL 相关特性 | 新增索引 VISIBLE/INVISIBLE、ALTER TABLE 添加多列、索引的 NSORT 选项、失效对象自动重编译等 11 项特性 |
| PL/SQL,T-SQL 特性 | 新增对象依赖特性、虚拟私有库 VPD、存储函数的 result_cache 选项等 10 项特性 |
| DML 相关特性 | 新增 WITH FUNCTION 功能、PARTITION OUTER JOIN、递归 CTE、正则表达式中的反向引用功能、时区类型数据相减、group 兼容性扩展、group 下推到视图的优化处理、语句块的 hint 支持、查询优化参数的自适应调整、复杂表达式的优化处理、in\exists 子查询合并、 DBLINK 优化增强、多列统计信息支持等大量特性 |
| 工具与其他特性 | 新增与 SQLPLUS 兼容的 PROMPT 命令、快速装载命令参数等 4 项特性 |
七、高性能
- 查询优化
DM 采用多趟扫描、代价估算的优化策略。系统基于数据字典信息、数据分布统计值、执行语句涉及到的表、索引和分区的存储特点等统计信息实现了代价估算模型,在多个可行的执行计划中选择代价最小的作为最终执行计划。同时,还支持查询计划的 HINT 功能,可供经验丰富的 DBA 对特定查询进行优化改进,进一步提高查询的效率和灵活性。
- 虚拟机
DM8 的 SQL 语句执行是仿照 JAVA 虚拟机(VM)模式实现的。这种运行机制可以有效提升数据计算以及存储过程/函数的执行效率,具有以下特性:
- 采用以字长为分配单位的标准堆栈,提高空间利用率,充分利用 CPU 的 2 级缓存,提升性能;
- 增加栈帧概念,方便实现函数/方法的跳转,为 PL/SQL 脚本的调试提供基础;
- 增加内存运行堆的概念,实现对象、数组、动态的数据类型存储;
- 采用面向栈的表达式计算模式,减少虚拟机代码的体积、数据的移动;
- 重新定义指令系统,增加对对象、方法、参数、堆栈的访问,便于实现 PL/SQL 的执行。
DM8 实现的虚拟机结构如下图所示:
图:虚拟机结构
- 多版本
DM8 实现了多版本机制,读操作不会被写操作阻塞。
系统会保留数据更新的历史记录,并将之保存在回滚段中。DM8 采用“历史回溯”策略,通过数据记录与回滚信息的链接关系,构造出更新数据的各个历史版本。
DM8 的多版本并发控制机制,数据页中仅存储最新记录,各个会话事务通过其对应可见事务集,利用回滚段信息组装出自身可见的版本数据。使用这种技术,不必保持冗余数据,避免了不必要的数据空间膨胀和碎片产生。
按照封锁力度的不同,分为共享锁、排他锁、意向共享锁和意向排它锁;按照封锁对象的不同,分为事务锁、表锁和字典锁,取消了行锁。
事务锁是新引入的一种封锁机制,以事务为封锁对象,具有节约锁资源、高并发、高效率的特性。事务锁采用了独特的实现机制,每个活动事务生成一把排他事务锁,结合 DM8 原生的多版本,对所有查询、插入操作不上锁,删除、更新操作不冲突不上锁,只有在多个事务同时删除、更新同一行记录时,才会产生事务封锁,有效避免大量行锁对系统资源的消耗。
多版本并发控制技术,使得查询操作不被阻塞,减少系统冲突,有效提高了系统并发处理效率,非常适合于高并发应用场景。
- 检查点
DM8 实现了全新的检查点机制。系统采用类似“蜻蜓点水”的策略,每次仅从缓冲区的更新链中摘取少量的更新页刷盘,反复多次进行刷页操作,从而避免长时间占用缓冲区。这种机制速度更快,降低了执行检查点时对系统运行的影响。
- DDL 实现
DM8 中实现了数据字典缓存技术。DDL 语句被转换为基本的 DML 操作,执行期间不必封锁整个数据字典,可以有效降低 DDL 操作对整体系统并发执行的影响。
- 工作线程
DM8 内核的工作线程机制包括普通内核线程和用户态线程两种。
普通内核线程的切换完全由操作系统决定。但操作系统无法了解进程内部的运行机制,只能采取通用的调度策略来管理各个内核线程。在高并发情况下,会产生很多无效的上下文切换,浪费了宝贵的 CPU 资源。用户态线程可以根据进程的实际情况制定调度策略,减少无效的线程切换,提升系统性能。
DM8 在少量内核线程的基础上,模拟了大量的用户态线程(一般来说工作线程数不超过 CPU 的核数,用户态线程由数据库的连接数决定)。用户态线程在内核线程内部自主调度,有效减少上下文切换;同时,由于内核线程数的减少,进一步降低了冲突产生的概率,提升了系统性能,非常适合高并发的应用场景。
- 查询内并行处理
DM8 为具有多个处理器 (CPU) 的计算机提供了并行查询,以优化查询执行和索引操作。并行查询其优势就是可以通过多个线程来处理查询作业,从而提高查询的效率。
在 DM8 数据库中有一个查询优化器,会对 SQL 语句进行优化后数据库才会去执行查询语句。
如果查询优化器认为查询语句可以从并行查询中获得较高的效率的话,就会将本地通讯操作符插入到查询执行计划中,为并行查询做准备。本地通讯操作符是在查询执行计划中提供进程管理、数据重新分发和流控制的运算符。在查询计划执行过程中,数据库会确认当前的系统工作负荷和配置信息,判断是否有足够多的线程允许执行并行查询。确定最佳的线程数后,在查询计划初始化确定的线程上展开并行查询执行。在多个线程上并行执行查询时,查询将一直使用相同的线程数,直到完成。每次从高速缓存中检索查询执行计划时,DM8 都重新检查最佳线程数。
- 数据批量处理
当数据读入内存后,按照传统策略,需要经过逐行过滤、连接、计算等操作处理后,才能生成最终结果集。在海量的数据处理场景下,必然产生大量重复的函数调用及数据的反复拷贝与计算代价。
在 DM 中引入了数据的批量处理技术,即读取一批,计算一批,传递一批,生成一批。数据批量处理,具有显而易见的好处:
(1)内存紧靠在一起的数据执行批量计算,可以显著提升操作系统 CACHE 命中率,从而提升内存处理效率。
(2)数据成批而非单行地抽取与传递,可以显著减少在上下层操作符间流转数据的函数调用次数。
(3)采用优化的引用方式在操作符间传递数据,可以有效降低数据复制的代价。
(4)系统标量函数支持批量计算,有效减少函数切换。
采用批量数据处理策略后,大批量数据运算的效率可以成倍提升
- 计划重用
DM 对于可以重复使用的语法分析计划与结果集进行了可重用处理,这样就大大减少了对类似的 SQL 语句进行语法分析的开销,对于提高系统运行效率有显著的效果。
执行计划重用。如果同一条语句执行频率较高,或者每次执行的语句仅仅是常量值不同,则可以考虑使用计划重用机制。避免每次执行都需要优化器进行分析处理,可以直接从计划缓存中获取已有的执行计划,减少了分析优化过程,提高执行率。
- 结果集缓存
DM8 提供查询结果集缓存策略。相同的查询语句,如果涉及的表数据没有变化,则可以直接重用缓存的结果集。查询结果缓存,在数据变化不频繁的 OLAP 应用模式,或存在大量类似编目函数查询的应用环境下有非常良好的性能提升效果。
在服务器端实现结果集缓存,可以在提升查询速度的同时,保证缓存结果的实时性和正确性。
- 系统缓冲区
DM8 采用了多缓冲区机制,将数据缓冲区划成多个分片。数据页按照其页号,进入各自缓冲区分片。用户访问不同的缓冲区分片,不会导致访问冲突。高并发情况下,这种机制可以降低全局数据缓冲区的访问冲突。
DM8 支持动态缓冲区管理,根据不同的系统资源情况,管理员可以配置缓冲区伸缩策略。
- 分段式数据压缩
DM8 支持数据压缩。将一个字段的所有数据,分成多个小片压缩存储起来。系统采用智能压缩策略,根据采样值特性,自动选择最合适的压缩算法进行数据压缩。而多行相同类型数据一起压缩,可以显著提升数据的压缩比,进一步减少系统的空间资源开销。
DM8 支持多种压缩方式,如:表空间级、表级、列级、备份文件级。
- 重做日志系统改进
为保证高压力下系统的平稳性,DM8 引入了重做日志的熔断机制和主动降压机制,确保并发的 SQL 事务和日志系统的平衡。
达梦在 DM7 引入了 Redo Log 的并行写入机制,在 DM8 中该机制得到了进一步增强:通过日志包(Redo Pack)设计,DM8 实现了日志的并行 + 乱序写入,可有效提升日志系统性能。
- 系统运行日志与监控
系统运行日志持续改善性能与灵活性,包括:引入异步日志机制,提升高并发负载下的系统响应性能;对同步日志进行性能优化。增加 SQL 日志的筛选记录机制,可根据 SQL 类型、SQL 耗时等因素组合指定日志策略,帮助系统运维人员对重点 SQL 进行监控。
丰富日志记录信息,新增用户名、线程号等信息;同时新增多日志文件支持,并为不同用户设置不同文件,降低运维人员对日志的分析难度。
重新梳理并优化系统动态性能视图的设计,提供动态性能视图共计 196 个,辅助运维管理人员对系统运行状态进行监控。
- 数据库对象与管理
DM8 在记录长度、分区表、临时表、表定义、索引等方面进行了大量细节改进,包括超长记录支持,去除 DM7 中单行数据长度不能超过页大小一半的限制,改善易用性。分区表引入间隔分区方式,按照插入数据实现自动分区子表的创建。对于多级分区表,实现大量细节改进,包括多级分区表下的加列、添加分区、二级子分区维护等,改善多级分区表的可维护性。
为临时表增加自治事务与空间限制,改善临时表的功能完备性。新增异步索引,改善索引创建和重建时并发读写事务的响应时间,提升系统性能对全文索引的适用性进行改进,使得分区表、包含聚集主键的表及堆表都可使用全文索引;同时改进全文索引同步机制,实现事务级实时同步,支持多事务并发填充。DM8 对于存在连接的物化视图增加了快速刷新支持;支持 ON COMMIT 刷新方式;支持嵌套物化视图,提升了复杂物化视图的刷新性能,进一步满足相关复杂应用的需求。
- 系统性能优化
DM8 的优化器、执行器以及配套存储、通信、并发等模块的优化改进多达 98 项目,部分重要改进如下:
DM8 上采用了统计信息的动态采样机制,可帮助优化器生成更加准确的计划。对于没有统计信息的过滤,可以在优化阶段实时获取统计信息;动态采样级别可以手工设置或系统决定;动态采样的结果可以保存以便后续语句使用。
针对数据分布倾斜的场景,DM8 新增的绑定变量窥视,可以使 SQL 计划得到明显优化;通过引入基于 K-means 的选择率聚类算法,能较好解决倾斜时数据分类问题。
针对并发密集写入场景,对 Purge 系统实现了并行化处理,有效改善了在多核心处理器上的资源利用能力。
针对新型高速网络设备,支持 RDMA 协议,显著改善集群内联网络通信延迟与吞吐量指标。
八、海量数据处理
- 达梦混合事务分析处理技术—行列融合 2.0
在 DM8 中,行列融合技术进入 2.0 阶段,并迈出了 DM8 向智能化方向发展的第一步。
行列融合特性于 DM8 中正式成为达梦数据库的重要特性之一,使 DM 数据库具备了在一套系统上同时支撑 OLTP 和 OLAP 两类业务的能力。在此基础上,行列融合 2.0 令 DM8 具备了事务-分析混合型业务处理的能力。
行列融合 2.0 技术包含两个关键特性,用以弥合行存储与列存储的鸿沟:变更缓存、高级日志。
通过变更缓存,用户能够有效提升在列式存储引擎上的高频数据操作性能,使得用于 OLAP 场景的数据库对象,也可实现高性能并发短事务服务,根据内部测试,基于变更缓存在列存储引擎上的高频插入操作性能,相对于传统的列式存储引擎提升了 10 倍~20 倍。
图 变更缓存机制原理
高级日志是介于行存储的业务表与列存储的分析表之间的自动化同步机制。得益于列式存储的强大数据压缩能力,DM 数据库用户能够以相对较低的存储空间成本,换取业务数据的完整列存副本,并基于列存副本数据执行分析型查询请求。在高级日志特性之前,用户不得不通过 ETL 等手段,在业务数据库和分析数据库之间进行数据同步。高级日志的引入使得用户不再需要为业务数据库和分析数据库分别准备两套数据实例,通过达梦分布式计算架构,在一个数据库集群实例上,即可为事务和分析业务同时提供数据服务,且该过程是自动执行,无需 ETL 过程。
图基于高级日志的行列融合及 SQL 请求的存储引擎辅助切换
在达梦的高级日志特性基础上,达梦优化器能够通过 Hint 辅助的方式,对常规查询和分析型查询所使用的存储引擎实现自由切换,使用户能够在一套业务系统中以更通用的方式应对混合负载请求。
通过透明分布式数据库、数据库弹性计算、行列融合 2.0 三项技术架构的融合,达梦希望向用户提供一个更从容应对大数据与云计算挑战的全新方法——不再因规模而不断妥协,而是化繁为简,合而为“一”。
- 大规模并行计算(MPP)
DM8 为达梦 MPP 集群增加了诸多改进,包括:
优化部署流程,结合数据守护,达梦 MPP 集群最多支持 8 副本的高可靠性。
优化器针对 MPP 集群,提供了诸多优化,使得 MPP 集群的执行计划更加智能、更加高效。如:通信代价估算,使得代价估算更加接近实际。LPQ 的自适应改进,可使 MPP 集群各节点的本地并行更加智能化。
为了支持海量数据处理要求,DM8 提供了大规模并行处理 MPP 架构,以极低的成本代价,为客户提供业界领先的计算性能。DM8 采用完全对等无共享(share-nothing)的 MPP 架构,支持 SQL 并行处理,可自动化分区数据和并行查询,无 I/O 冲突。
DM8 的 MPP 架构将负载分散到多个数据库服务器主机,实现了数据的分布式存储。采用了完全对等的无共享架构,每个数据库服务器称为一个 EP。这种架构中,节点没有主从之分,每个 EP 都能够对用户提供完整的数据库服务。在处理海量数据分析请求时,各个节点通过内部通信系统协同工作,通过并行运算技术提高查询效率。系统总体框架如下图:
图 MPP 架构示意图
九、高可用
在关键业务系统中,高可用与性能是用户、运维人员和开发人员最关注的两个核心问题。而截至目前为止,在传统企业级信息系统架构中,数据共享架构的数据库集群仍然是不可替代的技术方案。并且达梦相信,在未来的数据库技术发展趋势中,数据共享的架构仍然将起到不可替代的关键作用。
在 DM8 中,达梦为数据共享集群添加了新的关键性改进:
DM8 数据共享集群实现了更大规模的集群支持,用户和运维人员可以将原有的 2 节点 DM DSC 升级为更多节点,以取得更高的系统可靠性,同时通过合理的应用架构设计,还能带来系统响应时间和吞吐量的改善。
达梦还为 DM8 添加了用于异地容灾的数据守护支持,用户可以为本地 DM DSC 集群添加异地数据守护系统以提升容灾能力。异地数据守护的备用系统既可以是单机,也可以是级联部署的达梦 DSC 集群。基于 DSC+ 数据守护可为用户提供故障自动切换、实时归档、读写分离、DMDSC 主库或备库的重加入等特性。
图 DM8 DSC 的异地多活技术方案
DM8 还增加了 DSC Plus(DSCP)特性,DM8 DSCP 支持远程高可用镜像部署方式。用户可以基于经达梦认证的存储系统,实现一套 DSC 的计算和存储节点,分别部署在多个同城数据中心机房,实现存储、数据库服务的双活高可用。根据达梦测试,该 DSCP 方案在 60KM 距离上实现了数据库服务、存储设备的高可用,同时相对于本地 DSC 方案,该方案的性能衰减不到 5%,能同时提供高可用和高性能保证。
十、安全性
作为国内安全等级最高(注:同时通过安全等保四级与 EAL4+ 两大安全认证)的数据库管理系统,为用户保证数据安全提供了丰富的安全策略选择。DM8 在 DM8 基础上持续改进,不但继承了 DM8 已有的安全策略,满足 GB/T 20273 及 GB/T 18336 两大信息安全标准,同时还进行了多项安全性增强改进。
- 安全等级
达梦数据库是自主知识产权的高安全数据库管理系统,DM8 已通过公安部安全四级评测。
图安全等级
- 安全要求
达梦数据库符合安全可靠评测要求,具备中国软件评测中心出具的产品质量测试报告,可在国家保密科技测评中心网站查看相关证书(证书编号:国保测 2022C11686)。
- l 安全结构体系
图:安全结构体系
- 安全架构
DM 可通过参数配置“三权分立”或“四权分立”的安全机制,将系统中所有的权限按照类型进行划分,为每个管理员分配相应的权限,管理员之间的权限相互制约又相互协助,从而使整个系统具有较高的安全性和较强的灵活性。
使用“三权分立”的安全机制时,将系统管理员分为数据库管理员、数据库安全员和数据库审计员三种类型。
使用“四权分立”的安全机制时,将系统管理员分数据库管理员、数据库安全员、数据库审计员和数据库对象操作员四种类型。
- 审计分析与实时侵害检测
DM8 的审计记录存放在数据库外的专门审计文件中,保证审计数据的独立性。审计文件可以脱离数据库系统保存和复制,借助专用工具进行阅读、检索以及合并等维护操作。
DM8 提供审计分析工具 Analyzer,实现对审计记录的分析功能。用户能够根据所制定的分析规则,对审计记录进行分析,判断系统中是否存在对系统安全构成危险的活动。
DM8 提供了强大的审计实时侵害检测功能,用于实时分析当前用户的操作,并查找与该操作相匹配的审计分析规则。根据规则判断用户行为是否是侵害行为,以及确定侵害等级,并根据侵害等级采取相应的响应措施。响应措施包括:实时报警生成、违例进程终止、服务取消和账号锁定或失效。
- 强制访问控制
DM8 利用策略和标记实现数据库的强制访问机制。该功能主要是针对数据库用户、各种数据库对象、表以及表数据。控制粒度分为列级和记录级。同时 DM8 支持对所有客体进行标记,达到了安全四级的要求。用户操作数据时,不仅要满足自主访问控制的权限要求,还要满足用户和数据之间标记的相容性。这样,就避免了管理权限全部由数据库管理员一人负责的局面,可以有效防止敏感信息的泄露与篡改,增强系统的安全性。
在系统中,安全管理员可以在每个数据库中定义多种安全策略,每个安全策略包括一组预定义的标记组件,一个标记可以定义多个等级、范围和组,用来表示现实生活中的不同安全特征。安全管理员将这些安全策略应用于客体和用户上,就给用户、客体、表和元组等都指定了安全标记。在为用户应用策略时,同时可以授予策略特权。策略特权分为读、写特权,用来设置读写数据是否受策略影响以及改变行标记的特权配置。
用户访问表时,必须保证应用于表上的所有强制访问控制策略均应用于该用户,比较的先后顺序是等级、组和范围,否则访问被拒绝。若表上未应用任何强制访问控制策略,则用户只需满足自主访问控制条件即可。
- 通讯、存储加密
DM 支持 SSL 加密方式。
DM 提供了透明数据加密的功能。密钥生成、密钥管理和加解密过程由数据库管理系统自动完成,用户不可见。系统内置了常用的 DES,AES,RC4 等算法,以此来保护数据的安全性。
DM 支持独立的第三方加密引擎。
存储加密机制可以有效防止直接通过数据文件获取信息,支持多种级别的加密,如:实例级、表空间级、表级、数据库对象级、列级、联机日志级等。
- 弱口令扫描
DM8 提供了弱口令扫描功能,可供管理员对数据库账户口令强度进行检测,检测低强度口令的存在。
- 更安全的数据库消息协议实现
在 DM8 的基础上,DM8 更重视安全实现。DM8 对 DM 通信协议进行了全面审视和检查,对通信消息增加了检验处理,消除了潜在安全风险。
- 集群形态支持访问控制
DM8 在数据守护集群、MPP 集群及 DSC 集群形态下,也实现了完整的强制访问控制支持,适用于对敏感数据进行分级管理的业务用户,兼顾业务数据安全需求和高可用、高性能需求。
- 落盘数据全面加密
DM8 实现了落盘数据的“全面加密”。无论是数据文件,还是日志文件、备份文件、导入导出文件,均支持透明的存储加密,确保每一次写入磁盘的数据,均经过加密处理。
- 国产环境下的高强度密码算法支持
DM8 实现了在国产 CPU 环境下的第三方专用密码设备支持,可以为用户提供全平台覆盖的高强度数据存储加密和通信加密能力。
- 防篡改
DM8 支持对指定表的增删改操作,记录篡改校验信息;支持对指定表的数据变更进行全向追溯。
- 全密态
DM8 支持数据全生命周期均以密文形式存在,在存储、运算等各个环节保护数据的隐私安全。
支持对加密数据进行等值和非等值查询。
- 动态数据脱敏
数据库管理员可以针对不同数据列创建不同的数据脱敏策略从而达到对隐私数据进行保护的目的。
十一、可迁移性
- 便捷的数据迁移
DM 提供了多种高效、策略可定制、可容错的数据迁移工具,用于用户和开发人员从不同的数据库、文件数据源向 DM 进行数据迁移。如达梦数据实时同步工具 DMHS,可以实现增量的数据实时同步或者批量迁移,同时支持元数据、表数据、数据库对象快速迁移的功能,可以实现同构或者异构数据库之间的数据迁移;在迁移过程中可以处理各种异常情况,确保迁移的一致性。存量数据可以一次性迁移,也可以配置实时同步增量数据变更;支持主流数据库比如 Oracle、SQL Server、MySQL 等多种异构数据库之间的数据迁移。可以通过配置源库和目标库,实现不同类型数据库的迁移。
DM 提供 SQL、存储过程等价语法转换功能,并将转换后的语法在目标库进行校验,转换后语法可编译可执行。对于转换出错或校验出错的语法,它可以进行定位并引导用户进行错误校正后再次校验。这样可以尽量减少应用的修改,保障业务从源数据库顺利迁移到目标数据库,并可正常运行。
DM8 数据迁移工具提供了并行化数据迁移、批量数据快速加载等特性,以加速大规模数据的迁移。同时 DM8 迁移工具可以为每个迁移对象制定独立的迁移策略,如提交批大小、索引迁移选项等,并允许将迁移策略应用到批量的对象。对于迁移过程中出现的异常情况,DM8 迁移工具能够记录并保存异常信息,并按策略要求继续执行无相关性的后续迁移任务,改善迁移工作的流畅性。
图 DM8 可定制策略的数据迁移
- 数据比对修复
达梦支持对源和目标数据库数据进行数据一致性比对,可以生成详细的比对报告,可以依据比对结果进行数据修复。支持不同粒度的数据比对,可以比对整个库或指定的表,用户可以根据需求配置。
- 达梦柔性替代 TM 迁移解决方案
替换现有信息系统中的数据库服务是一种重大的系统变更,用户关注替换数据库可能造成的多种风险,如性能风险、可靠性风险等。达梦提供一种柔性替代的解决方案,采用渐进式而非激进的替代过程,给予用户充分的数据库替换风险评估与控制周期,可避免数据库替代的“硬着陆”。
图 达梦柔性替代迁移解决方案示意图
基于达梦异构数据同步系统 DMHS,可以实现从其他数据库向达梦的柔性替代。DM8 以及 DM8 的所有集群形态均已得到了达梦柔性替代解决方案的支持。
十二、多租户
DM 提供了数据库内核级的多租户能力。用户可以为不同应用划分相互隔离的逻辑资源,有效降低了管理海量数据集群的总体成本(TCO)。
通过多租户实现数据和资源的隔离,让每个数据库的用户感知不到其他用户实例的存在,并通过权限控制确保租户数据的安全性。数据库不允许跨租户的数据访问,以确保用户的数据资产没有被其他租户窃取的风险。
基本架构如下图:(其中 NPI 为网络服务器接口,暂不考虑 SDB、UDB 为主备、DSC 等环境。)
图:多租户整体架构
- 高扩展
达梦多租户提供了一种高扩展性的方案。对于某一个 UDB,用户可以根据业务的规模来对其资源进行扩容或缩容,且不影响其他 UDB 库;对于整个达梦多租户环境而言,用户可以增删 UDB 库,以快速满足生产业务的新增、关闭。
- 高隔离性
达梦多租户提供了一种强隔离性的方案。用户租用某个 UDB 库进行操作时,感受不到其他 UDB 库的存在,其他 UDB 出现故障时,当前正常对外服务的 UDB 也不会感知到;达梦多租户的资源控制使得 UDB 之间不会互相影响;达梦多租户权限控制使得数据不能被跨租户访问。通过多租户实现数据和资源的隔离,以保证不同租户的用户租用 UDB 时互不干扰。
- 透明性
达梦多租户架构逻辑对用户透明。透明性是指达梦多租户上任意一个 UDB 提供的功能与普通单机数据库基本无异。用户登录任意一个 UDB 库,即可获取完整的数据库服务。