达梦数据库发展及特点
达梦数据库经过不断的迭代与发展,在吸收主流数据库产品优点的同时,也逐步形成了自身的特点,受到业界和用户广泛的认同。
达梦数据库发展
随着信息技术不断发展,达梦数据库也在不断的演进,从最初的数据库管理系统原型 CRDS 发展到 2019 年的 DM8 。1988 年原华中理工大学(华中科技大学前身)研制成功了我国第一个国产数据库管理系统原型 CRDS,这可以看作是 DM 的起源。1991 年,该团队先后完成了军用地图数据库 MDB、知识数据库 KDB、图形数据库 GDB、以及语言数据库 ADB,为达梦数据库的诞生奠定了基础。1992 年原华中理工大学达梦数据库研究所成立, 1993 年该研究所研制的多用户数据库管理系统通过了鉴定,标志着达梦数据库 1.0 版本的诞生。1996 年 DM2 的研制成功,打破了国外数据库垄断,1997 年中国电力财务公司华中分公司财务应用系统首次使用国产数据库 DM2,随后,在全国 76 家分子公司上线使用。
2000 年,我国第一个数据库公司——达梦数据库公司成立,同年 DM3 诞生,经专家评定达到了国际先进水平,DM3 采用独特的三权分立的安全管理体制和改进的多级安全模型,使其安全级别达到了 B1 级,并具有 B2 级功能,高于当时同类进口产品。2004 年,推出的 DM4 性能远超基于开源技术的数据库,并在国家测试中保持第一。2005 年,DM5 在安全可靠及产品化方面得到了完善,荣获了第十届软博会金奖。2009 年,DM6 与国际主流数据库产品兼容性得到了大幅提升,在政府、军工等对安全性要求更高的重要行业领域得到广泛应用。2012 年,新一代达梦数据库管理系统 DM7 发布,该版本支持大规模并行计算、海量数据处理技术,是理想的企业级数据管理服务平台,也是最早获得自主原创证书的国产数据库。2019 年,达梦数据库管理系统 DM8 发布。
2016 年以来达梦大数据平台在公安、政务、信用、司法、审计、住建、国土、应急等 30 多个领域得到了广泛应用。
达梦数据库特点
达梦数据库在不断的发展过程中,每一个版本都在适应时代需求的同时具备了一定的特点,这里主要介绍 DM8 的主要特点。DM8 采用全新的体系架构,在保证大型通用的基础上,针对可靠性、高性能、海量数据处理和安全性做了大量的研发和改进工作,在提升数据库产品的性能的同时,也提高了语言的丰富性和可扩展性,能同时兼顾 OLTP(联机事务处理)和 OLAP(联机分析处理)请求,从根本上提升了数据库产品的品质。
1.通用性强
DM8 产品的通用性主要体现在以下几个方面。
(1)硬件平台支持
DM8 兼容多种硬件体系,可运行于 X86、SPARC、Power 等硬件体系之上。DM8 在各种平台上的数据存储结构和消息通信结构完全一致,使得 DM8 各种组件在不同的硬件平台上具有一致的使用特性。
(2)操作系统支持
DM8 实现了平台无关性,支持 Windows 系列、Linux(2.4 及 2.4 以上内核)、UNIX、Kylin、AIX、Solaris 等主流操作系统。DM8 的服务器、接口程序和管理工具均可在 32 位或者 64 位版本操作系统上使用。
(3)应用开发支持
①开发环境支持
DM8 支持多种主流集成开发环境,包括 PowerBuilder、Delphi、Visual Studio、.NET、C++Builder、Qt、JBuilder、Eclipse、IntelliJ IDEA、Zend Studio 等。
②开发框架技术支持
DM8 支持各种开发框架技术,主要有 Spring、Hibernate、iBATIS SQLMap、Entity Framework、Zend Framework 等。
③中间件支持
DM8 支持主流系统中间件,包括 WebLogic、WebSphere、Tomcat、Jboss、东方通 TongWeb、金蝶 Apusic、中创 InfoWeb 等。
(4)标准接口支持
DM8 提供对 SQL92 的特性支持以及 SQL99 的核心级别支持;支持多种数据库开发接口,包括 OLEDB、ADO、ODBC、OCI、JDBC、Hibernate、PHP、PDO、DB Express 以及 .NET DataProvider 等。
(5)网络协议支持
DM8 支持多种网络协议,包括 IPv4 协议、IPv6 协议等。
(6)字符集支持
DM8 完全支持 Unicode、GBK18030 等常用字符集。
(7)国际化支持
DM8 提供了国际化支持,服务器和客户端工具均支持简体中文和英文来显示输出结果和错误信息。
2.高可用性
为了应对现实中出现的各种意外,比如电源中断、系统故障、服务器宕机、网络故障等突发情况,DM8 实现了 REDO(重做)日志、逻辑日志、归档日志、跟踪日志、事件日志等,比如:REDO(重做)日志记录数据库的物理文件变化信息,逻辑日志则记录了数据库表上的所有插入、删除、更新等数据变化。通过记录日志信息,使得系统的容灾能力得到增强,大大提高了系统的可用性。
(1)快速的故障恢复
DM8 通过 REDO 日志记录数据库的物理文件变化信息。当发生系统故障的时候(如机器掉电),系统通过 REDO 日志进行重做处理,恢复用户的数据和回滚信息,从而使数据库系统从故障中恢复,避免数据丢失,确保事务的完整性。相对达梦以前的版本,DM8 改进了 REDO 日志的管理策略,采用逻辑 LSN(日志序列号)值替代了原有的物理文件地址映射到LSN生成机制,极大简化了 REDO 日志的处理逻辑。
REDO 日志支持压缩存储,可以减少存储空间开销。DM8 在故障恢复时采用了并行处理机制执行 REDO 日志,有效减少了重做花费的时间。
(2)可靠的备份与还原
DM8 可以提供数据库或整个服务器的冷/热备份以及对应的还原功能,达到数据库数据的保护和迁移。DM8 支持的备份类型包括物理备份、逻辑备份和 B 树备份,其中B树备份是介于物理备份和逻辑备份之间的一种形态。
DM8 支持增量备份,支持 LSN 和时间点还原;可备份不同级别的数据,包括数据库级、表空间级和表级。支持在联机、脱机的状态下进行备份、还原操作。
(3)高效的数据复制
DM8 的复制功能基于逻辑日志实现。主机将逻辑日志发往从机,而从机根据日志模拟事务与语句重复主机的数据操作。相对语句级的复制,逻辑日志可以更准确地反映主机数据的时序变化,从而减少冲突,提高数据复制的一致性。
DM8 提供基于事务的同步复制和异步复制功能。同步复制即所有复制节点的数据是同步的,如果复制环境中的主表数据发生了变化,这种改变将以事务为单位同步传播和应用到其他所有复制节点。异步复制是指在多个复制节点之间,主节点的数据更新需要经过一定的时间周期之后才反映到从节点。如果复制环境中主节点要被复制的数据发生了更新操作,这种改变将在不同的事务中被传播和应用到其他所有从节点。这些不同的事务间可以间隔几秒、几分钟、几小时,也可以是几天之后。复制节点之间的数据在一段时间内是不同步的,但传播最终将保证所有复制节点间的数据一致。数据复制功能支持一到多、多到一、级联复制、多主多从复制、环形复制、对称复制以及大数据对象复制。
(4)实时的主备系统
主备系统是 DM8 提高容灾能力的重要手段。系统由一台主机与一或多台备机构成,实现数据的守护。主机提供正常的数据处理服务。备机则时刻保持与主机的数据同步。一旦主机发生故障,备机中的一台立刻可以切换成为新的主机,继续提供服务。主备机的切换是通过服务器、观察器与接口自动完成的,对客户端几乎完全透明。
DM8 的主备系统基于优化后的 REDO 日志系统开发,其功能更加稳定可靠。主备机间传递压缩的日志数据,通信效率大大提升。DM8 主备系统提供了配置模式,可在不停机状态下在单机系统与主备系统间平滑变换。
DM8 的主备系统可提供全功能的数据库支持,客户端访问主机系统没有任何功能限制,而备机同样可以作为主机的只读镜像支持客户端的只读查询请求。
3.高性能
为了提高数据库在数据查询、存储、分析、处理等方面的性能,DM8 采用了多种性能优化技术与策略,主要包括:
(1)查询优化
DM8 采用多趟扫描、代价估算的优化策略。系统基于数据字典信息、数据分布统计值、执行语句涉及的表、索引和分区的存储特点等统计信息实现了代价估算模型,在多个可行的执行计划中选择代价最小的作为最终执行计划。同时,DM8 还支持查询计划的 HINT(一种 SQL 语法)功能,可供经验丰富的 DBA 对特定查询进行优化改进,进一步提高查询的效率和灵活性。
DM8 查询优化器利用优化规则,将所有的相关子查询变换为等价的关系连接。相关子查询的平坦化,极大地降低了代价优化的算法复杂程度,使得优化器可以更容易地生成较优的查询计划。
(2)查询计划重用
SQL 语句从分析、优化到实际执行,每一步都需要消耗系统资源。查询计划的重用,可以减少重复分析操作,有效提升语句的执行效率。DM8 采用参数化常量方法,使得常量值不同的查询语句,同样可以重用查询计划。经此优化后的计划重用策略,在应用系统中的实用性明显增强了。
(3)查询内并行处理
DM8 为具有多个处理器(CPU) 的计算机提供了并行查询,以优化查询执行和索引操作。并行查询的优势就是可以通过多个线程来处理查询作业,从而提高查询的效率。
在 DM8 中有一个查询优化器,当对 SQL 语句进行优化后数据库才会去执行查询语句。如果查询优化器认为查询语句可以从并行查询中获得较高效率,就会将本地通信操作符插入到查询执行计划中,为并行查询做准备。本地通信操作符是在查询执行计划中提供进程管理、数据重新分发和流控制的运算符。在查询计划执行过程中,数据库会确认当前的系统工作负荷和配置信息,判断是否有足够多的线程允许执行并行查询。确定最佳的线程数后,在查询计划初始化确定的线程上展开并行查询执行。在多个线程上并行执行查询时,查询将一直使用相同的线程数,直到完成。每次从高速缓存中检索查询执行计划时,DM8 都重新检查最佳线程数。
(4)查询结果集的缓存
DM8 提供查询结果集缓存策略。相同的查询语句,如果涉及的表数据没有变化,则可以直接重用缓存的结果集。查询结果缓存,在数据变化不频繁的 OLAP 应用模式,或存在大量类似编目函数查询的应用环境下有非常良好的性能提升效果。
在服务器端实现结果集缓存,可以在提升查询速度的同时,保证缓存结果的实时性和正确性。
(5)虚拟机执行器
DM8 实现了基于堆栈的虚拟机执行器。这种运行机制可以有效提升数据计算以及存储过程/函数的执行效率,具有以下特点:采用以字长为分配单位的标准堆栈,提高空间利用率,充分利用 CPU 的 2 级缓存,提升性能;增加栈帧概念,方便实现函数/方法的跳转,为 PL/SQL 脚本的调试提供了基础;采用内存运行堆的概念,实现对象、数组、动态的数据类型存储;采用面向栈的表达式计算模式,减少虚拟机代码的体积、数据的移动;定义了指令系统,增加了对对象、方法、参数、堆栈的访问,便于 PL/SQL 的执行。
(6)批量数据处理
当数据读入内存后,按照传统策略,需要经过逐行过滤、连接、计算等操作处理后,才能生成最终结果集。在海量的数据处理场景下,必然产生大量重复的函数调用及数据的反复复制与计算代价。
DM8 引入了数据的批量处理技术,即读取一批、计算一批、传递一批、生成一批。数据批量处理具有显而易见的好处:内存紧靠在一起的数据执行批量计算,可以显著提升 Cache(缓存)命中率,从而提升内存处理效率;数据成批而非单行地抽取与传递,可以显著减少在上下层操作符间流转数据的函数调用次数;采用优化的引用方式在操作符间传递数据,可以有效降低数据复制的代价;系统标量函数支持批量计算,可以进一步减少函数调用次数。DM8 采用批量数据处理策略,比一次一行的数据处理模式快 10~100 倍。
(7)异步检查点技术
DM8 采用更加有效的异步检查点机制。新检查点机制采用类似“蜻蜓点水”的策略,每次仅从缓冲区的更新链中摘取少量的更新页刷新。反复多次刷页达到设定的总数比例后,才相应调整检查点值。与原有检查点长时间占用缓冲区的策略相比,逻辑更加简单,速度更快,对整体系统运行影响更小。
(8)多版本并发控制
DM8 采用“历史回溯”策略,对于数据的多版本并发控制实现了原生性支持。DM8 改造了数据记录与回滚记录的结构。在数据记录中添加字段记录最近修改的事务 ID 及与其对应的回滚记录地址,而在回滚记录中也记录了该行上一更新操作的事务ID与相应回滚记录地址。通过数据记录与回滚记录的链接关系,构造出一行数据的完整更新历史各版本。
DM8 的多版本采用了并发控制技术,数据中仅存储最新一条记录,各个会话事务通过其对应可见事务集,利用回滚段记录组装出自己可见的版本数据。使用这种技术,不必保持冗余数据,也就避免了使用附加数据整理工具。多版本并发控制技术使得查询与更新操作间互不干扰,有效提高了高并发应用场景中的执行效率。
(9)海量数据分析
DM8 提供 OLAP 函数,用于支持复杂的分析操作,侧重对决策人员和高层管理人员的决策支持,可根据分析人员的要求快速、灵活地进行大数据量的复杂查询处理,并且以直观易懂的形式将查询结果提供给决策人员,以便他们准确掌握单位的运转状况,了解被服务对象的需求,制定正确的方案。
(10)数据字典缓存技术
DM8 中实现了数据字典缓存技术。DDL 语句被转换为基本的DML操作,执行期间不必封锁整个数据字典,可以有效降低 DDL 操作对整体系统并发执行的影响。在有较多 DDL 并发操作的系统中可有效提升系统性能。
(11)可配置的工作线程模式
DM8 的内核工作线程同时支持内核线程和用户态线程两种模式,通过配置参数即可以实现两种模式的切换。
内核线程的切换完全由操作系统决定,但操作系统并不了解、也不关心应用逻辑,只能采取简单、通用的策略来平衡各个内核线程的 CPU 时间;在高并发情况下,往往导致很多无效的上下文切换,浪费了宝贵的 CPU 资源。用户态线程由用户指定线程切换策略,结合应用的实际情况,决定何时让出 CPU 的执行,可以有效避免过多的无效切换,提升系统性能。
DM8 的工作线程在少量内核线程的基础上,模拟了大量的用户态线程(一般来说,工作线程数不超过 CPU 的核数,用户态线程数由数据库的连接数决定)。大量的用户态线程在内核线程内部自主调度,基本消除了由于操作系统调度产生的上下文切换;同时,由于内核线程数的减少,进一步降低了冲突产生的概率,有效提升了系统性能,特别是在高并发情况下的性能提升十分明显。
(12)多缓冲区
DM8 采用了多缓冲区机制,将数据缓冲区划成多个分片。数据页按照其页号,进入各自缓冲区分片。用户访问不同的缓冲区分片,不会导致访问冲突。高并发情况下,这种机制可以降低全局数据缓冲区的访问冲突。
DM8 支持动态缓冲区管理,根据不同的系统资源情况,管理员可以配置缓冲区伸缩策略。
(13)分段式数据压缩
DM8 支持数据压缩,即将一个字段的所有数据,分成多个小片压缩存储起来。系统采用智能压缩策略,根据采样值特征,自动选择最合适的压缩算法进行数据压缩。而多行相同类型数据一起压缩,可以显著提升数据的压缩比,进一步减少系统的空间资源开销。
(14)行列融合
DM8 同时支持行存储引擎与列存储引擎,可实现事务内对行存储表与列存储表的同时访问,可同时适用于联机事务和分析处理。在并发量、数据量规模较小时,单机 DM8 利用其行列融合特性,即可同时满足联机事务处理和联机分析处理的应用需求,并能够满足混合型的应用要求。
(15)大规模并行处理架构
为了支持海量数据存储和处理、高并发处理、高性价比、高可用性等功能,提供高端数据仓库解决方案,DM8 支持大规模并行处理(Massively Parallel Processor,MPP)架构,以极低的成本代价,为客户提供业界领先的计算性能。DM8 采用完全对等无共享的MPP架构,支持 SQL 并行处理,可自动化分区数据和并行查询,无 I/O 冲突。
DM8 的 MPP 架构将负载分散到多个数据库服务器主机,实现了数据的分布式存储。采用了完全对等的无共享架构,每个数据库服务器称为一个 EP。这种架构中,节点没有主从之分,每个EP都能够对用户提供完整的数据库服务。在处理海量数据分析请求时,各个节点通过内部通信系统协同工作,通过并行运算技术大幅提高查询效率。
DM8 MPP 为新一代数据仓库所需的大规模数据和复杂查询提供了先进的软件级解决方案,具有业界先进的架构和高度的可靠性,能帮助企业管理好数据,使之更好地服务于企业,推动数据依赖型企业的发展。
4.高安全性
DM8 是具有自主知识产权的高安全数据库管理系统,已通过公安部安全四级评测,是目前安全等级最高的商业数据库之一。同时,DM8 通过了中国信息安全评测中心的 EAL3 级评测。DM8 在身份认证、访问控制、数据加密、资源限制、审计等方面采取以下安全措施。
(1)双因子结合的身份鉴别
DM 提供基于用户口令和用户数字证书相结合的用户身份鉴别功能。当接收的用户口令和用户数字证书均正确时,才算认证通过,若用户口令和用户数据证书有一个不正确或与相应的用户名不匹配,则认证不通过,这种增强的身份认证方式可以更好地防止口令被盗、冒充用户登录等情况,为数据库安全把好了第一道关。
另外,DM8 还支持基于操作系统的身份认证、基于 LDAP 集中式的第三方认证。
(2)自主访问控制
DM8 提供了系统权限和对象权限管理功能,并支持基于角色的权限管理,方便数据库管理员对用户访问权限进行灵活配置。
在 DM8 中,可以对用户直接授权,也可以通过角色授权。角色表示一组权限的集合,数据库管理员可以通过创建角色来简化权限管理过程。可以把一些权限授予一个角色,而这个角色又可以被授予多个用户,从而使基于这些角色的用户间接地获得权限。在实际的权限分配方案中,通常先由数据库管理员为数据库定义一系列的角色,然后将权限分配给基于这些角色的用户。
(3)强制访问控制
DM8 提供强制访问控制功能,强制访问控制的范围涉及数据库内所有的主客体,该功能达到了安全四级的要求。强制访问控制是利用策略和标记实现数据库访问控制的一种机制。该功能主要针对数据库用户、各种数据库对象、表以及表内数据。控制粒度同时达到列级和记录级。
当用户操作数据库对象时,不仅要满足自主访问控制的权限要求,还要满足用户和数据之间标记的支配关系。这样就避免了管理权限全部由数据库管理员一人负责的局面,可以有效防止敏感信息的泄露与篡改,增强系统的安全性。
(4)客体重用
DM8 内置的客体重用机制使数据库管理系统能够清扫被重新分配的系统资源,以保证数据信息不会因为资源的动态分配而泄露给未授权的用户。
(5)加密引擎
DM8 提供加密引擎功能,当 DM8 内置的加密算法,如 AES 系列、DES 系列、DESEDE 系列、RC4 等加密算法,无法满足用户数据存储加密要求时,用户可能希望使用自己特殊的加密算法,或强度更高的加密算法。用户可以采用 DM8 的加密引擎功能,将自己特殊的或高强度的加密算法按照 DM 8 提供的加密引擎标准接口要求进行封装,封装后的加密算法可以在 DM8 的存储加密中按常规的方法进行使用,大大提高了数据的安全性。
(6)存储加密
DM8 实现了对存储数据的透明存储加密、半透明存储加密和非透明存储加密。每种模式均可自由配置加密算法。用户可以根据自己的需要自主选择采用何种加密模式。
(7)通信加密
DM8 支持基于 SSL 协议的通信加密,对传输在客户端和服务器端的数据进行非对称的安全加密,保证数据在传输过程中的保密性、完整性、抗抵赖性。
(8)资源限制
DM8 实现了多种资源限制功能,包括并发会话总数、单用户会话数、用户会话 CPU 时间、用户请求 CPU 时间、会话读取页、请求读取页、会话私有内存等,这些资源限制项足够丰富并满足资源限制的要求,达到防止用户恶意抢占资源的目的,尽可能减少人为的安全隐患,保证所有数据库用户均能正常访问和操作数据库。DM8 还可配置表的存储空间配额。系统管理员可借此功能对每个数据库用户单独配置最合适的管理策略,并能有效防止各种恶意抢占资源的攻击。
(9)审计分析与实时侵害检测
DM8 提供数据库审计功能,审计类别包括:系统级审计、语句级审计、对象级审计。
DM8 的审计记录存放在数据库外的专门审计文件中,保证审计数据的独立性。审计文件可以脱离数据库系统保存和复制,借助专用工具进行阅读、检索以及合并等维护操作。
DM8 提供审计分析功能,通过审计分析工具 Analyzer 实现对审计记录的分析。用户能够根据所制定的分析规则,对审计记录进行分析,判断系统中是否存在对系统安全构成威胁的活动。
DM8 提供强大的实时侵害检测功能,用于实时分析当前用户的操作,并查找与该操作相匹配的审计分析规则。根据规则判断用户行为是否为侵害行为,以及确定侵害等级,并根据侵害等级采取相应的响应措施。响应措施包括:实时报警生成、违例进程终止、服务取消和账号锁定或失效。
5.易用性好
DM8 提供了一系列基于 Java 技术的多平台风格统一的图形化客户端工具,通过这些工具,用户可以与数据库进行交互,即操作数据库对象和从数据库获取信息,这些工具包括系统管理工具 Manager、数据迁移工具 DTS、性能监视工具 Monitor 等,同时支持基于 Web 的管理工具,该工具可以进行本地和远程联机管理。DM8 提供的管理工具功能强大,界面友好,操作方便,能满足用户各种数据管理的需求。
6.兼容性强
为保护用户现有应用系统的投资,降低系统迁移的难度,DM8 提供了许多与其他数据库系统兼容的特性,尤其针对 Oracle,DM8 提供了全方位的兼容,降低了用户学习成本和数据迁移成本。