暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数仓(二)简介OLTP和OLAP

畅谈Fintech 2021-07-05
1237



上一篇我们介绍了数仓的概念以及数仓的主要特点:面向主题、集成、非易失即相对稳定的、随时间变化。

还介绍了建立数仓的目的:数仓的建设并不是数据存储的最终目的地,而是为数据最终的目的地做好准备:清洗、转义、分类、重组、合并、拆分、统计等等。通过对数据仓库中数据的分析,可以帮助企业,改进业务流程、控制、成本、提高产品质量等。


本篇我们介绍一下两个重要的数据处理的类型OLTP和OLAP,并通过比对总结,从而更好的理解两种数据处理类型。




一、数据处理“分


随着关系型数据库理论的提出,诞生了一系列经典的RDBMS,如DB2、Oracle,SQL Server、MySQL等。随着数据库使用范围的不断扩大,根据操作业务不同类型,被逐步划分为两大处理的类型:

1、处理业务型数据库

主要用于业务支撑。比如:银行往往会使用并维护若干个数据库,这些数据库保存着日常操作数据,如理财购买、核心系统、信用卡数据、内部管理系统等。

2、分析历史数据型数据库

主要用于历史数据分析。这类数据库作为公司的单独数据存储,利用历史数据对公司各主题域进行统计分析。比如:银行对客户AUM统计、对征信的统计评估等。

为什么要分家?

能不能构建一个同样适用于操作和分析的统一数据库?目前的解决方案是不适合!

  • 因为数据之间会"打架";

  • 如果操作型任务和分析型任务抢资源怎么办呢?

  • 同时处理数据怎么保证数据一致性呢?

后面我们会分析这两个类型是完全不一样的操作。即一个是面向操作即OLTP一个是面向分析(主题)即OLAP。




二、范式概念
在了解范式概念之前,我们先来了解一下函数依赖的概念。

1、函数依赖

根据下图来加深理解:

  • 完全函数依赖
通过A and B能推出C,但是AB单独得不到C,那么可以说:C完全依赖于AB。
(学号,课名)推出分数,但是单独用学号推不出分数,那么可以说:分数完全依赖于(学号,课名)。
  • 部分函数依赖
通过A and B 能推出C,通过单独的A 或者单独的B也能推出C,那么可以说:C部分依赖于AB
(学号,课名)推 姓名,而还可以通过学号直接推出姓名,那么可以说:姓名部分依赖于(学号,课名)
  • 传递函数依赖
通过A得到B,通过B得到C,但是通过C不能得 A,那么可以说:C传递依赖于A
通过学号推出系名,系名 推系主任,但是 系主任不能推出学号,那么可以说:系主任传递依赖于学号。

2、范式定义
范式(数据库设计范式)是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。
在关系数据库中,这种规则就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的范式
3、范式类型
目前关系数据库有六种范式:
第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、
Boyce-Codd范式(BCNF)、第四范式(4NF)和第五范式(5NF)。
一般说来,数据库只需满足第三范式(3NF)就行了。
4、三范式
  • 第一范式:属性不可切分
上表:商品这列中的数据不是原子数据项,是可以进行分割的。

  • 第二范式:不能存在"部分函数依赖"
上表(学号,课名),分数完全依赖于(学号和课名),但是姓名并不完全依赖于(学号和课名)。

  • 第三范式:不能存在"传递函数依赖"

上表:学号-->系名-->老师,但是老师推不出学号。



三、OLTP简介

1、OLTP概念
联机事务处理OLTP(on-line transaction processing):是传统的关系型数据库的主要应用,主要是基本的、日常的在线/联机事务处理。
OLTP典型的应用领域包括银行、证劵等金融行业,电子商务系统等。比如:我们在某A银行APP上查询账户余额、收支信息和转账记录,在ATM机上存钱,取钱,将某A行账号的钱转到某B行账号上。这些都是典型的OLTP类操作。
这些操作都比较简单,主要是对数据库中的数据进行增删改查。操作主体一般是产品的用户。
2、OLTP关系模型
数据库中的关系模型是严格遵循第三范式(3NF),关系模型主要应用在OLTP系统中,为了保证数据的一致性以及避免冗余,所以大部分业务系统的表都是遵循第三范式的。
注:图片来源于网络
3、OLTP特点
  • 从上面这个建模客户表图中可以看出,物理表数量多,而数据冗余程度低;

  • 数据分布于众多的表中;

  • 这些数据可以更为灵活地被应用,功能性较强;

  • 但是一次修改,需要修改多个表,很难保证数据的一致性;

  • 并且获取数据时候,需要通过join拼接最后的数据。




