OLTP 和 OLAP 的区别?

OLTP 和 OLAP 的区别?

OLTP(Online transaction processing)OLAP(Online analytical processing)

在线事务处理过程

在线分析处理过程
操作对象是数据库,数据量小操作对象是数据仓库,数据量大
数据模型为 实体-关系(ER)数据模型是 星型或雪花型
支持DML、DDL一般不支持更新和删除
作用于当前数据的行作用域当前及历史数据,涉及多表
专注于事务数据的增删改,侧重实时性专注于决策数据分析,侧重大数据量查询
数据来源于在线业务数据来源于各种 OLTP
通常采用规范化的设计,需要保证数据的完整性不需要太多规范化,可以存储冗余信息,采用多维数据模型
常见应用包括银行 ATM、在线订票系统、网上商城常见应用包括数据仓库、报表分析、商务智能

MySQL一般作为OLTP数据库使用,也能执行一些OLAP操作,但这不是MySQL擅长的领域。

由于OLTP操作比较简单,所涉及的表也少,因此不需要相应的数据库具有强大的执行优化能力。

        OLTP查询一般仅涉及单表,点查为主,返回的是记录本身或该记录的多个列。即使是范围查询,基本上也会通过limit来限制返回的记录数。

        而OLAP则不同,表中单条记录本身并不是查询所关心的,比较典型的特点包括有聚合类算子、涉及多表Join。这些操作都非常耗计算资源,而且数据仓库相比数据库在数据量上大很多,因此,OLAP类查询经常表现为cpu-bound而不是io-bound。

         OLAP的查询语句比OLTP更复杂,因为两者操作的数据集和目的不一样。数据库模型是2维的关系-实体模型(ER)。而数仓则是多维立方体模型(星型或雪花型)。

数据仓库

        OLAP对应的数据载体叫做数据仓库,因为它不是数据的生产者,其中的数据都是从其他地方搬运过来的,而搬运和清洗的过程就是ETL流程(Extract-Transform-Load,即数据抽取、转换和加载)。

数仓的数据来源归纳起来大体有3种:

  • 结构化数据:一般来自于数据库,比如MySQL等关系型数据库的表中保存的记录(rows)。即承担OLTP功能的数据载体。这类数据最好处理,因为数据表达方式作为规范,约束性最好;

  • 半结构化数据:该部分数据来源较多,包括用户行为日志(如app的页面访问记录)、平台或管理服务日志(tomcat、mysql等服务日志)等等,也包括存储于MongoDB等非关系型数据库中的记录(Docs等)。这些数据一般以Json或XML等形式存在,在ETL时难度较大。

  • 非结构化数据:包括图片、音频、视频和网页等,这些数据非常复杂,信息量也很大,一般不会直接抽取出来直接保存到数仓中,而是记录他们的元数据信息(metadata),以图片为例,可能保存该图片的产生时间、格式、大小等等,至于图片本身,一般通过url链接保存在对象或文件存储系统中。

数仓的作用有哪些?

  • 进行交互式/即席查询(ad-hoc);

  • 用于报表类查询(BI Reporting);

  • 进行数据分析类查询(Data Analytics);

  • 用于数据挖掘类查询(Data Mining);

数据在数仓中是如何组织的?

        数仓中数据的存在方式跟数仓索要发挥的作用息息相关,即该数仓要承载什么样的业务模型。基于业务模型设计对应的数据仓库的数据模型,进而针对性实现不同的ETL操作将外部数据经过不同程度的过滤、聚合等处理之后引入到数仓之中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值