频繁话单文件抽取的应对
话单文件包含ISUP话单和TUP话单,
特点如下:
1、文件名称为 话单类型标识+时间戳,无扩展名。
2、文件大小基本固定在每个文件600K左右。每个文件包含大约5000条数据记录。
3、文件使用特有格式编码的二进制存储,使用VC的Pack(8)模式直接写数据结构得到(不了解的别问我)
4、文件随时生成,忙时每分钟6个文件的吞吐量。
5、每日话单数量总计在29,000,000左右。文件大小总量在5G。
为什么不用工具加载?
1、自定义二进制转化需要大量的脚本编写,某些工具根本不能实现。
2、文件数量太大,文件名变化太大,DataStage不支持变化文件名,只能使用脚本控制
3、文件太小,使用工具加载效率很低
4、日志核查不方便。
加载流程
FTP下载文件->转换TXT->批量Load
由于网络限制,下载速率在10~90K/s之间
加载之前需要转换文件成TXT文本,转换一个600K需要0.7秒。加载由于Redbrick性能问题,1个文件需要5秒,10个文件需要8秒,20个文件需要9秒,测试平均值在100个文件~200个文件之间(耗时10分钟左右)。
这样得到瓶颈在转换和下载。
应对方案为
生成本地一个文件池,分开下载、转换和加载线程
四个下载线程,每种话单两个线程下载,7个转换线程,2个加载线程(每种话单一个)
文件下载到本地之后置下载完成标志,转换线程轮询目录得到需要转换的文件列表之后转换文件,转换完成文件置转换完成标志,加载线程轮询目录得到需要加载的文件,并进行批量加载。
Mark
特点如下:
1、文件名称为 话单类型标识+时间戳,无扩展名。
2、文件大小基本固定在每个文件600K左右。每个文件包含大约5000条数据记录。
3、文件使用特有格式编码的二进制存储,使用VC的Pack(8)模式直接写数据结构得到(不了解的别问我)
4、文件随时生成,忙时每分钟6个文件的吞吐量。
5、每日话单数量总计在29,000,000左右。文件大小总量在5G。
为什么不用工具加载?
1、自定义二进制转化需要大量的脚本编写,某些工具根本不能实现。
2、文件数量太大,文件名变化太大,DataStage不支持变化文件名,只能使用脚本控制
3、文件太小,使用工具加载效率很低
4、日志核查不方便。
加载流程
FTP下载文件->转换TXT->批量Load
由于网络限制,下载速率在10~90K/s之间
加载之前需要转换文件成TXT文本,转换一个600K需要0.7秒。加载由于Redbrick性能问题,1个文件需要5秒,10个文件需要8秒,20个文件需要9秒,测试平均值在100个文件~200个文件之间(耗时10分钟左右)。
这样得到瓶颈在转换和下载。
应对方案为
生成本地一个文件池,分开下载、转换和加载线程
四个下载线程,每种话单两个线程下载,7个转换线程,2个加载线程(每种话单一个)
文件下载到本地之后置下载完成标志,转换线程轮询目录得到需要转换的文件列表之后转换文件,转换完成文件置转换完成标志,加载线程轮询目录得到需要加载的文件,并进行批量加载。
Mark