商业智能FineBI使用教程:[51]分布式集成
电脑软件
1.问题描述
当数据库数据量和定时更新Cube时数据量比较大的时候,服务器生成Cube速度会比较缓慢,并且剧安颌儿如果当一张即时分析模板数据来源比较复杂的时候,向一台服务器中的Cube取数,需要一张一张表顺序查询,影响即时分析的展示速度,那么该如何提升Cube的生成速度和即时分析的展示速度呢?
2.解决思路
FineBI分布式集成即可提升Cube的生成速度和即时分析取数的查询速度,简单来说,就是在服务器端配备多台服务器,其中一台为主服务器,其他为分布式服务器,FineBI工程发布在主服务器上,主服务器主要工作就是均衡调配,负责调配将Cube生成在分布式服务器上,每台分布式服务器上均会生成一个Cube,所有分布式服务器的Cube组合起来,则为整个数据库的数据,即时分析查询取数时也是主服务器收到取数查询请求,根据查询的表负责将取数操作分配到各分布式服务器上,最后汇总结果,返回给客户端。
3.示例
3.1设备准备
服务器端有3台服务器:A、B、C,其中服务器A为主服务器,IP为192.168.100.218,B和C为分布式服务器,IP分别为192.168.100.174和192.168.100.175,FineBI工程发布在A服务器上,。
3.2分布式配置
在主服务器A的%BI_HOME%\BI工程名\WEB-INF\resources下新增一个bi_cluster.xml文件,内容如下:
<?xmlversion="1.0"encoding="UTF-8"?>
<BIClusterServiceManagerxmlVersion="20130114"releaseVersion="7.0.3"isMaster="true">
<masterproject="192.168.100.218"></master>
<slaveproject="192.168.100.174"></slave>
<slaveproject="192.168.100.175"></slave>
</BIClusterServiceManager>
标签
master:master标签是指主服务器的配置;
slave:slave标签是指分布式服务器的配置。
3.3Cube生成
使用分布式集成之后,在启动主服务器之前至少保证有一台分布式服务器已经启动。
分布式服务器未完全都启动
如上的3台服务器,在A服务器启动前,必须保证B、C服务器中有一台服务器已经处于启动状态,比如说,B已经启动,而C未启动,那么A服务器启动后,C服务器会标识错误,将生成Cube的任务分配给B,所有的Cube数据保存在B服务器上。
分布式服务器都启动
如上3态服务器,A服务器启动前,B、C服务器均已启动,那么A服务器启动后,会根据B、C服务器当前的空闲状态来分配Cube的生成任务,如果B比较空闲,那么将会有较多的数据表的Cube保存在B服务器上,剩下来的数据表生成的Cube则保存在C服务器上。
分布式服务器均未启动
如上3态服务器,A服务器启动前,B、C服务器均未启动,那么A服务器将启动不了。
3.4即时分析取数查询
FineBI使用分布式集成后,查看数据分析查询取数时,主服务器根据取数来源数据表所在的Cube不同,将取数任务分配给不同的分布式服务器,分布式服务器取完数之后,将结果返回给主服务器。主服务器再将结果汇总,返回给客户端,展示即时分析效果。
如上3台服务器,比如说,合同信息表生成的Cube保存在B服务器下,客户信息表生成的Cube保存在C服务器下,客户信息表中的主键客户ID为合同信息表的外键。
FineBI工程里面有一张即时分析模板,内容为查看各个客户下的合同信息,此时就需要到合同信息表和客户信息表取数,客户端将取数请求发送给A服务器,A服务器判断合同信息表在B服务器的Cube下,将该取数请求分配给B服务器,客户信息表在C服务器的Cube下,将该取数请求分配给C服务器,B、C服务器取数完成之后,将结果返回给A,A数据汇总返回给客户端。