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

news2024/11/25 14:22:16

前言

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

数据仓库的由来

数据仓库为何而来,主要解决什么问题的?

先下结论:为了分析数据而来,分析结果为企业决策提供支撑。举个简单的例子,比如你们公司要要判断明年是否要进入生产口罩,那么就需要数据支撑,比如口罩市场的需求、饱和率、利润等等,然后借由分析结果,去做判断决策,而不是拍脑袋,不然大概率就是亏本的。

下面再以一个中国人寿保险公司发展为例,详细阐述数据仓库为何而来?

(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旭阳
更多学习资料请移步:程序员成神之路

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/84174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据分析工具-FineReport地产行业通用单选按钮组控件插件

1. 概述 1.1 版本 报表服务器版本 JAR 包版本 插件版本 10.0 2018-09-05 V1.3.4 9.0 2015-08-09 V1.3.2 8.0 2015-08-09 V1.3.2 1.2 应用场景 地产行业具有比较特殊的筛选需求,而现有的单选按钮组控件不能很好的满足这一点。我们希望可以实现多层级多…

空间音频技术与生态发展高峰论坛成功举办,业界首个Audio Vivid创作工具花瓣三维声亮相

11月26日至27日,UWA世界超高清视频产业联盟(以下简称“UWA联盟”)、上海交通大学-南加州大学文化创意产业学院、华为联合举办了“互联智慧,共赢未来” 超高清音视频技术与生态发展高峰论坛暨Audio Vivid空间音频工具花瓣三维声训练…

Nocas环境隔离

Nocas环境隔离配置 为了做数据和服务的管理,引出了环境隔离的一个概念。 Nocas中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离。 .yml 配置文件中配置: spring:application:name: orderservicecloud:nacos:se…

OH----Usb rndis,mtp等function添加,config配置

1、驱动侧添加对应功能的驱动代码: 在linux中usb驱动代码中添加rndis或者mtp等功能驱动代码, 路径: linux-5.10/drivers/usb/gadget/function linux usb驱动原生功能代码一般可以直接使用,添加进去参与编译就能继续往下做调试了&…

【校招项目】基于C++11的muduo库

基于C11的网络库 文章目录基于C11的网络库项目介绍项目地址项目特点开发环境并发模型构建项目运行案例模块讲解ChannelPollerEventLoopBufferTimerHTTP异步日志内存池数据库连接池优化计划感谢项目介绍 本项目是参考 muduo 实现的基于 Reactor 模型的多线程网络库。使用 C 11 …

如何高效存储中高频多因子

2022年12月1日晚7点半,DolphinDB 进行了以「中高频多因子库存储最佳实践」为主题的直播,吸引了众多专业观众的注意。本文将回顾直播精彩内容。 DolphinDB 的因子库: 为了使广大用户更方便地实现因子计算和管理,助力更高效的投研…

[附源码]Node.js计算机毕业设计大学生专业实习管理系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

C/C++ 高精度(加减乘除)算法简单实现

文章目录前言一、基本原理1、存储方式2、计算方式二、辅助方法1、字符串转高精度2、整型转高精度3、比较4、打印三、算法实现1、加法2、减法3、乘法4、除法四、使用示例1、加法2、减法3、乘法4、除法总结前言 由于上一章《C/C 高精度(加减乘除)算法实现…

NetSuite资产负债表编制技巧

在最近的项目上,发现大家对NetSuite资产负债的编制参数缺乏足够的了解,导致对客户需求的支支吾吾,产生了沟通上的浪费。所以今朝对三个典型应用做个介绍。 1. 如何在资产负债表中选择“会计期间区间”? 2. 期初、发生、结余报表…

【元宇宙欧米说】Web3如何为漫画产业创造更多玩法和可能性

漫画和NFT的碰撞会产生什么火花?NFT如何为传统的漫画收藏增加额外价值?Web3时代如何为漫画带来更多玩法和可能性? 12月15日下午三点,MadManga 创始人Jun将以“Web3如何为漫画产业创造更多玩法和可能性”为题,与大家共…

构建文本摘要Baseline并且开始训练

构建文本摘要Baseline并且开始训练 基于前面word2vec的原理与训练实践、seq2seq模型的原理与实践以及attention机制,已经分别写了相关的文章来记录,此篇文章就是基于前面所学,开始着手训练文本摘要模型,当然仅是一个比较普通的ba…

[附源码]Node.js计算机毕业设计大学体育馆预约系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

vue框架搭建大屏自适应方案

vue框架搭建大屏自适应方案 1.可使用flexible.js rem实现宽高,字体自适应 附上flexible.js代码 (function flexible(window, document) {var docEl document.documentElement;var dpr window.devicePixelRatio || 1;// adjust body font sizefunction setBody…

NocasRule负载均衡与服务实例的权重设置

NocasRule负载均衡 .yml 配置文件配置 server:port: 8080 spring:application:name: orderservicecloud:nacos:server-addr: localhost:8848 #nocas服务地址discovery:cluster-name: HZ #集群名字 userservice: #要做配置的微服务名称ribbon:NFLoadBalancerRuleClassName: com…

游戏开发57课 性能优化14

5. 内存优化 内存优化目的是加快IO,防止卡主线程,防止频繁操作(创建/删除)内存,避免内存碎片化和占用过高。 5.1 缓存法 与CPU的缓存计算类似,思路是将需要重复创建的对象缓存起来,销毁时将它…

安装、启动与停止Apache服务

安装、启动与停止Apache服务 安装Apache相关软件 [rootcentos7 ~]# rpm -q httpd [rootcentos7-1 ~]# mkdir /opt/centos //创建目录/opt/centos [rootcentos7-1 ~]# mount /dev/cdrom /opt/centos //挂载光盘到/opt/centos 下 mount: /dev/sr0 写保护…

Spring Boot 3.0.0正式发布,Banner不再支持图片增强可观测性

本文已被https://yourbatman.cn收录;女娲Knife-Initializr工程可公开访问啦;程序员专用网盘https://wangpan.yourbatman.cn;技术专栏源代码大本营:https://github.com/yourbatman/tech-column-learning;公号后台回复“…

openCV(一)基础背景

1 认识计算机视觉 2012年AlexNet模型在ImageNet图像分类中获得比赛冠军,深度学习开始在计算机视觉领域流行。早期的计算机视觉主要集中在重建方面,2012年以后在感知和重建两个领域都受到了深度学习的影响。应用场景包括自动驾驶、机器视觉、安防监控、其…

猿如意中的【PostgreSQL 数据库】工具详情介绍

猿如意中的【PostgreSQL 数据库】工具详情介绍 一、工具名称 PostgreSQL 数据库 二、下载安装渠道 PostgreSQL 数据库V14.2 通过CSDN官方开发的【猿如意】客户端进行下载安装。 2.1 什么是猿如意? 猿如意是一款面向开发者的辅助开发工具箱,包含了效…

jenkins-pipeline与变量

本文介绍如何在pipeline中使用变量 使用jenkins预定义的环境变量 jenkins预先定义了一些环境变量,在pipeline中使用${env.key}来调用 另外安装了第三方插件,会有新的环境变量,可以使用插件Environment Inject来查看 在pipeline中使用预定义…