2011年(10)
分类: Mysql/postgreSQL
2011-08-08 12:44:22
随着通信及互联网行业不断发展,电信级企业的市场竞争越发激烈,数据管理部门往往需要面向市场、销售、服务的不同需求,提供有针对性的数据分析支持,以定位最为精确的用户群体和和准确的行业决策。
而随着应用范围的不断扩展,企业需要收集和保存的数据量也急速上什,统计数据显示:web/Internet上的用户事件、移动广告、CDR详单等数据已成为所有数据业务中最大的增长区域,视频等多媒体流数据紧随其后。面对更为激烈的竞争,企业如何实时的抓取商业用户数据、进行高性能的统计分析,并在利用现有分析系统的前提下减少相应资金、人员投入成为了新的挑战。
行业背景
通常情况下,往往需要数百万美元的资金,来提高网络通信性能优化、历史数据存储的硬件和管理投入,大大增加了企业运营的负担。而市场上现有的数据库软件,对于海量数据的存储优化有限,往往需要大量的存储设备来应对。在以上背景下,Infobright针对电信级企业的实际需求推出了基于列存储的知识网格数据块,大大提高了压缩比,在实测中介于10:1到20:1之间,较同类数据产品优势明显。
此外在新近的数据仓库案例中,数据量越来越庞大,数据导入的速率极大地影响了项目部署的时间周期,造成了人力物力的浪费。Infobright新版本IEE4新功能——分布式读取进程(Distributed Load Processor),通过特有的处理机制,显著地提高导入性能;根据其官方介绍,速率可达1GB每小时,而在我们的实际测试中,通过引入多远端节点压缩,将1600G的数据成功导入目标库只耗时1小时20分钟,大大减少了项目的等待时间。下面我们通过测试实例对DLP的实现原理简要介绍。
DLP工作方式
安装一台或多台DLP实例,每个实例能够从文件或管道读取数据,数据被压缩后可以转储成一种中间文件或直接并行的传输给 Infobright服务器.服务器收到压缩的数据包,将数据加载到Infobright数据库中,然后更新知识网格.如果保存成文件形式,用户只需要运行load data infile命令将其导入Infobright数据库.
操作步骤:
1、在源数据库端安装DLP套件
2、配置远端机器的存储路径,确认连接所用的用户名密码
3、在目标数据库输入DLP指令,远端开始压缩并传输数据
DLP特性介绍
1.DLP允许多端多线程导入,随着源数据库数量的增加,导入速率线性增长。
2.DLP远端压缩数据,CPU的负载分布式划分到远端服务器上,并传输压缩后的数据,减少了目标机器处理数据的CPU负载。
3.在远端生成infobright知识网格数据块,压缩比在10:1到20:1之间,极大地减少了网络传输信息量。
4.压缩完成的数据库可直接转存为中间文件,等待目标端空闲时再使用Load data infile进行导入,避免等待。
5.DLP在压缩数据时会自动增加表级锁,由其生成的数据块,压缩时进行了统计和排序,较一般的导入方法具备更好的性能。
各组测试数据对比
项目 | 测试一 | 测试二 | 测试三 | 测试四 |
远端DLP机数 | 10台 | 10台 | 16台 | 16台 |
目标Infobright | 1台 | 1台 | 1台 | 1台 |
原始数据总量 | 1600GB | 1600GB | 1984GB | 12608GB |
完成耗时 | 1H15m20s | 1H20m06s | 1H25m17s | 8H30m |
注:源数据为电信企业实际生产库,典型表结构大致为:总75列,20列varchar(30),5列timstamp,其余为20位数字
总结
Infobright IEE4 新功能——分布式读取进程(Distributed Load Processor),通过特有的数据压缩和传输方式,极大得提高了数据载入性能,较同类产品具有明显优势。DLP可缩短大量等待时间,加快项目实施进程,节约企业的时间和人力成本,帮助企业在核心领域塑造强大的竞争力。
使用实例
1.将二进制格式的数据转换成InfoBright格式的数据。
数据流方向 :t1.bin(file) --> dataprocessor --> t1.out(file)
使用配置文件的命令形式:
不使用配置文件命令形式:
上面的命令需要连接到InfoBright数据库获取表结构然后将二进制格式的数据转换成InfoBright的。
如果不想连接数据库直接转换那么需要先获取表结构再转换,转换过程可以是离线的。
预先从服务器获取表结构
然后执行转换操作
当正在查询列时,使用--compress-lookups标记可以使数据传输的更小
注意:当使用--compress- lookups标记时,会数据库服务器的CPU开销
2.通过管道加载二进制格式的数据
数据流方向:t1.bin(pipe) --> dataprocessor --> t1.ib(file)
3.二进制数据通过管道由dataprocessor处理后输出给mysql客户端再导入表中。
数据流方向:
t1in.pipe --> dataprocessor --> t1out.pipe --> mysql load --> table t1