我的编程空间,编程开发者的网络收藏夹
学习永远不晚

大话数仓,数据仓库(一)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

大话数仓,数据仓库(一)

一、什么是数据仓库?

数据仓库的概念

数据仓库是一个面向主题的、集成的、时变的、非易失的数据集合,用于支持管理决策、商业营销、运营分析。数据仓库实际上是一种数据存储,它将各种异构数据源中的数据集成在一起,并保持其语义一致,为企业决策提供支持。

1.面向主题。在较高层次对数据综合、归类,针对某一分析领域所抽象出来的分析对象。

构建主题的步骤:首先抽象出需要分析的主题域,确定每个主题域需要分析的维度、其所包含哪些数据表。一般主题域所有表都有一个连接键,作为主题的一部分,通过这个连接键可把主题域所有表关联汇总成一张宽表。如会员主题,分为会员基本信息、会员积分数据、会员的资产数据、会员的行为数据、会员的信用等多张表。

2.集成的。数据来源的格式类型不同;编码、命名格式、属性单位不一致,然后对原有数据进行综合、计算。

把不同表、不同类型的数据放入到统一的数据仓库中。如Mysql、Oracle、Redis、Hbase中的数据,我们通过同步全量数据把数据存入统一的系统中。对于增量数据设置定时抽取,可以采用并发架构,多任务同时同步,把数据持续存到我们的分布式文件系统中来。

3.时变的。数据仓库的数据是不同时间的数据集合;随时间变化不断增加、删除、综合数据;数据仓库表结构中一般都带有时间字段。

数据仓库的数据不是一成不变的,它是随着时间变化不断新增内容,更新与时间有关的综合数据,这些数据一般都包含有时间字段。

4.稳定非易失的。.数据仓库中的数据一般只插入新增,不做update更新、delete删除操作。

数据是经过抽取而形成的分析型数据,不具有原始性(不是第一手数据,一般是经过其他数据源或业务系统,抽取到数据仓库中),主要供企业决策分析之用,执行的主要是查询操作,一般情况下不执行更新操作。抽到数据仓库的数据在ODS层不做任何操作,来保持数据的原始性(不改变字段属性,不补值等操作)。

二、数据仓库建模理论

数据一般用于两种目的,一种是基于操作型记录保存,一种是分析决策的制定。简单来说,前者是操作系统保存数据(OLTP-联机事务处理),一般仅反映数据的最新状态,按单条记录事务性来处理数据;其优化的核心是更快地处理事务;后者是分析系统使用数据(OLAP-联机事务分析),按大批量方式处理数据;其核心是高性能、多维度处理数据。针对两种不同的数据用途,如何组织数据,高效的使用数据,这里就涉及到数据建模的问题。

2.1、什么是Inmon范式模型?

数据仓库是商业智能的一部分,一家企业或公司只有一个数据仓库,数据集市的信息皆来源数据仓库。现在的数据库大多数都是依据3FN范式来建立的,而依据范式的思想来进行数据仓库建模,就是范式建模。数据仓库中的数据信息必须符合第三范式。

范式是关系型数据库的基本概念。是指符合某些条件、符合某些规则的关系集合。范式是分级的,每向上一级,条件和规则更加严格,每一级是下一级的子集。

范式最主要的目的是消除冗余,每一份信息必须存放一次,也只能存储一次。数据的冗余不仅仅会造成存储资源的浪费,而且可能会引发数据的更新异常。

2.2、什么是Kimball维度建模?

数据仓库是公司内部所有数据集市的集合,信息总是被存储在多维模型中。是面向数据集市、数据主题的,一般采用星型模型建模。依据星型模型,构建事实表和维度表,建立数据仓库模型的过程,就是维度建模。Kimball的核心思想就是星型模型和维度建模。

2.2.1、什么是星型模型?

所有的表直接与事实表关联,整个图解就像星星一样,该模型称为星型模型。星型模型是一种非正规化的结构,是反范式的。因为多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余,

星型模型

2.3、事实表和维度表

