数据仓库分享

news2024/11/16 21:42:36

前言

数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它出于分析性报告和决策支持的目的而创建的。

数据仓库是一个数据集合
数据仓库是一个为业务决策提供数据支持的数据集合
数据仓库是通过监控业务流程的形式为业务决策提供数据支持的数据集合

主要有以下特征:

面向主题的(Subject-Oriented )

数据仓库是面向主题的,数据仓库通过一个个主题域将多个业务系统的数据加载到一起,为了各个主题(如:用户、订单、商品等)进行分析而建,操作型数据库是为了支撑各种业务而建立。

集成的(Integrated)

数据仓库会将不同源数据库中的数据汇总到一起,数据仓库中的综合数据不能从原有的数据库系统直接得到。因此在数据进入数据仓库之前,必然要经过统一与整合,这一步是数据仓库建设中最关键、最复杂的一步(ETL),要统一源数据中所有矛盾之处,如字段的同名异义、异名同义、单位不统一、字长不一致,等等。

稳定性(Non-Volatile)

操作型数据库主要服务于日常的业务操作,使得数据库需要不断地对数据实时更新,以便迅速获得当前最新数据,不至于影响正常的业务运作。

反应历史变化的 (Time-Variant )

数据仓库包含各种粒度的历史数据。数据仓库中的数据可能与某个特定日期、星期、月份、季度或者年份有关。数据仓库的目的是通过分析企业过去一段时间业务的经营状况,挖掘其中隐藏的模式。虽然数据仓库的用户不能修改数据,但并不是说数据仓库的数据是永远不变的。分析的结果只能反映过去的情况,当业务变化后,挖掘出的模式会失去时效性。因此数据仓库的数据需要定时更新,以适应决策的需要。

数仓的层级设计

为了更好的管理代码。与(Controller-Service-DAO)相似。它也根据处理方式不同进行分层。
请添加图片描述

  • ODS:Operation Data Store 数据准备区,也称为贴源层。数据仓库源头系统的数据表通常会原封不动的存储一份,这称为ODS层,是后续数据仓库加工数据的来源。
  • DWD:data warehouse details 细节数据层,是业务层与数据仓库的隔离层。主要对ODS数据层做一些数据清洗和规范化的操作。数据清洗:去除空值、脏数据、超过极限范围的
  • DWB:data warehouse base 数据基础层,存储的是客观数据,一般用作中间层,可以认为是大量指标的数据层。
  • DWS:data warehouse service 数据服务层,基于DWB上的基础数据,整合汇总成分析某一个主题域的服务数据层,一般是宽表。用于提供后续的业务查询,OLAP分析,数据分发等。
    用户行为,轻度聚合
  • ADS:applicationData Service应用数据服务,该层主要是提供数据产品和数据分析使用的数据,一般会存储在ES、mysql等系统中供线上系统使用。

数仓技术架构

基于数仓的定义,你可以用任何数据库来完成它,甚至可以用存储过程。

Lambda架构

在这里插入图片描述

Lambda架构的核心理念是“流批分离”,如上图所示,整个数据流向自左向右流入平台。进入平台后一分为二,一部分走批处理模式,一部分走流式计算模式。无论哪种计算模式,最终的处理结果都通过服务层对应用提供,确保访问的一致性。

Kappa架构

在这里插入图片描述
Kappa架构的方案也被称为“批流一体化”方案。我们借用Flink+Kafka来构建流批一体化场景,当需要对ODS层数据做进一步的分析时,将Flink计算结果的DWD层写入到Kafka,同样也会将一部分DWS层的计算结果Kafka。

Lambda VS Kappa

功能LambdaKappa
实时性实时实时
计算资源两套架,资源较大只有流处理,相对较小
重新计算全量批处理,吞吐量大全量,流处理吞吐量相对较小
开发&运维两套系统,两套代码一系统,一套代码
分析能力通过SQL能干一切, 灵活性十足不怎么方便

在真实的场景中,很多时候并不是完全规范的Lambda架构或Kappa架构,可以是两者的混合,比如大部分实时指标使用Kappa架构完成计算,少量关键指标(比如金额相关)使用Lambda架构用批处理重新计算,增加一次校对过程。

Fink在数仓的应用

在这里插入图片描述
在这里插入图片描述

历史方案

请添加图片描述

  1. 利用hbase管理小文件问题,将离线任务管理范围(T+1)增加到(h+1)
  2. 实时使用rocketmq的消费者消费,更加轻量节省成功
  3. 实时与离线的数据一致性问题,最终以离线的为主
