欢迎关注大数据系列课程

前语

无论你是否专门从事大数据开发,作为一个开发人员,应该都听说过数据库房的概念,那你知道为什么会呈现数据库房?数据库房究竟是干嘛的吗?有什么价值和含义呢?那么本文就带到入门,揭开数据库房的面纱。

数据库房的由来

数据库房为何而来,首要处理什么问题的?

先下定论:为了剖析数据而来,剖析成果为企业决议方案供给支撑。举个简略的例子,比方你们公司要要判别明年是否要进入出产口罩,那么就需求数据支撑,比方口罩市场的需求、饱满率、赢利等等,然后借由剖析成果,去做判别决议方案,而不是拍脑袋,不然大概率便是赔本的。

下面再以一个中国人寿保险公司发展为例,具体论述数据库房为何而来?

(1)OLTP体系处理事务数据

中国人寿保险(集团)公司下辖多条事务线,包括:人寿险、财险、车险,养老险等。各事务线的事务正常运营需求记载维护包括客户、保单、收付费、核保、理赔等信息。这么多事务数据存储在哪里呢?

这些通用的事务行为一般是发在联机事务处理体系(OLTP), 其首要任务是执行联机事务处理,前台接纳的用户数据能够立即传送到后台进行处理,并在很短的时刻内给出处理成果。

一般来说,这些事务数据最终都是落在联系型数据库中的,联系型数据库(RDBMS)是OLTP典型运用,比方:Oracle、MySQL、SQL Server等

大数据时代,数据仓库究竟是干嘛的?

这仅仅最根底的事务,可是跟着事务规划的不断发展,衍生出了更多的数据剖析型需求,用OLTP可行吗?

(2)剖析型决议方案需求衍生

跟着集团事务的继续运营,事务数据将会越来越多。由此也产生出许多运营相关的需求问题:

  • 能够确认哪些险种正在恶化或已成为不良险种?
  • 能够用有效的方式拟定新增和续保的方针吗?
  • 理赔进程有欺诈的或许吗?
  • 现在得到的报表是否仅仅某条事务线的?集团整体层面数据如何?

……

为了能够正确认识这些问题,拟定相关的处理方法,瞎拍桌子是必定不行的。最稳妥方法便是:根据事务数据展开数据剖析,根据剖析的成果给决议方案供给支撑。也便是所谓的数据驱动决议方案的拟定。

大数据时代,数据仓库究竟是干嘛的?

OLTP环境展开剖析可行吗?

能够,可是没必要。OLTP体系的核心是面向事务,支撑事务,支撑事务。一切的事务操作能够分为读、写两种操作,一般来说读的压力显着大于写的压力。假如在OLTP环境直接展开各种剖析,有以下问题需求考虑:

  • 数据剖析也是对数据进行读取操作,会让读取压力倍增;
  • OLTP仅存储数周或数月的数据;
  • 数据涣散在不同体系不同表中,字段类型特色不一致;

(3)数据库房面世

当剖析所触及数据规划较小的时候,在事务低峰期时能够在OLTP体系上展开直接剖析。但为了更好的进行各种规划的数据剖析,同时也不影响OLTP体系运行,此刻需求构建一个集成一致的数据剖析渠道。该渠道的意图很简略:面向剖析,支撑剖析,而且和OLTP体系解耦合。根据这种需求,数据库房的雏形开端在企业中呈现了。

数据库房是一个用于存储、剖析、陈述的数据体系,意图是构建面向剖析的集成化数据环境。咱们把这种面向剖析、支撑剖析的体系称之为OLAP(联机剖析处理)体系。当然,数据库房是OLAP体系的一种完结。

  • 中国人寿保险公司就能够根据剖析决议方案需求,构建数仓渠道。

大数据时代,数据仓库究竟是干嘛的?

数据库房介绍

数据库房(英语:Data Warehouse,简称数仓、DW),是一个用于存储、剖析、陈述的数据体系,首要意图是构建面向剖析的集成化数据环境,剖析成果为企业供给决议方案支撑(Decision Support)。

  • 数据库房本身并不“出产”任何数据,其数据来历于不同外部体系;
  • 同时数据库房自身也不需求“消费”任何的数据,其成果开放给各个外部运用运用;
  • 这也是为什么叫“库房”,而不叫“工厂”的原因。

大数据时代,数据仓库究竟是干嘛的?

数仓四大特征

那么数据库房都有什么特色呢?

  1. 面向主题性(Subject-Oriented)
  • 主题是一个笼统的概念,是较高层次上企业信息体系中的数据归纳、归类并进行剖析利用的笼统。在逻辑含义上,它是对应企业中某一微观剖析范畴所触及的剖析对象。
  • 传统OLTP体系对数据的划分并不适用于决议方案剖析。而根据主题安排的数据则不同,它们被划分为各自独立的范畴,每个范畴有各自的逻辑内涵但互不交叉,在笼统层次上对数据进行完好、一致和准确的描绘。