事实表描述业务过程的度量、以可加数据为主题,每一行代表一个可以观察的实体或事件。主要的是发生了业务过程,如卖出一件商品,用户购买一件商品,这都触发了业务过程。卖出的商品有商品属性、有卖出的门店、有出货记录,有购物者信息等等。

维度表描述事实所处的环境、面向分析,代表针对事实的一种分类。直白点,维度表就是用来描述事实的。还以卖出商品为例,卖出的商品,商品有属性,包括颜色、尺码、风格、季节等多种属性,这些属性组合在一起就构成了描述商品的维度表。

对维度表再建立更细的维度,称为支架表。支架表是维度表的维度表,支架表是去冗余的产物,在星型模型中,对冗余很宽容。所以支架并不是必须的,并且应该尽量少用。合适的方法是:将支架表合并到和事实表直接连接的维度表。

注意:维度表中需要注意维度退化和缓慢变化维

退化维度:在维度类型中,有一种重要的维度称作为退化维度,亦称维度退化。这种维度指的是直接把一些简单的维度放在事实表中。维度退化是维度建模领域中的一个非常重要的概念,它对理解维度建模有着非常重要的作用,维度退化一般在分析中可以用来做分组使用。

缓慢变化维:维度的属性并不是始终不变的,它会随着时间的流逝发生缓慢的变化,这种随时间发生变化的维度我们一般称之为缓慢变化维。

常用处理缓慢变化维的方式:用户变更手机号码

EX1,直接覆盖原值。

直接覆盖原值

EX2,增加维度行。

增加新行

在增加新行时,需为其分配新的代理键。并且,至少需要在维度行再增加三列:有效日期、结束日期、行状态,可以使用拉链表处理。

EX3,增加新的属性列。

增加属性列

2.2、什么是雪花模型?

当有维表没有直接连接到事实表上,而是通过连接其他维表间接连接到事实表,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,把原有的维表进一步拓展,形成更多细分层次。

处理雪花模型的方式,和支架表一样,理想的模型是只存在和事实表直接相连接的维度表。在数据仓库中,数据冗余不重要,连接性能更重要!我们通过牺牲空间来换取时间,这些数仓很常用的手段。

雪花模型

雪花模型是一种规范的数据建模模型,规范化的目的是去冗余,在节省存储的同时减少重复更新。但是对于数据仓库来说,这两者都不重要,数据仓库本来就不更新。Kimball模式的数据仓库的查询性能优先!星型模型,是反范式的

总结:数据仓库建模过程是一个很复杂的过程,一方面不仅要根据自家业务处理建模需要,一方面还要深入了解建模的理论基础。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

大话数仓,数据仓库(一)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

大话数仓,数据仓库(一)

数据仓库,是越来越流行的数据解决方案。传统烟囱式的数据开发模式,显然不能满足日益增长的数据需求,而作为大数据量化方案、解决大数据问题、发掘数据价值的大数据仓库被很多公司采纳使用。

大话数仓,数据仓库,维度建模方法(二)

前文已经简单介绍了什么是数据仓库,数据仓库事实表、维表等相关概念。在了解这些概念之后,我们要建设符合企业要求,能支持业务使用、运营分析的数据仓库。

数据仓库之数仓治理

数据治理(Data Governance),是一套持续改善管理机制,通常包括了数据架构组织、数据模型、政策及体系制定、技术工具、数据标准、数据质量、影响度分析、作业流程、监督及考核流程等内容。

大数据Hadoop之——数据仓库Hive

目录一、概述二、Hive优点与使用场景1)优点2)使用场景三、Hive架构1)服务端组件1、Driver组件2、Metastore组件3、Thrift服务2)客户端组件1、CLI2、Thrift客户端3、WEBGUI3)Metastore详解四、Hive的工作
大数据Hadoop之——数据仓库Hive
2018-04-25

数据湖 VS 数据仓库之争?阿里提出大数据架构新概念:湖仓一体