使用dataworks

请添加图片描述

使用dataworks成本大大减少:

  1. 没上云,要30台32c128g的ECS, 月成功约为15W 左右(不加其它的)
  2. 使用dataworks分为4个部份
功能说明金额
调度4台普通8c16G ECS5000
计算150/核, 200个30000
存储0.004元/GB/天10000
平台使用费用脚本编辑,数据源管理等待功能5000

总结:便宜多了

数据湖

Lambda 与 Kappa 架构 本质是数据层的统一问题。

  1. hdfs不支持数据更新,无法很好的实时;
  2. kafka 不篮球olap分析,回溯及全量同步的吞吐量(成本)

如果现在有这么一个数据库:
在这里插入图片描述
数据湖的需求,就这么产生了。

数据湖理念

数据湖是一个集中式存储库,可以存储结构化和非结构化数据。可以按业务数据的原样存储(无需先对数据进行结构化处理),并运行不同类型的分析 – 从控制面板和可视化到大数据处理、实时分析和机器学习,以指导做出更好的决策。
在这里插入图片描述

Hudi支持三种不同的查询表的方式:

  • Snapshot Queries(快照查询):
    动态合并最新的基本文件(parquet)和增量文件(Avro)来提供近实时数据集
    1. Copy On Write表读parquet文件,
    2. Merge On Read表读parquet + log文件。
  • Incremental Queries(增量查询)
    仅查询新写入数据集的文件,需要指定一个Commit/Compaction的即时时间(位于Timeline上的某个instant)作为条件,来查询此条件之后的新数据
  • Read Optimized Queries(读优化查询)
    直接查询基本文件(数据集的最新快照),其实就是列式文件(Parquet)。
  1. 支持多数数据格式,以及hdfs 小文件问题解决
  2. 增量查询 功能很容易的对接fink实现

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

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

相关文章

Css不常用的方法

