一文说清什么是数据仓库
01 数据仓库的概念
数据仓库的概念可以追溯到20世纪80年代,当时IBM的研究人员开发出了“商业数据仓库”。本质上,数据仓库试图提供一种从操作型系统到决策支持环境的数据流架构模型。
目前对数据仓库(Data Warehouse)的标准定义,业界普遍比较认可的是由数据仓库之父比尔·恩门(Bill Inmon)在1991年出版的“Building the Data Warehouse”(《建立数据仓库》)一书中所提出:数据仓库是一个面向主题的、集成的、相对稳定的(非易失的)、反映历史变化的数据集合,通常用于支持企业管理决策。这个定义有些复杂并且难以理解。下面我们将它分解开来进行说明。
-
面向主题
传统的操作型系统是围绕组织的功能性应用进行组织的,而数据仓库是面向主题的。主题是一个抽象概念,简单地说就是与业务相关的数据的类别,每一个主题基本对应一个宏观的分析领域。数据仓库被设计成辅助人们分析数据。例如,一个公司要分析销售数据,就可以建立一个专注于销售的数据仓库,使用这个数据仓库,就可以回答类似于“去年谁是我们这款产品的最佳用户”这样的问题。这个场景下的销售,就是一个数据主题,而这种通过划分主题定义数据仓库的能力,就使得数据仓库是面向主题的。主题域是对某个主题进行分析后确定的主题的边界,如客户、销售、产品都是主题域的例子。
-
集成
集成的概念与面向主题是密切相关的。还用销售的例子,假设公司有多条产品线和多种产品销售渠道,而每个产品线都有自己独立的销售数据库。此时要想从公司层面整体分析销售数据,必须将多个分散的数据源统一成一致的、无歧义的数据格式后,再放置到数据仓库中。因此数据仓库必须能够解决诸如数据分散存储、产品命名冲突、计量单位不一致等问题。当完成了这些数据整合工作后,该数据仓库就可称为是集成的。
-
随时间变化
为了发现业务变化的趋势、存在的问题,或者新的机会,需要分析大量的历史数据。这与联机事务处理(OLTP)系统形成鲜明的对比。联机事务处理反映的是当前时间点的数据情况,要求高性能、高并发和极短的响应时间,出于这样的需求考虑,联机事务处理系统中一般都将数据依照活跃程度分级,把历史数据迁移到归档数据库中。而数据仓库关注的是数据随时间变化的情况,并且能反映在过去某个时间点的数据是怎样的。换句话说,数据仓库中的数据是反映了某一历史时间点的数据快照,这也就是术语“随时间变化”的含义。当然,任何一个存储结构都不可能无限扩展,数据也不可能只入不出地永久驻留在数据仓库中,它在数据仓库中也有自己的生命周期。到了一定时候,数据会从数据仓库中移除。移除的方式可能是将细节数据汇总后删除、将老的数据转储到大容量介质后删除和直接物理删除等。
-
非易失
非易失指的是,一旦进入到数据仓库中,数据就不应该再有改变。操作型环境中的数据一般都会频繁更新,而在数据仓库环境中一般并不进行数据更新。当改变的操作型数据进入数据仓库时会产生新的记录,这样就保留了数据变化的历史轨迹。也就是说,数据仓库中的数据基本是静态的。这是一个不难理解的逻辑概念。数据仓库的目的就是要根据曾经发生的事件进行分析,如果数据是可修改的,将使历史分析变得没有意义。
对数据仓库的概念再来做一个总结,我们抓住两个重点:第一,数据仓库用于支持决策,面向分析型数据处理,它不同于企业现有的操作型数据库;第二,数据仓库是对多个异构的数据源有效集成,集成后按照主题进行了重组,并包含历史数据,而且存放在数据仓库中的数据一般不再修改。
02 数据仓库技术发展历程
03 为什么要建立数据仓库?
现在,大家应该已经熟悉并了解了数据仓库的概念,那么数据仓库里的数据从哪里来呢?通常数据仓库的数据来自各个业务应用系统。业务系统中的数据形式多种多样,可能是Oracle、MySQL、SQL Server等关系数据库里的结构化数据,可能是文本、CSV等平面文件或Word、Excel文档中的非结构化数据,还可能是HTML、XML等自描述的半结构化数据。这些业务数据经过一系列的数据抽取、转换、清洗,最终以一种统一的格式装载进数据仓库。数据仓库里的数据作为分析用的数据源,提供给后面的即席查询、分析系统、数据集市、报表系统、数据挖掘系统等。
从以上描述可以看到,从存储的角度看,数据仓库里的数据实际上已经存在于业务应用系统中,那么为什么不能直接操作业务系统中的数据用于分析,而要使用数据仓库呢?其实这个问题我们可以反过来想一下,不建立数据仓库,数据分析时直接访问业务系统中的数据会存在哪些问题?自然就会有答案了。
我们来列举一些直接访问业务系统无法工作的业务场景:
-
某些业务数据由于安全或其他因素不能直接访问。
-
很难建立和维护需要汇总来源于多个业务系统数据的报表。
-
业务系统的数据格式,如日期、数字的格式不统一。
-
业务系统的表结构为事务处理性能而优化,有时并不适合查询与分析。
-
没有适当的位置存储元数据。
-
通常事务处理的优先级比分析系统高,所以如果分析系统和事务处理运行在同一硬件之上,分析系统往往性能很差。
-
有误用业务数据的风险且极有可能影响业务系统的性能。
尽管需要增加软硬件的投入,但建立独立数据仓库与直接访问业务数据相比,无论是成本还是带来的好处,这样做都是值得的。随着处理器和存储成本的逐年降低,数据仓库方案的优势更加明显,在经济上也更具可行性。
04 数据仓库价值
-
提供全面准确的业务洞察:通过对多源数据的整合和分析,数据仓库能够帮助企业获得全面准确的业务洞察,发现隐藏在数据中的规律和趋势。
-
支持决策制定:数据仓库能够为企业的决策制定提供有力支持,通过多维分析和可视化报表,让企业能够更直观地了解业务状况,制定更准确的战略。
-
增强企业竞争力:通过数据仓库对市场的洞察力和预测力,企业能够更灵活地应对市场变化,提高竞争力。
-
降低运营风险:通过对历史数据的分析,数据仓库能够揭示出业务发展过程中的问题和风险,帮助企业及时调整策略,降低运营风险。
05 数据仓库应用场景
针对不同需求的用户 , 数据仓库可以开发如下几种应用:即席查询系统(Ad hoc query)、联机分析处理系统(OLAP)、领导信息系统(Executive Information System)、业务流程重整(Business Process Reengineering)。
数据仓库被广泛应用于各大行业:
-
电商行业:在电商行业中,数据仓库可用于对用户行为、购买偏好、流量分布等进行深入分析,为企业提供个性化推荐和营销策略。
-
金融行业:在金融行业中,数据仓库可用于对客户画像、风险评估、欺诈检测、市场趋势等进行分析,帮助金融机构做出更准确的信贷和投资决策。
-
医疗行业:在医疗行业中,数据仓库可用于对病患画像、疾病分布、治疗效果等进行分析,为医疗机构提供更精确的疾病诊断和治疗方案。
-
电信行业:在电信行业中,数据仓库可用于客户流失预测、网络性能监测、个性化服务推荐,帮助企业优化客户服务。
-
物流行业:在电信行业中,数据仓库可用于路线优化、仓储管理、供应链可视化,帮助企业提高物流效率,降低仓储成本。
-
制造业:在制造业中,数据仓库可用于对产品生产流程、设备运行状况、质量控制等进行分析,提高生产效率和产品质量。
相关文章:

