如何发表论文?如何做到论文发表既能正常引用又不抄袭呢?如何选择论文发表网代发论文?
[摘要]在智能网业务升级和割接中,经常会遇到大量的数据割接、搬迁,本文介绍了一种对大数据量割接也非常有效且简单易行的数据割接方法:增量数据割接法。
[关键词]基线建立、增量割接
一、增量割接法产生的背景:
某局华为智能网系统进行升级,该局发行UCS卡号业务,数据量为900万,机器为HP L2000,采用informix数据库,由于当初的磁盘规划不合理,所有的数据库空间都分布在一块普通硬盘上,没有任何RAID处理,数据转移效率非常低。
割接前进行了数据迁移测试,测试的数据如下:
业务为UCS1.5,basetab_206表中900万记录,数据倒换时间如下:
(1)在HP L2000单机上使用ipload倒换的时间:导出15分钟,导入10分钟
(2)在HP D280的HDR上直接倒换数据的时间:导入10000条/20秒
(3)在HP L2000的HDR上直接倒换数据的时间:导入约2.5小时
(4)在HP L2000的HDR上采用先倒主机(无日志)、再主机0机备份到备机恢复的时间:零级备份+恢复=90分钟
升级过程中割接时间一般是从临晨0:00到6:00,总共6小时,减去割接失败回退的时间1.5小时,整个割接过程只有4.5小时。若按普通方法进行割接,单数据倒换就至少需要2个小时,加上业务验证等其他零星工作,整个升级过程至少4个小时。如果过程中出现什么意外,几乎没有时间定位问题。为解决此问题,于是便提出了增量倒换的概念。
二、增量割接法原理:
增量割接法的主要思想是提前将在线将数据进行一次完全割接,正式割接当晚,只倒换自完全割接后更新过的数据。
一般情况下,要在正式升级割接的前几天(设为n)在线作一次数据的完全倒换。在正式割接当晚,将n+1天(1天的过渡时间,这主要是防止跨天呼叫漏掉)的更新数据导入。
简而言之,增量割接分为两个步骤,第一步做一次完全的数据割接,也就是基线建立的过程;第二步是正式割接的过程,需要找出变化过的数据,并只针对变化过的数据进行倒换。因此如何找出变化过的数据是关键。
三、增量割接法方案设计:
下面以UCS业务改造为ICRAD业务,对basetab表的卡数据进行割接为例,描述增量割接法的具体实施步骤:
设UCS业务的卡号表为basetab_206,ICARD业务的卡号表为basetab_ccs,欲将basetab_206表中的数据割接到basetab_ccs
1、 割接前基线数据的建立:正式割接前1天先做一次将UCS业务的basetab_206表的数据全部迁移到ICARD的basetab_ccs表中,因不受时间的限制,可以选择普通的unload、dbload方式进行数据的倒换;
2、 找出更新过的卡数据:分析ucs业务可以得知,对basetab_206表中数据的更新主要有以下三点:
(1)新开户数据,根据basetab_206表的lastusedatetime字段识别;
(2)普通呼叫流程在密码验证成功后,更新basetab_206的lastusedatetime;
(3)转帐过程中,转出帐号更新lastusedatetime, 转入帐号不更新。
找出更新过的卡数据的脚本如下(假设将这些数据倒出汇总到changedcard.unl中):
select*from basetab_206 where lastusedatetime[1,8]>=[基线数据建立日期-1天];
select b.* from ucs_transferlog a
left join basetab_206 b on a.accountnumbert=b.accountnumber
where a.registerdatetime[1,8]>=[基线数据建立日期 -1天 ];
3、 下一步要根据选出的数据,将新表中的相关数据删除,再将这些更新数据插入,更新到基线数据建立的表上,即可完成整个倒换。具体实现如下:
(1)使用dbload将changedcard.unl中的 accountnumber字段数据装入新库的一个表中,如changedcard(仅含一个字段accountnumber)
(2)执行:delete from basetab_206 where accountnumber in (select * from changedcard)
(3)将changedcard.unl装入新库的basetab_ccs中。注意这时basetab_ccs的accountnumber要建唯一索引,以防止有重复的记录插入。
四、增量割接法的注意事项:
增量割接法通过割接前的基线数据的建立,将耗费大量时间的数据迁移提前做了,正式割接时只需要将自基线数据建立以来有过更新的那部分数据进行割接,从而大大减少了正式割接时要迁移的数据量,也就达到了节约割接时间的目的。
从增量割接法的两个步骤来看,第一步是基线数据的建立,这一步的数据迁移可以在任何时间来做,只要注意不影响机器性能,可以采用HPL、SPL、ESQL/C编程、SHELL编程、unload/dbload等各种数据迁移的方法来做,因此在基线建立的过程没有制约条件的限制。
第二步是对增量数据的割接,这一步要考虑要确保能够判断出自基线数据建立后更新过的数据。首先要列举出导致数据更新的不同操作,比如开户、销户、转帐、打电话、充值等操作都会更新数据,要将可能导致数据更新的操作一一列举出来。其次,对列举出来的导致数据更新的操作要能够找出数据更新的判断条件,这很关键,一般来说业务对数据进行更新时,都会有记录更新时的时间的记载。
参考文献
[1] 张光业.Informix向导—Informix SQL参考与语法[M].北京:人民邮电出版社.2001.
[2] 孙刚玉.Informix系统管理员指南[M].北京:科学出版社.1999.
[3] 任赟.IBM informix数据库维护技巧谈[J].甘肃科技,2004,第11期.