【数据仓库与联机分析处理】数据仓库
目录
一、数据仓库的概念
二、数据仓库与操作性数据库的区别
三、发展前期
四、数据仓库的系统结构
五、建模划分
六、主要案例
一、数据仓库的概念
目前很难给数据仓库(Data Warehouse)一个严格的定义,不准确地说,数据仓库也是一种数据库,它与操作性数据库进行分开维护。按照数据仓库系统构造方面的领头设计师William H.Inmon的说法,数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)以及反映历史变化(Time Variant)的数据集合,用于支持管理决策。
1、面向主题是指数据仓库会围绕一些主题来组织和构建,如顾客、供应商、产品等,数据仓库关注决策者的数据建模与分析,而不是企业的日常操作和事务处理,因此,数据仓库排除对决策支持过程无用的数据,提供面向特定主题的视图。
2、集成是指通常构建数据仓库会将多个异构的数据源,如关系数据库、一般的文件和事务处理记录等集成在一起,这就需要使用数据清理和数据集成技术,来确保命名约定、编码结构和属性度量等的一致性。
3、相对稳定是指数据仓库大多会分开存放数据,数据仓库不需要进行事务处理、数据恢复和并发控制等机制,通常数据仓库只需要两种数据访问操作:数据的初始化装入和数据的访问。
4、反映历史变化是指数据仓库是从历史的角度提供信息,换句话说,数据仓库中的关键结构都会显式或者隐式地包含时间元素。
二、数据仓库与操作性数据库的区别
为了进一步加深对数据仓库概念的理解,我们把数据库系统和数据仓库进行对比。为了区分,这里把数据库系统称为操作性数据库。操作性数据库的主要任务是执行联机事务和查询处理,这种系统称为联机事务处理(Online Transaction Processing,OLTP)系统,它涵盖了企业组织机构大部分的日常操作,如购物、注册、记账等。 数据仓库系统则是在数据分析和决策方面为用户和决策者提供服务,以特定的主题和格式来组织和提供数据,从而满足不同用户的需求,因此这种系统称为联机分析处理(Online Analytical Processing,OLAP)系统。
OLTP和OLAP的主要区别体现在如下几个方面:
1、系统面向的用户对象不同。OLTP系统面向一般的客户,用于数据库用户的事务处理和查询,而OLAP系统则是面向知识工人或者管理决策人员,提供数据分析功能。
2、数据的内容不同。OLTP管理的是当前的数据,对于数据的操作相对较为细小琐碎,无法用于决策。OLAP则管理了大量的历史数据,如一个销售公司一个月、一年甚至数年的销售数据。OLAP提供了汇总和聚集机制,并且可以在不同的粒度级别、不同的维度视角来存储和管理数据,这些优势使得数据可以用于分析和决策任务。
3、采用的模型和设计不同。通常OLTP系统采用的实体—联系(E-R)模型和面向应用的数据库设计,而OLAP采用的是面向某个主题的星形模式、雪花模式或事实星座模式的数据库设计。
4、访问模式不同。OLTP系统的访问模式主要由短的原子事务所组成,既有读操作也有写操作,这种系统需要考虑事务管理、并发控制和故障恢复等机制。而OLAP的访问模式在完成数据的初始装载以后,基本都是只读操作。
5、数据的视图不同。OLTP主要关注当前生产环境的数据,不太涉及历史数据。而OLAP系统通常要跨越数据库的多个版本,处理来自不同组织的数据信息。由于数据量巨大,OLAP的数据通常会存放在多个存储介质上。
操作性数据库与数据仓库的其他区别,如数据量的大小、操作的频度和性能等,如下表所示:

