1.
数据库解决方案
作为达梦公司的核心产品,达梦数据库管理系统是具有完全自主知识产权的高性能数据库管理系统,目前已发展到8版本,简称DM8。DM8是达梦数据库有限公司推出的具有完全自主知识产权的大型通用关系型数据库管理系统,是达梦公司在总结DM系列产品研发与应用经验的基础之上,吸收主流数据库产品的优点,采用类JAVA的虚拟机技术设计的新一代数据库产品。
1.
1.1
高性能
达梦数据库还同时支持行列存储,内置了行列两个引擎,可同时很好的支持OLAP和OLTP业务。列存技术,结合分段式压缩、智能索引等技术一起构成了达梦的高性能解决方案。
列存储模式的基本概念就是按列存储,即把同一列的字段数据集中存放。在联机分析处理(OLAP)应用中,列式存储具有天然的性能优势。DM8的列存储表采用基于数据包的列存储模式。表中的字段数据,按照可配置的尺寸,集中存储在若干个数据包中。数据包(data section)是存储的基本单位。其基本特性包括:
Ø 不读取无效列数据:查询语句通常只涉及表的一小部分列。只有引用到的列的数据包才有可能被访问到。其他列的数据是不需要读取的。因此提高了数据访问效率,减少了不必要的I/O,相对于传统行式数据存储,极大地提高了查询性能。
Ø 不读取无效数据包:每个数据包,系统都维护了一个基本的统计描述信息记录,用于记录最大值、最小值、唯一值的个数等。在扫描数据包前,系统会检查这些信息,和扫描条件进行比较,从而快速跳过不合条件的数据包,进一步减小不必要的磁盘IO,加速查询速度。
图3 VERTICAL结构示意图
系统提供了VERTICAL表和HUGE表两种列存储方式,进一步提高了灵活性。VERTICAL表存储在传统的数据库文件系统中,与行表一样采用数据页(PAGE)方式保存数据,数据访问也经过传统的系统缓冲区,通过REDO日志保护数据的完整性,符合ACID特性。常规的主备、系统恢复等,VERTICAL表都和普通表一样,不受限制。而HUGE表数据存储在独立的巨型文件系统(HUGE FILE SYSTEM)中,由单独的表空间HTS进行管理。HUGE表不再严格遵照关系型数据库的REDO日志规范,不能严格保证事务的ACID特性,但提供了数据自动修复功能,能最大限度地保证数据的完整性,并提供了更好的压缩率与查询性能。
达梦数据库同时支持行存储引擎与列存储引擎,可实现事务内对行存储表与列存储表的同时访问,可同时适用于联机事务和分析处理。在并发量、数据量规模较小时,单机达梦数据库利用其行列融合特性,即可同时满足联机事务处理和联机分析处理的应用需求,并能够满足混合型的应用要求。
MPP 系统中,实现了事务的两阶段提交,包括预提交阶段和提交阶段。借助监视器Monitor 协调作用,在单个或多个节点故障重启时,依然能保证事务的ACID 特性,保证了MPP 系统的可靠性。
DM8采用以数据包为单位的列存储模式,因为包内数据的数据类型完全相同,比如都是整数,非常便于数据压缩。系统采用了智能压缩策略,根据采样值特性,自动选择最合适的压缩算法进行数据压缩。采用压缩技术后的列存储,可以进一步减少查询的实际I/O规模,压缩空间通常能节省 1~20
倍。这种压缩技术能够在磁盘 I/O 和 Cache I/O 上同时提升数据库的性能,使 DM8在某些场景下的运算性能比传统数据库快 100 倍以上。
DM8支持表的水平分区和垂直分区功能。数据分区是简化数据管理,冷热数据分离的有效手段,也是并行查询时数据分配的手段之一。引入数据分而治之的设计思想,使得分区表的管理和维护变得简单。在水平分区表的DML操作中,结合并行查询技术,大大提升了数据的操作性能。
DM8提供以下三种水平分区方式:
1.
范围水平分区:对表中的某些列上值的范围进行分区,根据某个值的范围,决定将该数据存储在哪个分区上;
2.
哈希水平分区:通过计算指定列上值的HASH值,来决定数据该存储在哪一个分区上。这类分区的大小通常比较均匀;
3.
列表水平分区:通过指定表中的某些列的离散值集,来确定应当存储在一起的数据。
而对于垂直分区,则将表按列拆分为多个分区,每个分区子表只需包含较少的列。如果查询表上的某些列,并且这些列都在一个分区中,那么只要扫描这个分区子表即可。
图4数据分区示意图
对于水平分区表,系统还支持多级组合分区。比如在哈希分区的基础上,再进行范围分区,进一步细分数据,提升数据管理的灵活性和查询性能。
批量数据处理的目的是提升CPU 二级缓存的利用率。当数据读入内存后,按照传统策略,需要经过逐行过滤、连接、计算等操作处理后,才能生成最终结果集。在海量的数据处理场景下,必然产生大量重复的函数调用及数据的反复拷贝与计算代价。批量处理的思想就是读取一批,计算一批,传递一批,具有显而易见的好处:
1.
内存紧靠在一起的数据执行批量计算,可以显著提升CPU 二级缓存命中率。被加工的数据,基本都在二级缓存中,比每次访问主存快得多,从而提升内存处理效率,有利于提升内存带宽的利用率。
2.
数据成批而非单行地抽取与传递,可以显著减少在上下层操作符间程序控制权转移的函数调用次数,减少性能损耗。
3.
采用优化的引用方式在操作符间传递数据,可以有效降低数据复制的代价。
在海量数据分析应用中,存在大量的数据分组、统计,这些都涉及海量的表达式计算。表达式计算的性能是一个容易被忽视的地方。DM8从设计之初就非常注重表达式计算的性能优化。
系统内部的虚拟机执行引擎支持大量的批量运算指令。每种数据类型的不同运算,系统都为其配置了各自的运算函数,这些函数以数组为单位进行,在一个简单循环内进行计算。这种模式避免了传统表达式计算中对每个表达式都进行递归函数调用的巨大代价,利用了CPU 二级缓存的效率,也能充分利用现代CPU单指令流多数据流的计算能力,几乎达到C语言的性能,获得成百倍的性能提升。
系统的内置标量函数,包括字符串函数,都配置批量版本,如NVL函数,
查询时系统不需要对每一行都调用一次NVL,而是直接把一批数据传递给批量版本的
NVL, 批量版NVL内部的实现是一个简单的FOR 循环操作,避免了反复调用解析函数的入栈出栈等代价。
现代CPU 的主频几乎已经到了极限,再继续大幅提升主频以提升性能已经十分困难,因而CPU的发展趋势是多核化,我们会看到物理CPU内部集成的核(core)越来越多。DM8采用了高度并行的查询技术,在一个SQL查询内充分利用这些多核的计算能力,以提升查询性能。
DM8采用了对称并行执行技术。在获得了并行执行线程资源以后,把并行计划分发给所有的线程,同时开始执行同一个计划,只是在执行并行通讯操作符时进行必要的同步和数据交换。结合列存储或者分区表技术,这一对称并行执行的效率非常高,在内存充足的情况下,单个查询几乎可以利用全部的计算资源,高效处理HASH连接,分类汇总等计算密集型查询。
很多分析型系统的并行查询有很大的局限性,比如要求必须是单表查询,或者不能有子查询又或是不能有相关子查询等等。DM8的并行查询技术完全没有这些限制,支持任意复杂SQL的并行查询。
这一技术的基础是DM8高度智能的代价优化器。对任意复杂的查询,优化器都会消除子查询,对其进行“平坦化”,
最终的执行计划中没有所谓的“子计划”。优化器的并行处理模块在一个已优化的平坦二叉树型执行计划中插入合适的并行通讯操作符,就得到了一个并行计划。
对称式并行处理简化了并行执行的实现逻辑,提升了并行效率。任意复杂查询的并行支持,将极大简化系统调优中SQL改写的工作量,减少维护成本,减少应用范围限制,提升即席查询的效率,提供更佳的用户体验。
DM8提供能够快速在文本数据与达梦数据库之间载入载出的工具dmfldr,可以在极短的时间内装载海量文本数据。用户通过使用dmfldr工具能够将按照一定格式存放的文本数据以简单、快速、高效的方式载入到达梦数据库中。针对不同装载环境,用户还可以通过指定不同的参数选项组合来提升装载的速度,并且可以让用户在数据加载完成后,马上开始使用数据,无需再消耗额外的手工创建索引的时间成本,极大缩短了数据准备的时间。同时提供了对外接口,方便用户集成到自己的应用中。
DM8数据快速装载工具dmfldr同样也采用了并行处理、批量处理、批量数据转换、优化的内存引用、数据压缩等技术,可以充分利用多核CPU的计算能力,装载性能令人难以置信。在32核2.0G主频的PC SERVER上,单节点平面数据本地加载的性能可达到400Gb/小时。TPC-H 100G规模的数据装载仅需15分钟左右,每秒可以装载接近1,000,000行记录。
1.2
可靠性
任何一个系统都存在发生各种意外故障的可能性。DM的高可靠性解决方案可以避免或降低系统的意外故障对用户带来的损失。
数据库的备份与还原是系统容灾的重要方法。在一个生产系统中,数据库往往处于核心的地位。为了保证数据的安全,人们想出了各种各样的方法,比如创建RAC环境,配置异地容灾,使用磁盘阵列,备份与还原等。备份意味着把重要的数据复制到安全的存储介质上,还原则意味着在必要的时候再把以前备份的数据复制到最初的位置,以保证用户可以访问这样的数据。
DM 数据库管理系统支持的备份方式包括物理备份、逻辑备份和B
树备份,其中B 树备份是介于物理备份和逻辑备份之间的一种形态。物理备份分为数据库级的备份和用户表空间级的备份;B 树备份仅有用户表级的备份。为了提高备份恢复的安全性,减少备份文件占用磁盘空间的大小,系统支持对备份数据加密和压缩。
DM备份/还原功能特性如下:
l
物理备份支持完全/增量备份还原
l
物理备份支持联机/脱机备份还原
l
物理备份可按不同的级别进行备份,包括备份数据库、备份用户表空间、备份用户表
l
逻辑备份可进行数据库级、模式级和表级的备份
l
逻辑备份内容灵活,可选择是否备份索引、数据行和权限,是否忽略各种约束(外键约束、非空约束、唯一约束等)
l
支持对备份进行压缩和加密处理
l
支持并行备份/还原
l
支持使用归档日志将数据库还原到最新的状态或指定的时间点
l
支持跨平台备份还原功能,备份文件格式统一跨平台,脱机/联机备份/还原功能使用相同代码
l
支持基于表同步复制功能的远程实时备份功能,支持一对多、多对一、级联、对称的复制关系,最小复制单位为表,用户可根据需要灵活定制。
数据库备份是数据库管理员最普通的工作之一了,为了保证数据的安全,必须定期对数据库进行备份,而且备份通常应该安排在系统事务处理最少的时候,通常是在半夜,自动备份功能能够满足这样的需求。
DM提供备份计划功能完成自动备份功能。系统管理员可以根据需要配置备份计划,支持各种备份类型和灵活的调度策略,系统在指定时间自动完成指定类型的备份操作并以邮件形式通知系统操作员执行结果。还可以在第二天查看作业运行结果,了解备份计划的执行情况,以便做出相应调整。
DM备份计划功能基于系统作业调度功能实现,在此基础上做了人性化的包装和处理。时间调度配置非常灵活,支持一次性调度、周期性调度和组合调度策略。这些特性使系统管理员制定自动备份计划非常方便和科学,满足各种自动备份需求。
作业调度包括时间调度和事件(警报)调度。时间调度是指根据用户制定的调度时间来调度作业,让作业在某一时间自动运行;事件(警报)调度是指通过事件驱动来调度作业,让作业在某一事件/警报产生时自动运行。
作业的定义和调度的安排可以通过客户端管理工具来实现。通过作业管理工具,用户可以创建作业,为作业添加作业步(操作)信息,为作业创建一个或多个调度。同时用户还可以查看作业的执行历史信息,以检查作业的运行情况。每个作业步完成一个指定的操作,目前这些操作只包括系统支持的SQL脚本,每个作业步骤对应一个SQL脚本。
用户还可以创建警报,定义警报相应信息,在警报发生时指定需要通知的操作员和需要系统自动运行的作业。
与作业相关的服务器端程序DMJMON(服务名为DmJobMonitor)是监控作业的服务,该服务器的功能主要是监控作业的运行情况,把作业的运行情况通过电子邮件发送给作业操作员。
1.3
安全性
DM8是具有自主知识产权的高安全数据库管理系统,已通过公安部安全四级评测。是目前安全等级最高的商业数据库之一。
图 安全等级
DM8
同时DM8还通过了中国信息安全测评中心的安全评估保证级4增强(EAL4+)评测和中国人民解放军信息安全测评认证中心颁发的军B+认证证书。
DM8的安全结构体系如下图所示:
图:安全结构体系
DM8
1.1.
1.3.1 完全自主知识产权
达梦数据库管理系统DM8安全版是具有完全自主知识产权的国产大型通用安全数据库管理系统。在产品开发过程中,达梦公司始终坚持自主开发的原则,致力于保卫国家信息安全,推进国民经济信息化建设,拥有产品的全部源代码和完全的自主知识产权,杜绝了继承开源系统导致的版权纠纷,同时也从根本上保证了系统的安全性,并有利于与其它应用系统集成,可以根据具体需求定制和提供及时有效的服务。
1
1.1
1.2
1.3
1.4
1.5
1.6
1.6.1
1.6.2
1.3.2.1
身份认证机制
达梦数据库管理系统DM8安全版能够根据用户在系统中的身份确定该用户是否具有登录的权限和其在系统中的各种操作级别的角色,确定该用户能够做什么和不能够做什么。
达梦数据库管理系统DM8安全版提供两种身份认证模式来保护对服务器访问的安全,即数据库身份认证模式和外部身份认证模式。数据库身份认证模式需要利用数据库口令,外部身份认证模式支持基于Kerberos协议身份认证和LDAP协议的身份认证。Kerberos是一种广泛应用的网络身份认证协议,用户只需要和服务器成功认证一次,后续访问服务时不需要重新进行身份认证,减少了认证信息泄露的机会。LDAP是一种目录式轻量级访问协议,它将认证信息和鉴别信息存储在一个集中管理中心,进行统一访问管理。
除此之外,达梦数据库管理系统DM8安全版还支持基于用户口令和用户数字证书双因子相结合的身份认证机制,也就是说,只有当用户口令和用户的数字证书两者完全和用户名匹配时,才认证成功。
1.3.2.2
用户口令策略
达梦数据库管理系统DM8安全版在数据库验证模式下,为了防止用户设置登录口令过于简单,系统提供了口令策略,以控制口令的复杂度。
用户在设置口令策略时,可以对任意多个策略进行组合,提升用户口令的管理强度,提升用户数据的安全性。
达梦数据库管理系统DM8安全版根据用户的权限执行自主访问控制。用户权限是指用户在数据对象上被允许执行的操作。规定用户权限要考虑三个因素:用户、数据对象和操作,即什么用户在哪些数据对象上可执行什么操作。所有的用户权限都要记录在系统表(数据字典)中,对用户存取权限的定义称为授权,当用户提出操作请求时,系统根据授权情况进行检查,以决定是执行操作还是拒绝执行,从而保证用户只能够访问有权访问的数据。
达梦数据库管理系统DM8安全版提供了用户权限管理功能,并支持基于角色的权限管理,方便数据库管理员对用户访问权限进行灵活配置。
1.6.3
1.3.3.1
权限管理
权限管理是自主访问控制的核心。达梦数据库管理系统DM8安全版对用户的权限有着严格的规定,如果没有权限,用户将无法完成任何操作。
用户权限有两类,即数据库权限和对象权限。数据库权限主要是指针对数据库对象的创建、删除、修改的权限,对数据库备份等权限。而对象权限主要是指对数据库对象中的数据的访问权限。数据库权限一般由系统管理员SYSDBA、安全管理员SYSSSO和审计管理员SYSAUDITOR指定,也可以由具有特权的其他用户授予。对象权限一般由数据库对象的所有者授予用户,也可由SYSDBA用户指定,或者由具有该对象权限的其他用户授权。
数据库权限的授予者一般是数据库管理员。普通用户被授予了某种数据库权限及其转授权时,系统允许它把所拥有的数据库权限再授予其他用户。即当某个用户拥有数据库对象上的某些操作权限及相应的转授权时,该用户可以不用申请和审批,自主地把这些操作权限部分或全部转授给其他用户,从而使得其他用户获得在这些数据库对象上的使用权。授权操作成功的前提是授权者有这种权限的grant权限而且不违背多权分立机制。
达梦数据库管理系统DM8安全版也提供级联回收方式来回收这种通过转授所获得的权限。
1.3.3.2
角色管理
角色是一组权限的组合,使用角色的目的是使权限管理更加方便。假设有10个用户,这些用户为了访问数据库,至少拥有CREATE TABLE、CREATE VIEW等权限。如果将这些权限分别授予这些用户,那么需要进行的授权次数是比较多的。但是如果把这些权限事先放在一起,然后作为一个整体授予这些用户,那么每个用户只需一次授权,授权的次数将大大减少,而且用户数越多,需要指定的权限越多,这种授权方式的优越性就越明显。这些事先组合在一起的一组权限就是角色,角色中的权限既可以是数据库权限,也可以是对象权限。
角色刚被创建时,没有包含任何权限。用户可以将权限授予该角色,使这个角色成为一个权限的集合。向角色授权的方法与向用户授权的方法是相同的,只要将用户名用角色名代替就可以了。
达梦数据库管理系统DM8安全版在三权分立权限管理模型基础上,通过进一步对权限管理进行升级优化,支持多权分立的权限管理模型。该模型以应用系统中各角色所承担的职责为依据,细致设定各角色所能拥有的系统权限,如在传统模型将审计管理、安全管理相关权限划归到审计管理员和安全管理员之外,结合实际应用需要进一步将系统管理员的权限进行细分,创建诸如数据管理员、过程管理员(仅拥有存储过程相关权限)、视图管理员(仅拥有视图相关权限)等。这样就可以根据用户需求进行灵活配置,从而有效避免传统数据库授权体系中,系统管理员权限过于集中所带来的各种隐患。
达梦数据库管理系统DM8安全版提供了一个引入数据管理员后的典型的四权模型。相对于三权模型,新模型将数据控制权从系统管理员手中转移到特定用户手中,系统管理员SYSDBA仅负责系统维护与管理方面的工作,不涉及到具体的用户数据操作,数据管理员SYSDBO负责具体的自主访问控制及数据对象管理的工作,安全管理员SYSSSO管理标记和强制访问控制,审计管理员SYSAUDITOR管理系统审计,这就使得管理员与非授权的使用人员均无法对数据进行访问、探查。同时各个权限载体之间无法相互授权,可以有效的实现权限隔离、相互制约、相互监督。
达梦数据库管理系统DM8安全版利用安全策略和标记实现数据库的强制访问机制。该功能主要是针对数据库用户、各种数据库对象、表以及表数据。控制粒度分为列级和记录级。同时达梦数据库管理系统DM8安全版支持对所有客体进行标记,达到了安全四级的要求。用户操作数据时,不仅要满足自主访问控制的权限要求,还要满足用户和数据之间标记的相容性。这样,就避免了管理权限全部由数据库管理员一人负责的局面,可以有效防止敏感信息的泄露与篡改,增强系统的安全性。
1.6.4
1.6.5
1.3.5.1
标记管理
标记是安全策略的核心,也是强制访问控制实施的基础,用于标识数据库中主体及客体的敏感度。达梦数据库管理系统DM8安全版的标记由多个组件组成,包括等级分类(level)、非等级类别(category)和分组(group)。每个标记必须包含至少一个等级分类组件,非等级类别组件和分组组件则是可选的。标记组件的集合及相应的读写控制规则就构成了达梦数据库管理系统DM8安全版的一个强制访问控制安全策略。
达梦数据库管理系统DM8安全版的标记管理比权限管理更为严格,每一个用户被授予某一个级别的访问许可,每一个数据对象都被标以一定的密级,只有访问合法满足强制要求的用户才可以访问该对象。达梦数据库管理系统DM8安全版的安全管理员可以在数据库中定义多种安全策略,用来表示实际应用中的不同安全特征。每个安全策略都包括一组预定义的标记组件。
1.3.5.2
强制访问控制
达梦数据库管理系统DM8安全版的安全管理员将安全策略应用于客体和用户上,给用户、客体、表和元组等指定安全标记。
对用户应用一个安全策略时,必须指定安全等级可选的指定范围和组。
对用户应用策略时,同时可以授予策略特权。策略特权分为访问特权和行标记特权,用来设置读写数据是否受策略影响以及改变行标记的特权配置。
用户访问表时,必须保证应用于表上的所有强制访问控制策略均应用于该用户,否则访问被拒绝。若表上未应用任何强制访问控制策略,则用户只需满足自主访问控制条件即可。
当用户的等级必须大于等于数据的等级,且用户的标记必须包含至少一个数据的组,或用户的标记必须包含数据的所有的范围时,即可以对数据进行读取。
达梦数据库管理系统DM8安全版扩展客体标记支持对数据库所有的客体进行标记,这些客体包含模式、表、视图、索引、存储过程、函数、包、序列、触发器、同义词以及列等。一旦一个对象被应用了扩展客体标记,则用户只有在支配相应标记的情况下,才能访问客体。仅安全版提供此功能。对于任何一个对象的操作,用户必须具有本层对象以及上层对象的标记,才能操作此对象,如查询一个表的一列,则用户的读标记必须支配查询列、表、以及模式的标记,才能查询此列。
审计机制是达梦数据库管理系统DM8安全版安全管理的重要组成部分之一。达梦数据库管理系统DM8安全版版具有一个灵活的审计子系统,可以通过它来记录系统级事件、个别用户的行为以及对数据库对象的访问。通过查看审计信息,数据库审计员可以知道用户访问的形式以及试图对该系统进行的操作。一旦出现问题,数据库审计员可分析审计信息,跟踪审计事件,查出原因。
达梦数据库管理系统DM8安全版系统设立了独立、专有的审计员角色,只有该角色权限的用户才能对所有数据库进行审计操作,保证了对系统内部信息威胁的分析与取证的权威性。
达梦数据库管理系统DM8安全版允许在系统级、语句级和对象级三个级别按需审计。
达梦数据库管理系统DM8安全版的审计记录存放在数据库外的专门审计文件中,保证审计数据的独立性。审计文件可以脱离数据库系统保存和复制,借助专用工具进行阅读、检索以及合并等维护操作。
达梦数据库管理系统DM8安全版提供了强大的审计实时侵害检测功能,用于实时分析当前用户的操作,并查找与该操作相匹配的审计分析规则。根据规则判断用户行为是否是侵害行为,以及确定侵害等级,并根据侵害等级采取相应的响应措施。响应措施包括:实时报警生成、违例进程终止、服务取消和账号锁定或失效。审计员可以登录Manager,通过图形化的审计工具对审计对象进行事务框架的设置,数据库管理系统能通过对审计日志的分析及用户自定义审计规则的分析,判断系统中是否存在对系统安全构成危险的活动,并主动发送警报,使用户能采取积极、有效的应对措施。
1.6.6
1.6.7
1.3.7.1
通信加密
达梦数据库管理系统DM8安全版提供两种通信方式,即不加密、SSL安全通信。选择何种通信方式以服务器端为准,通过设置服务器端配置文件中相应选项来指定,客户端以服务器采用的通信方式与其进行通信。
系统在指定利用SSL安全连接进行通信时,需要在服务端和客户端分别导入服务器和客户端用户的数字证书。而且,安装程序会带有默认的电子证书,该证书是由达梦公司专门为服务器和客户端所发布的数字证书。用户也可以根据实际情况来采用第三方机构所颁发的数字证书。达梦数据库V8安全版支持主流的USBkey作为证书的保护设备。
1.3.7.2
存储加密
为了防止用户直接通过数据文件获取用户信息,达梦数据库管理系统DM8安全版提供了透明数据加密的功能。密钥生成、密钥管理和加解密过程由数据库管理系统自动完成,用户不可见。透明加密的目的主要是保证存储在数据文件中的敏感数据的安全,并不能保护合法用户的个人私密数据。系统内置了常用的DES,AES,RC4等算法,以此来保护数据的安全性。
达梦数据库管理系统DM8安全版支持对表上列级加密,支持建表时设置加密列,以及修改表定义时,设置加密列。存储加密支持所有的列类型,包括大字段类型。由于存储加密在保证数据文件的安全性的同时,也会带来一定的性能影响,不同的加密算法对性能的影响各有不同,因此,达梦数据库管理系统DM8安全版允许用户根据自己的需求来决定是否进行加密以及选择加密算法。除了对存储在表中的数据进行加密外,达梦数据库管理系统DM8安全版还支持对存储模块、触发器的定义进行加密,即对存储过程、存储函数和触发器的定义进行加密。
达梦数据库管理系统DM8安全版支持数据块级的数据库整库加密。这一技术能够极大减少加解密次数,显著提升加密性能,减少加密对于系统来带的性能影响。
1.3.7.3
导出数据加密
达梦数据库管理系统DM8安全版提供导出数据加密功能,可以对备份文件以及迁出的文本文件进行加密保护。
1.3.7.4
密钥自管理功能
达梦数据库管理系统DM8安全版实现了多级密钥管理机制,统一管理不同的用户的密钥,根据用户身份自动使用其密钥进行加解密,还提供简单方便的密钥更换操作接口。
1.3.7.5
独立的加密引擎
达梦数据库管理系统DM8安全版系统中内置了常用的DES,AES,RC4等加密算法供用户使用,以此来保护数据的安全性。然而在有些特殊的环境下,这些加密算法可能不能满足用户的需求,用户可能希望使用自己特殊的加密算法,或强度更高的加密算法。达梦数据库管理系统DM8安全版的加密引擎功能则可以满足这样的需求。用户只需要按照系统提供的加密引擎标准接口,封装自己的加密算法,即可以在系统的存储加密中使用自己的加密算法,大大提高了数据的安全性。
达梦数据库管理系统DM8安全版的资源限制功能是控制用户对服务器系统资源的使用情况,以尽可能减少人为的安全隐患。系统能对登录的安全属性与可访问资源进行限制,同时还可配置表的存储空间配额。系统管理员可借此功能对每个数据库用户单独配置最合适的管理策略,并能有效防止各种恶意抢占资源的攻击。
在普通的环境下,数据库客体(这里主要是数据库对象、数据文件、缓存区)回收后不做处理,直接分配给新来的请求,但是有些窃密者会利用这一点编写特殊的非法进程通过数据库管理系统的内存泄露来获取数据库系统的信息。
达梦数据库管理系统DM8安全版内置的客体重用机制使数据库管理系统能够清扫被重分配的系统资源,以保证数据信息不会因为资源的动态分配而泄露给未授权的用户。系统主要从内存和文件两个方面进行了处理。
内存重用:在被利用系统分配内存及释放内存时均对内存内容进行清零,以杜绝内存中前一进程所残留内容,且不泄漏内容给其他进程。
文件重用:在系统生成、扩展及删除文件时,对文件内容也进行了清零。
1.4
兼容性、跨平台性
达梦数据库有良好的兼容性和跨平台型,向下兼容各种硬件服务器,存储,国内外操作系统,向上兼容各种主流的中间件,同时提供多种开发接口供程序员开发者选择,和国内外的一些空间地理软件也完成了适配工作。
1.2.
1.4.1 兼容多种硬件体系
DM兼容多种硬件体系,可运行于X86、X64、SPARC、POWER等硬件体系之上。各种平台上的数据存储结构完全一致。与此同时,各平台的消息通信结构也完全保持一致,使得DM各种组件均可以跨不同的软、硬件平台与数据库服务器进行交互。
1.4.2
多种操作系统支持
DM支持Windows系列、2.4及2.4以上内核的各版本Linux、Unix、Kylin、AIX、Solaris等国内外通用/专有操作系统。
1.4.3
多种开发接口支持
DM支持多种数据库开发接口,包括ODBC2.X/3.X、JDBC3.0、OLE DB2.7、Unix
ODBC、PHP、DB Express以及.Net DataProvider,为开发人员提供自由的选择空间。
1.4.4
主流开发工具支持
DM支持多种主流开发工具、持久层技术和中间件。支持的开发工具有PowerBuilder、Delphi、Visual studio、.NET、C++Builder、JBuilder等;支持的持久层技术有Hibernate、IBATIS sqlmap等;支持的中间件有Weblogic、Websphere、Tomcat、Jboss、TongWeb、Apusic等。
DM对分布式事务的支持是依据X/OPEN分布式事务处理模型XA规范实现的。系统实现了X/OPEN DTP模型中的RM组件,通过JDBC接口与第三方TM工具配合完成分布式事务处理。在JDBC标准中,系统对XA协议进行了部分剪裁,支持TM对RM的单向调用,不允许RM向TM的动态注册。
1.4.6 存储设备支持
DM支持SAN和磁盘阵列,对EMC、IBM、SUN、Seagate、LSI、HP、浪潮、曙光、海恒等品牌存储设备提供支持。
1.4.7
64位全面支持及优化
DM全面支持64位系统,能够支持主流64位处理机和操作系统,并融入了很多针对64位计算的优化策略和技术。DM不仅能够运行在64位系统上,还能很好地利用64位系统的资源(例如能充分地利用更大容量的内存,支持超过4G内存),在64位系统上表现出良好的性能。
1.4.8 多处理器支持
DM服务器使用的是一个被称为“对称服务器构架”的单进程、多线程的结构。这种对称服务器构架在有效地利用了系统资源的同时,又提供了较高的可伸缩性能,因此系统的工作线程在单CPU和多CPU机器上都能很好地并行操作。
1.4.9
多语言支持
Unicode标准为全球商业领域中广泛使用的大部分字符定义了一个单一编码方案,保证了同一个位模式在所有的计算机上总是转换成同一个字符,数据可以随意地从一个数据库或计算机传送到另一个数据库或计算机,而不用担心接收系统是否会错误地翻译位模式。
目前 DM支持Unicode、GBK等多种字符集。用户可以在安装DM系统时,指定服务器端使用UTF8字符集。此时在客户端,用户能够以各种字符集存储文本,并使用系统提供的接口设置客户端使用的字符集,缺省使用客户端操作系统缺省的字符集。客户端和服务器端的字符集由用户指定后,所有字符集都可以透明地使用,系统负责不同字符集之间的自动转换。借助DM的Unicode支持,可以轻松的向应用程序提供国际化支持。
1.4.10
空间数据支持
DM8空间数据支持组件参考OpenGIS标准实现,其中包括了空间数据类型实现、空间元数据管理、空间操作方法实现、空间索引实现、空间数据接口实现、空间数据导入导出工具等六个部分。在DM8空间数据支持组件的基础之上完成了相关GIS工具软件的适配工作。
国内的超图,15所等国产GIS软件都支持达梦作为后端的空间数据库,并在2016年初ESRI公司在正式发布的ArcGIS
10.4版本中开始支持DM8作为后端的空间数据库。DM8是被ArcGIS唯一被支持的中国数据库。ArcGIS 10.4版本在DM8空间数据库上可支持导入、导出空间数据,支持空间数据的查询、浏览、编辑、分析,支持发布地图服务或要素服务等。
1.5
易用性
1.3.
1.5.1
简便的数据库系统安装和配置
1.7
1.8
1.8.1
1.5.1.1
统一的界面,熟悉的环境
DM提供一个基于Java的安装程序,利用Java的跨平台性,可以在Windows、Unix、Linux、Solaris等平台上运行,且具有统一界面。这样,无论在什么平台上,它都可以为管理员提供一个简洁的安装界面,熟悉、统一的安装环境。
1.5.1.2
便捷的安装向导
DM的安装程序把软件安装、数据库初始化和配置结合在一起,一气呵成。
1.5.1.3
配置灵活
DM为常见应用做了缺省优化配置,用户可以一路“确认”下来,完成安装,也可自行调整。在安装过程中,安装程序提供一个交互界面来初始化数据库,通过DM提供的控制台工具,管理员可以方便地根据实际应用配置DM数据库的各项参数,从而获得最大的应用性能。详尽的提示信息减少了用户在安装过程中可能出现的问题。通过降低安装的复杂性,简化配置操作,数据库管理员可提高工作效率,普通技术人员也很容易成为数据库系统管理员。
1.5.2
丰富的客户端工具
达梦数据库管理系统提供一系列免费的、集中式的数据库管理工具,这些图形化客户端管理工具基于Java技术,支持远程跨平台统一界面,包括:
1.8.2
1.8.3
1.5.2.1
DM命令行交互式工具DIsql
DIsql 是DM 数据库的一个命令行客户端工具,用来与DM 数据库服务器进行交互。 DIsql 是DM 数据库自带的工具,只要安装了DM 数据库,就可以在应用菜单和安装目录中
找到。 DIsql 识别用户输入,将用户输入的SQL 语句打包发送给DM 数据库服务器执行,并 接收服务器的执行结果,并按用户的要求将执行结果展示给用户。为了更好地与用户交互和 展示执行结果,用户也可以在DIsql 中执行DIsql 命令,这些命令由DIsql 工具自身进 行处理,不被发送给数据库服务器。
1.5.2.2
DM管理工具
DM系统管理工具Manager是管理DM数据库系统的图形化工具,类似于Oracle和MS SQL Server的Enterprise Manager。Manager可以帮助系统管理员更直观、更方便地管理和维护DM数据库,普通用户也可以通过Manager完成对数据库对象的操作。Manager的管理功能完备,能对DM数据库进行较为全面的管理,在不借助其他工具的情况下,能满足系统管理员和用户的常规要求。
1.5.2.3
DM控制台工具
可对数据库执行脱机备份还原、设置数据库配置参数、查看系统信息和许可证信息等操作;
1.5.2.4
DM数据迁移工具
DM数据迁移工具DTS可跨平台实现数据库之间的数据和结构互导,例如DM与DM之间、DM与ORACLE、MS SQL Server之间等,也可复制从SQL查询中获得的数据,还可实现数据库与文本文件之间的数据或者结构互导。
为了实现与ORACLE、DB2、SQL Server等多种主流数据库管理系统的数据交换,DM提供跨平台的数据迁移工具DTS。它是一个用纯Java编写的基于JDBC/ODBC的数据迁移工具,可跨平台实现数据库之间的数据和结构互导,也可复制从SQL查询中获得的数据,还可实现数据库与文本文件之间的数据或者结构互导。在迁移的过程中它最大限度地保留了源数据的原始信息(包括源数据的类型、精度、默认值、主键和外键约束等),还支持迁移过程中的数据类型自动转换,关于转换方面的细节问题可由数据迁移工具自动来为您解决,数据库管理员所要做的仅仅是指定需要进行数据迁移的两个数据库的连接参数和所迁移的数据。
DM良好的数据迁移解决方案为系统移植工作减少了很大一部分工作量,免去系统管理员和开发人员的后顾之忧,能够将更多的精力投入到应用程序的移植上面来。
1.5.2.5
DM数据库配置助手
引导用户进行数据库初始化配置操作。
1.5.2.6
DM性能监视工具
便于数据库管理员对系统的性能情况进行监视和分析,并可以对能够对系统的运行状态,活动会话、空间使用状况、内存、CPU、IO、网络使用情况进行单个的分析和监控,还可以生成AWR报告给用户查看。
1.5.3
实用的管理功能
DM可以根据系统当前内存资源被占用的情况,动态调整数据缓冲区大小,可充分利用系统的内存资源,提升系统性能。
DM的动态性能视图能自动收集数据库中的一些活动信息,系统管理员根据这些信息及时了解数据库运行的基本情况,为数据库的维护和优化提供依据。动态性能视图信息是数据字典的一部分,动态视图信息随着数据库的运行随时更改,具有即时性的特点。
DM动态管理视图可以监控的信息包括:存储模块信息、内存管理信息、事务信息、线程信息、操作历史信息等。
DM允许为各种数据对象定义类型别名,用户可以在管理工具Manager中可视化地新建、删除数据类型别名,或者在交互式工具ISQL中使用系统存储过程创建数据类型别名。系统允许为数据类型定义别名,可大大改善与其他数据库系统的兼容性,方便用户使用和应用移植。
DM允许为各种数据对象定义同义词,可简化操作语句,方便用户使用和应用移植。
在我们的印象中,PL/SQL非常复杂,因为它有自己的语法规则,用户通常都不会去记那么多复杂的语法,只是在用的时候查看手册,所以写一个可以执行并且正确的PL/SQL语句是比较困难的。
在DM中,第一次实现了用C语言语法作为PL/SQL的一个可选语法,这就为那些了解C语言的人提供了很大的方便性,无需去查看手册就可以很自如的完成一个语句块,对SQL程序员而言,这个功能无疑是他们梦寐以求的。
在管理员的工作中,有许多管理职责每天都是固定不变的,比如,每天在下班之前要对数据库进行备份,定期对数据进行分析并生成统计表等等。这些工作通常是单调的而又费时的。将这些可重复的管理任务进行自动化管理,可以节省大量的时间以执行那些缺乏可预测性或可编程性的任务。
在DM系统中,作业调度功能是通过DM代理服务实现的。DM代理服务负责作业的调度执行,并可以邮件或网络通知的方式向管理员反馈信息,实现了无人看守的定期自动维护。作业调度的管理功能集成在管理工具Manager中,通过管理工具Manager,可以完成创建、修改、删除作业(包括SQL脚本、备份和维护计划等)及其调度策略等操作。
DM新增数据库重演功能。数据库重演指在业务数据库上捕获所有负载(包括记录所有外部客户端对服务器的请求),并传送到由业务数据库备份出来的重演测试系统上。利用数据库重演即可再现业务数据库上真实的负载及运行情况,这使得数据库升级或者软件更新等变化可以进行预先的“真实”测试,同时还可为查找和分析系统运行过程中出现的错误和问题提供便利。
DM新增数据库快照功能。数据库快照是一个只读的静态的数据库,它保持和创建快照时刻的源数据库一致。一个数据库可以有多个数据库快照,每个数据库快照在被显式的删除之前将一直存在。
数据库快照比较适合应用于某段时间内需要保留数据库某个时刻的镜像,以便于静态查询或者报表,比如公司内每个月末建立一个数据库快照用来报表,做完报表后删除快照。但是如果需要长期保存数据库镜像,快照则不适用。用户可以通过系统提供的配置参数来打开及关闭数据库快照功能。
1.6
可移植性
为保障用户现有应用系统上的投资,降低系统迁移到达梦数据库管理系统的难度,DM8提供了许多与其他数据库系统兼容的特性,具体如下:
1.4.
1.6.1 支持数组与引用游标
DM PL/SQL中支持数组类型,分为静态数组和动态数组。数组类型为用户在PL/SQL中进行数据批量处理提供了支持,简化了PL/SQL的编写,提升了PL/SQL的灵活性。
DM提供了对引用游标的支持。引用游标的语法、用法与一般游标几乎是一样的,但它具有以下特点:
1.
不只局限于一个查询。可以为一个查询声明或者打开一个游标,然后对其结果集进行处理,之后又可以将这个引用游标为其它的查询打开;
2.
可以对引用游标进行赋值;
3.
可以像用一个变量一样在一个表达式中用这个引用游标;
4.
可以作为一个子程序的参数,也就是它可以像C语言中的变量一样充当参数;
可以在PL/SQL的不同子程序中传递结果集。
包(Package)是在PL/SQL设计中融入的一个新特性,一个可以将相关对象存储在一起的PL/SQL结构。Package的优点在于提供了必需的程序设计结构, 促进了模块化编程设计,使用户能够做到抽象和数据隐藏,从而提高使用的安全性和性能。
达梦数据库管理系统以系统包的形式提供了许多扩展功能,包括空间数据支持包DBMS_GEO、日志分析工具包DBMS_LOGMNR、定时任务管理包DBMS_JOB、预警事件管理包DBMS_ALERT等。
由于支持的系统包较多,为了保持系统本身的轻量级,用户在使用系统包之前,应根据实际需要,有选择地手动执行与各包相对应的SQL脚本文件,即可完成对应系统包的加载,之后就可以无障碍地使用加载的系统包的功能了。
包名
|
功能
|
DBMS_ADVANCED_REWRITE
|
查询重写
|
DBMS_ALERT
|
预警事件
|
DBMS_BINARY
|
读写二进制流
|
DBMS_JOB
|
定时任务的创建
|
DBMS_LOGMNR
|
日志分析
|
DBMS_MEEADATA
|
GET_DDL函数用于获取数据库对象DDL语句
|
DBMS_OBFUSCATION_TOOLKIT
|
数据加密
|
DBMS_OUTPUT
|
调试PL/SQL
|
DBMS_PAGE
|
获取页信息
|
DBMS_RANDOM
|
随机数
|
DBMS_SQL
|
动态SQL访问数据库
|
DBMS_SPACE
|
展示所有物理对象和逻辑对象的存储空间信息
|
DBMS_STATS
|
收集和查看统计信息
|
DBMS_TRANSACTION
|
提供获得当前活动事务号的功能
|
UTL_FILE
|
读和写操作系统数据文件
|
UTL_INADDR
|
网络地址转换
|
UTL_MAIL
|
提供EMAIL管理操作
|
UTL_RAW
|
二进制数据操作
|
UTL_TCP
|
与外部TCP/IP服务器通讯
|
DM除了支持left/right outer join标准写法以外,还支持Oracle的特殊外连接语法(+)指示,方便Oracle用户在DM上使用。
层次查询(Hierarchical Query)是对标准SQL语言进行的扩展,可以提供用户指定条件下分层表示数据的功能。DM新增层次查询功能,并在此功能上与Oracle相兼容,为用户进行层次性的数据查询提供便利。
rownum反映表中记录物理次序,DM可以使用rownum来选择数据集中的某一段数据。
达梦数据库管理系统支持常用的静态视图,用户可以方便地查询数据库对象定义信息。主要包括:
1.用户本地对象定义视图。(前缀为USER_):记录当前登录用户所拥有的对象的定义信息。包括USER_OBJECTS、USER_SOURCE、USER_TABLES、USER_INDEXES等。
2.所有用户的对象定义视图。(前缀为DBA_):记录数据库中所有对象的信息。包括DBA_OBJECTS、DBA_TABLES、DBA_INDEXES等。
1.6.7 方差集函数实现
DM提供与Oracle完全兼容的方差功能,方便用户对于数据进行方差统计。
DM提供与Oracle兼容的多列子查询功能,加强了DM
SQL语言的语义表达能力。
DM扩展了存储过程功能,允许存储过程里面定义子过程和函数。
DM扩展了存储过程的调用语法,允许按照用户指定的参数顺序传递参数。
1.6.11
%TYPE与记录类型的支持
在PL/SQL变量声明的类型定义语法式中,除了常规的数据类型外,还增加了%TYPE和%ROWTYPE的类型定义语法分支。用%TYPE属性定义的变量的类型和数据库列的数据类型一致,用%ROWTYPE属性定义的变量的类型和一个表中一行的记录类型一致。
DM实现了oracle常用的42个OCI接口,满足一般应用的需求,并随着应用的要求,逐步丰富。
1.7
数据库集群
2.
1.
达梦目前的主打产品为达梦数据库DM8,在此基础上达梦开发形成了较为丰富的产品体系。目前在面向传统的事务处理、大数据分析,以及面向互联网、大数据领域都有针对性的主打产品,如下所示:
领域方向
|
举例
|
对应产品
|
大数据分析场景
|
如经营分析、舆情分析等应用
|
大规模并行处理MPP集群
|
超大并发分布式事务处理场景
|
如电商、互联网金融等应用
|
达梦分布式数据库
|
全国产系统
|
如全国产电子公文、党政办公等应用
|
读写分离集群
|
在传统事务处理方面,例如交易系统、办公管理系统,达梦除了单机数据库之外,还开发了共享存储集群。能够实现高可用和一定程度的性能提升。目前已经处于首批用户试用阶段。
对于大数据分析场景,例如经分、首长决策,达梦基于大规模并行计算技术,提供了MPP集群产品,能够充分利用多机并行,大幅提升分析速度,目前在河北公安云、湖北公安云、泰国教育部等项目得到应用,在国安某系统中,支撑了200TB数据的分析。
对于超大规模的并发事务处理,比如达到上十万的并发用户级,面向互联网+领域的应用场景,达梦正在开发分布式数据库。
在全国产、自主替代工程方面,针对国产CPU平台硬件性能相对较低的情况,达梦开发提供了读写分离产品,能将多台国产服务器对外整合为一个统一的数据库实例,在兼顾数据一致性的情况下,实现数据库的负载均衡,效果突出。在NF工程中,基于达梦读写分离集群已经能够支撑千人并发的需求,并在咸阳、余杭等试点上限。
2.
2.1.
2.2.
1.7.1
数据守护集群(DataWatch)
数据库系统往往处在信息系统的核心位置,是系统正常运行的必要基础。因此,用户对数据库系统的安全性和可用性提出了很高的要求。传统的备份恢复技术,基于存储的远程镜像等方法可以满足用户对数据安全性的要求,但无法满足高可用性的要求,从出现故障,到解决故障,重新提供数据库服务的时间往往较长。用户迫切的希望有一种新的解决方案,可以同时满足数据安全性和高可用性的要求。
DM8数据守护(Data Watch)是一种集成化的高可靠性解决方案,同时满足用户对数据安全性和高可用性的要求。解决由于硬件故障、自然灾害等原因导致的数据库服务长时间中断问题,满足用户不间断提供数据库服务的要求。
2
3
3.1
3.2
3.2.1
1.7.1.1
实现原理
DM8数据守护(Data Watch)的实现基础是REDO日志的生成、归档、传输和重做。数据库对象的任何修改,都可以归结为对数据块的改动,REDO日志忠实的记录了数据块内容的变动情况。并且,REDO日志具有原子性、有序性的特征,每条REDO日志记录包含明确的操作内容,并且REDO日志是严格按照操作的先后顺序生成的。借助DM8的REDO日志归档机制,将主数据库产生的REDO日志,通过网络传递到备数据库,备数据库的REDO日志重做服务解析并重做REDO日志,在对应数据块的对应偏移上写入最新数据;从而,实现了备数据库与主数据库之间的数据同步。这种同步是纯粹物理层面的同步,可以严格保证主、备数据库之间数据是完全一致的。
REDO日志由一系列的REDO日志记录RREC组成,根据记录内容的不同,RREC可以分为两类:物理RREC和逻辑RREC。物理RREC的内容包括:修改的数据块、块内偏移、修改类型、修改动作的内容,以及修改内容的长度等信息。
逻辑RREC是专门为数据守护新增加的记录类型,主要是为了解决重做REDO日志与用户访问备数据库之间的并发冲突,以及DDL导致的主备数据库字典缓存不匹配问题。逻辑RREC类型包括:事务启动、事务提交、事务回滚、字典封锁、事务封锁、B树封锁、字典淘汰等。虽然这些操作本身不会修改物理数据块,但是主数据库仍然忠实的记录了这些操作,生成相应逻辑RREC记录。备数据库解析到逻辑RREC记录时,根据记录内容,生成相应的事务,封锁对应的数据库对象,并从字典缓存中淘汰过期的字典对象。
DM8数据守护包含的主要部件有:主数据库、备数据库、联机REDO日志系统、本地REDO日志归档服务、实时REDO日志归档服务、REDO日志重做服务、MAL系统、守护进程和监视器。其中,守护进程和监视器是两个独立的工具,其他部件集成在DM8数据库服务器DMSERVER中。
DM8 Data
Watch 的功能包括:
l 主备机切换(SWITCHOVER)
在主备机正常的情况下,支持通过监视器执行SWITCHOVER来切换主备机,实现主备机计划内的切换。
l 备机接管
在主机故障,并且长时间无法恢复的情况下,用户可以通过备机接管切换TAKEOVER,手动将备机切换为主机,对外提供数据库服务。
l 应用自动重连
通过配置达梦服务配置文件(dm_svc.conf),使用连接服务名访问数据库,在主数据库发生故障后,达梦数据库访问驱动程序自动将连接迁移到新的主数据库上。
l 自动同步历史数据
在故障解决后,恢复的原主机,可以作为备机重新加入数据库守护系统。这个过程无需用户干预,系统自动将其配置为备机并同步历史数据。
l 实时监控
通过监控工具DMWMON,可实时监控主、备数据库的状态和数据同步情况。
l 活动的备用数据库
基于独特的字典缓存技术和日志重演技术,备用数据库在OPEN状态下执行数据同步,是真正意义上的热备机;在实现异地容灾的同时,用户可以只读访问备数据库,执行报表生成、数据备份等功能,减轻主机系统的负载、提高资源利用率。
l 滚动升级
通过DM8 Data
Watch,可通过计划内的主备机切换,在保证应用不宕机的情况下,依次实现对主备机的DM8数据库版本升级。
l 部署简单方便
DM8 Data Watch 部署较简单,仅需要对主备机的配置文件进行一些配置即可搭建完成。
l 可靠的故障处理
主机故障:
² 假如主机实例故障,主机的dmwatch会自动重启主机实例;
² 假如主机硬件故障,主机机器shutdown;
² 备机继续提供只读的数据库服务;
² 若主机数据没有损坏,主机恢复后,继续做为主机提供服务;
² 若主机数据损坏,手工切换备机为主机,并根据备机数据恢复主机;
备机故障:
² 主机的实时归档失效,本地归档继续服务;
² 主机继续提供正常的数据库服务;
² 假如备机的实例故障,备机的dmwatch会自动重启备机实例;
² 假如备机硬件故障,备机机器shutdown;
² 若备机数据没有损坏,备机恢复后继续做为备机,主备机的dmwatch消息互通后,确认备机状态正常,主机的实时归档将生效,数据同步;
² 若备机数据损坏,根据主机数据恢复备机数据;
外部网络故障:
² 假如主机外部网络故障,则无法访问主机,此时备机还提供只读服务;
² 假如备机外部网络故障,则无法访问备机,主机继续提供正常的数据库服务,主机数据更新将通过内网同步到备机;
² 外部网络恢复后,主备机正常访问,在些期间数据一致性不受影响;
内部网络故障:
² 主机继续提供正常的数据库服务,主机实时归档失效;
² 备机提供只读数据库服务,但数据一致性已不受保证;
² 内部网络恢复后,主机实时归档生效,同步期间的数据到备机;
监视器故障:
² 监视器做为Data Watch的状态监视客户端,非必需项,假如发生故障,不影响主备功能正常使用。
l 快速切换
采用TPCC事务模型,分别在120库压力、800库压力下对DM8 DataWatch的切换性能进行测试,测试结果如下:
TPCC 120库,data文件为8.5G,相当于1200个用户并发访问。
TPCC 800库,data文件为65G,相当于8000个用户并发访问。
|
TPCC 120库
|
TPCC 800库
|
Switchover操作
|
10s
|
11s
|
故障自动切换
|
8s
|
8s
|
l 性能稳定
采用TPCC事务模型,分别在120库压力、800库压力下对DM8 DataWatch的性能进行测试,测试结果表明其与单机的性能相比无明显损耗。
TPCC 120库,data文件为8.5G,相当于1200个用户并发访问。
TPCC 800库,data文件为65G,相当于8000个用户并发访问。
|
TPCC 120库
|
TPCC 800库
|
单机性能
|
1,481.77
|
10,165.93
|
Data Watch 性能
|
1,430.02
|
10,198.16
|
l 表现稳定
采用TPCC事务模型,在TPCC 800库压力对DM8 DataWatch的进行稳定性测试,进行7x24小时,表现稳定。
注:TPCC 800库,data文件为65G,相当于8000个用户并发访问.
1.7.2
读写分离集群(DMRWC)
3.2.2
读写分离集群(DMRWC)是DM8提供的一个用于提升并发事务处理性能的集群组件。在一个高并发的事务型系统中,当写事务占的比例相对读事务较小时,DM8提供的这种独具创新的方案DMRWC,可通过客户端来实现读、写事务的自动分离,读事务在备机执行,写事务在主机执行,减轻主机的负载。可配置多台备机,通过增加备机节点资源,提高系统的并发能力,增强系统性能。
1.7.2.1
系统架构
DMRWC系统可通过驱动程序来实现读写事务的自动分离,读事务在备机执行,写事务在主机执行,减轻主机的负载。通过增加备机节点资源,提高系统的并发能力,增强系统性能。DMRWC的系统架构如下图所示。
DM8创新地实现了事务级别的读、写操作分离执行的技术方案。若事务全为读操作,则全部在备机上执行;若事务全为写操作,则全部在主机上执行;若事务既有读又有写,备机会将写操作返回给主机执行,该事务中从写操作开始以后所有操作均在主机上执行,保证事务一致性。如果事务中含有存储过程/存储函数,也支持存储过程/存储函数中的读写操作的分离执行。
为了实现负载均衡,在写事务不多的情况下,为了防止出现读事务过多占用备机资源、主机负载过少造成资源浪费的情况,客户端采用一定的算法进行均衡。用户可通过驱动程序的连接属性来指定主机分配事务数的比例,属性值设得越大,则主机上分配的事务数越多。
同时,负载均衡还具备故障隔离的功能,当某些物理服务器失效时,自动剔除故障服务器,一旦故障得以恢复,用户访问负载则自动加载上来。
当DMRWC的负载趋于饱和时,通过增加备机服务器,系统的负载将重新在所有集群的物理服务器之间重新分配达到新的均衡。举例说明:有1000个并发连接,4台备机,按照负载策略,则每台备机上的连接数为250个;如果再增加一台备机,则每台备机的连接数将为200个。
DMRWC特别适用于办公系统、网站等以读为主、只读事务多于写事务的业务场景,在这样的场景中的性能可以得到较明显的提升。
搭建一主两备的DMRWC,经测试,加速效果如下所示:
图1 读写分离一主两备加速效果图
在一主两备的DMRWC的配置下,当只读事务比例超过整个事务的30%时,开始有加速效果;当只读事务比例超过整个事务的60%时,加速效果明显;当只读事务比例超过整个事务的90%时,加速效果接近线性。
DMRWC中可配置多个实时备机冗余,提升可靠性;支持秒级的故障快速切换。
DMRWC随着用户访问数量的增加,可以增加备机对集群进行扩容,最多可扩展到8台备机;系统性能、可靠性随着节点的增加而增强。一主两备的配置下,最高可达到接近单机3倍的性能提升;一主八备的配置下,最高可达到单机7倍左右的性能提升。
DMRWC的主机和备机采用非共享存储,因此数据库存在多个冗余备份,可以避免单点故障(软件和硬件)可能导致的数据丢失。
DMRWC属于纯软解决方案,具备高度的可移植性。提供跨平台支持,主备机可以跨不同的硬件和操作系统平台使用。对应用透明,不需要对应用程序进行修改就可使用。
1.7.3
大规模并行处理框架(DMMPP)
3.2.3
达梦大规模并行处理集群组件(DM Massively Paralleling Processing Cluster Component,缩写DMMPP)是基于达梦数据库管理系统研发的完全对等无共享式的并行集群组件,支持将多个DM8节点组织为一个并行计算网络,对外提供统一的数据库服务。
在海量数据分析的应用场景中,经常会遇到以下问题:
Ø 大量的读操作需要较高的系统性能支撑;
Ø 数据库响应能力受到硬件的束缚;
Ø 小型机虽然能在垂直领域提供较好单个节点的性能,但是价格较高;
Ø 想防止单点故障的影响。
为了支持上述海量数据存储和处理、高并发处理、高性价比、高可用性等方面的需求,提供高端数据仓库解决方案,达梦数据库提供了大规模并行处理(MPP)架构,以极低的成本代价,为客户提供业界领先的计算性能。
DMMPP采用完全对等无共享架构,最多可支持1024个节点,支持TB到PB级的数据存储与分析,并提供高可用性和动态扩展能力,是超大型数据应用的高性价比通用解决方案。
DMMPP通过分布负载到多个数据库服务器主机,实现存储和处理大规模的数据。采用完全对等的无共享架构 ,每个数据库服务器称为一个EP,每个EP都是独立的数据库。该架构中各个EP节点的功能完全一样,用户可连接DMMPP系统内的任意一个EP节点进行数据操作。
图1 DMMPP系统架构示意图
DMMPP支持节点间和节点内的SQL并行处理,可自动化分区数据和并行查询,无I/O冲突。在处理海量数据分析请求时,各个节点通过内部通信系统协同工作,通过并行运算技术大幅提高查询效率。同时,支持基于主备的高可用性功能。
DMMPP在支持海量数据统计分析的同时,也能够支持事务处理,保证事务的A(原子性)、C(一致性)、I(隔离性)、D(持久性)等特性。
目前的数据仓库解决方案通常是借助通用数据库或基于硬件的专用平台而创建,这两种方案难以从根本上解决当今社会爆发式增长的数据所面临的挑战。目前主流架构有如下几种:
图2 主流架构示意图
通用数据库主要是是针对OLTP处理功能设计的,在运行大量小规模交易查询数据时效果最好。从结构上来说,采用了完全共享或磁盘共享架构。完全共享体系局限于单节点服务器,通常价格比较昂贵,其扩展性和性能受到相应的限制。磁盘共享体系允许系统带有多个服务器实例,这些实例与SAN或其它共享存储设备相连。这种体系需要通过一个狭窄的数据管道将所有I/O信息过滤到昂贵的共享磁盘子系统。
与此相比,基于硬件的数据仓库平台也采用完全无共享体系。在这种体系下,通讯功能部署在一个高宽带网络互连体系上,用户通过一个主控制节点执行并行查询。该体系的一个重要优势就是每个节点都有一个通往本地磁盘的独立高速通道,不但简化了体系,还提供良好的扩展性。但这些平台所面临的困难是需要价格昂贵的专用硬件,显著增加了系统成本。并且主控节点容易形成单点故障,系统规模扩大时可能会成为系统瓶颈。完全无共享型集群的典型代表是EMC Greenplum DCA。
DMMPP的完全对等无共享体系架构结合了完全无共享体系的优点,在此基础上又前进了一步,通过软件提升处理能力,它不需要价格昂贵的专用硬件,也不采用增加主控制节点来协调所有并行处理的主从式方法,而是各个节点完全对等,更进一步简化了体系的实现,也消除了系统可能存在的主节点瓶颈问题。
非结构化的分布式集群架构,以Nosql结合Hadoop集群为代表,用于存储和分析海量非结构化数据,架构具备高可扩展性,软硬件花费较低,性能出色。该架构集群与结构化的分布式集群有不同的应用领域。传统关系型数据库的并行处理集群更善于处理实时数据分析需求,如金融、移动和互联网B2C等对分析响应时间的要求很高的领域;非结构化的分布式集群架构则适用于离线数据分析,如离线统计分析、机器学习、搜索引擎的反向索引计算等对反馈时间要求不那么严苛的应用。
综上所述,将主流架构特点比较列于表1中:
表1 主流架构特点比较
架构名称
|
特点
|
完全共享
|
局限于单节点服务器,价格昂贵,扩展性、性能受限。
|
共享磁盘
|
允许多个服务器实例共享存储设备,有效均衡单实例负载,具有一定的扩展性,但节点规模扩大时,对I/O资源、锁资源等的竞争加剧,可能导致性能的下降。
同时硬件成本昂贵。
|
完全不共享
|
部署在高速网络,各节点相对独立,无共享I/O,扩展性和性能良好,缺点是某些此类架构的系统基于硬件,价格昂贵,成本高,系统中有一个主控节点,系统规模扩充时可能成为瓶颈,主控节点无备份,容易形成单点故障。
|
完全对等不共享
|
DM8采用的MPP架构,继承了完全不共享架构的优点,且各节点完全对等,不需要专用硬件,不存在主控节点,消除了潜在瓶颈以及单节点故障问题;
系统整体查询性能随节点数增加呈线性增长趋势;
相比非结构化的Nosql+Hadoop集群,优势在于在线的实时数据分析能力。
|
非结构化完全不共享
|
Nosql+Hadoop集群架构易扩展;软硬件花费低;
不支持SQL语句,不能存储结构化数据;
适用于离线数据分析,不适用于实时数据分析。
|
1.7.3.3
DMMPP与单机功能对比
DMMPP系统支持DM8的大部分单节点数据库的功能,在功能上的限制不多,如下表所示:
功能项
|
单数据库
|
DMMPP
|
表数据的增删改查
|
支持
|
支持
|
事务的ACID特性
|
支持
|
支持
|
各种约束(CHECK约束、非空约束、外键约束等)
|
支持
|
支持CHECK约束、非空约束;外键约束部分支持,目前限于分布列作为引用列,且垂直分区表不支持
|
分区表(水平分区表、垂直分区表)
|
支持
|
支持
|
大字段
|
支持
|
支持
|
序列和自增列
|
支持
|
支持,但暂不支持创建带自增列的表的聚簇索引
|
函数和过程(系统内部函数、用户定义的函数、过程等;函数、过程中的查询语句,过程中动态执行语句)
|
支持
|
支持
|
触发器(行触发器、语句触发器、事件触发器、时间触发器、Instead of 触发器等)
|
支持
|
支持
|
列存储
|
支持
|
支持
|
各种复杂查询
|
支持
|
支持,性能优于单机
|
本地并行查询
|
支持
|
支持,每个EP节点内部的本地并行
|
本地登录
|
支持
|
支持,客户端只登录MPP系统内的单个节点进行操作
|
位图索引、函数索引、全文索引
|
支持
|
不支持
|
外部表
|
支持
|
不支持
|
闪回
|
支持
|
不支持
|
强制访问控制mac
|
支持
|
不支持
|
由于功能齐全,配置也不繁琐,从用户的体验来看,整个系统显得透明、简单、易用。
触发器、存储函数、过程等的实现原理是将数据收集到主EP上后执行修改数据时再和从EP交互,在大数据量时如果需要考虑效率,不建议使用。
通过前面的叙述,想必大家对于DMMPP在OLAP应用中的优越性有了充分的了解,那DMMPP是不是只适用于OLAP业务呢?答案显然是否定的。
一个集团公司,总公司为省级,下属有各个地市的分公司。总公司员工要读写访问整个集团的数据,各个分公司员工则只需要读写访问自己分公司的数据,另有分公司的客户需要查询一些分公司数据。这是当前大型集团企业的典型应用场景。
图11-1 大型集团企业典型应用场景
可以使用DMMPP搭建如上图的集群架构。
l 集团员工以集群接入方式访问省级数据库服务器MPP集群,对集群数据进行读写操作;
l 分公司员工以本地方式接入MPP集群中本分公司对应的EP,进行读写操作;
l 每个分公司数据通过DM8数据守护配置备机,公司客户登录备机可进行数据查询。
通过上述数据部署,实现了读写操作分离、系统负载均衡,同时数据守护还为系统提供了可靠性保障。
1.7.4
达梦数据共享集群(DMDSC)
3.2.4
达梦数据共享集群是在达梦8版本中作为服务器组件进一步推出,可提供横向扩展,实现超越单一服务器能力。这使得客户可以利用低成本的普通硬件设施来降低总体成本,并且能够在可扩展计算环境中来分散应用的负载。
OLTP测试中,展现了一个面向交易的处理系统运行在集群环境下可以达到在单一SMP服务器上相同的性能,并且在集群环境下还可以提供单一SMP服务器不具备的高可用性。
一个DSC数据库就是一个集群数据库。集群就是一组相互独立的服务器相互协作形成一个整体的,单一的系统。集群架构胜于对称多处理(SMP)系统,它提升了错误恢复能力,并且可随着系统增长而逐步扩展。一旦发生系统失败,集群对用户保证最高的可用性,保障访问关键时业务数据不丢失。通过额外的节点,互连接和服务器这些冗余的硬件设备保证了集群能够提供高可用性。这样冗余的硬件架构可以避免单点故障和提供杰出的错误恢复能力。
图1
DMDSC架构图
采用数据共享集群,我们可以把达梦实例(运行在服务器上的用来访问数据的进程和内存结构)与达梦数据库(在存储设备上的实际数据的物理结构,也就是通常所说的数据文件)进行分离。一个集群数据库是一个可为多个实例访问的单一数据库。在集群中,每个实例在各自的服务器上运行。
达梦数据共享集群是所有服务器共享磁盘的Shared Everything体系,集群中的所有服务器共享DSC数据库的所有存储设备。这种类型的磁盘存储可以是网络附加存储(NAS),可以是存储区域网络(SAN)或者是SCSI磁盘。存储选择取决于硬件选择并且要为硬件厂商所支持。关键在于存储系统要选择能为应用程序提供可扩展的I/O,是一个支持添加服务器到集群中的I/O系统。相对于为应用程序连接到数据库服务器的局域网(LAN),集群需要一个额外的网络。集群需要另外一个私有专用网络来进行互联互通。为了高可用目的,达梦推荐使用两个网络接口。一个网络接口用于外部连接,实现故障保护和负载均衡。另一个用来作为节点间互联互通,消息传递。DSC的缓存交换技术也需要依靠这种连接。对于集群间的节点连接,达梦使用TCP/IP协议。
集群是由一个或多个服务器构成,每个服务器都有局域网(LAN)连接来互联互通,并且都要被连接到共享存储上。达梦集群组件和数据共享集群目前支持最大节点数为2个。集群中的每台服务器在硬件配置上不必一模一样,但必须采用相同的操作系统和同样的达梦数据库版本。所有服务器必须支持相同架构,例如:要么都是32位的,要么都是64位的。
l
文件系统和卷管理
由于DSC是共享所有(Shared
Everything)的体系架构,所以卷管理和文件系统必须是能够支持集群的,例如:NFS、GFS、GFS2。同时,DSC支持使用裸设备或DMASM文件系统存放共享数据库文件。
DMASM(DM Auto Storage Manager)是为了解决裸设备的使用限制而提出的自动存储管理方案。DMASM是一个专用的分布式文件系统,支持多个节点同时访问、修改数据文件,并减少使用裸设备存在的诸多限制。DMASM文件系统把指定的裸设备打包管理,使用DMASM文件系统可以方便的创建/删除/扩展/截断文件,不用担心空间不足(空间不足可以通过增加磁盘扩展空间)或空间浪费;不用考虑文件个数限制;可以方便查看空间使用情况;可以在线通过增加裸设备的方式扩展总体使用空间。
l
配置连接服务名
达梦数据共享集群需要为每个使用该集群的客户端配置一个连接服务名,此配置项需要用户手工配置。用户使用DM的JDBC、DPI等接口连接服务器时,如使用配置的SERVERNAME进行连接,客户端会随机选择一台配置项中ip代表的服务器进行连接。如果发生一个节点失败,可以立即漂移到集群中另外的节点来继续响应连接请求。这种方式增加了应用程序的可用性,连接请求到另一个节点之前,用户不再需要等待一直到网络连接超时。
达梦DSC实现了数据高可用的基础架构,作为达梦高可用体系架构的一个组成部分,提供了最高可用性的数据管理解决方案的最佳实践。达梦DSC高可用解决方案满足了高可用的主要特征。
l
可靠性
达梦DSC消除了单点故障。如果一个实例失败了,集群中其它的实例正常运转。
l
可恢复性
达梦数据库具有很多恢复特性可以从各种类型的失败中恢复。如果DSC数据库集群中的一个实例失败,这会被集群中的其它实例察觉到,恢复自动发生。通过应用透明故障切换(Transparent Application Failover),可以使用户感受不到失败。
l
错误检测
达梦集群组件自动监控DSC数据库和提供在这种环境下快速的问题检测。在问题发生后还没有人注意到之前,就已经开始自动地从失败中进行恢复。快速集群通知(Fast Application Notification)提供了应用程序接收集群中组件失败的通知的能力,并再次提交用户的事务到集群中一个正常运行的节点,避免用户感知失败。
l
持续操作
达梦DSC提供了持续服务能力应付计划及非计划的停机。如果一个节点(或实例)失败,数据库依然保持开启,应用照常访问数据。快速应用通知(Fast Application Notification)和快速连接故障切换(Fast
Connection Failover)对用户隐藏了集群中的组件失败,保证了持续服务能力。
达梦DSC为应用的可扩展性提供了便捷。传统上,当一台服务器处理能力都耗尽时,我们会替换成一台新的更强大的服务器。随着服务器处理能力的增强,它们的价值也更昂贵。使用DSC结构的数据库,可以以另一种方式增加处理能力。传统上运行在大型 SMP 计算机的应用可以被移植到一群小服务器组成的集群上。这种替代使你可以继续维持你在当前硬件的投资,通过增加一个新服务器到集群中(或者把原结构变成集群)来实现处理能力的增强。集群中所有的服务器上必须是同样的操作系统和相同版本的达梦软件,但是这些服务器却不必具备一模一样的处理能力。
达梦DSC体系架构能自动适应快速变化的业务需求和因而发生的负载变化。应用程序的用户和中间层应用服务器客户端通过服务名(Service Name)连接到数据库。达梦自动地在应用中的各个节点上进行负载均衡。在不同节点上的DSC数据库的实例被规划隶属于数据库的服务或数据库的服务的子集。这种方式给DBA们提供了连接灵活性,可以选择让连接某个数据库的特定应用客户端能够连接部分还是全部的数据库节点。当业务需求增长时,管理人员可以轻松通过增加连接节点来增加处理能力。DSC的缓存交换技术可以马上使用新增节点的CPU和内存资源,DBA们无需手工地重新划分数据。
采用DSC数据库的应用程序需要在整个集群范围中管理工作量。达梦DSC拥有管理负载的技术,保证在特定的配置和应用高可用下系统最佳的吞吐量。
在面向交易系统的OLTP中,使用专业工具TPCC进行测试时,显示出了良好的负载均衡能力。
l
服务
负载管理依赖于使用服务。服务通过隐藏DSC数据库的复杂性,提供给用户一个单一的系统影像。应用程序受益于集群的可靠性就是通过服务来实现的。
一个服务能包含一个达梦数据库的一个或多个实例,一个实例能支持多个服务。提供给服务的实例的数量是由数据库管理员动态管理的,与应用无关。当某个节点发生故障,服务自动地恢复到其它存在的实例上。
l
连接负载均衡
达梦提供了数据库连接的负载均衡能力。客户端负载均衡是指在所有的监听器上均衡所有的连接请求。对于集群,是通过在客户连接串中的地址列表里包含了所有集群中可用服务器的地址列表来实现的。数据库连接会随机选择其中一个服务器来连接。如果被选择的服务器不可用,就尝试连接下一个。服务端的负载均衡是在监听上实现的。每个监听监控集群中提供每个服务的所有节点。基于对服务定义的目标,监听选择最能满足这个目标的实例,建立连接。