四、OLAP简介

1、OLAP概念
OLAP是Online analytical processing,指联机分析处理。数数仓的主要应用。从字面上我们能看出是做分析类操作。通过分析数据库中的数据来得出一些结论性的东西。比如:给领导们看的报表,用于进行市场开拓的用户行为统计,不同维度的汇总分析结果等等。操作主体一般是运营、销售和市场等团队人员而不是用户,主要用于历史数据分析。

2、OLAP模型
维度建模(dimensional modeling)是专门用于分析型数据库、数据仓库、数据集市建模的方法。

注:图片来源于网络
  • 上图为维度模型建模片段,主要应用于 OLAP 系统中;
  • 通常以某一个事实表为中心进行表的组织,主要面向业务,特征是可能存在数据的冗余,但是能方便的得到数据。
关系模型虽然冗余少,但是在大规模数据,跨表分析统计查询过程中,会造成多表关联,这会大大降低执行效率。所以通常我们采用维度模型建模,把相关各种表整理成两种:事实表和维度表两种。关于这方面内容我们下节讲解。


五、OLTP VS OLAP

1、数据主要应用

OLAP
OLTP
数据应用
数仓
数据库
操作对象
数仓
数据库
业务类型
统计、多维分析
业务操作如:转账
代表产品
Hive
MySQL
DB设计
面向主题
面向应用
用户
数据分析、决策人员、管理人员
操作人员

2、数据内容

OLAP
OLTP
数据内容
当前以及历史数据
当前现在数据
数据模型
星型或者雪花、星座
实体-关系(ER)
数据粒度
多表
记录行级
数据操作
一般不支持更新和删除
DML和DDL
数据结构
简单、适合分析
高度结构化、复杂,适合操作计算
数据字段
静态、不能直接更新,只能定时添加、刷新
动态变化,按字段更新
数据查询
聚合类算子、涉及多表Join
涉及单表、点查为主
数据返回值
聚合计算结果
记录本身或该记录的多个列

3、性能要求

OLAP
OLTP
响应时间要求
秒、分、小时等
秒,实时性
时间性能要求
相对性能要求较低
高吞吐、低延时
数据量级
TB-PB
MB-GB
读特性
对大量数据进行汇总
每次查询只返回少量数据
写特性
批量导入
随机、低延迟写入用户的操作




总结:
  1. 了解数据库的三范式
  2. OLTP和OLAP两种数据处理类型;
  3. 通过对比加深对OLAP的认知;



>>>>

Q&A


Q:MySQL这样的OLTP数据库能处理OLAP业务吗?

A: 也可以处理这样的业务的,但是并没有人来使用这样的解决方案!
  • MySQL是作为OLTP数据库使用的。但是也能执行一些OLAP操作,比如里面8.0包括窗口函数,通用表达式和更强大的Join能力,但这不是MySQL擅长的领域。
  • OLTP和OLAP都是通过SQL来执行,但SQL语句只是描述了我想要什么,而并没有说明应该怎么做(不考虑hint等),即确定最优的执行计划。由于一般OLTP操作比较简单,所涉及的表也少,因此不需要相应的数据库具有强大的执行优化能力。
  • OLAP类操作需要强大的执行计划产生和优化能力。
    当然,如果总数据量较小,那MySQL也是能够应付的。数据量大,需要OLAP解决方案。



参考书籍:
  1. 数据仓库第4版
  2. DAMA数据管理知识体系指南
  3. 华为数据之道

文章转载自畅谈Fintech,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论