充值信息

赞助信息

推荐给好友 上一篇 | 下一篇

基于商业智能的FinMIS管理信息系统(三)



    作为是信息密集的金融行业,本银行的其电子化发展程度相对较高,应用系统架构也较为复杂。目前,本银行系统状况主要硬件平台包括IBM ES9000,RS/6000,等,操作系统为OS/390,UNIX、WINDOWS等,数据库包括DB2,ORACLE等,异构系统平台,众多业务应用。

    针对数据源的复杂和多样性,FinMIS系统应用DataStage软件作为ETL开发工具。该ETL工具具有强大的数据处理功能,能够适应业务系统中异构的源数据,系统支持大量不同的数据编码格式。FinMlS系统中还应用了并行处理的多进程处理方式,大大加快对大量原始数据的处理。同时系统支持主流的数据库接口,保证了数据能够正确存储。

    随机(Random)算法

    该算法将输入的数据随机的分配到系统的所有处理节点中去。和Round robin算法类似,在大数据量的时候,随机数据分区基本上能够将输入的数据平均的分配到各个处理节点中去,但是随机算法比起Round robin算法就需要消耗额外的一点系统性能,因为该算法需要为每一条输入数据计算一个随机值。

    哈希(Hash)算法

    该算法对数据的分区是基于对每条记录中一个或者多个数据项(哈希分区的键值)进行映射的特定函数。系统校验输入的每条记录的键值,具有相同键值的记录将被分配到相同的处理节点中去。这个方法能够保证具有相互关联键值的记录(哈希函数映射结果相同的记录)分配在同一个分区中进行处理,这一特性对保证某些处理操作的正确进行是非常有用的。例如,如果需要删除输入数据中所有键值重复的记录,就可以利用哈希函数对数据进行分区,让具有相同键值的记录都分配到同一个处理节点中,然后就可以在个节点中删除重复的记录。但是,哈希算法并不能将数据平均的分区。例如,如果在最坏的情况下,所有的输入数据都只有一个相同的键值,那么所有记录都将被分配到一个处理节点中去,而其他处理节点将没有数据要处理。在这种情况,由于部分节点将要处理比其他节点更多的数据,就可能造成系统处理的瓶颈。

    整体处理(Entire)算法

    该算法将输入的数据集整个复制每个处理节点中去,也就是说,所有的节点都具有和输入数据一样的数据。这种处理方式能够得到最优的并行处理性能,但是系统需要将整个输入数据集读入,需要占用更多的存储器。在进行映射查找(100kup)时,往往就使用这种算法,因此当输入的数据集非常庞大时,利用整体处理方式,在进行数据复制时就可能造成大量的I/o消耗。

    排序合并(Sorted merge)算法

    该算法主要应用在对已经分区的数据进行收集。该算法将每条输入记录的一个或者多个数据项作为键值,然后按照这个键值读取数据,这个键值就是数据收集的键值。通过对不同节点分区中的第一条,或者最后一条记录进行键值的比较,得出其值最小,或者最大者,并输出该记录。

    最典型的例子就是,在对输入的数据集进行分区排序后,可以应用排序合并算法来收集所有的分区数据,得到完整的有序的输出数据集。应用该算法收集数据的前提是,收集数据所使用的键值,必须和数据排序的键值相同。

    顺序处理(Ordered)算法

    该算法应用在数据收集。该算法从第一个分区中读取所有的记录,然后再从第二个分区中读取所有记录,如此类推读取所有分区的记录。这个数据收集算法保留了各个分区中数据的顺序。该算法的典型应用,就是在进行了全局排序的分区中收集数据。由于进行了全局排序,各分区内部的所有记录都是有序的,各分区之问也是有序的,因此应用顺序处理,能够直接将全局排序的数据输出到一个单独的文件中。上述为常用的数据分区和收集算法,其他可用算法还有取模(Modular)、范围划分(Range)等等。

    并行处理数据的正确性

    通过上述分区算法,能够将原来串行处理的数据进行切割,并分配到并行运行的节点中进行处理。但是,并行处理时也带来以下问题:

    1.输入数据原来的次序被打乱

    2.各分区中数据不完整

    由于各节点之间进行孤立的处理,互不相干,原来完整的数据之间的关系被割裂,因此以上问题可能会造成数据处理出现错误。

    举一个典型的排序为例,在进行排序时,输入的数据将被分到不同的节点中进行处理。在各个节点当中,可以应用不同的算法进行对数据的排序。但是在各节点中数据已经完成排序后,将各个节点数据收集时,如果不加以控制,而是简单的将各节点的数据进行顺序组合,就可能收集回来的整体数据并没有完全排序好。例如有如下数据,在实际操作中记录的业务交易数据,现在需要按照客户代码进行排序,在并行处理时设置两个进程,即有两个处理节点。如果对数据不加以处理,则可能出现以下情况。

   由上可见,虽然在各节点内数据是已经排序的,但是由于收集数据时使用的是顺序收集,所以输出的数据整体还是没有进行排序。为了解决这种情况存在的问题,可以采取以下两个措施:

    1.调整分区算法,使用哈希算法进行分区。哈希算法能够保证相关的记录都分配到同一各节点上,而具有相同排序键值的记录,则有利于排序的进行。

    2.调整收集算法,使用排序合并的算法。该算法能够从每个节点已经排序的记录中提取键值最小、或者最大的记录,保证了输出数据的正确性。应用上述算法后,其实际效果如下。

    本章小结

    在新建立的FinMIS系统采用mM DB2 Universal Database进行数据仓库存储管理。数据仓库系统由数据仓库、数据集市和BI工具组成,实现该数据仓库系统扩展了传统数据仓库的适用范围,能提供关于日常战术操作的技术支持。为了提高系统的数据连接和应用效率,我们采用以下优化策略:数据物理上并行存储和处理,数据逻辑分割,建立冗余的据库作为缓存。实现三种类型的数据库:阶段数据库(StagingDatabase),核心数据库(CoreDatabase),摘要数据表(SummaryTables)。同时,通过建立数据仓库,应用数据库管理系统,建立索引,缓存,视图,等应用技术等等,提高数据应用效率和可靠性。

    前端报表工具对数据进行高效的OLAP功能,最终用户可以通过浏览器在商务环境中用商务语言快速建立起他们查询的方向,通过图形的方式来操作数据表,可以自动生成SQL语言,满足对基础数据多角度、多层面的的多维分析操作需求。在ETL功能我们设计了低粒度的功能模块,利用这些模块来组合,可以快速实现程序功能,同时为了避免低粒度的功能组合而成的数据处理流程过于复杂,在应用中还可以加入一个中间层,该中间层可以提供更高层面的功能,提供重用性和避免程序应用过于复杂。在处理数据效率方面,我们应用多个进程并行处理,对原始数据进行分区操作(partitioning),并行处理后,再进行数据收集(collecting),使到系统处理速度大大加快,系统中具备多种分区算法和收集算法,确保了数据的完整性和正确性。ETL预定义常用事务处理功能,图形化的开发方式可以快速开发,减少了手工编写程序的繁琐工作,使程序更加标准化。

42/4<1234>


 

评分:0

我来说两句