达梦数据介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
达梦如何冲击核心业务系统
——国产数据库的产品发展之道韩朱忠
达梦数据库
一家国产数据库厂商
愿景——坚持原始创新、实现产业报国
提供丰富的数据处理产品和解
决方案:
•数据交换
•数据管理
•数据分析
达梦坚持以关系数据库(DM7)
为基础
说到“国产数据库”——起步
中国数据库国产化的努力工作,始于上世纪80年代
达梦公司的前身——大学的一个课题组,同期起步
重大行业核心的生产、控制
和管理系统
行业外围系统或中小企业信
息管理系统
关于“国产数据库”——缓慢前行
三十年来,国产厂商大部分的努力,
都是在低端市场搏杀
金融、电信核心交易系统
毋容置疑,从市场来看国产数据库发展的太慢
低技术含量、低利润、低知名度、低品牌形象
高端市场难以突破
2008
电力调度,生产库——核心系统
三家厂商拼了近3年,首单落地——选型PK、定制开发、性能调优、驻场维保
Now:90+%份额Get
但仅这样,还远远不够!
2012
中国航信-航空电子客票
2013
国家工商管理总局-国家企业
信用信息公示
值得激动的新机遇
重大行业核心
的生产、控制
和管理系统
行业外围系统
或中小企业信
息管理系统
金融、
电信核
心交易
系统
市场利益&社会责任
民航电子客票
中国民航市场2016年规模达到
900余万次航班
4.9亿人次出行
经过三年的服务和支持
达梦先后在首都航空、西藏航空、国航、东航成功投产,后续将进一步全面替代
稳定&可靠
——满足365*24的不间断运行
性能
——从容应对节假日、重大活动等出行高峰期的机票查询、预定请求
快速移植
——支持开发商在3个月内,完成涉及到约10万行数据库相关源码(对象定义、SQL、过程、触发器)从Oracle向DM的移植
国家企业信用信息公示
将服务于大量投资者、媒体、监管机构及社会公
众全国上亿企业、个体从业者的登记、变更、及查询等服务
向相关机构提供全国企业经营数据分析结果
截至目前,已部署达梦集群实例三十余套,日检索业务1650万笔
性能
——满足复杂分析和并发事务处理请求
运维
——满足数据中心的所有DB实例集中管理要求
挑战简要汇总如下
稳定&可靠
快速移植
性能
运维
01
02
03
04
更高的产品质量Oracle 兼容
高可用方案
SQL 优化能力大规模部署监控维护
并发性能
产品技术的应对——质量
365*24运行,意味着产品必须有良好的代码质量
常见的稳定性
问题
内存泄露问题内存初始化问
题
非法输入问题环境异常问题资源占用问题复杂负载问题……
对测试水准提出更高要求
执行:自动化的版本编译、执行、问题报
告系统
•每日冒烟测试
•生成用例/场景上万个
•纯文本测试脚本达到6GB
•覆盖主流软硬件平台
•向研发自动提交测试发现的严重问题
测试覆盖面:不断扩展测试方法和内容
•测试用例自动生成
•静态代码分析
•动态内存泄露检测
•自动故障注入
•系统性能剖析
•仿真系统测试
•……
用户量以50%速度增加,而漏出缺陷在下降
挑战简要汇总如下
稳定&可靠
快速移植
性能
运维
01
02
03
04
更高的产品质量Oracle 兼容
高可用方案
SQL 优化能力大规模部署监控维护
并发性能
传统意义上的高可用•实时数据复制•自动故障切换•两地三中心多活•……
达梦面临高可用的第二重含义——异
构双活
•达梦到其他数据库
•实时数据复制
•故障切换
高可用方案的双重含义
针对部分初次接触达梦的用户——高可用方案的双重含义
购买一套国产
数据库把应用移过去上线应用移植完成,经过了调试优化、仿真测试,是否就可以上线?
疑问:
•仿真测试环境与真实生产环境等效?
•万一有潜藏的功能性能问题爆发,导致业务停滞怎么办?•只能选择上线或不上线,没有第三种选择?
•是否上线谁能说了算,凭什么说了算?
部署方式:
达梦数据库
其他数据库
应用系统
实时数据同步DMHS
效果
实时同步,同时支持国外主流系统和国产系统
在线数据对比,不停止在线生产系统情况下,确保两边数据完全一致
其他产品为主达梦为备达梦为主其他
为备
达梦
在线数据对比
试运行/风险评估期
缓解疑虑建立信任
中国铁建神华集团用友政务工商管理总局国家电网海南社保中新网湖北知识产权局南方电网国家海洋局中船**河北财政厅中国航信重庆经济信息中心**审计厅……
挑战简要汇总如下
稳定&可靠
快速移植
性能
运维
01
02
03
04
更高的产品质量Oracle 兼容
高可用方案
SQL 优化能力大规模部署监控维护
并发性能
与开源数据库相比
商业数据库在产品技术上,核心优势在哪里?达梦在服务于行业用户、核心业务系统时,认识到了一项关键区别——复杂SQL的处理能力
来看一条我们曾经经历过的SQL 的例子
with
“COL1" as
(
select
"I".“XCOL1"+1 "PzPeriod" ,
'0.0' "OrderNum" ,
null "PzDay" ,
'' "VchrNum" ,
'' "DFKM" ,
1 "SortOrder" ,
0 "ItemOrder" ,
0x00000000000000000000000000000000 "RECID",
'' "Digest" ,
'' "CurrencyName" ,
1 "POSTFLAG" ,
1 "ORIENT" ,
'' "DEFAULNAME" ,
sum(
case when "I"."BF" is null
then 0.0 else "I"."BF" end*
case when
“X"."ORIENT"=0x0000000000000000000000000000
0001 then 1 else -1 end) "BF",
……
from
“Y_T" "S"
)
"S"
放进word里,达到359页;共1 3 .9千行
)
"N"
17个inner join、557个子查询、831个or筛选、1000+个查询字段、2451个like筛选条件、2731个case when表达式
达梦的SQL引擎
需要有处理此类查询的能力!
达梦SQL 引擎
分析器Parser
优化器Optimizer
执行器Executor
总体来说,达梦拥有一个典型的、基于代价的关系数据库SQL 引擎
SELECT A,C FROM T1 WHERE B LIKE ’DM’;
统计信息
数据字典
数据
执行结果
语法分析语义分析
关系代数变换代价优化
语法树SFW 结构关系树优化了的关系树
SQL 脚本物理计划生成执行计划
SQL 引擎的具体处理流程
重点打磨对象
为提供更强大的SQL 处理能力DM7六年来对SQL 引擎进行持续改进
用集合操作取代迭代操作
•外层表下压消除相关
•内外层半连接(SEMI
JOIN)
充分考虑多种连接方案代价
•计算N个最大表的连接代价•确定候选连接顺序(Catalan数)•过滤条件下放代价计算
•变换Or到最外层,便于索引利用
•变换Or为IN,利用子查询,成为
集合操作
针对大量表的Join(如:6表以上)减少Join
参与表的数量,改进计划代价生成速度
•满足特定条件的表,下推到子查询内
•下推:筛选条件下推视图,增
强过滤条件
•上拉:部分情况下,直接将视
图分解到上层查询
•前后通配符优化为Position操作
•前通配符优化为可利用
REVERSE函数索引
Such as
Or运算符变换
相关子查询变换
下推探测表视图优化Like优化
生成连接次序
More and more
✓多级分区加列✓truncate ✓删列
✓删除多级分区表✓拆分split ✓新增分区
✓优化后,很多操作与O 性能相当或快10-100倍
✓like 表达式存在可计算函数的优化
✓优化分析阶段获取表行数操作的优化,避免了每次从磁盘获取行数信息
✓Top n 查询改写为rowid/pk in 子查询,减少字段解析消耗; ✓Union 分支的连接公因子提取优化;✓布尔表达式范围合并的加强;
✓增加统计操作符实际返回行数的功能;✓位图连接索引的使用增强;
✓in value list 在mpp 、lpq 下的motion 计划优化✓.......
分区表
优化器改进
✓hash 表memset 优化
✓分区表hash 连接的裁剪;
✓水平分区表分区列的排序、分组优化✓多层嵌套的分组合并
✓通过增加排序操作实现归并连接;✓嵌套循环半连接增加key 的缓存处理
执行器
分区表
执行器
优化器
其他
✓内存管理模式优化✓Tpcc 性能提升明显
其他改进
回过头来看这条SQL
20分钟+1分钟以内
放进word里,达到359页;共1 3 .9千行
17个inner join、557个子查询、831个or筛选、1000+个查询字段、2451个like筛选条件、2731个case when表达式
挑战简要汇总如下
稳定&可靠
快速移植
性能
运维
01
02
03
04
更高的产品质量Oracle 兼容
高可用方案
SQL 优化能力大规模部署监控维护
并发性能
民航客票系统,机票信息的源头
接入各航空公司的官网订票系统、机票代理商、互联网出行平台……
国家企业信用信息公示,开放的互联网服务平台面向社会公众,日均查询访问1650万次
数据库并发性能是用户的核心关注
高并发
能力
系统
架构
内核
设计
底层
技术•多线程架构•
读写分离、共享存储等集群架构
•行级封锁
•多版本并发控制•并行日志
•事务可见性判断•Buffer&Cache 设计•异步检查点机制•……
•线程同步机制•原子操作实现•异步IO 模型•用户态线程•
……
数据库并发设计优化是系统性的工作
多版本并发控制
•很多数据库实现了MVCC:Oracle、MySQL/InnoDB、PostgreSQL •PostgreSQL:未引入回滚段
•各版本数据都存在数据文件,数据膨胀问题
•导致大量更新后的扫描性下降
•Oracle:基于块的MVCC
•DM7:基于行的MVCC
•更多并发更新、查询集中在一
个Page的情况下
•提供更好的并发能力
封锁机制
•Mysql/Innodb
•使用一个hash表总体管理行锁
•每个page的行锁使用一个bitmap表示•更新page越多,维护锁的内存开销越大•锁越多,需要进临界区的次序就越多
物理实现的锁代价是高昂的
•Oracle每个记录的LockBit指向Block的ITL,描述了锁信息
•实现锁的消耗要小得多DM7更进一步,彻底消除行锁
Mysql/Innodb行锁示结构意图
•修改过的行标识对应事务的编号(唯一递增,TID)
•读-写:根据本事务ID与记录TID大小判
断可见性
•写-写:基于页面闩+TID可见性,实现
锁定效果
•减少资源消耗
•没有锁升级问题
DM7行级锁示意图
TPC-C单机压力极限测试
Intel Xeon E5-2697V4*2 384GB DDR4
PCI-E SSD 2TB 稳定在:1,330,000 tpmc
约相当于:
70万QPS (90%为增删改)
TPC-C单机并发测试
10Warehouse
50 Session
100Warehouse
500 Session
1000Warehouse
5000Session
达梦179802.75tpmc220590.48tpmc134995.45tpmc
友商A162375.36tpmc208364.16tpmc46959.04tpmc
友商B134974.85tpmc209131.97tpmc69196.5tpmc
注:
采用benchmarksql4.1.1作为测试工具
Intel Xeon E5-2620v3 *2
96GB DDR3
SAS 10K RPM 600GB*2 RAID1
设备不变,并发量X100,
数据量X100,
DM性能损耗最小
近期某项目POC测试
挑战简要汇总如下
稳定&可靠
快速移植
性能
运维
01
02
03
04
更高的产品质量Oracle 兼容
高可用方案
SQL 优化能力大规模部署监控维护
并发性能
核心业务系统是国外产品的天下
达梦是后来者
兼容策略是成本最低的开发人员培育、项目替代方案
提供达梦数据迁移工具完成数据迁移,支持数据快速装载
包含几乎所有Oracle 的数据库对象,且创建语法及使用方式与Oracle 保持一致高度兼容的数据类型、PL/SQL 、动态视图等特性
采用单库、单实例的架构,与Oracle 保持一致
文件组织结构、并发控制特性的概念与机制接近
逻辑概念相近,快速理解数据库结构
Oracle 原生接口级兼容
从底层到上层,完整的兼容体系
•业务系统几乎没有对数据库相关代码进行修改
•保证如期完成系统移植
•用户的注意力得以聚焦在系统稳定性和性能
•兼容Oracle 的OCCI 接口;
•兼容Oracle 的DBLINK 定义和使用;•兼容Oracle 的包PACKAGE 定义和使用;•兼容Oracle 的作业JOB 的定义和实现;•兼容Oracle 的系统包(UTF_FILE 、DBMS_SQL 、DBMS_OUTPUT 、DBMS_JOB 、DBMS_LOB 等);
•兼容Oracle 的DMP 文件导入和导出的逻辑备份方式;
•兼容Oracle 的DUAL 伪表、ROWNUM 伪列等•兼容Oracle 语法风格的Pro C 接口•……
针对民航客票系统的兼容改进
•延续了开发商对Oracle 深层技术的使用习惯•实现了原oracle 50万行存储过程的平滑移植•
保证了与oracle 一致的用户体验
•兼容Oracle 的VPD 虚拟数据库模块;
•兼容Oracle 的merge into 语法;•兼容Oracle 的正则表达语法;•兼容Oracle 的系统包、系统视图(DBMS_RANDOM 、DBMS_STATS 、
DBA_OBJECTS 、DBA_JOBS 、USER_TYPES 、USER_SEGMENTS 等);•兼容Oracle 的last_value 、to_clob 、decode 等函数;
•兼容Oracle 的分区表结构修改语法;•兼容Oracle 的CASE WHEN 动态拼接语法;•兼容Oracle 的序列取值范围;•……
南网财务的兼容特性清单Case:VPD 兼容Case:正则语法兼容
挑战简要汇总如下
稳定&可靠
快速移植
性能
运维
01
02
03
04
更高的产品质量Oracle 兼容
高可用方案
SQL 优化能力大规模部署监控维护
并发性能
核心业务系统在部署维护方面与相对外围的、中小规模的系统相比有很大的不同
规模化集中
化
自动
化
远程
化
•基于WEB
•对象管理
•集群部署
•状态监控与告警等功能
支撑了用户约三十余套达梦集群实例的统一部署、
监控和管理
产品技术的应对——小结
拿下核心系统,是由于对以下需求进行了积极响应
提供建立信任的渠道(提供异构同步机制)
系统稳定性有保证(充分测试,保证代码质量)
性能足够良好(良好的SQL引擎与并发优化)
能以较低成本、较快速度与现有应用适配(Oracle兼容)
提供较好的管理运维方案(Web化运维管理平台)
新进展&新计划
共享存储集群
•ASM 、
VIP
、负
载均衡、
TAF 等
特性
•已小规模上线试
运行易用性
•进一步完善DEM 运维管理平台•兼容性持续改进
生态
•得到ArcGIS 原生支持的唯一国产品牌
•更多重量级ISV
的合作云
•公有云——阿里云市场上架•私有云——H3C 、华为、浪潮云解
决方案集成
服务
•达梦技术支持互联网门户•“管家式、深层次”数据库服务
我们
梦想做最好的数据库
脚踏实地、聚焦技术
面对用户永远谦逊
扫码微信关注达梦动态扫码加入达梦技术QQ群。