✨✨✨✨✨✨
作者介绍:
作者id:老秦包你会,
简单介绍:
喜欢学习C语言和python等编程语言,是一位爱分享的博主,有兴趣的小可爱可以来互讨
个人主页::小小页面
gitee页面:秦大大
一个爱分享的小博主 欢迎小可爱们前来借鉴
数仓,又称为数据仓库,是一个存放数据的仓库。这些数据需要按照一些结构、规则来组织和存放。作为数据基础,不仅需要满足基础数据的提供,也要允许经过需求计算之后的数据支持。数仓是一套体系,整合了多种技术,为某个项目或团体实现数据支持。
数仓工程师(数仓开发工程师),更加偏向业务与建模思维的结合。对整体的需求框架有清晰的认识,在保证阶段性数据成果的前提下,还能为以后的业务拓展留有空间。不仅需要对当前的数据任务做出判断,也需要紧跟项目发展。随着数据量的增大,同样需要对数仓环境进行升级优化,例如变更计算引擎、迁移数据库、分仓管理运行脚本等等。
我们可以想象一下,一个仓库里面有许多的小地方,存放不同的东西,数仓就相当于一个仓库,不同的数据存放在不同的地方,如果我们要找到某些数据还要知道在哪个地方,这就要求我们要标明类型了
集群:物理层架构
我们虚拟机的就相当于是下面一部分
原理就是我们通过客户端输入sql语句,传递到sql服务,然后具体化调度,让调度在数据库里面找数据,并返回,
计算引擎就是我们的cpu和内存,而我们虚拟机的计算引擎就是我们电脑里面的计算引擎
1、数据库一定是搭建在服务器上,专门的数据库服务器上只会搭建一个数据库
2、计算引擎是搭建在服务器上的,引擎不随调度使用,只用于对应的数据库
3、调度即为调用数据的工具,集群调度是将多个数据库统一管理,但数据库任然是单独运行的
简单的说就是两台服务器的连接要通过集群调度来连接,进行统一的调度
计算引擎我们还可以理解为是一台独立的服务器,使用其的cpu和内存,进行计算不会使用到服务器1和服务器2,这样就降低了这两个服务器的要求,这两个服务器只要保证能把数据调出去就可以了,至于怎么处理数据就看计算引擎了
4、可以通过统一的SQL服务操作不同调度的数据库,但是不能进行关联查询使用
5、数据库架构中的各个部分是允许单独替换的,在集群中,某一个数据库停止运行,并不会影响其他数据库的使用
总结:sql服务是可以控制多种调度,而调度可以控制数据库,而计算引擎和数据库是搭建在服务器上的,数据 的返回要通过计算引擎进行数据的计算返回
(逻辑层架构)
实时数仓: 通过即时返回的数据进行计算,不断更新数据库。好比是 mysql 中的视图,可以即时展现最新数据。
离线数仓:不需要实时计算的数仓环境,通常使用的数仓环境。即为通过将历史数据(一般为T+1的数据)计算好后,同意保存在数据库,在对外展示。
数据库环境
简单的说就是ODS里面是基础数据,这里会原模原样的输入输出,不会更改,数据在调度环境里通过python代码进行操作并写入回来,保存到ODS,数据仓库拿到数据再进行一系列的操作等
调度环境
6. 服务器:这里的服务器更像是一个容器,承载了脚本和ETL的运行环境。如果牵扯到即时数据和大数据的计算与清洗,需要对服务器的内存和CPU性能有一定要求。一般作为调度环境的服务器,性能基本要求是8核CPU,16G内存和1T硬盘容量。
7. ETL数据库:一般为MySQL,因为通用性强。可以搭建在调度环境上,但不要和数仓在同一环境。
8. 编辑器:以Jupyter为例,本身没有特别限制。主要是针对运行脚本的语言,如果是shell或者其他,也可以使用VScode等其他编辑器进行调试。通常是将代码在编辑器中调试好后再考虑进行部署。
9. ETL:任务调度服务。只是一个服务,理论上可以使用Linux中的crontab进行替代(需要自己写关联)。主要作用是监视任务的运行情况和进程。通过调度已经正常运行的脚本,完成任务。
简单的说就是另起一台服务器用来搭建ETL和python脚本,ETL有一个mysql数据库,是属于他的,我们在jupyterLab里面写脚本,在ETL调度,从数据库环境里的基础数据读数据python代码进行一系列的操作,然后再写入数据库环境
从DB到ODS会有简单的预处理,可以是增量数据,也可以是全量数据
ODS:操作数据,存储所有基础数据,简单清洗
dwd:明细数据,将所有维度数据细化,减少事实表与维度表的关联,提高明细表的易用性,相当于未处理的中间数据
dws:汇总数据,通过聚合,形成宽表,构建指标数据
dim:维度数据,不根据日期做区分,作为最基础的展示表
ads:应用数据,存放产品化的数据,主要为前端展现