轻量级跨库多维分析解决方案

本文介绍了如何使用集算器作为轻量级跨库多维分析的解决方案,替代传统数据库和专业数据仓库。集算器提供列存、数据仓库功能,并支持多种部署方式,如集成计算、独立服务器和集群热备。通过实例展示了如何初始化数据、执行ETL过程,以及在不同应用结构下的工作原理,以提升多维分析的性能和经济性。
摘要由CSDN通过智能技术生成

问题的提出

多维分析(BI)系统后台数据源通常有三种选择。一、普通数据库;二、专业数据仓库;三、BI系统自带的数据源。

但是,这三种选择都有各自的问题。普通数据库一般都是行式存储,很难获得多维分析希望的高性能,只适用较小数据量。专业数据仓库有不少是列式存储的,性能问题不大,但是价格都比较昂贵,建设、扩展和维护成本也都非常高。BI系统自带的数据源都比较封闭,只能为自家的BI前端提供支持,无法为多个不同厂家的前端提供数据服务。

解决思路与过程

集算器可以独立承担轻量级多维分析后台的作用,相当于中小型数据仓库或者数据集市。结构图如下:

集算器可以将多维分析的数据事先以列存形式存储到二进制文件中,称为组表。多维分析前端应用拖拽生成SQL,通过集算器JDBC提交。集算器对组表执行SQL查询,将结果返回给多维分析前端。组表文件也可由集算器从各种异构数据源采集数据并计算而来。

和普通数据库方案相比,集算器列存的二进制文件能够直接提升性能。而对于昂贵的专业数据库和相对封闭的BI自带数据源,集算器可以提供更加经济、简便的解决方案,并能够从各种异构数据源采集数据。

集算器有三种部署方式:1、集成在前端应用中;2、独立服务器;3、集群热备。下面介绍具体方法。

案例场景说明

在下面的案例中,多维分析系统要针对订单数据做自助分析。为了简化起见,多维分析系统前台用tomcat服务器中的jdbc.jsp来模拟。Tomcat安装在windows操作系统的C:\tomcat6。

集算器JDBC集成在多维分析应用中。jdbc.jsp模仿多维分析应用系统,产生符合集算器规范的SQL,通过集算器JDBC提交给集算器SPL脚本处理。

多维分析系统的数据来自于生产数据库 demo中的ORDERS表,生产库是ORACLE数据库。多维分析系统不能直接连demo数据库实现分析,以免给生产数据库带来过多的压力。ORDERS订单表是全量数据,集算器ETL每天将当天的最新数据同步到组表文件中。日期以订购日期ORDERDATE为准,假设当前的日期是2015-07-18。

后台数据初始化

用下面的ordersAll.sql文件在ORACLE数据库中完成ORDERS表的建表和数据初始化。

ordersAll

数据截止到2017年7月17日。

多维分析系统后台上线初始化的时候,要将ORDERS表中的历史数据同步到集算器的二进制文件中。这是上线前一次性执行的准备工作,上线运行后就不需要执行了。

在集算器中,新建一个数据源orcl,连接ORACLE数据库。用SPL语言脚本etlAll.dfx将全部数据读取到集算器组表文件orders.ctx中。SPL脚本如下:

  A B
1 =connect(“orcl”) =A1.cursor@d(“select ORDERDATE,CUSTOMERID,EMPLOYEEID,ORDERID,AMOUNT from ORDERS order by ORDERDATE,CUSTOMERID,EMPLOYEEID,ORDERID”)
2 =file(“C:/tomcat6/webapps/DW/WEB-INF/data/orders.ctx”)
3 =A2.create(#ORDERDATE,#CUSTOMERID,#EMPLOYEEID,#ORDERID,AMOUNT)
4 =A3.append(B1) >A1.close()

Orders.ctx是组表文件,默认是采用列式存储的,支持任意分段的并行计算,可以有效提升查询速度。生成组表的时候,要注意数据预先排序和合理定义维字段。本例中,按照经常过滤、分组的字段,将维字段确定为:ORDERDATE,CUSTOMERID,EMPLOYEEID, ORDERID。

从ORACLE中取得数据的时候,要按照维字段排序。因为ORDERDATE,CUSTOMERID,EMPLOYEEID对应的重复数据多,所以放在前面排序;ORDERID对应的重复数据少,所以放在后面排序。

B1单元格中数据库游标的@d选项,表示从ORACLE数据库中取数的时候将numeric型数据转换成double型,精度对于金额这样的常见数值完全足够了。如果没有这个选项就会默认转换成big decimal型

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值