可阅读原文:http://c.raqsoft.com.cn/article/1534408099533?r=alice
问题的提出
多维分析(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 表的建表和数据初始化。
数据截止到 2017 年 7 月 17 日。
多维分析系统后台上线初始化的时候,要将 ORDERS 表中的历史数据同步到集算器的二进制文件中。这是上线前一次性执行的准备工作,上线运行后就不需要执行了。
具体的脚本编写可看原文:http://c.raqsoft.com.cn/article/1534408099533?r=alice