一文说清什么是数据仓库
01 数据仓库的概念 数据仓库的概念可以追溯到20世纪80年代,当时IBM的研究人员开发出了“商业数据仓库”。本质上,数据仓库试图提供一种从操作型系统到决策支持环境的数据流架构模型。 目前对数据仓库(Data Warehouse)的标准定义&a…...

【算法】哈希表相关
【ps】本篇有 5 道 leetcode OJ。 一、算法简介 哈希表是一种存储数据的容器,可以快速查找某个元素,其查找的时间复杂度为 O(1),非常合适需要频繁查找某一个元素的场景。其具体用法为: 直接使用底层为哈希表的 STL 容器。用数组…...

企微机器人:企业数字化转型的得力助手
在数字化转型的浪潮中,企业对于提高运营效率、降低人力成本的需求日益迫切。企微机器人,作为基于企业微信平台开发的一种智能工具,以其高度自动化、灵活性强、安全性高和易于使用的特点,迅速成为企业内部的得力助手。本文将深入探…...

Linux编程之socket入门教程 socket通讯原理
在Linux网络编程中,套接字Socket是进程间通信的基础,用来在网络上不同主机间进行数据的发送和接收。套接字作为一种抽象的接口,它屏蔽了底层网络协议的复杂性,使得开发者可以专注于数据的传输。以下将详细介绍Linux网络编程中的So…...

