海量数据在线并发迁移模式创新与实践(四)-研究现状

曾对需攻关难题的现状进行研究能够有效地掌握当前主流解决方案及其优劣,找到理论支撑,避免重复研究和盲目试错,站在前人的肩膀上来探索,提高创新效率。

==================================

3.1数据量高速增长带来的潜在问题

3.1.1清理数据困难,大量不活跃数据长期占用存储资源

我行自2012年新系统上线以来,我行业务发展迅速,业务量高速增长。按照2015年初的数据与2012年相比,日均交易量等指标翻了两番。

1、对于这种超大数据量的表,常规的数据清理方法已经无法胜任。

(1)DELETE

DELETE方法是最常用的数据库删除数据的方法,该方法执行时会记录数据库日志,删除大量数据会导致数据库日志爆满。

(2)Truncate

该方法执行时会清除表中的所有数据,不记录数据日志,但是明细表不可能删掉全部的数据,还需要保留至少最近一年的数据;

2、对于大数据的迁移,如何在尽可能短的时间内完成迁移是当前业内技术难题。

现有数据库数据迁移一般采用传统“DB加载”的方式,比如load、import等方式虽然速度快,但是实现方式都是基于数据库自身技术的实现,且受限于进程数量的限制无法实现并行加载数据。

(1)IMPORT

问题:

a、锁定表

根据是否允许对表进行并行访问,IMPORT会获取对现有目标表的独占(X)或非独占(IX)锁定,导致业务系统等待超时。

b、介质文件占用空间

IMPORT的使用是基于EXPORT导出后的介质,进行导入动作。由于导出介质所需存储空间巨大,致使实施期间需要频繁的进行存储空间的腾挪,浪费了大量的时间。

c、记录日志

对海量数据插入时,执行效率降低,服务器开销增大。极端情况下导致业务中断。

(2)LOAD

LOAD实用工具的导入效率比import/insert高许多,原因是该工具直接针对数据库的页面进行操作,因此节省了绝大部分的导入开销。

问题:

a、字段截断

在装入过程中,LOAD对表对象的列宽有严格要求 假如有一列的宽度为9,但是表中定义该列的宽度为6,因此针对每一行,load工具都对该列进行了截断操作,从而导致整体装入速度大幅降低,且导致数据完整性被破坏。

b、不允许中断

LOAD动作不允许中断,例如:crtl+c或者 kill 命令中断后数据表不可访问。对在线生产业务系统造成灾难性后果。

3.1.2数据量的增长无法维系数据库系统的原有性能

(1)备份时间长。

数据库备份需要16个小时才能完成。

(2)增删改查效率低下。

(3)倒出数据的时间长,影响外围系统的运行。

(4)执行数据库维护操作时间较长。

对TABLE5表执行一次倒出全量数据需要超过4个小时,4个小时就已经超出每晚维护窗口时间,其它维护操作需要的时间就更长了。

3.1.3数据的可维护性较差,影响业务运行

维护部门也曾考虑进行数据清理,但每天的维护时间窗口有限,清理的数据量又非常巨大,根据估算,采用传统的清理方法,即使采用“蚂蚁搬家”式的每天清理,就需要持续半年时间才能完成任务,且过一两年后还要再做一次,这给系统运维部门带来巨大的压力,同时也给应用部门带来不便,给我行发展造成不良影响:

1、全人工操作,风险性不可控。

2、特别是存在两难困境。

TABLE5表是24小时运行的用户明细表,它没有执行维护的窗口时间,即使使用连续几个维护窗口,也不可能长时间中断业务来执行维护清理历史数据的任务。

TABLE5海量的数据又决定了它不可能在较短时间内,或短时间中断业务的情况下就可以清理掉如此之多的数据。前面提到过TABLE5表仅执行一次数据倒出就需要四个多小时,这就已经超出每晚的维护窗口时间了;如果使用DELETE每天删除一小部分数据,据估算至少需要半年时间才能出来完成。

3.2数据完整性中的潜在风险

数据完整性遭到破坏会给数据迁移课题乃至企业带来致命的危害。如果数据完整性遭到破坏而没有被及时检测出来会引发的风险如下:

1、目标应用程序的稳定性风险

