构建BI:大数据系统概念

文章目录

我正在构建一个用于游戏运营的 BI(Busniness Intelligence)系统,该系统用于指导 SAGI GAMES 游戏的投放,把运营和投放岗位从重复繁重的数据分析工作中解放出来。

我会用文字把整个构建中的学习、思考、决策的流程记录下来,形成这个系列: 构建BI

由于时间仓促,能力有限,这个系列中一定有许多疏漏错误之处,欢迎指出和讨论。

本文的目标是理解大数据系统的相关概念。

生产-存储-消费

计算广告是唯一得到充分商业化的规模化的大数据应用。BI(Business Intelligence)系统属于一种大数据洞察应用。它处在 生产、存储、消费 流程中的消费环节。

参见:计算广告:免费模式的本质

数据的生产、存储和消费

图中,数据源 处于生产环节,数据仓库 处于存储环节,数据应用 属于消费环节。

BI 系统,在商业上属于 DDS(Decision support system,决策支持系统),作用是将源数据整理到数据仓库(Data Warehouse) 中,然后根据业务模型对仓库中的数据进行分析、聚合,最终在数据应用层面展示出来。

源数据

在数据生产环节,源数据可能有多种来源,例如来自于 OLTP 的交易数据和行为数据,来自于文档的结构化数据,和来自于图像、声音等非结构化数据。

数据仓库

数据仓库(Data Warehouse)处于存储环节。我们根据业务模型对数据源中的数据进行抽取、清洗、转换、聚合,将处理过的源数据存储进入数据仓库备用。整个处理的过程被称为 ETL。

曾嵘:我后面会单独写一篇文章来介绍数据仓库。

数据应用

计算广告:免费模式的本质 一文中,我们提到了两种大数据应用:

  • 洞察(insight)
  • 自动化(automation)

BI 属于一种洞察应用。营销信息系统属于一种自动化应用。

重要概念介绍

OLTP

OLTP 是 On-line Transaction Processing 的简称,中文一般译为 联机事务处理。传统银行交易就是典型的 OLTP 应用。

技术上,OLTP 强调内存各种指标的命中率,强调查询效率,强调并发,高可用。OLTP 评估 Transaction 和 Execute SQL 的数量,对 IOPS 敏感,在硬件上对 CPU 和磁盘子系统依赖极高。

从数据的角度看,OLTP 同时处理的数据量少,DML(Data Manipulation Language) 频繁,并行事务处理多,但是一般都很短。

OLAP

OLAP 是 On-line Analytical Processing 的简称,中文一般译为 联机分析处理。BI 应用也可以说是一种 OLAP。

技术上,OLAP 强调 SQL 执行时长,强调磁盘 IO、磁盘分区和磁盘子系统吞吐量。Cache 在 OLAP 系统中的作用有限,因为要并行在多个数据源读取海量的数据,OLAP 在硬件上对于带宽和分布式磁盘个数要求高。

从数据的角度看,OLAP 同时处理的数据量大,DML 少,更多的执行是报表作业和聚合类操作。典型的操作是全表扫描,长查询,一般事务的个数很少,往往是一个事务独占系统。

需要注意的是,OLAP 是一个同时存在于存储环节和消费环节的概念。

OLTP 和 OLAP 的比较

项目 OLTP OLAP
使用场景 在线业务 数据分析,挖掘、机器学习
主要用户 操作人员 决策人员
作用 日常操作 分析决策
实现 增删改查 复杂聚合与多数据源关联
数据新鲜度 当前的业务数据 历史的存档数据
数据维度 细节的,二维分立的 聚集的,多维统一的
数据量级 百MB~GB 百GB~TB
存取 读/写 数百条 读 百万条
并发
可用性 非常高
时间维度 毫秒 分钟、小时、天
技术方案 事务、索引、存储计算整合 大量 SCAN、列式存储、存储计算分离
数据模型 关系模型、3NF范式 维度模型、关系模型、范式要求低
典型技术 MySQL/Oracle Hadoop/Presto/ClickHouse
典型应用 银行事务 BI

上面的表格主要讲区别,下面这张图可以体现 OLTP 和 OLAP 的联系:

OLTP 系统基于商业逻辑运行,生成的操作数据通过 ETL 进入数据仓库,OLAP 系统基于数据仓库进行分析,形成洞察和决策,反过来影响和改善商业逻辑。

OLTP 和 OLAP的联系

OLAP 场景的关键特征

  • 大多数是读请求
  • 数据总是以相当大的批(> 1000 rows)进行写入
  • 不修改已添加的数据
  • 每次查询都从数据库中读取大量的行,但是同时又仅需要少量的列
  • 宽表,即每个表包含着大量的列
  • 较少的查询(通常每台服务器每秒数百个查询或更少)
  • 对于简单查询,允许数十毫秒的延迟
  • 列中的数据相对较小: 数字和短字符串(例如,每个URL 60个字节)
  • 处理单个查询时需要高吞吐量(每个服务器每秒高达数十亿行)
  • 事务不是必须的
  • 对数据一致性要求低
  • 每一个查询除了一个大表外都很小
  • 查询结果明显小于源数据,换句话说,数据被过滤或聚合后能够被盛放在单台服务器的内存中

ETL

ETL 是 Extract-Transform-Load 的缩写,中文一般译为 抽取、清洗转换、加载

ETL 是数据整合方案,也是数据整理工具,ETL 处理的数据量巨大,它不是一次性的活动,而是一个周期性的活动。

在数据抽取阶段,需要考虑同源数据,不同源数据,文件型数据(txt、xls)和增量更新。

在数据清洗阶段,需要考虑不完整数据、错误数据和重复数据。

在数据转换阶段,需要考虑的内容更多:

  1. 不一致的数据转换(例如用户唯一 id 的不同表现形式)
  2. 数据的粒度分析
  3. 理解商务规则。

简化概念

让我们把概念简化一下。将生产环节的数据源简化为 OLTP,将存储环节的数据仓库简化为 OLAP,那么 OLTP/ETL/OLAP 三者间的关系就是:

简化概念

  1. 交易生成数据
  2. 多渠道抽取数据
  3. 清洗和转换数据
  4. 加载数据
  5. 分析数据

参考文章

全文完