这次在下介绍的是OLAP与OLTP的概念,以及它们为什么要分开。如有谬误,还请斧正。
OLTP与OLAP的概念:
我们平时使用的数据库是关系型数据库,也是一种操作型数据库。
联机操作型数据库,是指利用网络连接不同地理位置的操作型数据库。
联机事务处理(OLTP)系统,是指执行联机事务和查询处理的联机操作数据库系统。
OLTP主要完成库存、记录、查询等事务。
而另一方面,还存在一种数据库,它用于存储集成的、过往的、完整的历史数据,是企业战略决策的物理实现,这种数据库叫“数据仓库”,它能用不同的格式组织和提供数据,能满足用户复杂、多样的需求。
这样的数据仓库系统,叫做联机分析处理(OLAP)系统。
什么叫集成的数据呢,这是指从文件、操作型数据库、网页等外部数据源取出数据,统一格式,存入数据仓库。
数据仓库中一般不存放最新数据,而是“历史数据”,其作用是被用来分析、预测未来趋势。OLAP系统一般是只读的。
为什么不直接在操作数据库上进行联机分析处理?
因为OLAP的查询通常非常复杂,需要在更高层做大量的汇总,例如我想知道上一个季度某产品在某地的销量相对于该季度历史销量平均值的变化如何(这个可能都还不算复杂吧),这些奇形怪状的需求对于善于处理已知查询事务的OLTP来讲,是很降低查询性能的,而且,如果将操作数据库系统的并发控制和恢复用于只读的OLAP操作,将会降低OLTP的吞吐量。
另外很重要的一点就是,数据仓库和操作型数据库的结构、内容、用法不同,相对于维护了大量历史数据的百兆兆字节量级数据仓库,哪怕是存储了大量信息的操作型数据库,也是不足以用来决策的。