00:00
好,那我们今天呢,给大家带来一个新的项目,也就是我们的呃上硅谷的数据中台项目,呃当然这里边我起了个名字叫做九章云台项目,呃或者说九章云台系统,那么这个数据中台项目呢,是呃我们专门编写为了教学使用,因为呃在企业中真正使用的这样的中台项目呢,它可能会呃业务逻辑非常非常复杂,涉及到很多很多的知识,对吧?呃或者说有巨大的代码量,可能放在一个课程里面呢,它并不是说特别合适来去讲解,呃所以说呢,我们来编写了一个呃数据中台项目,那么它的代码量呢,并不是特别多,但是完全可以说明,就是说呃中台它到底是一个什么东西,它做什么样的事情,对吧?呃,当然这个页面呢,就是我们。
01:00
的中台项目的前端页面对吧?呃,当然它还有后端,那我们先来简单的使用一下。看一下这个中台它到底是做什么对吧,那我们可以看到,首先。那这里面有一个首页,然后呢,呃,这个机器人是我们的用户的头像,那么这儿的话呢,你点击它可以来到首页,然后点击退出的话呢,可以退出去。然后呢,我们有一个默认的用户名和密码啊的in,然后呢,六个一,然后点击log in的话呢,它可以登录进来啊,那么在这里边的话呢,我们的这个仲裁项目呢,呃,有大概有这么几个模块,第一个是权限管理,也就是说呃,它会管理一些有关用户的数据以及用户的角色,呃那么还有呢,就是角色相对应的权限,比方说我这里面如果点击用户管理的话呢,那你可以看到我们这儿,呃有一个列表,呃,那么这个表格呢,它显示了我们当前有几个用户对吧?呃,比方说第一个用户名是admin,第二个用户名是北京啊,那么我还可以点击删除呢,把这个用户给删掉,我可以点击分配角色呢,给这给这个用户呢,呃,去给他分配角色,对吧?呃,那么这个是我们的用户管理,那么除了用户管理以外呢,当然还有角色管理,呃,也就是说每一个角色呢,他会。
02:27
对应一些权限对吧,因为我们都知道,呃,一个中台项目的话呢,那也就是说你不同的角色,它登录上来以后呢,他应该是拥有不同的权限的,对吧,比方说我们。决系统管理员这样的一个角色的话呢,那么他的权限,如果我们点击分配权限的话呢,呃,你会发现他拥有全部的权限,对吧?呃,也就是说呢,呃,这个系统管理员这样的一个角色呢,他可以访问菜单里边的所有的呃这个模块,对吧?那么如果我们。
03:04
再来看一下普通用户的话呢,你点击分配权限,诶你会发现这里边打勾的话呢,呃,也就是说普通用户呢,他只能访问数据统计模块,或者说是还有报表管理模块对吧?那么这个就是一个呃,我们针对不同的角色呢,给给他分配了不同的权限啊,那这个就是我们的第一个模块叫做权限管理模块,呃,也就是说你一个呃中台项目,或者说一个这个呃管理后台项目对吧?呃,我们企业里面有很多很多的管理后台项目,那么它是必然要有呃这样一个权限管理模块的,呃,当然除了权限管理模块以后呢,我们这里边。还给大家提供了统计管理模块对吧,就是数据统计管理的,比方说这里边我点击实时统计的话,那么你可以看看到,诶,这里边有一个实时统计的这样一个大盘,呃,比方说这个地图呢,它显示出了每一个省对吧?呃,那么它的交易额度是多少对吧?包括品类呃,销售额的占比以及热磁图呀,包括像品牌销售排行等等,当然你这个,呃,我们为了方便教学的话呢,这个大盘实际上它涉及内容并不是特别多,呃,那你在真正的一个比较大型的中台项目里边的话呢,你可能会有很多很多的呃,这样的大盘数据对吧?再比方说这里面的访问流量统计,呃,我这里边比如说我点击,如果点击到这个7月6号或者说6月29号的这样的一个数据的话呢,你就会发现诶,我们有每一个渠道的流量统计,以及有呃用户路径的分析。
04:47
对吧,当然你在这个统计管理模块里面的话呢,其实你可以添加很多很多的其他模块,比方说呃,这个用户的UV的统计,对吧,就是独立访客的统计,或者说用户的这个PV的统计,呃,也就是呃页面访问的统计,也就是你在这个数据统计的管理模块里面呢,其实你可以添加呃非常非常多的各种各样的模块,呃,当然。
05:13
呃,由于它的。原理相对比较简单,也就是说它会把数据从数据库里面读取出来,然后返回给前端,然后把它渲染出来,对吧?所以说它实际上你不管有多少个模呢,它实际上都是大同小异的,对吧?所以说我们这里边选择了呃这样的两个模块,呃编写这两个模块的后端代码呢,来去学习一下,诶大概这个数据统计管理模块,呃它应该怎么写对吧?那么这个是第二个模块,叫做呃数据统计的这样的一个模块,那么第三个模块呢,就是报表管理对吧?我们这个报表管理的话呢,呃,我们这里边有MIQ的报表管理,你可以在这里边,比方说写一个MYCQ的建表语句,对吧?比如说你在这边如果一个create什么table,呃,然后比方说叫做my CQ test等等等等对吧,比如说at硅谷,然后后面呢,你可以给他加一些字段名呀之类的,比如说ID对吧。
06:15
Y2叉100等等,那么当我们执行提交的时候呢,那么它就会在呃一个数据库里边呢,呃建立一个呃新的表对吧?那么在这儿的话呢,除了买C的报表管理呢,我们还提供了呃click house的这样的一个呃报表管理,对吧?当然你这个报表管理的话呢,其实它也可以开发非常复杂,对吧?比如说呃,我这里边除了建表语句以外,我还可以呃比如说你可以写一些类似于查询语句,然后点击提交以后呢,呃下面可以显示出一堆呃查出来数据等等对吧?或者说我们还可以添加类似于像have的标报表管理啊呃或者说h base呀等等等等很多很多数据库的报表管理,那这里边的话呢。
07:05
我们为了教学的目的呢,我们就选了两个,一个是买西克的报表管理,一个是c house报表管理,呃,并且它的功能呢,也相对来说比较简单,只有建表的这样的功能,对吧?呃,当然就是说我们有这两个功能以后呢,其实已经足以说明问题了,其实已经足以说明问题了,那你编写了这两模,呃,这两个报表管理的小功能以后呢,其实你就大概知道说啊,这个报表管理它,呃大概是在做什么对吧,他大概是在做什么,因为我们一个,呃,一个教学项目,他没有办法去涵盖,说是中台里边的所有的。对吧,详细的需求好,那这个是第二个,第三个报表管理这样一个模块啊,那么第四个的话呢,是一个任务调度这样的一个模啊,那么任务调度的话呢,比如说我在这里边我可以添加一个任务,对吧?啊那么添加的任务呢,除了一个简单的测试任务呢,还有一个就是买CQL数据监控的这样的一个任务,那我点击话呢,比方说我可以选择监控的数据库的名字是j ma,呃,表明呢,是比方说什么云台下滑左源对吧?呃,因为呃我的名字叫左源嘛,所以说我在这里边我就。
08:19
选了一张表啊,当然它也是用来测试用的,比方说啊,那你还可以,呃,监控它的某一个字段名对吧?比方说我们要监控的这个指标呢,叫空值率,呃,然后呢,你的这个任务类型呢,是crown tab类型对吧的任务,或者说crown任务,呃,也有可能是周期执行任务,那么执行周期的话呢,比方说我这边提供两个选项,一个是每十秒钟执行一次,那还有一个呢,是每分钟执行一次,当然你也可以,呃在编写代码的时候呢,提供更多的选项,比方说什么每天执行一次啊,每周执行一次啊等等等等啊,那都是可以的,然后呢,我们还可以填写他的作业名啊,以及这个作业它属于哪个组呀等等等等,然后你就可以点击创建新任务,那么他就开始,呃,周期性的执行了对吧,那这里边的话呢,诶已经有一个创建的任务了,那你可以看到它的操作呢,有两个,比如第一个呢是删除任务,第二个是呃,比方说重启任务对吧,当然你点。
09:19
比如说重启任务以后呢,我们还以暂停这个任务,呃,所以说你从这儿的话呢,其实可以看得出来,呃,这个功能呢,呃,它当然可以开发的更加的复杂,非常非常复杂,对吧,因为我们都知道。说,呃,关于任务的调度呢,实际上业界有很多大型的非常有名的框架,比如说呃,我们这里边对吧,大家经常听到的类似于像这个air flow这样的一个框架啊,或者说像,呃我们现在国内开源的也比较流行的叫做dolphin scheduler对吧,Dolphin scheduler呃,海豚调度器,或者说像LBB,它开源的叫做air flow,呃这样的调度系统,对吧,其实它很复杂,呃,当然在这的话呢,我们。
10:13
并没有选择说把这两个系统呢,直接用一个按钮对吧,接接进来,也就是说比方说我点击一个按钮,它直接跳转到呃,Dolphin schedule,或者说allow这样的前端页面对吧?呃,因为这样的话呢,它并不足以让我们明白说一个任务调度。对吧,像这样类似于这样的复杂的任务调度管理器,它是怎么开发出来的,所以说在这儿的话呢,呃,我们选择。自己对吧,使用Java里边很有名的一个库,呃,叫做什么库呢,那么也就是实际上它的这个库的名字呢,就叫做呃。呃,这个筷子呢,它在Java里面呢,应该算是最有名的一个定时人物呃调度的库了,对吧?呃上面的dolin schedule呢,实际上就是基于跨子来呃来进行开发的,对吧?所以说我们在这里边我们选择使用跨子这样的一个久精考验的呃定时任务。
11:20
呃,调度组件或者说调度库对吧?来自己编写一个任务调度,具有任务调度功能的这样的一个组件对吧?那么你写了一个这样的一个小小的呃任务调度组件以后呢?呃实际上如果你有足够强的Java或者说前端开发的呃这样的经验的话呢,其实可以自己写一个呃逗分schedule这样的功能出来,对吧?换句话说呢,就是说我们开发这个小组件以后呢,我们就知道说,诶市面上这些呃,它开发出来的这些任务调度框架,对吧?那么它的底层原理是什么?
12:02
好,那这个是任务调度的模块,那么它可以显示呃,我们的这个任务详情,对吧,我们还可以创建新的调度任务,以及对它做一些简单的管理,好,那这个是第四个模块。呃,那这个是,那么第五个模块的话呢,那就是数据治理模块啊,那数据治理模块呢,我们这里边同样是开发三个小功能来让大家知道,哎,什么是一个数据治理,比方说第一个,那么就是have表的原数据质量,对吧?我们这里边原数据质量的话呢,哎,我们会教大家就是说到底什么是一个原数据对吧?嗯,然后呢,我们以have为例子。呃,来告诉大家说,诶,你怎么去分析have表的原数据。对吧,比方说原数据它存在哪里。你该分析一些什么东西,我们这里面呢,就简单举了一个例,举了几个例子,比方说我对于一个数据库gma里边的products这张表对吧?当然这个是have里面的表,那么字段数量有多少?哎,没有注释的字段数量有多少,是否有技术负责人,是否有业务负责人,然后表呢,是否有注释,然后过去七天呢,这张表里边它是否有产出?
13:24
等等等等,对吧。当然有关原数据的分析的话呢,啊,你是可以分析非常非常复杂的一些东西的啊,但是我们讲解了这几个指标,它的分析方法的话呢,那你就可以对吧。一样去画葫芦,然后去研究如何去分析原数据的质量,对吧,那也就是说这几个指标其实它足够说明问题了。好,那么第二个的话呢,那就是MYCQL表数据质量监控对吧,那你就说数据库里边的表里边我们监控什么呢?哎,我刚才在任务调度里边,我们可以监控某一个字段的空值率,当然就是说对于表数据的这个质量监控的话呢,呃,我们之前说了,我们说中台本身是一个非常非常复杂的,呃,这样的一个。
14:20
项目对吧,那你可以。对于很多很多的指标,你可以分析非常非常复杂的一些,呃,监控指标对吧,我这里面只分析了空置率,那你还可以分析,比方说每天有没有新增数据。对吧,包括你还可以对比一下。某一天的新增数据。和过去一年。他每天的新增数据的平均值对吧,它的一个波动率等等等等,那这样也是可以分析的,对吧,也就是说你可以分析很多很多呃复杂的一些东西,比方说你可以分析这个新增数据的波动率,对吧?呃,当然就是说呃。
15:08
他不管这些数据再复杂,你要分析的这个指标再复杂的话呢,呃,那么其实都是涉及到一些CQ的编写,所以说呃,他也只是业务上的一些问题,他并没有说是在呃技术上面超越了,呃我们这个项目里面所。所带来的一些技术,对吧,它并没有这样子,它只是说业务会会比较复杂一点,对吧,或者说我们简单一点说就是呃,你可能要搬的砖要搬的多一点,那么可能要搬的辛苦一点,对吧?好,那么这是第二个小例子,那么第三个小例子的话呢,呃,那就是我们会教给大家如何去。呃,计算have的这样的一个呃表级的血缘关系的呃一个方法对吧?呃,当然就是说你可以也可以把它拓展的很复杂,比方说呃,你可以呃去计算一下字段级的血缘关系对吧?当然计算这个血缘关系的话呢,呃,它涉及到技术呢,会稍微有一点点复杂,我们后面会详细的讲解,对吧?那这里面的话呢,我们主要用到了一个工具叫做什么呢?也就是Java里边大名鼎鼎的一个工具叫做安泰LR对吧?呃,安泰LR4。
16:24
呃,也就是说呢,呃,实际上我们都知道这个haveve,它的功能是做什么呢?那么have的功能呢,实际上是将我们的这个汉Q对吧?呃,把它翻译成什么呢?把它翻译成map reduce。对吧?当然您可以认为说是把它编译成一个map reduce任务对吧,或者编译成很多个map,呃,Reduce,呃,任务对吧?那么这个have CQ它如何编译成map produceduce呢?实际上用的就是按台L对吧?当然它有可能用的是比方说按R3,或者说呃之前的一些版本对吧?那么这里边的话呢?
17:09
我们直接使用按R4这样的一个语法分析工具呢来分析SQ。然后。对吧,我们通过这个分析的过程呢,来计算出它的表级血缘关系,当然如果说你掌握了案台RR这样的一个工具的话呢,呃,那实际上呃,你是可以把表级包括更难的一些,类似于像字段级啊等等等等这样的一些呃指标呢,实际上都是可以计算出来的,因为这个安R呢,它是一个非常强大的工具啊,我们后面再去讲解它的时候啊就知道了,呃,当然由于我们想要去保存。呃,这个表级数据结构这样的一张图对吧?实际上这个是一个图数据结构,呃,所以说我们这里边我们还涉及到了,就是说你一个图数据结构,如何把它持久化下来,如何把它保存到我们的这个数据库里边,所以说我们这里边实际上还涉及到了一个叫做new fog这样的一个什么呢?叫做呃图数据库对吧,叫做图数据库,这个我们后面也会去呃详细的讲解啊,那么这呃,那么现在的话呢,我们就对这个中台项目呢,就做了一个简单的介绍,实际上就是我们通过点击前端页面呢,来大概明白他是要干一些什么样的事情啊,当然我们说过现实中的中台项目呢,他可能会非常非常的复杂,对吧,它可能会有很多很多的按钮。
18:47
很计算很多很多的指标,它可能有很多很多张的呃这样的大盘数据的可视化,对吧?那实际上类似于这些呢,其实它用到的工具可能都会比较多,它可能都会比较多,呃但是我们这样的一个项目的话呢,如果大家能呃跟着认真敲下来的话呢,那基本上呃,你自己去呃,根据公司里的业务去开发一些中台的呃模块啊,或者说一些指标呢,可能就不再成为一个头疼的问题,不再成为一个头疼的问题啊呃,那我们现在呢,简单的来介绍一下呃,我们这个项目所用到的一些技术站,对吧?用台些技术站,首先呃我们要明白说这个中台项目实际上它就是一个网站。
19:31
那么这个网站呢,它当然涉及到了前端对吧,那么我们前端的话呢,用到哪些技术的技术站呢?呃,首先的话呢。我这个前端页面呢,我使用了呃vouee呃这样的一个非常有名的一个前端框架来编写我们的前端代码,对吧?当然可能呃后期会对它进行升级呃进行重构,因为这个vuee的话呢,我目前使用的还是呃2VUEE2这样的一个版本,对吧?呃那么现在VUEE3也出来了,那么包括像其他的一些呃有名的框架,比方说react,它也升级到了18,对吧,所以说呃可能我们后续呢会呃进行一些升级,那前端除了voe js2这样的一个框架以外呢,我们还用到了什么呢?用到了比方说像呃element UI,对吧,在voe里边它最有名的一个前端组件库对吧?我们用到了这个element UI。
20:36
那么还用到了什么呢?还用到了E叉S,那么E叉S呢,是百度开源出来的一个。可视化框架对吧,或者叫做呃可视化组件啊,那比如说我现我这里的这个统计管理模块的实施统计,像这些图对吧,实际上都是用E叉S来呃画出来的对吧?实际上都是用S来进行绘画的,呃那么除了view element UI呢,E叉S,那么还有呃些。
21:07
什么样的一些技术站呢?呃,那我们这里边查看一下前端的这个云抬杠front and这个文件夹里边。呃,他的passenger.jason的话呢,我们可以看一下啊,那么实际上也并没有什么,呃,其他的一些技术上了,对吧,也并没有一些其他技术上了啊啊,那么我们的后端用到了什么样的技术站呢?因为我们除了前端以外,对吧,我们还呃需要。后端对吧,还需要后端,那么在这里边的话呢,我后端选择使用的是呃,Java石器对吧?啊,因为我们都知道现在Java呢,它已实际上已经升级到了19,呃,然后呢,为什么我这里面我要用JAVA17呢?因为我这里面使用的spring boot,它的版本是三,呃,也就是说我们最近呢,上个月spring boot它刚刚进行了重大升级,呃,也就是说spring boot3这样的一个呃全新的框架它已经发布了,而spring boot3呢,它要求。
22:13
最低支持JAVA17对吧,所以说我们呃这里面呢,我们也就用上了呃这样的一个,呃JAVA17,那么还用到了spring boot3对吧,当然还有一些除了spring boot3这样的一个呃后端框架以外呢,呃,那么还用到了一些其他的一些组件,那么我们在敲代码的时候呢,我们慢慢的去呃去研究它,对吧?那除了前端和后端以外呢,我们都知道呃我们一个网站。他的这个就是说一个流程是什么呢?就是说首先前端向后端发送请求。对吧,那这个是发请求。然后呢,后端会向前端返回响应。
23:02
呃,前端向后端发请求,后端向前端返回响应,然后呢,前端在接收到响应以后呢,会把这个响应给它渲染出来,渲染成一个页面对吧,那么你后端在接收到请求返回响应的时候。那么这个后端它从哪里取数据呢?所以说我们的这个项目的架构呢,它当然还有一个很重要的模模块,那就是我们的数据库,对吧?我们这里面我们数据库用到了什么呢?我们这边数据库用到了MYCQ用到了click house,当然我之前说了对吧,我们还用到了一个图数据库,叫做new for j。呃,当然的话呢,你还可以引进类似于其他的,比方说像呃这个have呀,什么presal呀等等等等,像h base对吧,什么search对吧?呃,包括像这样等等等等,呃,都可以把它引进来,呃,但是为了我们教学的方便呢,呃,实际上我们这边引入买SQ,再引入一个劣势存储数据库click click house,然后再引入一个图数据库new for,其实已经足够说明问题了,对吧。
24:24
已经足够说明问题了,好,那我们再来回顾一下一个网站啊,它的一个流程,那么它这个流程呢,就是前端向后端发请求,然后呢,后端再向数据库对吧,它的连接数据库,然后呢取数据。对吧,你可以说是,当然不一定是取数据,可能是增删查改cardd都有可能啊,当我们这里面举一个例子,就是取数据前端向后端发请求,后端再从数据库取数据,那么数据库接收到取数据库的请取数据的请求呢?然后再返回数据,对吧?那么当后端它接收到。
25:13
数据库返回的数据之后呢,它就会把这些数据再包装成HTTP响应返回给前端,那这个时候前端他就把我们的这个HTP响应对吧,包装的数据呢给他。渲染出来对吧,比如说在这里边,诶我们的这个实时统计模块,那它是怎么样呢?首先我这个前端页面向我。写的这个云台杠back。呃,这样的一个spring项目呢,发出请求,然后呢,云抬杠back对吧,他去买CQ里边把数据取出来,当然呃,我这个实时大盘呢,它的数据是从c house里面取出来的,当然你从哪个,呃数据库里边取数据,这个都是无所谓的好。
26:07
那么spring boot从数据库里面把数据出来之后呢,它就会把这些数据呢,包装成。呃,这个前端想要的HTP响应对吧,它包装成HTTP响应以后呢,就返回给了前端,那前端接收到这样的一个HTTP响应以后呢,就把它渲染了出来,对吧,就渲染成了我们这样的一个可视化的这样的一个呃样子,也就是说哎,我前端发请求。然后后端spring boot接收到请求以后呢,从数据库里面取数据。然后呢,从数据库里面取出数据以后呢,对吧,也就是数据库返回给他数据以后呢,那么我们的后端spring boot,再把这些数据包装成一个响应,HTTP协议的响应呢,再返回给前端,那么前端接收到这个响应以后呢,把里边的数据取出来,然后可视化出来,这个就是我们一个网站,或者说我们这个中台项目。
27:12
是它的一个完整的一个流程对吧,它的一个完整的一个流程啊,当然对于我们这个项目来讲的话呢,我们的着重点对吧,由于我们面对的是大家刚学完大数据,呃,那么对于大数据来讲的话呢,可能并不会重度参与。前端项目的开发,所以说我们主要呢是后端和数据库的讲解。对吧,当然前端的话呢,我们会教大家如何去把它运行起来,对吧,如何去把它运行起来。啊,那么运行起来以后呢,我们会教大家从零编写后端,对吧,那么涉及到数据库的知识呢,我们也会呃一一讲解,也会一一讲解,那么我们这个项目它的。
28:03
仓库在哪里呢?大家要注意啊,仓库呢就是gt.com,然后confusion左元斜杠云台。大家一定要记住这个地址。那这个地址呢,就是我们。整个哎,我编写的这个教学项目所在的仓库对吧?呃,当然你点开这个网页以后呢,你会发现这里面有几个文件夹,第一个文件夹呢,是云杠front hand,那这个就是我们的呃前端的代码的所在的文件夹,那么第二个文件夹呢,叫做云台by hand,那这个就是后端代码所在的文件夹,然后呢,Read me.MD也就是我们下面渲染出来的这个页面呢,就是我们整个项目的部署方法,呃,也就是说你跟着下面这个文档,实际上你就可以把这个呃项目呢,或者说把这个中台项目呢,给它跑起来,给它跑起来,当然我们呃后面还是会带着大家呢,来看一下呃如何去。
29:08
呃,去把它部署起来,对吧,如何去把它部署起来。呃,可能前端代码呢,我们讲解会少一点,但是后端代码的话呢,我们会重点去详细的讲解啊,那好,那我们现在的话呢,中台项目的,呃,这个中台这个教学项目的简介呢,就先到呃这里。
我来说两句