Windows上安装RabbitMQ
rabbitmq是干嘛的我就不介绍了,直接开始安装教程。 搭建成功演示图 下载安装包 https://pan.baidu.com/s/1ZlCFxh9Q00ynSU3ZCpTC9Q?pwdry51pan.baidu.com/s/1ZlCFxh9Q00ynSU3ZCpTC9Q?pwdry51 下载完后有两个包(erlang和rabbitmq) 先安装otp_win64_24.1.7.exe…...

【C++ 高频面试题】构造函数和析构函数你了解多少呢?
文章目录 1. 什么是构造函数和析构函数2. 构造函数和析构函数可以是虚函数吗3. 构造函数有哪几种4. 深拷贝和浅拷贝的区别 1. 什么是构造函数和析构函数 🐧 构造函数: 构造函数是在创建对象时自动调用的特殊成员函数。 目的:初始化对象的成…...

linux中vim介绍以及常用命令大全
前言 在Linux系统中,Vim是一个功能强大的文本编辑器,它广泛应用于服务器管理、脚本编写和程序开发中。Vim拥有两种模式:命令模式和插入模式。了解和掌握常用的Vim命令对于提高文本编辑效率至关重要。本文将详细介绍Vim的常用命令,…...

线性代数 第六讲 特征值和特征向量_相似对角化_实对称矩阵_重点题型总结详细解析
文章目录 1.特征值和特征向量1.1 特征值和特征向量的定义1.2 特征值和特征向量的求法1.3 特征值特征向量的主要结论 2.相似2.1 相似的定义2.2 相似的性质2.3 相似的结论 3.相似对角化4.实对称矩阵4.1 实对称矩阵的基本性质4.2 施密特正交化 5.重难点题型总结5.1 判断矩阵能否相…...

CSS“多列布局”(补充)——WEB开发系列35
多列布局是一种非常常见的布局方式,适用于内容丰富的页面,如新闻网站、杂志或博客。 一、CSS多列布局概述 CSS多列布局允许我们将内容分成多个垂直列,使页面布局更加灵活和多样化。多列布局的主要属性包括 column-count、column…...

UI自动化测试痛点解决方案
前言 UI自动化测试可以快速、准确地执行大量的测试用例,减少人工测试所需的时间和劳动力。能够在短时间内完成多个测试用例的执行,提高测试的效率和速度。但是UI自动化有个最大的痛点。当前端界面发生变化时,往往页面元素定位也会改变&#…...

如何将QAD系统EDI模块无缝迁移到知行之桥?
什么是QAD系统? QAD(Quality, Applications, Development)系统,是专为制造业设计的一款ERP软件,主要包含供应链管理、生产管理、财务和客户管理等业务功能,这家公司1979年成立于美国,目前在汽车…...

Linux学习-ELK(一)
配置三台elasticsearch服务器 安装包 elasticsearch.j2 报错 #---执行rsync命令报以下错误 [rootes1 ~]# rsync -av /etc/hosts 192.168.29.172:/etc/hosts root192.168.29.172s password: bash: rsync: 未找到命令 rsync: connection unexpectedly closed (0 bytes receive…...

Selenium事件监听
引言 你一定总是渴望从WebDriver中获得更多的日志信息,以便调试你的脚本或记录更多有关测试的信息。这里为你提供了解决方案:EventFiringWebDriver 和 WebDriverEventListener。EventFiringWebDriver 是一个类,用于包装你的WebDriver以抛出事件,而WebDriverEventListener是…...

视频写作入门:9个步骤开始您的视频日志并与观众建立真实的联系
视频博客(vlogging)通过视频内容帮助你独特的声音和故事被听到,这能与你的观众建立强烈而有意义的联系,从而促进你的业务发展。使用光年AI平台,你可以将业务场景无缝接入AI能力,轻松实现私域流量的增长。 …...

使用豆包MarsCode 编写 Node.js 全栈应用开发实践
以下是「豆包MarsCode 体验官」优秀文章,作者狼叔。 欢迎更多用户使用豆包MarsCode 并分享您的产品使用心得及反馈、创意项目开发等,【有奖征集|人人都是豆包MarsCode 测评官!】活动正在火热进行中,欢迎大家投稿参加&a…...

Spring Cloud全解析:熔断之Hystrix执行流程
Hystrix执行流程 每次调用创建一个新的HystrixCommand,把依赖调用封装在run()方法中执行execute()/queue做同步或异步调用判断熔断器(circuit-breaker)是否打开,如果打开则执行fallback进行降级策略,如果关闭继续执行判断线程池/队列/信号量…...

