定义
OLTP是Online Transaction Processing的缩写,其中文含义为:联机事务处理;
OLAP是Online Analysis Processing的缩写,其中文含义为:联机分析处理。
上世纪60年代,关系数据库之父E.F.Codd提出了关系模型,造就了基于OLTP的传统关系型数据库的大发展;1993年,E.F.Codd认为传统OLTP已无法满足需求,又提出了多维数据库和多维分析的概念,即OLAP。
通过上述定义和图示,大家对OLTP和OLAP应该有了一些直观认识。一言以蔽之,二者均是有关数据处理的技术架构和标准,但侧重点不同,二者区别就如她们名称的区别一般,OLTP的核心在于事务、OLAP的核心在于分析。
场景和应用的区别
OLTP主要用来记录具体某类业务事件的发生,如交易行为,当行为产生后,数据库会记录这个事件是谁在什么时候什么地方做了什么事,这样的一行(或多行)数据会以(增删改)的方式在数据库中进行数据的更新处理操作,要求实时性高、稳定性强、确保数据及时更新成功,常见的业务系统如商场系统,ERP,客服系统,OA等系统都是基于OLTP开发的系统。我们常见的传统大型关系型数据库,包括PostgreSQL、MySQL、SQL Server、Oracle、DB2等,对OLTP的支持都是非常棒的。换言之,对OLTP的良好支持是传统关系型数据库的主要特色之一。
当业务发展到一定程度,积累了一些数据的时候,对过去发生的事情做一个总结分析的需求就会产生,这类需求往往需要把过去一段时间内产生的数据拿出来进行统计分析,从中获取我们想要的信息,为公司做决策提供支持,我们管这类场景就叫做OLAP。所以,借用合适的OLAP工具实现OLAP业务就显得尤为重要。当下比较知名的开源OLAP工具主要包括:Impala、Presto、Spark SQL、Drill、Hawq、Druid、Pinot、Kylin等,其中Apache Kylin,麒麟,开发团队主要由国人组成,速度很有优势,在国内的应用也比较广泛。
集中度不同
OLTP数据往往是一个业务系统一个数据库,因此会分散在不同的业务系统中。
OLAP数据仓库往往是夸多业务的,因此需要将不同的业务数据集中到一起进行统一综合的分析,这时候就需要根据业务分析需求做对应的数据清洗后存储在数据仓库中,然后由数据仓库来统一提供OLAP分析。所以我们常说OLTP是数据库的应用,OLAP是数据仓库的应用,两者主要的区别如下图。
总的来说,可以认为OLAP的产生是因为一些特性OLTP无法满足,所以一些OLTP异变了一些特性,变成了OLAP,OLAP可以看做是OLTP的一种延展,一个让OLTP产生的数据发现价值的过程。