开发者学堂课程【2020版大数据实战项目之DMP广告系统(第一阶段):Kudu入门_对比 _OLAP和OLTP】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/676/detail/11751
Kudu 入门_对比 _OLAP 和 OLTP
OLAP 和 OLTP
广义来讲,数据库分为 OLTP 和 OLAP
1、OLTP
先举个例子,在电商网站中或者美团等订餐软件中,经常见到一个功能-“我的订单”,这个功能在查询数据的时候,是查询的某一个用户的数据,并不是批量的数据。或者在滴滴打车中“我的行程”界面主要就是本人的界面,这种小批量精确的查询就是 OLTP 所擅长的,再想想业务系统中经常需要注册然后去购买,之后会产生一个订单数据。当一个人注册的时候传递给服务器需要注册的信号,但当有一万个人同时进行注册,这个复杂度需要对数据进行实时的插入,这个时候 OLTP 需要做的事情是
(1)快速插入和更新
(2)精确查询
思考是否有业务系统中的场景是要对数据库中整体上的数据全都弄出来进行计算,比如说我要计算去年所有订单的总销售额。有这种需求但不会在 OLTP 中做,所以 OLTP 不太适合进行批量的大规模的分析。它主要是用于对响应速度和数据完整性很高的在线服务应用中。
2、OLAP
OLAP 可以统计,生成一个报表反映去年一整年的销售情况、运营情况、采购情况,包括用户的情况。这个时候需要在一个很大的数据集上进行扫描和分析。OLAP 看重的是大规模批量的数据性能。OLAP 的性能不擅长逐条数据进行插入,但扫描性能好。
3、总结
(1)OLTP 随机访问能力比较强,批量扫描比较差
(2)OLAP 擅长大规模批量数据加载,对于随机访问的能力则比较差
(3)大数据系统中,往往从 OLTP 数据库中放入 OLAP 数据库中,然后做分析和处理
在一般项目中会有应用服务器,应用服务器保存了非常多的业务上的数据,这些数据保存在了 OLTP 当中,但是直接在 OLTP上进行大规模的数据分析,首先第一点没有历史数据,一个实体保存一种数据,也没有历史记录这种功能。第二点大规模分析扫描性能太差。比如使用 Spark Streaming 去读 OLTP 数据的时候,通过一个接口把数据拉出来以后再做分区,速度很慢。可以使用 OLAP 型的数据库,把数据库同步过去,将 OLTP 数据放入 OLAP 中。然后可以针对OLAP 的数据库进行报表和预测型分析。