大数据时代,数据仓库究竟是干嘛的?

  1. 集成性

主题相关的数据一般会分布在多个操作型体系中,彼此涣散、独立、异构。

  • 因而在数据进入数据库房之前,必然要通过一致与归纳,对数据进行抽取、清理、转换和汇总,这一步是数据库房建造中最关键、最杂乱的一步,所要完结的作业有:
    • 要一致源数据中一切矛盾之处。如字段的同名异义、异名同义、单位不一致、字长不一致等等。
    • 进行数据归纳和核算。数据库房中的数据归纳作业能够在从原有数据库抽取数据时生成,但许多是在数据库房内部生成的,即进入数据库房以后进行归纳生成的。

下图说明晰保险公司归纳数据的简略处理进程,其间数据库房中与“承保”主题有关的数据来自于多个不同的操作型体系。

大数据时代,数据仓库究竟是干嘛的?

  1. 非易失性、非异变性
  • 数据库房是剖析数据的渠道,而不是发明数据的渠道。咱们是通过数仓去剖析数据中的规则,而不是去发明修正其间的规则。因而数据进入数据库房后,它便稳定且不会改动。
  • 数据库房的数据反映的是一段相当长的时刻内历史数据的内容,数据库房的用户对数据的操作大多是数据查询或比较杂乱的发掘,一旦数据进入数据库房以后,一般情况下被较长时刻保存。
  • 数据库房中一般有大量的查询操作,但修正和删去操作很少。
  1. 时变性
  • 数据库房包括各种粒度的历史数据,数据或许与某个特定日期、星期、月份、季度或者年份有关。
  • 当事务变化后会失去时效性。因而数据库房的数据需求跟着时刻更新,以习惯决议方案的需求。
  • 从这个角度讲,数据库房建造是一个项目,更是一个进程 。

数据库房架构

大数据时代,数据仓库究竟是干嘛的?

一般情况下,为了把一个杂乱的作业拆成了多个简略的作业,一般将数据库房架构分为三层,即数据操作层、数据库房层和运用数据层(数据集市层)。

  1. ODS(Operation Data Store 数据预备区)

数据库房源头体系的数据表一般会原封不动的存储一份,这称为ODS层,也称为预备区。它们是后续数据库房层加工数据的来历。ODS层数据的首要来历是事务数据库、埋点日志、其他数据源。

  • 事务数据库:可运用DataX、Sqoop等东西来抽取,每天守时抽取一次;在实时运用中,可用Canal监听MySQL的 Binlog,实时接入改变的数据。
  • 埋点日志:线上体系会打入各种日志,这些日志一般以文件的方式保存,能够用 Flume 守时抽取。
  • 其他数据源:从第三方购买的数据、或是网络爬虫抓取的数据。
  1. DW(Data Warehouse 数据库房层)

该层包括DWD、DWS、DIM层,由ODS层数据加工而成,首要是完结数据加工与整合,建立一致性的维度,构建可复用的面向剖析和统计的明细现实表,以及汇总公共粒度的目标。

  • DWD(Data Warehouse Detail 细节数据层),是事务层与数据库房的隔离层。以事务进程作为建模驱动,根据每个具体的事务进程特色,构建细粒度的明细层现实表。能够结合企业的数据运用特色,将明细现实表的某些重要维度特色字段做适当冗余,也即宽表化处理。
  • DWS(Data Warehouse Service 服务数据层),根据DWD的根底数据,整合汇总成剖析某一个主题域的服务数据。以剖析的主题为建模驱动,根据上层的运用和产品的目标需求,构建公共粒度的汇总目标现实表。
  • DIM(公共维度层 ),根据维度建模理念思想,建立一致性维度。
  • TMP层 :临时层,寄存核算进程中临时产生的数据。
  1. ADS(Application Data Store 运用数据层)

该层是根据DW层的数据,整合汇总成主题域的服务数据,用于供给后续的事务查询等。

数据库房开发言语

数仓作为面向剖析的数据渠道,其主职作业便是对存储在其间的数据展开剖析,那么如何读取数据剖析呢?

理论上来说,任何一款编程言语只需具有读写数据、处理数据的能力,都能够用于数仓的开发。比方我们耳熟能详的C、java、Python等。可是这些编程一员的学习本钱和开发效率都不是十分友爱,在数据剖析范畴中,SQL言语功用很强,十分简练,用户也简单学习和运用,是主流的言语。比方比较常用的数据库房东西Hive便是支撑SQL的语法。

总结

本文通过例子讲清楚了数据库房的来历,以及在企业运用中的必要性,首要是为了构建一个面向剖析的集成化数据环境,剖析成果能够为企业供给决议方案支撑,真实完结数据驱动决议方案的意图。实际上数据库房的建造远比上面提到的杂乱,需求花费很大的本钱,因而需求考虑清楚。

假如本文对你有帮助的话,请留下一个赞吧
欢迎关注个人公众号——JAVA旭阳

本文正在参加「金石方案 . 分割6万现金大奖」