三、发展前期
计算机发展的早期,人们已经提出了建立数据仓库的构想。“数据仓库”一词最早是在1990年,由Bill Inmon先生提出的,其描述如下:数据仓库是为支持企业决策而特别设计和建立的数据集合。
企业建立数据仓库是为了填补现有数据存储形式已经不能满足信息分析的需要。数据仓库理论中的一个核心理念就是:事务型数据和决策支持型数据的处理性能不同。企业在它们的事务操作收集数据。在企业运作过程中:随着定货、销售记录的进行,这些事务型数据也连续的产生。为了引入数据,我们必须优化事务型数据库。
处理决策支持型数据时,一些问题经常会被提出:哪类客户会购买哪类产品?促销后销售额会变化多少?价格变化后或者商店地址变化后销售额又会变化多少呢?在某一段时间内,相对其他产品来说哪类产品特别容易卖呢?哪些客户增加了他们的购买额?哪些客户又削减了他们的购买额呢?
事务型数据库可以为这些问题作出解答,但是它所给出的答案往往并不能让人十分满意。在运用有限的计算机资源时常常存在着竞争。在增加新信息的时候我们需要事务型数据库是空闲的。而在解答一系列具体的有关信息分析的问题的时候,系统处理新数据的有效性又会被大大降低。另一个问题就在于事务型数据总是在动态的变化之中的。决策支持型处理需要相对稳定的数据,从而问题都能得到一致连续的解答。
数据仓库的解决方法包括:将决策支持型数据处理从事务型数据处理中分离出来。数据按照一定的周期(通常在每晚或者每周末),从事务型数据库中导入决策支持型数据库——既“数据仓库”。数据仓库是按回答企业某方面的问题来分“主题”组织数据的,这是最有效的数据组织方式。
四、数据仓库的系统结构
1、数据源
是数据仓库的数据来源,含外部数据、现有业务系统和文档资料等;对这些数据首先完成数据集成,包括数据的抽取、清洗、转换和加载任务。数据源中的数据采用ETL(Extract-Transform-Load,数据抽取、转换、装载)工具并以固定的周期加载到数据仓库中。
2、数据存储和管理
此层次主要涉及对数据的存储和管理,含数据仓库、数据仓库检测、运行与维护工具和元数据管理等。
3、数据服务
为前端和应用提供数据服务,可直接从数据仓库中获取数据供前端应用使用,也可通过OLAP服务器为前端应用提供负责的数据服务。
4、数据应用
此层次直接面向用户,含数据查询工具、自由报表工具、数据分析工具、数据挖掘工具和各类应用系统。
随着应用需求的发展变化,传统的数据仓库也存在如下几个亟待解决的问题:
(1)无法满足快速增长的数据存储需求,传统数据仓库基于关系型数据库,横向扩展较差,纵向扩展有限。
(2)无法处理不同类型的数据,传统数据仓库只能处理和存储结构化数据。随着应用需求的发展,数据的格式越来越丰富,半结构化、非结构化数据所占比重越来越大,处理需求越来越迫切。
(3)传统数据仓库建立在关系型数据仓库之上,计算和处理能力不足,当数据量达到TB级后性能难以得到保证。

五、建模划分
数据仓库的数据建模大致分为四个阶段:
1、业务建模,这部分建模工作,主要包含以下几个部分:
(1)划分整个单位的业务,一般按照业务部门的划分,进行各个部分之间业务工作的界定,理清各业务部门之间的关系。
(2)深入了解各个业务部门内的具体业务流程并将其程序化。
(3)提出修改和改进业务部门工作流程的方法并程序化。
(4)数据建模的范围界定,整个数据仓库项目的目标和阶段划分。
2、领域概念建模,这部分得建模工作,主要包含以下几个部分:
(1)抽取关键业务概念,并将之抽象化。
(2)将业务概念分组,按照业务主线聚合类似的分组概念。
(3)细化分组概念,理清分组概念内的业务流程并抽象化。
(4)理清分组概念之间的关联,形成完整的领域概念模型。
3、逻辑建模,这部分的建模工作,主要包含以下几个部分:
(1)业务概念实体化,并考虑其具体的属性。
(2)事件实体化,并考虑其属性内容。
(3)说明实体化,并考虑其属性内容。
4、物理建模,这部分得建模工作,主要包含以下几个部分:
(1)针对特定物理化平台,做出相应的技术调整。
(2)针对模型的性能考虑,对特定平台作出相应的调整。
(3)针对管理的需要,结合特定的平台,做出相应的调整。
(4)生成最后的执行脚本,并完善之。
六、主要案例
1、Agrofert
农业、食品和化工集团Agrofert 发现,随着企业的快速发展,旗下子公司已经有 160 多个不同的系统在运行。很难提供统一的报告,而且支持和许可成本也不断上升。如果每新购一个系统就扩大一次基础架构,显然不是一种可以扩展的战略。Agrofert采用 SAP ERP 应用程序作为其部分子公司的共享服务,目的是将其逐渐推广到整个企业,这些应用程序在两个地点的 IBM Power Systems 服务器上集中管理。公司从混合数据库环境(包括 Oracle 和 Microsoft SQL Server)迁移到 IBM DB2,将 IBM DB2 作为其标准数据库,同时还为关键的业务数据部署集中的存储系统。迁移后,不再需要本地系统,能够极大地降低管理、支持和许可成本;借助IBM DB2 可降低许可费用,简化管理并减少员工教育及培训;整合的存储有助于降低成本,而 IBM DB2 深度压缩将会降低总体存储需求;总成本估计减少 20%。
2、迪斯尼乐园
Disney每年都有10亿美元商品销售收入,而建立一个ERP系统来处理这些信息是极具挑战性的。最新的集中式ERP系统是设计用来处理商品管理、存货管理和相关业务过程的。但是Disney 也希望平衡财务和业务智能(BI)报告和业务分析系统,这意味着建立一个新的数据仓库。Disney在该项目中所使用的一些产品包括SAS分析软件和Teradata数据仓库技术。最新的集中式ERP、数据仓库和分析系统正帮助Disney更好地管理存货、分析销售额和预报特定领域的商品需求。

