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?的更多相关文章

  1. 轻量级OLAP(二):Hive + Elasticsearch

    1. 引言 在做OLAP数据分析时,常常会遇到过滤分析需求,比如:除去只有性别.常驻地标签的用户,计算广告媒体上的覆盖UV.OLAP解决方案Kylin不支持复杂数据类型(array.struct.ma ...

  2. 微博大数据即席查询(OLAP)引擎实践

    前言 适用于 即席查询 场景的开源查询引擎有很多,如:Elasticsearch.Druid.Presto.ClickHouse等:每种系统各有利弊,有的擅长检索,有的擅长统计:实践证明,All In ...

  3. Ubuntu手动设置DSL连接

    在安装完Ubuntu之后,发现图形界面的DSL连接不管用了,郁闷了好几天,想想移动每个月120个小时的流量岂不是白白浪费了.正当我想重返Windows系统的时候,却发现了手动设置连接DSL的好方法,感 ...

  4. 联机分析处理(OLAP)到底是什么?

    联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的,OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理 (OLTP) 明显区分开来. 当今的数据 ...

  5. 升级Ubuntu 16.04 LTS后 DSL拨号上网(ppp)连接自动断开解决办法

    原本在Ubuntu 15.10用拨号上网没有问题,但升级了16.04 LTS后发现原来的DSL连接不上了.主要表现为: 1.在NetworkManager里面选择DSL Connection能够尝试拨 ...

  6. OLTP(on-line transaction processing)与OLAP(On-Line Analytical Processing)

    OLTP与OLAP的介绍 数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing).联机分析处理OLAP(On-Line Analytical ...

  7. 星型数据仓库olap工具kylin介绍

    星型数据仓库olap工具kylin介绍 数据仓库是目前企业级BI分析的重要平台,尤其在互联网公司,每天都会产生数以百G的日志,如何从这些日志中发现数据的规律很重要. 数据仓库是数据分析的重要工具, 每 ...

  8. 完全使用一组 DSL 来操作 Grid 控件

    最近尝试了一下将 XtraGrid 的初始化工作封装成内部 DSL,例如一个普通的基础数据的增删改查操作的代码会像下面这样: public partial class UserForm : XtraF ...

  9. 如何设计一门语言(十)——正则表达式与领域特定语言(DSL)

    几个月前就一直有博友关心DSL的问题,于是我想一想,我在gac.codeplex.com里面也创建了一些DSL,于是今天就来说一说这个事情. 创建DSL恐怕是很多人第一次设计一门语言的经历,很少有人一 ...

随机推荐

  1. Servlet Cookie、Session

    HTTP不能保持连接,可使用会话保存用户信息. 常用的会话技术有2种:Cookie.Session. Cookie 1.原理 当用户第一次访问某个网站时,服务器设置Cookie,存储用户信息,放在响应 ...

  2. Spring源码剖析1:初探Spring IOC核心流程

    本文大致地介绍了IOC容器的初始化过程,只列出了比较重要的过程和代码,可以从中看出IOC容器执行的大致流程. 接下来的文章会更加深入剖析Bean容器如何解析xml,注册和初始化bean,以及如何获取b ...

  3. C++ 线程安全的单例模式总结

    什么是线程安全? 在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况. 如何保证线程安全? 给共享的资源加把锁,保证每 ...

  4. Codeforces 1006F

    题意略. 思路: 双向bfs. 如图,对于曼哈顿距离为5的地方来说,除去两端的位置,其他位置的状态不会超过曼哈顿距离为4的地方的状态的两倍. 所以,最大曼哈顿距离为n + m.最多的状态不过2 ^ ( ...

  5. java web基础 js、JSP、servlet之间的传递

    @ JS 与 JSP :JSP无法直接获取JS的值,只能通过隐藏表单或者dom节点设置. JSP中设置隐藏表单input,或者设置任意一个隐藏或者不隐藏的节点比如div, 而JS就通过document ...

  6. Flink 源码解析 —— TaskManager 处理 SubmitJob 的过程

    TaskManager 处理 SubmitJob 的过程 https://t.zsxq.com/eu7mQZj 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink ...

  7. P3705 [SDOI2017]新生舞会 分数规划 费用流

    #include <algorithm> #include <iterator> #include <iostream> #include <cstring& ...

  8. CodeForces 758 D Ability To Convert

    Ability To Convert 题意:给你一个n进制的60位的数,但是由于Alexander只会写0->9,所以他就会用10来表示十而不是A(假设进制>10); 题解:模拟就好了,先 ...

  9. hdu 1182 A Bug's Life(简单种类并查集)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1829 题意:就是给你m条关系a与b有性关系,问这些关系中是否有同性恋 这是一道简单的种类并查集,而且也 ...

  10. Word 远程调用失败:异常来自 HRESULT:0x800706BE

    之前服务器上一直运行正常的,这几天突然报错 “远程过程调用失败. (异常来自 HRESULT:0x800706BE) ” 解决方案:组件服务—我的电脑—属性—COM安全—编辑默认值  添加各种用户权限 ...