1.1.2 达梦数据库的特点
达梦数据库在不断发展过程中,每个版本在适应时代需求的同时,具备了一定的特点,这里主要介绍DM8的主要特点。DM8采用全新的体系架构,在保证大型通用的基础上,针对可靠性、高性能、海量数据处理和安全性做了大量研发和改进工作,在提升数据库产品性能的同时,提高了语言的丰富性和可扩展性,并能同时兼顾 OLTP(联机事务处理)和OLAP(联机分析处理)请求,从根本上提升了数据库产品的品质。
1.通用性强
DM8产品的通用性主要体现在以下几个方面。
1)硬件平台支持
DM8兼容多种硬件体系,可运行于x86、SPARC、Power等硬件体系之上。DM8在各种平台上的数据存储结构和消息通信结构完全一致,使得 DM8 各种组件在不同的硬件平台上具有一致的使用特性。
2)操作系统支持
DM8实现了平台无关性,支持Windows系列、Linux(2.4及以上内核)、UNIX、Kylin、AIX、Solaris等主流操作系统。DM8的服务器、接口程序和管理工具均可在32位/64位操作系统上使用。
3)应用开发支持
(1)开发环境支持。
DM8支持多种主流集成开发环境,包括PowerBuilder、Delphi、Visual Studio、.NET、C++Builder、Qt、JBuilder、Eclipse、IntelliJ IDEA、Zend Studio等。
(2)开发框架技术支持。
DM8支持各种开发框架技术,主要有 Spring、Hibernate、iBATIS SQLMap、Entity Framework、Zend Framework等。
(3)中间件支持。
DM8支持各种主流系统中间件,包括 WebLogic、WebSphere、Tomcat、Jboss、东方通TongWeb、金蝶Apusic、中创InfoWeb等。
(4)标准接口支持。
DM8提供对SQL92的特性支持,以及对SQL99的核心级别支持;支持多种数据库开发接口,包括OLE DB、ADO、ODBC、OCI、JDBC、Hibernate、PHP、PDO、DB Express、.NET Data Provider等。
(5)网络协议支持。
DM8支持多种网络协议,包括IPv4、IPv6等。
(6)字符集支持。
DM8完全支持UTF-8、GB 18030等常用字符集。
(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 日志系统开发,其功能更加稳定可靠。主机与备机间传递压缩的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 的二级缓存,提升性能;增加栈帧概念,方便实现函数/方法的跳转,为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)双因子结合的身份鉴别
DM8提供基于用户口令和用户数字证书相结合的用户身份鉴别功能。当接收的用户口令和用户数字证书均正确时,身份认证才能通过,若用户口令和用户数据证书有一个不正确或与相应的用户名不匹配,则身份认证不通过。这种增强的身份认证方式可以更好地防止口令被盗、冒充用户登录等情况,为数据库安全把好了第一道关。
另外,DM8还支持基于操作系统的身份认证、基于LDAP集中式的第三方认证。
2)自主访问控制
DM8提供了系统权限和对象权限管理功能,并支持基于角色的权限管理,方便数据库管理员对用户访问权限进行灵活配置。
在 DM8 中,可以对用户直接授权,也可以通过角色对用户授权。角色表示一组权限的集合,数据库管理员可以通过创建角色来简化权限管理过程;可以把一些权限授予一个角色,而这个角色又可以被授予多个用户,从而使基于这些角色的用户间接地获得权限。在实际的权限分配方案中,通常先由数据库管理员为数据库定义一系列的角色,然后将权限分配给基于这些角色的用户。
3)强制访问控制
DM8提供强制访问控制功能,强制访问控制的范围涉及数据库内所有的主客体。强制访问控制功能达到了公安部安全四级的要求。强制访问控制是利用策略和标记实现数据库访问控制的一种机制。强制访问控制功能主要针对数据库用户、各种数据库对象、表及表内数据。控制粒度同时达到列级和记录级。
用户在操作数据库对象时,不仅要满足自主访问控制的权限要求,还要满足用户和数据之间标记的支配关系。这样就避免了管理权限全部由数据库管理员一人负责的局面,可以有效防止敏感信息的泄露与篡改,增强系统的安全性。
4)客体重用
DM8内置的客体重用机制使数据库管理系统能够清扫被重新分配的系统资源,以保证数据信息不会因为资源的动态分配而泄露给未授权的用户。
5)加密引擎
DM8提供加密引擎功能。当DM8内置的加密算法,如AES系列、DES系列、DESEDE系列、RC4等加密算法,无法满足用户数据存储的加密要求时,用户可以使用自己特殊的加密算法,或者使用强度更高的加密算法。此时,用户可以采用 DM8 的加密引擎功能,将自己特殊的或强度更高的加密算法按照 DM8 提供的加密引擎标准接口要求进行封装,封装后的加密算法可以在 DM8 的存储加密中按常规方法进行使用,大大提高了数据的安全性。
6)存储加密
DM8实现了对存储数据的透明存储加密、半透明存储加密和非透明存储加密。每种模式均可自由配置加密算法。用户可以根据自己的需要自主选择采用何种加密模式。
7)通信加密
DM8 支持基于 SSL 协议的通信加密。对在客户端和服务器端传输的数据进行非对称安全加密,可以保证数据在传输过程中的保密性、完整性、抗抵赖性。
8)资源限制
DM8 实现了多种资源限制功能,包括并发会话总数、单用户会话数、用户会话 CPU时间、用户请求 CPU 时间、会话读取页、请求读取页、会话私有内存等。这些资源限制项足够丰富,并可以满足资源限制的要求,达到防止用户恶意抢占资源的目的,尽可能减少人为的安全隐患,保证所有数据库用户均能正常访问和操作数据库。DM8还可配置表的存储空间配额。系统管理员可借此功能对每个数据库用户都单独配置最合适的管理策略,并能有效防止各种恶意抢占资源的攻击。
9)审计分析与实时侵害检测
DM8提供数据库审计功能,审计类别包括系统级审计、语句级审计、对象级审计。
DM8 的审计记录存放在数据库外的专门审计文件中,可以保证审计数据的独立性。审计文件可以脱离数据库系统保存和复制,并借助专用工具进行阅读、检索、合并等维护操作。
DM8 提供审计分析功能,通过审计分析工具 Analyzer 实现对审计记录的分析。用户能够根据所制定的分析规则,对审计记录进行分析,判断系统中是否存在对系统安全构成威胁的活动。
DM8提供强大的实时侵害检测功能,用于实时分析当前用户的操作,并查找与该操作相匹配的审计分析规则。根据审计分析规则判断用户行为是否为侵害行为,并确定侵害等级,进而根据侵害等级采取相应的响应措施。响应措施包括实时报警生成、违例进程终止、服务取消、账号锁定或失效。
5.易用性好
DM8提供了一系列基于Java技术的、多平台风格统一的图形化客户端工具,通过这些工具用户可以与数据库进行交互,即操作数据库对象和从数据库中获取信息。这些工具包括系统管理工具Manager、数据迁移工具DTS、性能监视工具Monitor等。DM8同时支持基于Web的管理工具,该工具可以进行本地和远程联机管理。DM8提供的管理工具功能强大、界面友好、操作方便,能满足用户各种数据管理的需求。
6.兼容性强
为保护用户现有应用系统的投资、降低系统迁移的难度,DM8提供了许多与其他数据库系统兼容的特性,尤其是针对Oracle,DM8提供了全方位的兼容,降低了用户学习成本和数据迁移成本。