为什么需要OLAP DSL?
OLAP(On-Line Analytical Processing,联机分析处理)是大数据场景中,数据价值探索与挖掘的重要环节。这个领域内,开源社区呈现百花齐放的现象,Elasticsearch、Druid、Clickhouse、Pinot、Kylin、Presto等,各自在业界都有着广泛的应用场景。实际使用过程中,通常会经历以下三个阶段:
业务初期,面临多种选择,如何做技术选型?这时场景较单一,需要解决的问题相对固定,这时简单比较下开源组件各自的特性,参考下业界的使用情况;再或者部署测试环境,模拟业务验证;通常都能够选取出其中一个组件,投入实际生产环境;
业务中期,随着数据需求的不断丰富变化,开源组件需要支撑的应用场景也越来越多,比如:多维统计查询、可视化、报表、监控报警等;本质上,不管是什么样的开源组件,还是为解决“某一类”场景问题设计实现的,这种“大而全”的一站式打包服务是完全不能够胜任的;随着时间推移,服务自身特性的局限与日益丰富的需求场景之间的矛盾愈演愈烈,解决方案也比较简单:尝试引入多个开源组件;
业务后期,大家会不约而同地处于这样的一个现状:生产环境中运行着多个开源组件,服务于业务场景中的多个需求;
综上所述,使用某一个组件,寄希望于它能够应对各种需求(“All In One”)的方式是不可行的,每种组件各有利弊,有的擅长检索,有的擅长统计;最好的方式是结合实际需求,选取若干个合适的组件,每个组件服务于自身最适用的业务场景。
既然是“最好的方式”,且需求已经得到解决,为什么仍然需要OLAP DSL?这里以常见的“多维指标统计”为例,从业务、工程两个视角进行说明。
业务视角
- 多个开源组件并存的场景下,业务指标会分散至不同的组件中,开发/分析人员需要明确知晓指标与组件的对应关系;
- 不同的组件提供不同的API,开发/分析人员需要掌握多种组件的领域概念及相应API使用方法,且不断来回切换;
- 指标可能需要依赖多个组件的复合查询进行计算,开发/分析人员需要清晰了解数据设计、存储信息,且工程能力要求较高;
- 指标的计算实现代码需要在可视化、报表、监控、数据接口等服务中重复编写,如果规则变化,很难做到全覆盖更新,保证数据一致性;
工程视角
如前所述,开发/分析人员需要掌握不同类型的API,且业务系统与这些API紧密集成,已有组件版本升级或者引入新组件时,都会遇到比较大的阻力,灵活性较差;
OLAP DSL需要解决哪些问题?
- 开发/分析人员只需要面对一种统一的API,不需要直接面对多种类型的组件API;
- 开发/分析人员只需要输入查询条件,即可获取计算结果,不需要关心指标数据的计算过程;
OLAP DSL需要提供哪些能力?
- 获取查询系统中有哪些主题;
- 主题下有哪些维度,每个维度下有哪些取值;
- 主题下有哪些指标;
- 可按主题名称、指标名称、时间范围、时间粒度、维度过滤、维度分组等条件进行多维度指标统计查询;
OLAP DSL实现引擎需要负责构建指标计算规则的逻辑/物理执行计划,以及多个组件之间的数据交互。
为什么需要OLAP DSL?的更多相关文章
- 轻量级OLAP(二):Hive + Elasticsearch
1. 引言 在做OLAP数据分析时,常常会遇到过滤分析需求,比如:除去只有性别.常驻地标签的用户,计算广告媒体上的覆盖UV.OLAP解决方案Kylin不支持复杂数据类型(array.struct.ma ...
- 微博大数据即席查询(OLAP)引擎实践
前言 适用于 即席查询 场景的开源查询引擎有很多,如:Elasticsearch.Druid.Presto.ClickHouse等:每种系统各有利弊,有的擅长检索,有的擅长统计:实践证明,All In ...
- Ubuntu手动设置DSL连接
在安装完Ubuntu之后,发现图形界面的DSL连接不管用了,郁闷了好几天,想想移动每个月120个小时的流量岂不是白白浪费了.正当我想重返Windows系统的时候,却发现了手动设置连接DSL的好方法,感 ...
- 联机分析处理(OLAP)到底是什么?
联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的,OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理 (OLTP) 明显区分开来. 当今的数据 ...
- 升级Ubuntu 16.04 LTS后 DSL拨号上网(ppp)连接自动断开解决办法
原本在Ubuntu 15.10用拨号上网没有问题,但升级了16.04 LTS后发现原来的DSL连接不上了.主要表现为: 1.在NetworkManager里面选择DSL Connection能够尝试拨 ...
- OLTP(on-line transaction processing)与OLAP(On-Line Analytical Processing)
OLTP与OLAP的介绍 数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing).联机分析处理OLAP(On-Line Analytical ...
- 星型数据仓库olap工具kylin介绍
星型数据仓库olap工具kylin介绍 数据仓库是目前企业级BI分析的重要平台,尤其在互联网公司,每天都会产生数以百G的日志,如何从这些日志中发现数据的规律很重要. 数据仓库是数据分析的重要工具, 每 ...
- 完全使用一组 DSL 来操作 Grid 控件
最近尝试了一下将 XtraGrid 的初始化工作封装成内部 DSL,例如一个普通的基础数据的增删改查操作的代码会像下面这样: public partial class UserForm : XtraF ...
- 如何设计一门语言(十)——正则表达式与领域特定语言(DSL)
几个月前就一直有博友关心DSL的问题,于是我想一想,我在gac.codeplex.com里面也创建了一些DSL,于是今天就来说一说这个事情. 创建DSL恐怕是很多人第一次设计一门语言的经历,很少有人一 ...
随机推荐
- 持续集成高级篇之Jekins脚本参数化构建
系列目录 本系列已经很久没有更新了,接前面基础篇,本系统主要介绍jenkins构建里的一些高级特性.包括脚本参数化,Jenkins Pipeline与及在PipeLine模式下如何执行常见的传统构建任 ...
- STM32F0系列芯片SPI发送一字节数据却输出16个CLK时钟的解决办法
问题 上一个项目在用寄存器操作STM32F0芯片的SPI_DR寄存器的时候,发现一个问题: 我给DR寄存器赋值一个uint8_t一字节大小的数据,SPI引脚能正确输出数据和时钟,但前面八位正确的数据输 ...
- windows系统查询指定端口运行的进程并关闭
假如占用的端口是80: 先打开cmd命令窗口 再查找80端口占用的进程:netstat -aon|findstr "80" ,找到对应的程序的PID号: 根据PID号找到 ...
- 使用mybatis-generator生成底层
使用mybatis-generator生成底层 前言 使用springboot2,jdk1.8,idea 一.在pom引入相关依赖 <!--mybatise-generator--> ...
- WPF 浏览PDF 文件
添加成功后会在工具箱里看到下图所示的控件.打开VS2010,新建项目(WpfPDFReader),右键项目添加User Control(用户控件).因为Adobe PDF Reader COM 组件是 ...
- Eureka(一)术语详解(用具体的事物理解抽象的概念)
最近工作较闲,所以自己研究了下eureka的原理,实现,和集群搭建等.(注:我没实操过eureka集群项目,都是自己做的demo产生的结论,如果有错误欢迎指出) 首先说一下我对eureka的一些术语的 ...
- 别说你不会开发exe程序,拿走不谢。
本文重点介绍如何将我们写的java代码打包成在电脑上可以运行的exe文件 本文重点介绍如何将我们写的java代码打包成在电脑上可以运行的exe文件.这里只介绍直接打包成exe的方法,至于打包成exe安 ...
- softRestTemplate 2
@SuppressWarnings("unchecked") public User getUser(String id,String name) { Soft ...
- CF #541 E. String Multiplication
题意: 给定一系列字符串,每次都是后一个字符串和前面的融合,这个融合操作就是原来的串分成独立的,然后把新串插入到这些空格中.问最后,最长的相同连续的长度. 思路: 这道题可以贪心的来,我们压缩状态,记 ...
- LuoGu-P1239计数器-强大的贡献
P1239 计数器 题意:就是求从1到n间,1-9一共出现的次数 这道题直接暴力是不科学的,因为N有 1e9: 然后我就看到了一个很好的从贡献思考的方法: ——>转自洛谷学神的方法: 楼下dal ...