商业智能FineBI使用教程:[51]分布式集成

2025-05-17 11:50:23

电脑软件

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数据汇总返回给客户端。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