flex布局换行之后,下面一行的布局会异常 .homeItemBox{ display: flex; flex-wrap: wrap; justify-content: flex-start;} .homeItem{ display: flex; width: calc((100% - 20rpx) / 4); flex-direction: column; align-items: center; flex-shrink: 0; …

盘点系列:一度大热的TWS耳机今年表现如何?

根据Canalys最新市场研究数据显示,全球智能个人耳机市场在2022年Q3已连续第二个季度出现下滑,出货量同比下降4%至1.136亿台。 而TWS是唯一出现增长的子类别! Q3真无线耳机TWS销量达7690万部,同比增长6%。苹果(含beats&…

软件测试基础理论体系学习6-黑盒测试方法白盒测试方法简述

13 白盒测试方法1 黑盒测试1.1 黑盒测试概述1.2 黑盒测试的使用场景1.3 “黑盒”的两种基本方法1.4 黑盒测试的优缺点1.4.1 优点1.4.2 缺点1.5 黑盒测试的测试用例设计方法2 白盒测试2.1 白盒测试概述2.2 逻辑覆盖2.3 语句覆盖2.3.1 基本思想是2.3.2 优点2.3.3 缺点2.4 判定覆盖…

Python及其在数据科学中的应用

前言 Python及其在数据科学中的应用 Python易学,语法也比较简单。它是一种流行的数据科学语言,因为它功能强大且易于使用。Python是一种出色的数据分析语言,因为它包含各种数据结构、模块和工具。 使用Python进行数据科学的原因有很多&…

详细介绍NLP对话系统

任务型对话系统 任务型对话系统主要应用于固定领域。任务型对话的广泛应用的方法有两种,一种是模块法,另一种是端到端的方法。 模块法是将对话响应视为模块,每个模块负责特定的任务,并将处理结果传送给下一个模块。 端到端的任务…

分布式事务 - Seata - TCC模式

目录一、什么是TCC二、AT & TCC区别 及 适用场景三、代码集成示例3.1 升级Seata 1.5.23.2 示例场景说明3.3 TCC核心接口定义3.4 TCC相关阶段规划3.5 TCC核心代码四、TCC三大问题(幂等、空回滚、悬挂)之前介绍过分布式事务之Seata AT模式,…

智慧新零售异业联盟帮你搞定多店跨界整合,让你开启共富时代

大家好,我是林工,在如今的时代,不管你所看到的商业模式是什么样的,以不变应万变,目的只有一个,把买卖发展壮大,想要将买卖发展壮大,那就需要精准的吸粉引流获客方式和能力。 林工常常…

Fluent Mybatis 牛逼!

这玩意比ThreadLocal叼多了,吓得我赶紧分享出来。 推荐一些chrome浏览器必装的插件! 40 个 SpringBoot 常用注解 VSCode 花式玩法(摸鱼)收藏一下 ! 使用fluent mybatis可以不用写具体的xml文件,通过jav…

【面试大全】互联网面试软实力【必看】

软实力 推荐大家使用Markdown语法写简历,然后再将Markdown格式转换为PDF格式后进行简历投递。如果你对Markdown语法不太了解的话,可以花半个小时简单看一下Markdown语法说明: http://www.markdown.cn/ 面试 假如你是网络申请者【拉勾、boss等】&…

Latex 分式格式处理

分式 分式命令:\frac{分子}{分母}。 对于行内短分式,可用斜线/输入,例如:(xy)/2 举例: 行内分式 \(\frac{xy}{yz} \) (显示为:) 行间分式 \[\frac{xy}{yz}\] (显示为&a…

【PCB设计特别篇之阻抗计算】还在用SI9000进行阻抗计算?

有了叠层信息后,才可以进行阻抗计算,走线阻抗与线宽、线距、介质厚度、绿油厚度、介质介电常数、铜箔厚度等一些信息相关,所以要现有叠层,才能进行阻抗计算。 阻抗计算的工具有很多,下面介绍几种: 1、SI900…

RSS Can:使用 Golang 实现更好的 RSS Hub 服务(一)

聊聊之前做过的一个小东西的踩坑历程,如果你也想高效获取信息,或许这个系列的内容会对你有用。 这个事情涉及的东西比较多,所以我考虑拆成一个系列来聊,每篇的内容不要太长,整理负担和阅读负担都轻一些。 本篇是第一…

Go代码审计学习(二)

文章目录环境搭建漏洞一:代码逻辑错误、没有做有效的鉴权漏洞二:目录穿越、任意文件读取漏洞三:条件竞争漏洞四:钩子函数执行命令参考链接环境搭建 Gitea是从gogs衍生出的一个开源项目,是一个类似于Github、Gitlab的多…

自学python第三年才懂,这事儿影响着最终的学习结果

前言 如果这件事你还没搞明白,那你学python会跟我一样,学了几年跟没学差不多! 当然,这件事仅限于学python是想赚钱或者提升职场竞争力的人明白即可,其他人别浪费时间了。 这事儿很重要 我从2018年底开始自学python&a…

SpringBoot2核心技术(基础入门)- 03 自动配置原理【3.1依赖管理+2容器功能】

1、SpringBoot特点 1.1、依赖管理 ● 父项目做依赖管理 依赖管理 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEASE</version> </parent…

(已更新)2023春节倒计时新款HTML单页源码

2023春节倒计时新款HTML单页自适应页面&#xff0c;有兴趣的可以看看&#xff01;背景图片自己修改喜欢的&#xff01; 源码介绍 自适应页面&#xff0c;支持安卓和ioswx背景音乐播放附带多个背景音乐&#xff0c;由于技术原因&#xff0c;一些js进行了加密&#xff08;支持i…

Spring boot 使用@DS 配合druid连接池切换数据源及切换数据源失效情况

一、导入包 <!-- dynamic-datasource --> <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.2.1</version> </dependency> 二、配置yam配置文…

【Flask框架】——09 视图和URL总结

目录一、创建flask项目1、安装环境2、创建项目3、启动程序4、访问项目二、flask参数说明1.初始化flask项目2.参数说明3.DEBUG调试模式三、应用程序的参数加载1.从配置对象中加载2.从配置文件中加载3.从环境变量中加载4.从Pycharm中的运行时设置环境变量的方式加载5.企业项目开发…

Flink-多流转换(合流,分流,双流join)

8 多流转换 8.1 分流 简单实现 对流三次filter算子操作实现分流 // 筛选 Mary 的浏览行为放入 MaryStream 流中DataStream<Event> MaryStream stream.filter(new FilterFunction<Event>(){Overridepublic boolean filter(Event value) throws Exception {retur…

vue-admin-template侧边栏修改成抽屉式

目录 一、修改sidebar组件 二、修改store 三、修改sidebaritem页面 四、修改navbar页面 五、修改layout 六、修改样式 一、修改sidebar组件 src—layout—components—sidebar—index.vue 把组件sidebar改成drawer <template><div :class"{ has-logo: s…