数据仓库和数据湖的区别到底是什么,是技术路线之争?是数据管理方式之争?二者是水火不容还是其实可以和谐共存,甚至互为补充?

从数据池或大数据仓库到数据湖

这篇博文讨论了从数据池/大数据仓库到数据湖的演变。它探讨了传统数据仓库的局限性以及数据湖在可扩展性、敏捷性和自助服务方面的优势

数据仓库总结

1.为什么要做数仓建模 数据仓库建模的目标是通过建模的方法更好的组织、存储数据,以便在性能、成本、效率和数据质量之间找到最佳平衡点。 当有了适合业务和基础数据存储环境的模型(良好的数据模型),那么大数据就能获得以下好处: 当有了适合业务和基
2023-08-30

数仓 | 该如何理解数据仓库的建设

在大数据时代,随着机器学习和人工智能的兴起,这个定义需要做一些补充:数据仓库不只是用于构建支持管理决策的商业智能BI的基础, 也是大量的机器学习和人工智能算法的底层基础之一。

如何让数据湖仓达到数据仓库的性能

数据湖仓库的演变重塑了数据分析,结合了数据湖和数据仓库的优势。尽管它具有变革性的潜力,但诸如高效查询性能等挑战仍然存在。创新解决方案如MPP查询执行、缓存框架和系统级优化可能弥合这些差距,并使企业能够享受湖仓库的所有好处,而无需承受任何缺点

关于数据仓库以及云数据仓库的那些事儿!

几乎所有投资者都看好数据库上云趋势,就在云数据库、云原生数据库呼声高涨的同时,云数仓成为一个新的赛道,开始走入大众眼帘。

什么是数据仓库?

数据仓库是一个集中的数据集合,用来支持决策制定。它具备集中化、主题导向、整合性和不变的时间变异特性。数据仓库用于分析、决策制定和商业智能。构建过程包括数据提取、转换、加载、建模和管理。不同类型的数据仓库包括事务型数据仓库、数据仓库和数据湖。好处包括单一事实来源、增强分析、改进决策制定和竞争优势。在构建数据仓库时需要考虑成本、复杂性、数据质量、技术和组织文化等因素。
什么是数据仓库?
2024-04-02

亚马逊数据仓库

亚马逊的数据仓库系统通常由数据存储、数据挖掘、数据处理和数据分析等模块组成。数据存储模块存储了实时或历史数据,包括购买历史、订单历史、用户评论、竞争对手情报、宏观经济数据等。数据挖掘模块可以对数据进行分析,包括预测、推荐、营销等,同时还可以进行数据清洗和转换,以便于后续的数据分析。数据处理模块用于将数据存储到数据仓库中,并进行清洗、整合和转换,以便于进行后续的分析。数据分析模块可以根据分析结果做出...
2023-10-27

谈谈数据湖和数据仓库

数据湖是近十年来出现的一个术语,用于描述大数据世界中数据分析管道的重要组成部分 。

数据湖与数据仓库之间的五大差异

根据Google的说法,对“大数据”的兴趣已经持续了好几年,而且在过去几年里真正的兴起。这篇文章的目的是为了帮助突出数据湖泊和数据仓库之间的差异,帮助您就如何管理数据做出明智的决定。

国产数据库企业“人大金仓”更名为“电科金仓”

2024年8月29日,中电科金仓(北京)科技股份有限公司发布公告:为贯彻落实教育部“校企分离”改革的有关要求,进一步展现金仓作为中国电子科技集团有限公司在基础软件领域的核心重点企业形象,经北京市朝阳区市场监督管理局核准,于2024年8月26
电科金仓2024-11-29

内部部署数据仓库与云计算数据仓库的优缺点

高质量的计算环境(包括服务器、操作系统、存储和数据库)对于任何使用大量数据的应用程序的成功都是至关重要的。

人大金仓数据库的简单巡查

人大金仓的简单巡查 查询人大金仓的版本 sys_ctl -Vsys_ctl --version# 在ksql命令行工具中查询数据库版本select version(); 查询lincense的有效期 select get_license_v
2023-08-25

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录