文章来自达梦技术社区:
项目背景
随着社会经济的发展,我国的电网调度取得了前所未有的发展,国家电网已经建立了由国调、网调、省调、地调、县调组成的全国五级电网调度系统。建设这些调度系统需要近万套数据库软件的支撑,如果全部采用ORACLE数据库,将给我国的电网调度系统建设带来沉重的经济负担。
纵观现代战争的案例,如南斯拉夫战争、伊拉克战争,第一个遭受打击的就是电力系统,如果国家电网的核心调度系统采用国外的基础软件就会受制于人。
2008年5月12日,四川汶川发生大地震,四川的主调系统在这次大地震中受到了很大的影响,因此,建立异地备调系统显得尤为重要。
2008年7月的一天晚上8点,国家电网调度中心的专家打电话找到了我们的技术服务人员咨询达梦数据库发展现状。第二天我们的技术服务人员就来到了国家电网的电力调度中心给相关领导和技术专家详细介绍了达梦数据库技术特性和应用情况,并就他们关心的技术要求进行了现场演示。现场的专家看了我们的演示非常惊讶,他们没有想到国产数据库也可以做得这么好,决定给我们两周的时间将原有基于ORACLE的应用系统移植到达梦数据库上,并召集了国内4家国产数据库厂商进行移植,最先完成的厂商将会在四川备调系统中得到应用。
移植过程
原有的应用系统采用了ORACLE的专用接口OCI,并且使用了大量的存储过程、触发器,PL/SQL代码行数约为20000行。这些PL/SQL中使用了大量的ORACLE特性,比如:数组类型、引用游标等,因为非标准接口OCI和PL/SQL的大量时用导致移植难度非常大。
达梦数据库最大的特点是坚持原始创新。在这个项目中,原始创新不再是一句空话,原始创新的技术优势得到了充分的发挥。由于掌握了所有的核心技术,达梦数据库对ORACLE的兼容性更好,并且对数据库访问接口的理解更加透彻。我们的项目团队在一周内完成了PL/SQL的移植测试,提前两天完成了OCI接口的封装、测试。在4家国产数据库厂商中,唯有达梦数据库在预定的时间内完成了移植、测试工作。最终,达梦数据库获得了国家电网技术专家们的认可,正式采用达梦数据库作为四川备调系统的商用数据库平台。
2008年12月基于达梦数据库的全国首个省级异地备调中心四川备调系统通过国家电网的验收,正式上线运行。
这是第一个基于国产数据库的电力行业核心应用,基于达梦数据库的“四川备调系统”的成功应用,不仅证明了达梦数据库管理系统完全能胜任国家核心业务要求,更极大的增强了国家电网领导在电力行业推行国产数据库的信心。
达梦数据库PL/SQL兼容性:
• (+)外连接语法支持
• rownum完整实现
• connect by实现
• 方差集函数实现
• 多列in实现以及相关的优化
• 块内嵌套子过程,函数的支持
• 按名调用存储过程功能
• Package功能
• %TYPE与记录类型的支持
下面这个函数是一位ORACLE专家(ORACLE OCE)试用DM数据库时构造的计算个人所得税的例子,ORACLE上创建的存储函数在DM数据库上不用做任何修改即可运行。
SQL>CREATE OR REPLACE FUNCTION F_TAX
2 (P_SALARY IN NUMBER, P_START IN NUMBER DEFAULT 2000)
3 RETURN NUMBER AS
4 V_SALARY NUMBER := P_SALARY - P_START;
5 BEGIN
6 IF V_SALARY <= 0 THEN
7 RETURN 0;
8 ELSIF V_SALARY <= 500 THEN
9 RETURN V_SALARY * 0.05;
10 ELSIF V_SALARY <= 2000 THEN
11 RETURN V_SALARY * 0.1 - 25;
12 ELSIF V_SALARY <= 5000 THEN
13 RETURN V_SALARY * 0.15 - 125;
14 ELSIF V_SALARY <= 20000 THEN
15 RETURN V_SALARY * 0.2 - 375;
16 ELSIF V_SALARY <= 40000 THEN
17 RETURN V_SALARY * 0.25 - 1375;
18 ELSIF V_SALARY <= 60000 THEN
19 RETURN V_SALARY * 0.3 - 3375;
20 ELSIF V_SALARY <= 80000 THEN
21 RETURN V_SALARY * 0.35 - 6375;
22 ELSIF V_SALARY <= 100000 THEN
23 RETURN V_SALARY * 0.4 - 10375;
24 ELSE
25 RETURN V_SALARY * 0.45 - 15375;
26 END IF;
27 END;
28 /
CREATE OR REPLACE FUNCTION F_TAX
(P_SALARY IN NUMBER, P_START IN NUMBER DEFAULT 2000)
RETURN NUMBER AS
V_SALARY NUMBER := P_SALARY - P_START;
BEGIN
IF V_SALARY <= 0 THEN
RETURN 0;
ELSIF V_SALARY <= 500 THEN
RETURN V_SALARY * 0.05;
ELSIF V_SALARY <= 2000 THEN
RETURN V_SALARY * 0.1 - 25;
ELSIF V_SALARY <= 5000 THEN
RETURN V_SALARY * 0.15 - 125;
ELSIF V_SALARY <= 20000 THEN
RETURN V_SALARY * 0.2 - 375;
ELSIF V_SALARY <= 40000 THEN
RETURN V_SALARY * 0.25 - 1375;
ELSIF V_SALARY <= 60000 THEN
RETURN V_SALARY * 0.3 - 3375;
ELSIF V_SALARY <= 80000 THEN
RETURN V_SALARY * 0.35 - 6375;
ELSIF V_SALARY <= 100000 THEN
RETURN V_SALARY * 0.4 - 10375;
ELSE
RETURN V_SALARY * 0.45 - 15375;
END IF;
END;
time used: 4.685(ms) clock tick:5683670.
SQL>SELECT F_TAX(10000) FROM DUAL;
SELECT F_TAX(10000) FROM DUAL;
1 1225
1 rows got
time used: 30.050(ms) clock tick:50174960.
达梦数据库OCI接口兼容性:
达梦数据库封装了ORACLE OCI的29个常用接口如: OCIInitialize、OCIEnvInit、OCIServerAttach、OCILogon等,使采用ORACLE OCI接口的业务系统具备了可移植性,用户的业务系统不再深度依赖ORACLE,只需要做较小的改动就可以移植到达梦数据库上来。
目前国家电网新的业务系统已经完全基于达梦数据库进行开发,基于达梦数据库的备调系统将在全国范围内推广,并且开始在主调系统中采用达梦数据库。2010年3月中国首个基于国产数据库的主调系统——华中电网主调系统通过验收,稳定上线运行。
由于电网系统业务的复杂性,达梦数据库原始创新可定制的特性得到了淋漓尽致的发挥。电网新的业务模型要求数据库能够创建1000个列以上的大表,ORACLE单表最大支持1000个列,也不会为某个项目进行定制,而达梦数据库为电网系统量身定制,最大支持2000个列,并对大表更新的效率进行了充分的优化,20万行1400多列的表,单列全表更新性能能够在2秒以内,优化了电力系统业务模型,极大提高了系统效率。
普通更新算法流程:首先批量绑定更新参数,然后生成执行计划,最后根据计划扫描每一个ID进行更新,需要执行20万次;优化后的更新算法采用特殊的绑定方式,生成特定的执行计划,减少执行流程,执行一次更新完20万行的数据,提高更新效率。
安全性要求
由于美国高安全等级的电子产品对华限制出口,所以在中国市场上的国外数据库安全等级最高只能达到C2级,对应于国家安全标准的二级,所有基于国外数据库构建的信息系统都会存在安全上的短板。而达梦数据库安全等级达到B1级,也就是国家安全标准的三级,通过了公安部三级安全认证和中国人民解放军软件评测中心的军B级认证。国家电力系统的安全性关系到国计民生,不能有丝毫的马虎,达梦数据库安全版在电力行业的成功应用,弥补了电力调度系统在数据库安全上的短板。
可用性要求
电网系统对可用性的要求是99.98%,即一年的停机时间不得超过2小时,这样对数据库的可用性要求就更高了。达梦数据库提供类似ORACLE DATA GUARD的主备同步功能,能有效保障数据库的可用性,对外提供不间断的数据库服务。
如下图所示,通过搭建数据库的主备同步,可以在不影响业务系统正常运行的情况下,实现补丁的滚动升级,重大版本升级,硬件维护升级等工作,保障系统的可用性。
本地化服务
在电网系统建设过程中,达梦数据库充分发挥了本地化服务的优势,积极参与系统建设,在功能、性能、可用性等方面都做了很多的改进,在数据库层面为业务系统扫清了许多障碍。
理解与支持
达梦数据库之所以能在电力行业的核心业务中取得成功与国家电网领导的大力支持是分不开的,他们一直致力于电网系统的国产化,为国家节约了大量的资金,并从根本上保障了电力系统的安全可控性。
国产数据库的春天
从达梦数据库在电力行业的应用历程可以看出,国产数据库已经发展到了给一点阳光就可以灿烂的程度了。亲爱的朋友们,我们国产数据库的春天已经到来,请多给我们一些阳光吧!