【数仓基础(一)】基础概念:数据仓库【用于决策的数据集合】的概念、建立数据仓库的原因与好处

文章目录

  • 一. 数据仓库的概念
    • 1. 面向主题
    • 2. 集成
    • 3. 随时间变化
    • 4. 非易失
      • 粒度
  • 二. 建立数据仓库的原因
  • 三. 使用数据仓库的好处

一. 数据仓库的概念

数据仓库的主要作用:

数据仓库概念主要是解决多重数据复制带来的高成本问题。

在没有数据仓库的时代,需要大量的冗余数据来支撑多个决策支持环境。尽管每个环境服务于不同的用户,但这些环境经常需要大量相同的数据。

数据仓库的概念:

数据仓库描述为一个面向主题的、集成的、随时间变化的、非易失的数据集合,用于支持管理者的决策过程。

 

1. 面向主题

传统数据库围绕产品功能进行组织建设,而数据仓库是面向主题的。主题是一个抽象概念,每一个主题基本对应一个宏观的分析领域。

例如,一个公司要分析销售数据,就可以建立一个专注于销售的数据仓库,使用这个数据仓库,就可以回答类似于“去年谁是我们这款产品的最佳用户”这样的问题。

主题域的概念:主题域是主题的边界,如客户、销售、产品都是主题域的例子。

 

2. 集成

集成的概念与面向主题是密切相关的。

还是销售的例子,公司有各个销售的产品线,每个产品线都有自己的数据库,此时要整体分析销售数据,那需要将这些分散的数据进行统一,比如数据仓库必须要解决的问题是产品命名冲突、计量单位不一致等。

当完成了全公司各销售产线的数据整合工作后,该数据仓库就可称为是集成的。

 

3. 随时间变化

联机事务强调的是处理数据的时效性:

联机事务处理反应的是当前时间点的数据情况,要求高性能、高并发和极短的响应时间,出于这样的需求考虑,联机事务处理系统中一般都将数据依照活跃程度分级,把历史数据迁移到归档数据库中。

 

olap强调的是数据随时间是怎么变化的:

数据仓库关注的是数据随时间变化的情况,并且能反映在过去某个时间点的数据是怎样的。换句话说,数据仓库中的数据是反映了某一历史时间点的数据快照,这也就是术语“随时间变化”的含义。

当然数据在数据仓库中也有自己的生命周期。到了一定时候,数据会从数据仓库中移除。移除的方式可能是将细节数据汇总后删除、将老的数据转储到大容量介质后删除和直接物理删除等。

 

4. 非易失

数据入仓后就不能改变,这样保证了随时间变化(保留了数据变化的历史轨迹)

非易失指的是,一旦进入到数据仓库中,数据就不应该再有改变。
操作型环境中的数据一般都会频繁更新,而在数据仓库环境中一般并不进行数据更新。
当改变的操作型数据进入数据仓库时会产生新的记录,这样就保留了数据变化的历史轨迹。

粒度

粒度是指数据的细节或汇总程度,细节程度越高,粒度级别越低。

例如,单个事务是低粒度级别,而全部一个月事务的汇总就是高粒度级别。

数据的粒度影响了数据仓库的数据量,和可以进行查询的类型

在早期的操作型系统中,当细节数据被更新时,几乎总是将其存放在最低粒度级别上;而在数据仓库环境中,通常都不这样做。例如,如果数据被装载进数据仓库的频率是每天一次,那么一天之内的数据更新将被忽略。
或者这样说:
会在一天的某一刻加载完这天的数据,之后这天数据再发生改变,也不会进行更新(ing)。

 
 

二. 建立数据仓库的原因

数据仓库里的数据从哪里来,怎么使用在仓库里的数据 ?

数据源:
通常数据仓库的数据来自各个业务应用系统。业务系统中的数据形式多种多样,可能是Oracle、MySQL、SQL Server等关系数据库里的结构化数据,可能是文本、CSV等平面文件或Word、Excel文档中的非结构化数据,还可能是HTML、XML等自描述的半结构化数据。
 
入库:
这些业务数据经过一系列的数据抽取、转换、清洗,最终以一种统一的格式装载进数据仓库。
 
分析:
数据仓库里的数据作为分析用的数据源,提供给后面的即席查询、分析系统、数据集市、报表系统、数据挖掘系统等。

 

直接访问业务系统无法工作的原因:

● 某些业务数据由于安全或其他因素不能直接访问。
● 业务系统的版本变更很频繁,每次变更都需要重写分析系统并重新测试。
● 很难建立和维护汇总数据来源于多个业务系统版本的报表。
● 业务系统的列名通常是硬编码,有时仅仅是无意义的字符串,这让编写分析系统更加困难。
● 业务系统的数据格式,如日期、数字的格式不统一。
● 业务系统的表结构为事务处理性能而优化,有时并不适合查询与分析。
● 没有适当的方式将有价值的数据合并进特定应用的数据库。
● 没有适当的位置存储元数据。
● 用户需要看到的显示数据字段,有时在数据库中并不存在。
● 通常事务处理的优先级比分析系统高,所以如果分析系统和事务处理运行在同一硬件之上,分析系统往往性能很差。
● 有误用业务数据的风险。
● 极有可能影响业务系统的性能。