大模型算法岗,面试百问百答,7天3个offer拿到手!
导读 大模型时代很多企业都在开发自己的大模型,这直接刺激了大模型岗位的需求。本文为大家整理了大模型面试相关的知识点,希望对大家面试求职有所帮助。 今天分享大模型面试相关知识点,持续更新。 1. RAG技术体系的总体思路 数据预处理->…...

代码随想录算法day32 | 动态规划算法part05 | 完全背包,518. 零钱兑换 II, 377. 组合总和 Ⅳ,70. 爬楼梯 (进阶)
完全背包理论基础 本题力扣上没有原题,大家可以去卡码网第52题 (opens new window)去练习,题意是一样的。 完全背包 有N件物品和一个最多能背重量为W的背包。第 i 件物品的重量是 weight[i],得到的价值是 value[i] 。每件物品都有无限个&…...

【Linux 从基础到进阶】自动化备份与恢复策略
自动化备份与恢复策略 在 Linux 运维中,数据的安全性至关重要,自动化备份与恢复策略是保障系统和数据安全的核心环节。无论是系统配置文件、用户数据、数据库还是应用程序日志,备份和恢复都能为系统灾难恢复、数据丢失等突发情况提供可靠的解决方案。 本文将介绍如何在 Ce…...

前端打包装包——设置镜像
1、打包失败,因为没装包,装包失败,因为装包的源错误 npm config get registry npm config set registry https://registry.npmmirror.com/npm install npm run build还是失败,因为缺少了包,在package.json文件中没有包…...

volatile 的作用?是否具有原子性,对编译器有什么影响?什么情况下一定要用 volatile, 能否和 const 一起使用?
目录 1. volatile 的作用 2. 是否具有原子性 3. 对编译器的影响 4.volatile 的使用场景 5.volatile 和 const 的组合 1. volatile 的作用 防止编译器优化:volatile 告诉编译器,变量的值可能会在程序的其他地方(如硬件中断、其他线程等&…...

iPhone 16分辨率,屏幕尺寸,PPI 详细数据对比 iPhone 16 Plus、iPhone 16 Pro、iPhone 16 Pro Max
史上最全iPhone 机型分辨率,屏幕尺寸,PPI详细数据!已更新到iPhone 16系列! 点击放大查看高清图 !...

FunASR搭建语音识别服务和VAD检测
搭建ASR语音识别服务(含VAD检测)教程 在本文中,我将为大家详细介绍如何搭建一套基于FunASR的ASR(语音识别)服务,并集成VAD(语音活动检测)。该服务使用阿里达摩院的模型,…...

设计一个支持多线程写入的并发日志记录系统:C++实战指南
设计一个支持多线程写入的并发日志记录系统:C实战指南 在现代软件开发中,日志记录是一个至关重要的功能,它帮助开发者调试、监控和维护系统。然而,在多线程环境中,日志记录系统需要处理多个线程同时写入日志的问题&am…...

使用LSTM(长短期记忆网络)模型预测股票价格的实例分析
一:LSTM与RNN的区别 LSTM(Long Short-Term Memory)是一种特殊的循环神经网络(RNN)架构。LSTM是为了解决传统RNN在处理长序列数据时遇到的梯度消失或梯度爆炸问题而设计的。 在传统的RNN中,信息通过隐藏状…...

开源的 Windows 12 网页体验版!精美的 UI 设计、丰富流畅的动画
大家周二好呀!博主今天给小伙伴们分享一款炫酷的 Windows 12 体验版,网页效果拉满,非常值得我们去尝试! 如果你对未来的Windows操作系统充满期待,那么这款开源的Windows 12 网页体验版绝对不容错过!这不仅…...

chapter14-集合——(List)——day18
目录 518-Set接口方法 518-Set接口方法...

Frida 脚本抓取 HttpURLConnection 请求和响应
引入 Java 类: 引入 okhttp3.OkHttpClient、okhttp3.OkHttpClient$Builder、okhttp3.Interceptor、okhttp3.ResponseBody 等类。 创建自定义拦截器: 通过 Java.registerClass 创建自定义拦截器 MyInterceptor。拦截器中重写 intercept 方法࿰…...

Java实现建造者模式和源码中的应用
Java实现建造者模式(Builder Pattern) 文章目录 Java实现建造者模式(Builder Pattern)案例:汉堡制作建造者模式的核心角色代码实现:汉堡制作 🍔内部类实现:Step 1:产品类…...

Windows安装docker
Windows有两种虚拟号技术,WLS和Hyper-V,因为我的win10是家庭版,所以只能采用WLS来安装docker。 在Windows 10家庭版中,由于默认不包含Hyper-V功能,因此容器功能也不可用。即使启用了Hyper-V,由于Docker De…...