相关文章:
【数据仓库与联机分析处理】数据仓库
目录 一、数据仓库的概念 二、数据仓库与操作性数据库的区别 三、发展前期 四、数据仓库的系统结构 五、建模划分 六、主要案例 一、数据仓库的概念 目前很难给数据仓库(Data Warehouse)一个严格的定义,不准确地说,数据仓库…...
机器学习:贝叶斯估计在新闻分类任务中的应用
文章摘要 随着互联网的普及和发展,大量的新闻信息涌入我们的生活。然而,这些新闻信息的质量参差不齐,有些甚至包含虚假或误导性的内容。因此,对新闻进行有效的分类和筛选,以便用户能够快速获取真实、有价值的信息&…...
[C#]基于deskew算法实现图像文本倾斜校正
【算法介绍】 让我们开始讨论Deskeweing算法的一般概念。我们的主要目标是将旋转的图像分成文本块,并确定它们的角度。为了让您详细了解我将使用的方法: 照常-将图像转换为灰度。应用轻微的模糊以减少图像中的噪点。现在,我们的目标是找到带…...
Qt通过pos()获取坐标信息
背景:这是一个QWidget窗体,里面是各种布局的组合,一层套一层。 我希望得到绿色部分的坐标信息(x,y) QPoint get_pos(QWidget* w, QWidget* parent) {if ((QWidget*)w->parent() parent) {return w->pos();}else {QPoint pos(w->po…...
【Webpack】资源输入输出 - 配置资源出口
所有与出口相关的配置都集中在 output对象里 output对象里可以包含数十个配置项,这里介绍几个常用的 filename 顾名思义,filename的作用是控制输出资源的文件名,其形式为字符串,如: module.exports {entry: ./src/a…...
【XR806开发板试用】XR806串口驱动CM32M对小厨宝的控制实验
一.说明 非常感谢基于安谋科技STAR-MC1的全志XR806 Wi-FiBLE开源鸿蒙开发板试用活动,并获得开发板试用。 XR806是全志科技旗下子公司广州芯之联研发设计的一款支持WiFi和BLE的高集成度无线MCU芯片,支持OpenHarmony minisystem和FreeRTOS,具有集成度高、…...
中介者模式-Mediator Pattern-1
如果在一个系统中对象之间的联系呈现为网状结构, 对象之间存在大量的多对多联系,将导致系统非常复杂。 这些对象既会影响别的对象,也会被别的对象所影响。 这些对象称为同事对象,它们之间通过彼此的相互作用实现系统的行为。 在网…...
ASP.NET Core基础之图片文件(一)-WebApi图片文件上传到文件夹
阅读本文你的收获: 了解WebApi项目保存上传图片的三种方式学习在WebApi项目中如何上传图片到指定文件夹中 在ASP.NET Core基础之图片文件(一)-WebApi访问静态图片文章中,学习了如何获取WebApi中的静态图片,本文继续分享如何上传图片。 那么…...
精准掌控 Git 忽略规则:定制化 .gitignore 指南
🧙♂️ 诸位好,吾乃诸葛妙计,编程界之翘楚,代码之大师。算法如流水,逻辑如棋局。 📜 吾之笔记,内含诸般技术之秘诀。吾欲以此笔记,传授编程之道,助汝解技术难题。 &…...
Harmony 开始支持 Flutter ,聊聊 Harmony 和 Flutter 之间的因果
原创作者:恋猫de小郭 相信大家都已经听说过,明年的 Harmony Next 版本将正式剥离 AOSP 支持 ,基于这个话题我已经做过一期问题汇总 ,当时在 现有 App 如何兼容 Harmony Next 问题上提到过: 华为内部也主导适配目前的主…...
k8s 之7大CNI 网络插件
一、介绍 网络架构是Kubernetes中较为复杂、让很多用户头疼的方面之一。Kubernetes网络模型本身对某些特定的网络功能有一定要求,但在实现方面也具有一定的灵活性。因此,业界已有不少不同的网络方案,来满足特定的环境和要求。 CNI意为容器网络…...
stable diffusion 人物高级提示词(一)头部篇
一、女生发型 prompt描述推荐用法Long hair长发一定不要和 high ponytail 一同使用Short hair短发-Curly hair卷发-Straight hair直发-Ponytail马尾high ponytail 高马尾,一定不要和 long hair一起使用,会冲突Pigtails2条辫子-Braid辫子只写braid也会生…...
限制哪些IP能连接postgre
打开C:\Program Files\PostgreSQL\9.4\data\pg_hba.conf 以下代表本机能连,172.16.73.xx都能连(/24就代表最后一位是0-255),如果是172.16.73.11/32那就是限制了172.16.73.11才能连(实际我设置/32是无效的)&…...
可狱可囚的爬虫系列课程 08:新闻数据爬取实战
前言 本篇文章中我带大家针对前面所学 Requests 和 BeautifulSoup4 进行一个实操检验。 相信大家平时或多或少都有看新闻的习惯,那么我们今天所要爬取的网站便是新闻类型的:中国新闻网,我们先来使用爬虫爬取一些具有明显规则或规律的信息&am…...
mysql2pgsql
使用pgloader进行迁移 pgloader是一个强大的数据迁移工具,专为将不同数据库之间的数据迁移到PostgreSQL而设计。它支持从MySQL到PostgreSQL的迁移,并提供了一种简单且灵活的方式来转移数据。 安装pgloader 使用pgloader迁移数据 1、命令行方式 2、脚…...
设计模式-流接口模式
设计模式专栏 模式介绍模式特点应用场景流接口模式和工厂模式的区别代码示例Java实现流接口模式Python实现流接口模式 流接口模式在spring中的应用 模式介绍 流接口模式是一种面向对象的编程模式,它可以使代码更具可读性和流畅性。流接口模式的核心思想是采用链式调…...
Java 堆与栈的作用与区别
栈是运行时的单位,而堆是存储的单位,栈解决程序的运行问题,堆解决数据存储的问题。 一个线程对应一个线程栈,栈是运行单位,里面存储的信息都是跟当前线程相关的信息,包括局部变量、程序运行状态、方法返回…...
再谈小米汽车
文章目录 1. 外观2. 电机3. 电池4. 风阻5. 强度6. 智能驾驶 我在两年前分析过小米造车的形势,大家可以 点击这里查看。今天小米官宣传了新汽车。看一下它公布的主要信息: 1. 外观 汽车外观是向保时捷致敬,因此它的外观特别像保时捷。不过外…...
Power Apps 学习笔记 - IOrganizationService Interface
文章目录 1. IOrganization Interface1.1 基本介绍1.2 方法分析 2. Entity对象2.1 Constructor2.2 Properties2.3 Methods 3. 相关方法3.1 单行查询 Retrive3.2 多行查询 RetriveMultiple3.3 增加 Create3.4 删除 Delete3.5 修改 Update 4. 数据查询的不同实现方式4.1 QueryExp…...
常见函数的4种类型(js的问题)
• 匿名函数 • 回调函数 • 递归函数 • 构造函数 1、匿名函数 定义时候没有任何变量引用的函数 匿名函数自调:函数只执行一次 (function(a, b){console.log(a b);} )(1, 2);// 等价于 function foo (a, b){console.log(a b); }foo(1, …...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