尽管需要增加软硬件的投入,但建立独立数据仓库与直接访问业务数据相比,无论是成本还是带来的好处,这样做都是值得的。

 
是否值得投入创建数据仓库

我们从时间、成本、功能等几个角度分析

当你的组织很小,人数很少,业务单一,数据量也不大,可能你真的不需要建立数据仓库。毕竟要想成功建立一个数据仓库并使其发挥应有的作用还是很有难度的,需要大量的人、财、物力,并且即便花费很大的代价完成了数据仓库的建设,在较短一段时间内也不易显现出价值。

当你所在的组织有超过1000名雇员,有几十个部门的时候,它所面临的挑战将是完全不同的。要做出最恰当的决策,仅依据对孤立维度的分析是不可能实现的。这时必须要考虑所有相关数据的可用性,而这个数据最好的来源就是一个设计良好的数据仓库。

例子:

假设一个超市连锁企业,在没有实现数据仓库的情况下,最终该企业会发现,要分析商品销售情况是非常困难的,比如哪些商品被售出,哪些没有被售出,什么时间销量上升,哪个年龄组的客户倾向于购买哪些特定商品等这些问题都无从回答。

 
在辅助战略决策层面,数据仓库的重要性更加凸显

下面是一些常见问题的例子:
● 如何把公司的市场份额提升5%?
● 哪些产品的市场表现不令人满意?
● 哪些代理商需要销售政策的帮助?
● 提供给客户的服务质量如何?哪些需要改进?

回答这些战略性问题的关键一环就是数据仓库。

比如第一个问题:在过去半年中,收到过多少用户反馈?可以在数据仓库上发出对应的查询,并对查询结果进行分析。
第二个问题:在这些用户反馈当中,给出“非常满意”“一般”“不满意”的人数分别有多少?
第三个问题:客户所强调的需要改进的地方和广受批评的地方是哪些?这在数据仓库的用户反馈信息中也有一列来表示,它也能从一个侧面反映出客户关心的问题是哪些。

以上这三个问题的答案联合在一起,就可以得出客户服务满意度的结论,并且准确定位哪些地方急需改进。

 
 

三. 使用数据仓库的好处

● 将多个数据源集成到单一数据存储,因此可以使用单一数据查询引擎展示数据。
● 缓解在事务处理数据库上因执行大查询而产生的资源竞争问题
● 通过对多个源系统的数据整合,使得在整个企业的角度存在统一的中心视图。
● 通过提供一致的编码和描述,减少或修正坏数据问题,提高数据质量
一致性地表示组织信息。
● 提供所有数据的单一通用数据模型,而不用关心数据源。
● 重构数据,使数据对业务用户更有意义。
● 向复杂分析查询交付优秀的查询性能,同时不影响操作型系统。
开发决策型查询更简单。

参考:
《Hadoop构建数据仓库实战》

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

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

相关文章

【80天学习完《深入理解计算机系统》】第十二天3.6数组和结构体

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

稀疏数组的实现

文章目录 目录 文章目录 前言 一 什么是稀疏数组? 二 稀疏数组怎么存储数据? 三 稀疏数组的实现 总结 前言 大家好,好久不见了,这篇博客是数据结构的第一篇文章,望大家多多支持! 一 什么是稀疏数组? 稀疏数组(Sparse Array)是一种数据结构&a…

javaweb入门版学生信息管理系统-增删改查+JSP+Jstl+El

