数据处理大致可分为两大类,联机事务处理OLTP(on-line transaction processing) 和联机分析处理OLAP(on-line analytical processing)。
OLTP与OLAP的区别
OLTP是传统关系型数据库的主要应用,用来执行一些基本的、日常的事务处理,比如数据库记录的增、删、改、查等等。而OLAP则是分布式数据库的主要应用,它对实时性要求不高,但处理的数据量大,通常应用于复杂的动态报表系统上。
OLTP与OLAP的主要区别:
数据处理类型 | OLTP | OLAP |
---|---|---|
主要的面向对象 | 业务开发人员 | 分析决策人员 |
功能实现 | 日常事务处理 | 面向分析决策 |
数据模型 | 关系模型 | 多维模型 |
处理的数据量 | 通常为几条或几十条记录 | 通常达到百万千万条记录 |
操作类型 | 查询、插入、更新、删除 | 查询为主 |
行式存储与列式存储
传统的关系型数据库采用行式存储法(Row-based),一行中的数据在存储介质中以连续存储形式存在。
列式存储(Column-based)是相对于行式存储来说的,一列中的数据在存储介质中以连续存储形式存在。
OLTP类型的应用采用行式存储,数据量大且选择查询几个属性时查询效率会降低,此时通过索引机制或给表分区等手段,可以简化查询操作步骤,并提升查询效率。
针对海量数据背景的 OLAP 应用,行式存储的数据库就有些“力不从心”了。行式数据库建立索引和物化视图,需要花费大量时间和资源,因此还是得不偿失,无法从根本上解决查询性能和维护成本等问题。大数据场景下更注重纵向比较,列式数据库可高效组装各列的值。
参考:行式存储与列式存储的区别