达梦数据库管理系统技术白皮书.docx
《达梦数据库管理系统技术白皮书.docx》由会员分享,可在线阅读,更多相关《达梦数据库管理系统技术白皮书.docx(20页珍藏版)》请在冰豆网上搜索。
达梦数据库管理系统技术白皮书
达梦数据库管理系统
技术白皮书
达梦数据库有限公司
2013年4月
1概述
达梦数据库有限公司是中国最早从事数据库管理系统研发、生产、销售和服务的专业公司。
达梦是国家规划布局内重点软件企业和双软认证企业,中国数据库标准委员会组长单位,核高基重大专项课题牵头承担单位。
公司主导产品:
原始创新、独立研发、具有完全自主知识产权的达梦数据库管理系统、达梦数据中心与商务智能套件及整体解决方案。
达梦数据库产品已成功用于我国国防军事、电力、审计、电信、税务、财政、党委、安监、公安、安全、信访、政法、计生、教育、水利、统计、物流、制造业、城市应急、卫生医疗、农业等20多个行业及领域,打破了国外数据库产品在我国一统天下的局面,取得了良好的经济效益和社会效益。
达梦数据库管理系统(简称DM7)是达梦数据库有限公司推出的具有完全自主知识产权的大型通用关系型数据库管理系统。
达梦数据库管理系统是达梦公司在总结DM系列产品研发与应用经验的基础之上,吸收主流数据库产品的优点,采用类JAVA的虚拟机技术,重新设计的新一代数据库产品。
DM7采用全新的体系架构,在保证大型通用的基础上,针对可靠性、高性能、海量数据处理和安全性做了大量的研发和改进工作,极大提升了达梦数据库产品的性能、语言丰富性、可扩展性,能同时兼顾OLTP和OLAP请求,从根本上提升了DM产品的品质。
达梦数据库的产品发展历程见图1。
图1达梦数据库产品历程
2通用性
2.1硬件平台支持
达梦数据库管理系统兼容多种硬件体系,可运行于X86、SPARC、POWER等硬件体系之上。
DM各种平台上的数据存储结构和消息通信结构完全一致,使得DM各种组件在不同的硬件平台上具有一致的使用特性。
2.2操作系统支持
达梦数据库管理系统产品实现了平台无关性,支持Windows系列、各版本Linux(2.4及2.4以上内核)、Unix、Kylin、AIX、Solaris等各种主流操作系统。
达梦数据库的服务器、接口程序和管理工具均可在32位/64位版本操作系统上使用。
2.3应用开发支持
●开发环境支持
达梦数据库管理系统支持多种主流集成开发环境,包括PowerBuilder、Delphi、Visualstudio、.NET、C++Builder、Qt、Jbuilder、Eclipse、ZendStudio等;
●开发框架技术支持
支持各种开发框架技术,主要有Spring、Struts、Hibernate、IBATISsqlmap、EntityFramework、ZendFramework等;
●中间件支持
支持主流系统中间件,包括Weblogic、Websphere、Tomcat、Jboss、东方通TongWeb、金蝶Apusic、中创InfoWeb等。
2.4标准接口支持
达梦数据库管理系统提供对SQL92的特性支持以及SQL99的核心级别支持;支持多种数据库开发接口,包括OLEDB、ADO、ODBC、OCI、JDBC、Hibernate、PHP、PDO、DBExpress以及.NetDataProvider等。
2.5网络协议支持
达梦数据库管理系统支持多种网络协议,包括IPV4协议、IPV6协议等。
2.6字符集支持
达梦数据库管理系统完全支持Unicode、GBK18030等常用字符集。
2.7国际化支持
达梦数据库管理系统提供了国际化支持,服务器和客户端工具均支持简体中文和英文来显示输出结果和错误信息。
3高可用性
3.1快速的自动故障恢复
DM7服务器始终只是一个进程,无论采用何种保护措施,总是不可能完全避免系统故障的情况,如操作系统崩溃、机器掉电等。
当外部故障消除后,DM服务器重新启动,需要快速消除当机造成的破坏,恢复到故障前状态,重新为客户端提供数据服务。
而帮助数据库系统从故障中恢复,避免数据丢失和完整性破坏的工具,就是DM7的REDO日志系统。
DM7改造了REDO日志的管理策略。
采用逻辑LSN值替代了原有的物理文件地址映射到LSN生成机制,极大简化了REDO日志的处理逻辑,从而也提高了日志自身的稳定性与可靠性。
REDO日志可以压缩存储,有效减少IO代价。
在故障恢复时采用了并行处理机制执行REDO日志,有效减少重做花费的时间。
3.2基于REDO日志的主备系统——数据守护
主备系统是DM数据库管理系统提高容灾能力的重要手段。
系统由一台主机与一或多台备机构成。
主机提供正常的数据处理服务,备机则时刻保持与主机的数据同步。
一旦主机发生故障,备机中的一台立刻可以切换成为新的主机,继续提供服务。
主备机的切换是通过服务器、观察器与接口自动完成的,对客户端几乎完全透明。
DM7的主备系统基于优化后的REDO日志系统开发,功能更加稳定可靠。
主备机间传递压缩的日志数据,通信效率大大提升。
DM7主备环境搭建非常简单。
首先在主机生成完全备份,还原到备机上;然后连接主备机器,主机就可以利用归档日志自动与备机同步数据,主备系统搭建就此完成。
利用备份文件与归档日志,主备环境的搭建不再需要繁琐的操作或冗长的时间等待。
服务器新增了配置模式,DM7服务器系统可以在不停机状态下在单机系统与主备系统间平滑变换,其在特殊环境下的实用性不言而喻。
借助改进的字典缓存机制,DM7的主备系统可以提供全功能的数据库支持。
客户端访问主机系统没有任何的功能限制,而备机同样可以作为主机的只读镜像,支持客户端的只读查询请求。
图2DM7数据守护系统框架图
3.3可靠的备份与恢复
DM数据库系统可以提供数据库或整个服务器的冷/热备份以及对应的还原功能,达到数据库数据的保护和迁移。
DM7在原有数据库级备份/还原功能基础上,新增了表级物理备份功能。
表级备份操作将指定表的所有数据页保存在备份文件中,并在控制页中记录其关联信息。
还原时,从目标数据段中逐个分配新页,复制内容,并按照记录中关联信息重新构造还原出原始数据。
表级物理备份兼具了物理备份的快速性和逻辑备份的针对性,具有很强的实用性。
表级备份可以作为特定对象数据迁移与快速装载的解决方案。
基于表级备份技术进行数据库的备份还原,还可以达到数据库文件的重组与收缩目的。
3.4逻辑日志
DM7数据库管理系统在物理的REDO日志之外,又添加了逻辑日志。
逻辑日志记录数据库表上的所有插入、删除、更新等数据变化。
可以指定部分表记录逻辑日志,也可以设置所有表记录。
借助逻辑日志,DM7系统可以提供操作分析、数据重演以及数据复制等高级功能。
3.5高级复制
DM7数据库管理系统的复制功能基于逻辑日志实现。
主机将逻辑日志发往从机,而从机根据日志模拟事务与语句重复主机的数据操作。
相对语句级的复制,逻辑日志可以更准确地反映主机数据的时序变化,从而减少冲突,提高数据复制的一致性。
DM7提供基于事务的同步复制和异步复制功能。
同步复制即所有复制节点的数据是同步的,如果复制环境中的主表数据发生了变化,这种改变将以事务为单位同步传播和应用到其他所有复制节点。
异步复制是指在多个复制节点之间,主节点的数据更新需要经过一定的时间周期之后才反映到从节点。
如果复制环境中主节点要被复制的数据发生了更新操作,这种改变将在不同的事务中被传播和应用到其他所有从节点。
这些不同的事务间可以间隔几秒、几分钟、几小时,也可以是几天之后。
复制节点之间的数据在一段时间内是不同步的,但传播最终将保证所有复制节点间的数据一致。
DM的数据复制功能支持一到多、多到一、级联复制、多主多从复制、环形复制、对称复制以及大数据对象复制。
3.6基于共享存储的集群技术
DM数据库管理系统提供基于共享存储的高性能集群(REALAPPLICATIONCLUSTERS)。
达梦数据库共享集群,支持共享数据文件访问,多个数据库实例访问相同的数据文件,内部采用缓存交换技术,实现实例间的数据访问与传递。
共享集群不同实例之间使用内部通讯系统交互。
集群架构中,对于每一个数据库实例,数据库文件和控制文件都是共享的;日志文件是独立的,即每个实例拥有私有日志文件。
支持故障转移机制。
当某个实例发生故障时,系统将其屏蔽,其余实例将自动接管故障节点的连接负载,数据库服务不会中断。
4高性能
4.1查询优化
DM7数据库管理系统采用多趟扫描、代价估算的优化策略。
系统基于数据字典信息、数据分布统计值、执行语句涉及到的表、索引和分区的存储特点等统计信息实现了代价估算模型,在多个可行的执行计划中选择代价最小的作为最终执行计划。
同时,还支持查询计划的HINT功能,可供经验丰富的DBA对特定查询进行优化改进,进一步提高查询的效率和灵活性。
DM7数据库管理系统查询优化器利用优化规则,将所有的相关子查询变换为等价的关系连接。
相关子查询的平坦化,极大降低了代价优化的算法复杂程度,使得优化器可以更容易地生成较优的查询计划。
4.2面向栈的虚拟机执行器
DM7数据库管理系统的SQL语句执行是仿照JAVA虚拟机(VM)模式实现的。
这种运行机制可以有效提升数据计算以及存储过程/函数的执行效率,具有以下特点:
1.采用以字长为分配单位的标准堆栈,提高空间利用率,充分利用CPU的2级缓存,提升性能;
2.增加栈帧概念,方便实现函数/方法的跳转,为PL/SQL脚本的调试提供基础;
3.增加内存运行堆的概念,实现对象、数组、动态的数据类型存储;
4.采用面向栈的表达式计算模式,减少虚拟机代码的体积、数据的移动;
5.重新定义指令系统,增加对对象、方法、参数、堆栈的访问,便于实现PL/SQL的执行。
DM7实现的虚拟机结构如下图所示。
图3DM7实现的虚拟机结构图
4.3批量数据处理
当数据读入内存后,按照传统策略,需要经过逐行过滤、连接、计算等操作处理后,才能生成最终结果集。
在海量的数据处理场景下,必然产生大量重复的函数调用及数据的反复拷贝与计算代价。
在DM7数据库管理系统中引入了数据的批量处理技术,即读取一批,计算一批,传递一批,生成一批。
数据批量处理,具有显而易见的好处:
1.内存紧靠在一起的数据执行批量计算,可以显著提升操作系统CACHE命中率,从而提升内存处理效率;
2.数据成批而非单行地抽取与传递,可以显著减少在上下层操作符间流转数据的函数调用次数;
3.采用优化的引用方式在操作符间传递数据,可以有效降低数据复制的代价;
4.系统标量函数支持批量计算,可以进一步减少函数调用次数。
采用批量数据处理策略后,大批量数据查询的效率可以成倍提升。
4.4查询计划重用
SQL语句从分析、优化到实际执行,每一步都需要消耗系统资源。
查询计划的重用,可以减少重复分析操作,有效提升语句的执行效率。
在某些情况下,DM7数据库管理系统采用参数化常量方法,使得常量值不同的查询语句,同样可以重用查询计划。
经此优化后的计划重用策略,在应用系统中的实用性明显增强。
4.5查询结果的缓存
DM7数据库管理系统提供查询结果集缓存策略。
相同的查询语句,如果涉及的表数据没有变化,则可以直接重用缓存的结果集。
查询结果缓存,在数据变化不频繁的OLAP应用模式,或存在大量类似编目函数查询的应用环境下有非常良好的性能提升效果。
在服务器端实现结果集缓存,可以在提升查询速度的同时,保证缓存结果的实时性和正确性。
4.6多版本的并发控制
DM7数据库管理系统采用“历史回溯”策略,对于数据的多版本并发控制实现了原生性支持。
DM7改造了数据记录与回滚记录的结构。
在数据记录中添加字段记录最近修改的事务ID及与其对应的回滚记录地址,而在回滚记录中也记录了该行上一更新操作的事务ID与相应回滚记录地址。
通过数据记录与回滚记录的链接关系,构造出一行数据的完整更新历史各版本。
DM7数据库管理系统的多版本并发控制技术,数据中仅存储最新一条记录,各个会话事务通过其对应可见事务集,利用回滚段记录组装出自己可见的版本数据。
使用这种技术,不必保持冗余数据,也就避免了使用附加数据整理工具的尴尬。
多版本并发控制技术,使得查询与更新操作间互不干扰,有效提高了高并发应用场景中的执行效率。
4.7改进的异步检查点
DM7数据库管理系统采用更加有效的异步检查点机制。
新检查点采用类似“蜻蜓点水”的策略,每次仅从缓冲区的更新链中摘取少量的更新页刷盘。
反复多次刷页达到设定的总数比例后,才相应调整检查点值。
相对原有检查点长时间占用缓冲区的策略相比,逻辑更加简单,速度更快,对整体系统运行影响更小。
4.8DDL高并发技术
DM7数据库管理系统中实现了数据字典缓存技术。
DDL语句被转换为基本的DML操作,执行期间不必封锁整个数据字典,可以有效降低DDL操作对整体系统并发执行的影响。
4.9可配置的工作线程模式
DM7数据库管理系统的内核工作线程同时支持内核线程和用户态线程两种模式,通过配置参数即可以实现两种模式的切换。
内核线程的切换完全由操作系统决定,但操作系统并不了解、也不关心应用逻辑,只能采取简单、通用的策略来平衡各个内核线程的CPU时间;在高并发情况下,往往导致很多无效的上下文切换,浪费了宝贵的CPU资源。
用户态线程由用户指定线程切换策略,结合应用的实际情况,决定何时让出CPU的执行,可以有效避免过多的无效切换,提升系统性能。
DM7的工作线程在少量内核线程的基础上,模拟了大量的用户态线程(一般来说工作线程数不超过CPU的核数,用户态线程由数据库的连接数决定)。
大量的用户态线程在内核线程内部自主调度,基本消除了由于操作系统调度产生的上下文切换;同时,由于内核线程数的减少,进一步降低了冲突产生的概率,有效提升了系统性能,特别是在高并发情况下的性能提升十分明显。
4.10查询内并行处理
DM7数据库管理系统为具有多个处理器(CPU)的计算机提供了并行查询,以优化查询执行和索引操作。
并行查询其优势就是可以通过多个线程来处理查询作业,从而提高查询的效率。
在DM7数据库中有一个查询优化器,会对SQL语句进行优化后数据库才会去执行查询语句。
如果查询优化器认为查询语句可以从并行查询中获得较高的效率的话,就会将本地通讯操作符插入到查询执行计划中,为并行查询做准备。
本地通讯操作符是在查询执行计划中提供进程管理、数据重新分发和流控制的运算符。
在查询计划执行过程中,数据库会确认当前的系统工作负荷和配置信息,判断是否有足够多的线程允许执行并行查询。
确定最佳的线程数后,在查询计划初始化确定的线程上展开并行查询执行。
在多个线程上并行执行查询时,查询将一直使用相同的线程数,直到完成。
每次从高速缓存中检索查询执行计划时,DM7都重新检查最佳线程数。
4.11系统缓冲区改进
DM7数据库管理系统采用了多缓冲区机制,将数据缓冲区划成多个分片。
数据页按照其页号,进入各自缓冲区分片。
用户访问不同的缓冲区分片,不会导致访问冲突。
高并发情况下,这种机制可以降低全局数据缓冲区的访问冲突。
DM7数据库管理系统支持动态缓冲区管理,根据不同的系统资源情况,管理员可以配置缓冲区伸缩策略。
4.12分段式数据压缩
DM7数据库管理系统支持数据压缩。
将一个字段的所有数据,分成多个小片压缩存储起来。
系统采用智能压缩策略,根据采样值特性,自动选择最合适的压缩算法进行数据压缩。
而多行相同类型数据一起压缩,可以显著提升数据的压缩比,进一步减少系统的空间资源开销。
5高安全性
5.1安全等级
达梦数据库管理系统是具有自主知识产权的高安全数据库管理系统,DM7已通过公安部安全四级评测。
图4达梦数据库安全等级
5.2安全结构体系
DM7数据库管理系统的安全结构体系如下图所示:
图5达梦数据库安全结构体系
5.3双因子结合的身份鉴别
DM7数据库管理系统提供基于用户口令和用户数字证书相结合的用户身份鉴别功能。
当接受的用户口令和用户数字证书均正确时,才算认证通过,用户口令和用户数据证书有一个不正确或与相应的用户名不匹配,则认证不通过,这种增强的身份认证方式可以更好的防止口令被盗、冒充用户登录等情况,为数据库安全把好了第一道关。
另外,DM7数据库管理系统还支持基于操作系统的身份认证、基于LDAP集中式的第三方认证。
5.4审计分析与实时侵害检测
DM7数据库管理系统提供数据库审计功能,审计类别包括:
系统级审计、语句级审计、对象级审计。
DM7的审计记录存放在数据库外的专门审计文件中,保证审计数据的独立性。
审计文件可以脱离数据库系统保存和复制,借助专用工具进行阅读、检索以及合并等维护操作。
DM7提供审计分析功能,达梦通过审计分析工具Analyzer实现对审计记录的分析功能。
用户能够根据所制定的分析规则,对审计记录进行分析,判断系统中是否存在对系统安全构成危险的活动。
DM7提供强大的审计实时侵害检测功能,用于实时分析当前用户的操作,并查找与该操作相匹配的审计分析规则。
根据规则判断用户行为是否是侵害行为,以及确定侵害等级,并根据侵害等级采取相应的响应措施。
响应措施包括:
实时报警生成、违例进程终止、服务取消和账号锁定或失效。
5.5自主访问控制
DM7数据库管理系统提供了系统权限和对象权限管理功能,并支持基于角色的权限管理,方便数据库管理员对用户访问权限进行灵活配置。
DM7数据库管理系统的系统权限和对象权限的最大的区别在于系统权限不属于某个具体的数据库对象。
系统权限指的是在数据库内建表权限、建视图的权限等,而对象权限则是定义对某个具体数据库对象的访问权限,如对某个表的插入、删除更新和查询权限等。
当某个用户拥有数据库对象上的某些操作权限及相应的转授权时,该用户可以不用申请和审批,自主地把这些操作权限部分或全部转授给其他用户,从而使得其他用户获得在这些数据库对象上的使用权。
DM也提供级联回收方式来回收这种通过转授所获得的权限。
在DM7数据库管理系统中,可以对用户直接授权,也可以通过角色来授权。
角色表示一组权限的集合,数据库管理员可以通过创建角色来简化权限管理进程。
可以把一些权限授予一个角色,而这个角色又可以被授予多个用户,从而使基于这些角色的用户间接地获得权限。
在实际的权限分配方案中,通常先由数据库管理员为数据库定义一系列的角色,然后再由数据库管理员将权限分配给基于这些角色的用户。
5.6所有主客体的强制访问控制
DM7数据库管理系统提供强制访问控制功能,而且强制访问控制的范围涉及到数据库内所有的主客体,该功能达到了安全四级的要求。
强制访问控制是利用策略和标记实现数据库访问控制的一种机制。
该功能主要是针对数据库用户、各种数据库对象、表以及表内数据。
控制粒度同时达到列级和记录级。
当用户操作数据库对象时,不仅要满足自主访问控制的权限要求,还要满足用户和数据之间标记的支配关系。
这样,就避免了管理权限全部由数据库管理员一人负责的局面,可以有效防止敏感信息的泄露与篡改,增强系统的安全性。
在系统中,安全管理员可以在每个数据库中定义多种安全策略,每个安全策略包括一组预定义的标记组件,一个标记可以定义多个等级、范围和组,用来表示现实生活中的不同安全特征。
安全管理员将这些安全策略应用于客体和用户上,就给用户、客体、表和元组等都指定了安全标记。
在为用户应用策略时,同时可以授予策略特权。
策略特权分为读、写特权,用来设置读写数据是否受策略影响以及改变行标记的特权配置。
用户访问表时,必须保证应用于表上的所有强制访问控制策略均应用于该用户,比较的先后顺序是等级、组和范围,否则访问被拒绝。
若表上未应用任何强制访问控制策略,则用户只需满足自主访问控制条件即可。
5.7基于SSL协议的通讯加密
DM7数据库管理系统支持基于SSL协议的通讯加密,对传输在达梦客户端和服务器端的数据进行非对称的安全加密,保证数据在传输过程中的保密性、完整性、抗抵赖性。
5.8存储加密
DM7数据库管理系统实现了对存储数据的透明存储加密、半透明存储加密和非透明存储加密。
每种模式均可自由配置加密算法。
用户可以根据自己的需要自主选择采用何种加密模式。
(1)透明存储加密
对于透明存储加密,密钥生成、密钥管理和加解密过程由系统自动完成,用户在数据操作过程中无需人工干预。
该功能使对表有访问权限的用户能像对待普通数据一样操作加密数据,在不影响应用逻辑的同时保护数据库中的敏感数据的存储安全。
(2)半透明存储加密
对于半透明存储加密,系统通过对DDL语句进行扩展提供设置加密的接口,另外提供系统函数辅助用户管理密钥,根据用户密钥以及加密设置自动完成加解密动作。
通过该功能,用户能够利用自己提供的密钥对隐私数据加密,对其它用户隐藏私有数据,基本不影响应用逻辑,提高了存储加密的易用性。
(3)非透明存储加密
对于非透明存储加密,系统以存储函数的方式对外提供接口,支持文本、二进制等各种数据类型的加密。
5.9资源限制
DM7数据库管理系统实现了多种资源限制功能,包括并发会话总数、单用户会话数、用户会话CPU时间、用户请求CPU时间、会话读取页、请求读取页、会话私有内存等,这些资源限制项足够丰富满足资源限制的要求,达到防止用户恶意抢占资源的目的,尽可能减少人为的安全隐患。
保障所有数据库用户均能正常访问和操作数据库。
DM7同时还可配置表的存储空间配额。
系统管理员可借此功能对每个数据库用户单独配置最合适的管理策略,并能有效防止各种恶意抢占资源的攻击。
5.10加密引擎
DM7数据库管理系统提供加密引擎功能,当DM7内置的加密算法,比如AES系列、DES系列、DESEDE系列、RC4等加密算法,无法满足用户数据存储加密要求时,用户可能希望使用自己特殊的加密算法,或强度更高的加密算法。
用户可以采用DM7的加密引擎功能,将自己的特殊的或高强度的加密算法按照DM提供的加密引擎标准接口要求进行封装,封装后的加密算法,即可以在DM的存储加密中按常规的方法进行使用,大大提高了数据的安全性。
5.11客体重用
DM7数据库管理系统内置的客体重用机制使数据库管理系统能够清扫被重新分配的系统资源,以保证数据信息不会因为资源的动态分配而泄露给未授权的用户。
6易用性
6.1丰富的管理工具
DM7数据库管理系统提供了一系列基于Java技术的多平台风格统一的全图形化客户端工具,包括系统管理工具Manager、数据迁移工具DTS、性能监视工具Monitor等,同时支持基于Web的管理工具,该工具可以进行本地和远程联机管理。
DM提供的管理工具功能强大,界面友好,操作方便,能满足用户各种数据管理的需求。
图6DM7图形化客户端工具界面
6.2PL/SQL调试工具
DM7数据库管理系统提供了功能完善的PL/SQL,使得SQL程序员能通过DMPL/SQL实现强大的预定义功能,随之而来的是PL/SQL语句块的复杂度不断提高、规模不断扩大、正确性难以得到保证。
为此,DM7提供了PL/SQL调试工具DMDBG,可调试在直接执行的非DDL语句或语句块,以便定位PL/SQL中存在的错误。
DMDBG工具允许用户设置调试语句、进行断点操作、单步执行、打印变量、显示堆栈等,功能强大且易于使用。
图7PL/SQL调试工具DMDBG
6.3快速数据迁移
达梦数据库的数据迁移工具提供了主流大型数据库迁移到DM、DM到DM、文件迁移到DM以及DM迁移到文件的功能。
DM数据迁移工具采用向导方式引导用户通过简单的步骤完成需要的操作。
DM数据迁移工具支持数据类型的自动转换,并保留了源数据库中对象的属性(如约束、触发器的启用/禁用状态等),极大地减少了系统移植的工作量。
数据迁移工具支持:
●主流大型数据库Oracle、SQLServer、MySQL、DB2、PostgreSQL、Informix、Kingbase、Sybase的模式、表、视图、序列、索引等对象迁移到DM;
●ODBC数据源、JDBC数据源的模式、表、视图迁移到DM;
●DM数据库的模式、表、视图、序列、索引等对象迁移到主流大型数据库Orac