00:00
好了,同学们,那明白了这个K的前置概念以后呢?那接下来我们就一起来看一看这个K的一个架构。咱们在这儿给大家画了一个PPT啊,咱们这个PPT就明确告诉大家是从这个官网上搬过来的,大家刚才也看到了,在这个官网这个界面,人家就有一个kidding的这么一个架构图,那其实那这个时候是吧,咱们就不看官网了,咱们就看一下咱们画的这个PPT,好吧,哎,那我给大家放,我给大家这个放一下咱们这个PPT啊。首先提前告诉大家啊,咱们这个K里的架构是相当复杂的啊,K的这个框架它底层设计的很高级,所以说它这个架构就很复杂啊,它这个架构它的难度不亚于咱们前面讲的那个atla,好吧,啊,首先在这个K0里边,它分为了五层。啊,就是它光这个数据光架构分为了五大层,第一层就是咱们这个QB的构建引擎层。就是这个cube build的engine刚刚刚给他讲完是吧,在K的世界观里边,咱们这个数据它是以这个cub的形式来存储的,那既然我能够啊,把你这个数据转化成cub,所以说我肯定有这么一个构建的过程,那你有这个cub的构建过程,你得给他一个引擎啊。
01:18
那咱们最底层就是这个cub的构建引擎层。那再往下,哎,那咱们存在什么呀,再往上应该是再往上一层什么呀,就是咱们这个Q5构建完之后呢,再往上它有一个语言数据层。因为咱们这个K它是不存储数据的,他将来把这个cub构建好以后呢,它会存到h base里边。那我如何去往你这个HP里边找这个数据啊,所以说我会帮你创建对应的原数据啊,根据这个原数据去这个HP的底层去查询数据,OK,那再往上有一层,有一有一层什么呀,有一层这个路由层。路由这一层是干嘛的呀,路由这一层啊,就是做这个查询的分流的,也就是什么意思啊,你基于这个killing。
02:04
来做这么一个查询,Circle查询是吧,如果说我的killing。提前做了预计算,那我就找K里边的,那如果说关于某些字段,我的这个K里没有做这个预计算,那我这个路由层可以可以怎么着啊,可以帮你路由回原本的数据,就比如说咱们是基于这个have的表是吧,给他讲这个讲讲讲这个K。那就比如说关于关于have表里边我有A表,我有B表,A表里边有十个字段,B表里边假设有八个字段,那一共有18个字段,假设你K里边一共给它构建了12个字段,那其中有六个六个字段是不是在K里边找不到啊?那如果说你想基于在K里边没有的字段做查做查询,那我只能通过路由层给您路由回咱们这个have里面去查,因为我K里面是没有的。这个路由层是做这个事情的。但是大家知道啊,大家看一下啊,咱们这个路由层画了个虚线,这个虚线代表什么意思啊,代表啊咱们这个路由层它默认没有开启,这虽然有这么一层,但是人家K底层把这一层给你关闭了,用不了录制层。
03:15
首先我来解释一下为什么K点把路由层关闭,好吧,把路由层关闭的一个重要原因就是为了保证我的这个亚秒级查询,大家想哈,因为咱们的K是亚秒级别。而咱们的have,大家也都玩络have have是不是至少是分钟级别啊,甚至是吧,你你你执行一个比较大的circle口,它都可以跑跑半小时,就是分钟甚至是小时级别,如果说我的这个K里开启了路由层。那我在前端使用K点查询的时候,我就没有办法保证你的这个查询速度,大家想啊。如果说你查的是K0这边这个数据,那我在一秒之内就可以给你返回结果。
04:07
那如果说你查的这个circle里边包含了K里边没有的字段,那我这个路由层假设是吧,给你路由到have里边了,那我have的这个circle是不是都是几十分钟才能出来啊,大家想啊,咱们这个circle速度你根本就不靠谱了,就是我作为一个用户,我在这使用KLY,我写了一个circle,我都不知道我这个circle是压秒返回还是分钟返回,还是八点返回,大家想如果你要慢就一直慢是吧,你比如说你你使用have查我反正我我我我我我知道我这个circle有可能很慢,我在执行完circle以后,诶,我就可以去做别的事情了。那如果说你只使用K点是吧,我知道我这个K点比较快,我查询完serve号之后,基本上是秒级返回,那我查完之后,我就我在这着急看结果,那如果说你这一会儿快一会儿慢,那对不起,我扛不住是吧,你在想要快就快,要慢你就慢,你这一会儿快一会儿慢,没有人能扛得住,因此是吧,K它底层是把这个路由层给关掉了,Kelly是没有启用路由层这个功能的。
05:10
大家知道就好了啊,那再往上就是一个查询引擎层,在这一层里边,哎,我们需要提供咱们写的参考。就是这一层会把咱们写的circle转化成king的底层任务啊,会把咱们写的这个circle转化成K的底层任务,去这个h base里边取这个数据,好吧,哎,那大家应该看了啊,咱们这个Q5,因为K里底层它不存储数据,它要把这个Q5存到这个h base里面,它是选用这个h base来做的咱们这个数据的存储啊。那再往上这最后一层,什么层啊,就是这个rest API层,就是rest server,就是rest of API服务层,那这一层是么?既然KLY提供了这个API,那就说明咱们可以通过各种协议来连接这个K,就比如说你的GDP信协议,你的re API协议,好吧,啊,这个咱就不说了哈,就咱们写的,咱们既然有这么一层,我就可以在各种地方写这个circle口,通过这个协议传达给KDY。
06:10
因为它支持各种各样的客户端嘛,OK啊。那明白这个以后呢,那咱们再往下看是吧?啊把这咱们整个整个图放放出来,这个架构就是咱们整个K那个架构啊,就首先首先咱们这个K的API比较多,它有这个,它有这个web的APP,就是web端还有一些BI工具,就比如说支持ODBC的,JDBC的是吧,咱们都支持,那这么多工具,就是咱们这种客户端,它连接的是服务,就是rest和服务层,Rest服务层就是这一层可以接收咱们的circle。然后呢,把这一层把这个circle接收到以后,它会下发给这个查询引擎层,然后查询引擎层会把你会把会帮你把你这个circle转化成K的执行任务去这个执行,好吧,这个路由层呢,就不说了,它默认是关闭的,那然后呢,我底下我有对应的这个原数据,还有这个Q构建引擎,也就什么意思啊,就比如说咱们这个KLY,首先你想玩KLY,你得对接一下数据源,那咱们就比如说以这个have数据间为例,我用这个K对接一下我have的数据源,然后呢,把这个have的数据源对接过来以后呢,我会在我K的页面上构建我对应我对应的这个Q补,那我这个Q补构建好以后呢,我会把你这个Q补以KV的形式存到这个HP里边。
07:29
因为学过HP的小伙伴都知道是吧,咱们这个HP里边它只能够存咱们这个KV对的这么一个结构,哎,所以说整个这么这个这这个架构就是咱们这个K那个架构,这个架构比较复杂啊,咱大家只是了解一下就好了,是吧,因为咱们对K点只停留在这个使用的层面,也没有必要仔细去研究这个的架构,你知道他这有有有这么五层架构,并且K这个架构相当复杂就够了啊,那再往下一些文字介绍,大家自己读一读,我就不讲了,就是刚才我讲这个图,我我我讲这个图的时候是吧,一层一层给大家介绍一下。
08:03
它分为这个rest server有什么查询引擎层,还有这个路由器层是吧,路由层还有这个原数据管理层叫me lita层,还有一种就是这个执行隐擎层,就是这个就是这个QB的构建层,好吧,啊。需要给大家提点什么呀,就咱们这个QB构建它,它构建的时候,它可以用多种引擎,就比如说它可以用MAP6,它可以用Spark。啊,它还可以用一些社会脚本,所以这个东西比较复杂,大家知道就好了,好吧,那咱们这个kding的架构啊,就给大家讲到这儿啊。
我来说两句