数据仓库是分析数据的中央存储库,可以高效地存储数据,并以极快的速度同时向成千上万的用户提供分析查询结果。常常被业务分析师、数据科学家和决策者通过商业智能 (BI) 工具、SQL客户端和其他分析应用程序访问数据。
在大数据系统中,往往有两种类型的系统,操作型(OLTP)和分析型(OLAP),这两种系统大都以数据库作为数据管理、组织和操作的工具。OLTP完成组织的核心业务,如增删改,像下订单、更新库存、支付等,核心目标是尽快处理事务,同时维护数据的一致性和完整性。OLAP主要是通过数据分析评估组织的业务经营状态,并进一步辅助决策。
01、操作型数据库(OLTP)
几乎所有的线上系统、MIS、OA等都属于这类系统的应用。操作型系统是一类专门用于管理面向事务的应用的信息系统。
事务是工作于数据库管理系统(或类似系统)中的一个逻辑单元,该逻辑单元中的操作被以一种独立于其他事务的可靠方式所处理。事务一般代表着数据改变,它提供“all-or-nothing”操作,就是说事务中的一系列操作要么完全执行,要么完全不执行。在数据库中使用事务主要出于两个目的:
保证工作单元的可靠性。当数据库系统异常宕机时,其中执行的操作或者已经完成或者只有部分完成,很多没有完成的操作此时处于一种模糊状态。在这种情况下,数据库系统必须能够恢复到数据一致的正常状态。
提供并发访问数据库的多个程序间的隔离。如果没有这种隔离,程序得到的结果很可能是错误的。
根据事务的定义,引申出事务具有原子性、一致性、隔离性、持久性的特点,也就是数据库领域中常说的事务的ACID特性。
1、原子性
指的是事务中的一系列操作或全执行或不执行,这些操作是不可再分的。原子性可以防止数据被部分修改。银行账号间转账是一个事务原子性的例子。简单地说,从A账号向B账号转账有两步操作:A账号提取,B账号存入。这两个操作以原子性事务执行,使数据库保持一致的状态,即使这两个操作的任何一步失败了,总的金额数不会减少也不会增加。
2、一致性
数据库系统中的一致性是指任何数据库事务只能以允许的方式修改数据。任何数据库写操作必须遵循既有的规则,包括约束、级联、触发器以及它们的任意组合。一致性并不保证应用程序逻辑的正确性,但它能够保证不会因为程序错误而使数据库产生违反规则的结果。
3、隔离性
在数据库系统中,隔离性决定了其他用户所能看到的事务完整性程度。例如,一个用户正在生成一个采购订单,并且已经生成了订单主记录,但还没有生成订单条目明细记录。此时订单主记录能否被其他并发用户看到呢?这就是由隔离级别决定的。数据库系统中,按照由低到高一般有读非提交、读提交、可重复读、串行化等几种隔离级。数据库系统并不一定实现所有的隔离级别,如Oracle数据库只实现了读提交和串行化,而MySQL数据库则提供这全部四种隔离级别。
隔离级别越低,多用户同时访问数据的能力越高,但同时也会增加脏读、丢失更新等并发操作的负面影响。相反,高隔离级别降低了并发影响,但需要使用更多的系统资源,也增加了事务被阻塞的可能性。
4、持久性
数据库系统的持久性保证已经提交的事务是永久保存的。例如,如果一个机票预订报告显示一个座位已经订出,那么即使系统崩溃,被订了的座位也会一直保持被订出的状态。持久性可以通过在事务提交时将事务日志刷新至永久性存储介质来实现。
了解了事务的基本概念后,我们再来看操作型系统就比较容易理解了。操作型系统通常是高并发、高吞吐量的系统,具有大量检索、插入、更新操作,事务数量大,但每个事务影响的数据量相对较小。这样的系统很适合在线应用,这些应用有成千上万用户在同时使用,并要求能够立即响应用户请求。操作型系统常被整合到面向服务的架构(SOA)和Web服务里。对操作型系统应用的主要要求是高可用、高速度、高并发、可恢复和保证数据一致性,在各种互联网应用层出不穷的今天,这些系统要求是显而易见的。
02、分析型数据库(OLAP)
分析型系统是一种快速多维分析查询的方式。它也是更广泛范畴的所谓商业智能的一部分(商业智能还包含数据库、报表系统、数据挖掘、数据可视化等研究方向)。分析型系统的典型应用包括销售业务分析报告、市场管理报告、业务过程管理(BPM)、预算和预测、金融分析报告及其类似的应用。
随着数据的大量积累和大数据时代的到来,人们对于数据分析的依赖性越来越强,而分析型系统也随之越来越显示出重要性。举一个简单的例子,在一家医院中,保存有20年的非常完整的病人信息。医院领导想看到关于最常见的疾病、成功治愈率、实习医生的实习天数等很多相关数据的详细报告。为了满足这个需求,应用分析型系统查询医院信息数据仓库,并通过复杂查询得到结果,然后将报告提交给领导做进一步分析。
03、OLTP VS OLAP
1、首先两种系统的侧重点不同:操作型系统更适合对已有数据的更新,所以是日常处理工作或在线系统的选择。相反,分析型系统提供在大量存储数据上的分析能力,所以这类系统更适合报表类应用。分析型系统通常是查询历史数据,这有助于得到更准确的分析报告。
2、两种系统的目标完全不同:为了得到更好的应用性能,使用的数据模型和设计方法也不同。操作型系统数据库通常使用规范化设计,为普通查询和数据修改提供更好的性能。另一方面,分析型数据库具有典型的数据仓库组织形式。
3、查询速度不同:基于以上这两个主要的不同点,我们可以推导出两种系统其他方面的区别。操作型系统上的查询更小,而分析型系统上执行的查询要复杂得多。所以操作型系统会比分析型系统快很多。操作型系统的数据会持续更新,并且更新会立即生效。而分析型系统的数据更新,是由预定义的处理作业同时装载大量的数据集合,并且在装载前需要做数据转换,因此整个数据更新过程需要很长的执行时间。
4、备份机制不同:由于操作型系统要做到绝对的数据安全和可用性,所以需要实施复杂的备份系统。基本的全量备份和增量备份都是必须要做的。而分析型系统只需要偶尔执行数据备份即可,这一方面是因为这类系统一般不需要保持持续运行,另一方面数据还可以从操作型系统重复装载 。
5、对存储空间的要求不同:两种系统的空间需求显然都依赖于它们所存储的数据量。分析型系统要存储大量的历史数据,因此需要更多的存储空间。
04、OLTP和OLAP常用的工具
操作型数据库(OLTP)
面向应用,用于业务支撑,支持对实际业务的处理 insert update delete;
业务型数据库;
通常意义上的数据库: MySQL(开源,单机基础上的分库分表),Postgres(开源), Oracle, SQL Server, TiDB(开源), AWS Aurora, PolarDB, 少数行操作;
操作型数据库的主要应用,更侧重于基本的、日常的事务处理,包括数据的增删改查。
分析型数据库(OLAP)
面向数据分析,侧重决策支持,作为公司的单独数据存储,负责利用历史数据对公司各主题域进行统计分析;
优化查询性能,很多行查询;
数据仓库:Greenplum(商用版本,开源版本), Teradata(商用), Vertica(商用);
开源:Hive, Impala, Presto, Spark SQL,Doris(Palo), ClickHouse, Kylin, Hawk, Druid;
分析型数据库的主要应用,以多维度的方式分析数据;
网友评论