dao public class StudentDao {QueryRunner queryRunner QueryRunnerUtils.getQueryRunner();//查询全部学生信息public List<Student> selectStudent(){String sql "select * from tb_student";List<Student> students null;try {students queryRunn…

从C语言到C++_36(智能指针RAII)auto_ptr+unique_ptr+shared_ptr+weak_ptr

目录 1. 智能指针的引入_内存泄漏 1.1 内存泄漏 1.2 如何避免内存泄漏 2. RAII思想 2.1 RAII解决异常安全问题 2.2 智能指针原理 3. auto_ptr 3.1 auto_ptr模拟代码 4. unique_ptr 4.1 unique_ptr模拟代码 5. shared_ptr 5.1 shared_ptr模拟代码 5.2 循环引用 6.…

数据可视化与数字孪生:理解两者的区别

在数字化时代&#xff0c;数据技术正在引领创新&#xff0c;其中数据可视化和数字孪生是两个备受关注的概念。尽管它们都涉及数据的应用&#xff0c;但在本质和应用方面存在显著区别。本文带大探讨数据可视化与数字孪生的差异。 概念 数据可视化&#xff1a; 数据可视化是将复…

学习振弦采集模块的开发基本原理

飞讯教学篇&#xff1a;学习振弦采集模块的开发基本原理 振弦采集模块是一种用于测量物体振动、形变、压力等物理量的电子设备。它通过测量物体的振动变化&#xff0c;可以得出物体在不同条件下的动态特性&#xff0c;对于工程设计、科学研究、医学检测等领域都有广泛应用。本…

对话出海企业:2023亚马逊云科技出海日圆桌论坛

在全球经济亟待复苏的今天&#xff0c;持续对外开放是中国未来经济发展重要的“两条腿”之一。在愈发饱和的国内市场&#xff0c;中国企业需要对外寻找全新机遇才能在未来不确定的市场博弈下生存下去。“出海”&#xff0c;也成为近几年最炙手可热的词汇之一&#xff0c;大量中…

free

free 一、 查看当前系统内存的使用情况&#xff0c;它显示系统中剩余及已用的物理内存和交换内存&#xff0c;以及共享内存和被核心使用的缓冲区。 [rootlocalhost ~]# free -mtotal used free shared buffers cached Mem: 980 140…

巧用消息驱动解耦功能模块之间的复杂关系

不知各位看官遇到开发大型系统的时候&#xff0c;往往功能模块之间都有理不清的复杂关系&#xff0c;例如MES中的生产进度&#xff0c;ERP中的物品流向&#xff0c;单据的处理流程变更&#xff0c;库存的变更等等&#xff0c;很多时候&#xff0c;都是需要模块之间协作才能更好…

字符型注入([SWPUCTF 2021 新生赛]easy_sql)

拿到题目&#xff0c;查看源码&#xff0c;可知是要输入参数wllm。 输入参数/?wllm1&#xff0c;得到会显 继续输入参数/?wllm1&#xff0c;报错&#xff0c;确定为字符型漏洞 1.查看字段列表&#xff0c;发现在字段4报错&#xff0c;确定为3列 ?wllm-1 order by 3-- ?wl…

leetcode做题笔记118. 杨辉三角

给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 思路一&#xff1a;动态规划 int** generate(int numRows, int* returnSize, int** returnColumnSizes){int **returnnum(int **)…

QT DAY 2

window.cpp #include "window.h" #include<QDebug> #include<QIcon> Window::Window(QWidget *parent) //构造函数的定义: QWidget(parent) //显性调用父类的构造函数 {//this->resize(430,330);this->resize(QSize(800,600));// this…

数据结构——单调栈

前导&#xff1a; 队列&#xff0c;栈&#xff0c;前面的链接是对普通的栈&#xff0c;和普通的队列的一个讲解&#xff0c;如果没有对普通的栈和队列不了解的小伙伴可以先看看前面链接中的讲解&#xff1b; 什么是单调&#xff0c;一个序列呈递增或者递减&#xff0c;并且没有…

Spring-Kafka生产者源码分析

文章目录 概要初始化消息发送小结 概要 本文主要概括Spring Kafka生产者发送消息的主流程 代码准备&#xff1a; SpringBoot项目中maven填加以下依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent&…

Flink提交jar出现错误RestHandlerException: No jobs included in application.

今天打包一个flink的maven工程为jar&#xff0c;通过flink webUI提交&#xff0c;发现居然报错。 如上图所示&#xff0c;提示错误为&#xff1a; Server Response Message: org.apache.flink.runtime.rest.handler.RestHandlerException: No jobs included in application. …

Java 线程池概念总结(thread pool)

一、池化思想的应用 池化思想是一种常见软件设计和优化技术。以下是几个常见池化思想应用场景&#xff1a; 线程池&#xff1a;线程池是池化思想一个典型应用。通过预先创建一组线程并将它们置于就绪状态&#xff0c;以复用线程减少线程创建和销毁的开销&#xff0c;并提高系统…

Auto-GPT 学习笔记

Auto-GPT 学习笔记 Auto-GPT 简介 Auto-GPT 是一个基于 GPT-4 的自主智能体实验项目。它展示了大规模语言模型的规划、记忆和工具使用能力。Auto-GPT 的目标是实现一个完全自主的 AI 代理。GitHub 仓库 Auto-GPT 核心模块 规划(Planning) 使用强化学习策略进行多跳思考。通…

两种动态代理比较(补充),进程通信方式总结

jdk和CGLib动态代理: jdk动态代理&#xff1a; java提供的动态代理技术&#xff1b; spring aop默认采用的方式&#xff1b; 只能对实现了至少一个接口的类生成代理对象&#xff1b; CGLib动态代理&#xff1a; 采用底层字节码技术&#xff1b; 目标对象没有实现接口时采…

Nginx特性应用及载装

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上nginx的并发能力在同类型的网页服务器中表现较好&#xff0c;中国大陆使用nginx的网站有&#xff1a;网易、腾讯、阿里等。 …

文字识别的

对于 PDF 提取文字&#xff0c;Tesseract OCR 是一个常用的工具。你可以使用 Tesseract OCR 的 Java API 来实现。以下是一个使用 Tesseract OCR 提取 PDF 文档文字的简单示例代码&#xff1a; import net.sourceforge.tess4j.Tesseract; import net.sourceforge.tess4j.Tesse…