数据完整意味着数据结构完整正确。数据完整性遭到破坏时,有可能是数据结构出现问题。即使所有相关的数据全部成功导入新的应用程序,已迁移数据有可能破坏目标应用程序的稳定性。而数据结构遭破坏,更加加大了对目标应用程序稳定性的威胁。就是说数据完整性影响了目标应用程序的稳定性。

2、切换中止风险

切换是指将正在运行的系统由原始应用程序切换到目标应用程序,原始应用程序正式成为过去时。切换不成功的最主要的原因就是数据迁移过程中数据发生的错误,应用程序运行正常,但是数据不允许切换,切换不成功说明数据迁移时失败的。

3、执行时间风险

执行时间风险是指实际的数据迁移执行时间会比预想的长出很多。数据迁移的执行时间与数据量的关系并不是简单的线性关系。再加上数据之间或许存在排序和连接,数据中间发生错误,这更会延长数据迁移的执行时间,大量的数据迁移和错误的数据迁移不仅会延长执行时间,还可能直接导致死机。

4、意外或长时间的停机风险

意外或长时间停机是指切换需要的实际时间远比计划的时间要长。这就会给公司的业务带来很大延误。比如,生产线或者银行系统在超出预期的时间外不能运行,就会导致银行不能提供服务,生产线不能生产汽车。停机时间决定数据迁移成功或失败的关键,应尽可能的减小停机时间。而数据中途出现错误和丢失导致的数据结构改变会引发停机风险。

5、兼容性风险

如果在数据迁移过程中数据结构发生变化,可能产生兼容性风险。例如,如果数据的某个参数发生了变化,它将在没有被适当识别的前提下不允许添加客户。然而,如果客户的账户信息存在于原应用程序中,目标应用程序中又存在此约束,原本应该被完全迁入目标应用程序而没有被正确迁入,这时就会产生兼容性风险。

6、业务完整性风险

业务完整性风险包括两个方面:一方面体现在迁移数据的过程中丢失一个或多个业务对象,另一方面体现在增加了额外的业务对象。业务完整性通过数据完整性来体现。

7、数据迁移失败风险

这是最直接也是最大的风险,数据迁移失败不仅浪费了大量的人力、物力,对于企业的业务也会产生很大的影响。数据的完整性是决定数据迁移是否成功的重要判断依据之一。倘若迁移的数据是不完整的损坏的,都会对正常的营业产生很大程度的影响。所以要在数据迁移之前要详细做好回退的方案。

8、盈利能力风险

盈利能力即成本和收入。成本分为直接成本和间接成本,直接成本及数据迁移工程本身的成本依附于其课题预算。间接成本则是由于一些错误的数据迁移产生,比如汽车制造业有500辆红色和20000辆黑色轿车的订单,如果数据迁移之后,订单变成20000辆红色和500辆黑色轿车,就会产生上万辆车的订单数据差异,大大增加生产成本。

9、名誉声望风险

名誉声望对于一个公司来说至关重要。一旦公司信誉受到损坏,重新赢得信誉所需花费巨大。公司的任何一个小失误都有可能影响到公司的名誉,该公司旗下的所有产品都会受到不利影响,直接危害公司的经济利益。

10、受监管程度风险

公司需要在相关监管部门的监管之下运营。若公司给监管部门的印象是正面的,那么监管部门对于他们来说是让人尊敬的。但是若给监管留下不良印象,对该公司来说,不仅会面临金钱上的处罚,在业务运行中,会面临更多的责难和不便。

由上述阐述可见,数据完整性在数据迁移过程中有着非常重要的地位。数据完整性遭到破坏,数据迁移课题不可能顺利实施。数据完整性风险不是独立存在的,它的产生想将会引发一系列的其他风险,每一个引发的风险又会引起其他类型的K险,最终导致数据迁移失败,企业利益受损甚至倒闭。

参考文献:

【1】谭玉娟. 数据备份系统中数据去重技术研究. 华中科技大学

【2】魏建生. 高性能重复数据检测与删除技术研究. 华中科技大学

【3】夏文. 数据备份系统中冗余数据的高性能消除技术研究 华中科技大学

【4】杨东华. 李宁宁 .王宏志 基于任务合并的并行大数据清洗过程优化 计算机学报

【5】张安珍. 门雪莹. 王宏志大数据上基于Hadoop的不一致数据检测与修复算法 计算机科学与探索

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181114G1DGBZ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券