云原生实时数仓-AtomData结合阿里云分布式存储实现海量数据分析(二)
嘉宾信息
王博
杭州石原子科技AtomData技术负责人
AtomData结合阿里云分布式存储实现海量数据分析(二)
四、AtomData产品特点
儿童地产是一款实的,高能的,低成本的,它的数据分析的成本比其他的场景低,减少了30%到80%,它可以兼容市面上20+款的工具,可以实现从数据库到无缝的实时同步,在场景和计算场景都有较强的优势。
可以支持从到级的这个存储扩容,另外我们的计算节点,可以支持到几千家的这个数据节点。
五、AtomData的技术架构
介绍一下技术架构,它是如何去做到,并且如何去支撑实时数据的实时分析的?
一款是基于一个架构的一个数据库产品,它首先分为三个数据类型的节点,你控制节点,它可以在客户端的连接的路由管理的解析,以及去生层执行计划,做查询,优化资源管理以及任务的工作点,我们支持多个点的部署,并且在上面去套这种均衡去去实现r c的高可用节点,存储和计算节点,它里面集成了我们自研的一个内存引擎,加上面向量化的引擎实现的数据存储和计算的,是可以做到部署的,通过p的方式去实现了节点,这个的问题和实现,对于海量计算的支持,它是只是负责计算的总节点,它可以从节点去取数,包括从其他的要引擎里面去取数,实现实现据的计算,所以说可以认为一种它只负责数据的计算,但是它是有,它是种式结合。下面是高速置通说,去缓存,从外表引,从其他的节点上面载过来,数据实现高速计算这。
以下是技术架构图:
里面讲了支持常规的设,包括支持分布式的快式存储,合布式的这种象我们配了这架构,以及c操作统的产操作统引擎,我们自研了这种列引擎。
我们通过算法来实现数据之间在副本之间的复制,我们把存储引擎分成两个区域,一个面向化的数据可以告诉了通过mysql协议或协议写到多少区域来,维护了组建索引和面向列的存储结构。数据会被定时的按照策略,是面向独优化的一个区域,它里面构建了面向的这种数据文件,并且可以实现数据文件的压缩,构建了索引,包括组的索引,包括k, d的索引。索引构过程中,构建过程是完全是基于异步的,它不会影响数据的写入,我们现在兼容支持对ht外表os外表,es外表,mysql外表访问,我会接入多的外表,在查询引擎端,我们这支持mysql协议和议擎面,包括基于采样实现了这种这种优化器的这种算法,包括对应的,可以通过它去实现增量化图的改写。
用户可以通过去做的换算和大家的枚举去实现最好的执行路径的选择。实现了引擎,包括它整个引擎里面是基于量化去做的,也实现了常规的,比如所的能力,包括一些能力,在执行器里面,我们实现了大量的缓存的技术,包括我们将每个缓存都按照4k的方式去做对齐,这样子,从储读取好像读取到数据,按照内存对齐的方式去做后续的计算,也可以在执行阶段去做大量的缓存的优化。对工具来说,我们的ai框架,我们都是支持的。
常规执行器的架构,这种类型的,它的特点是独立,适合这种宽表的独立的分析,但是它的缺点,是无法执行这种方式的,因为能整体对单表来说是合适的。另外一类像这种模型,它的特点是需要论盘的任务部任务的,因为它有盘的设计,这种架构的特点是运行比较缓慢,但是它的任务的稳定性很高,它是适合于这种离线计算的。最后一种,是app架构的,它的特点是任务间通过流水线去运行的数据,数据在之间内存的使用价比高,用了这种架构,这种架构的特点就是运行速度快,但是比较一些,是基于最后一种app架构的一个分布式数据库。
我们为了这大规模计算,我们增加了数据交换的一些优化,比如说我们允许在间数据可以去落到分布式吞突里面去做落盘,每个失败之后,可以数据去恢复作业了,就实现了这种规模的的稳定性。我们技术实现了像聚合算子溢出的计算也保证了稳定性。所以说,这也是利用了分布式存储的特性,帮助我们做了优化。
另外,就是我们是如何去支持大规模数据导出的,包括如何去适配这种大数据的计算框架的。我们如何去选用什么样的技术来解决数据传输的问题,第一个是我们需要一个标准的api,每个开发者去减少我们的学习成本,另外是尽可能去减少最终程序的,比如说现在面向gdc这种协议的数据库,每个数据库都有自己的给所有的语言去开发程序,对于对于学习者,开发者来说,它的学习工作量也是蛮大的;第三块,我们是需要高性能的传输性的;第四块,我们是要能够去做并行传输,能够实现数据导入端和到端是可以做一对一写入的;第五块,是要求api尽量的能够简单和易用,
我们为什么不推荐里面去使用或gdc的传数据?其实c和gd bc协议是在1992年和1997年开发的,他们的协议的编码来面向行的协议,有一个特点是它的压缩率不高,在面向列数据库的时候,它的编码转换的效率也是不高的,因为我因为客户端把数据面向行的编码发送给客户端,发送给服务端的时候,服务端要去做解码,解码之后还要编码层面向编的个编码,转换的效率是比较低的,由于面向不太高,他整个传输的效率和速度也是不太高的。所以说在大数据的析场景中,由语音数据库的编码市面向列的。我们也需要一种面向类的这种客户端和服务器的交换的协议,来实现具有更高编码效率的更高网络传输效率的合并,更低开销,并且能够实现数据的行传输,我们是选用了作为作为面向的数据传输协议。
无论是客户端还是服务服务端,都可以去随机的访问里面的数据结构,并且在现在的处理器大构上来说,处理是非常高效的,可以开发出非常高效的算法来处理基于基于和数据结构,另外,它使得系统和系统之间的数据交换变得很高效了,避免数据序列化和序列化和和这种编码转换之间的种开销,它也支持复杂结构嵌套的这种数据结构。
这是我们作为数据交换的一个图。
比如说一个客户端程序,它首先连接到我们,查询我们有哪些客和哪些的点,根据数据的分规则连接,直接将数据通过的编码形式发给它,可以把这个数据写到减少,减少了数据从r c编码率的问题。另外让用户无感的通过gd协议来实现对数据的这个存和取。
目前包括python的一些ai, ai的一些生态适配了我们的这个连接键,比如说这个驱动的性能要提高了40倍,我们还是得益于这个软件。
六、适用场景
我们在面向大数据和面向ai的这种场景下面,我们的数据库的重启速度和数据库的访问效率,是其他数据库的大概提升了40倍,升了10%到五倍之间。
典型的场景是报表平台的支持,是这种大数据数的一种场景,为了满足客户在固定报表上的一多样的查询需求,通常去把数据完成,推到一款数据库里面去,由于用户有多维的分析需求和有多样的分析需求,用户有可能会去做他的,基于宽表的这分析,也有可能去基于多维的多种数据分析,在这几个场景都比较合适,对于高并发的业务,以做到2000的,gb这种复杂的查询,我们可以做到,我们可以做到秒级时延,我对这的索引,可以实现这种低于点的数据的查询,通过倒台的和b的索引,支持从快速的扫描的查询,通过量化的引擎能够支持取速度,通过我们支持区和二级分区,可以支持数据的快速的裁减,通过这种物化的视图和通过全表示图,可以实现对于不同明细的查询,另外一个场景,是典型的,客户一般会在离线速仓的基础上,增加了实时出仓的部分使用,类似于hadoop去同时满足数离线计算的需求和实时分析的需求,这种用户一般需要引入多个大数据的组件,用户可以实现用一个产品去解决用户的个需求。我过可以让用户基于数据流去做数据增计算,将增的计算结果写入到据库中,也可以打离线的业务库导入的数据,导入数据的离线的处理带数据量,在一定的情况下,用户没有非常强的非结构化数据分析需求情况下,是去替代hadoop一个比较好的一个选择,另外在运营场景中,一般会根据公司等组织架构成多个级,尤其是尤其是对劳动力型的这种企业而言,人员流动比较频繁,对导入的模型中有大量的更改,有大量的维度。
它更改大传统的大数据,总通过的方式去实现对于预计和模型去应对复杂的查询分析的,我们利用了实时的画图和很强的分析能力,去实现了对于自由维度的这种分析的需求。数据模型灵活,可以支持多种的建模方式来适配业务的建模的逻辑,利用我们现在化的这个视图,可以完全的去匹配这种复杂度。这种聚合的逻辑能够实现对于也可以实现,对于复杂模型的这种预处理可以支持多种的数据导入方式,去保证了端运营场景下面的数据源不一样的问题,通过我们的组索引实的更新用户画像的分析,会从不同的数据源中去去做事实和维度的数据,对种数据去做深度的加工,去做多层次的种加工,一般用户会去做一张比较宽的用户画像表,去表示是用户的,包括上百个种分析维度,我们专门的大场景做了表多的优化来实现对于的这种分析,第一块是我们有这种模型,我们可以通过对云计算。
对云计算另外一块是我们的引擎,我们通过去拆分我们的去实现对于每个分区的加载和初始化能够实现级别,而不是要去读做到on的时度。
另外,我们通过图可以去解决,对于多表多化的问题,可以让用户通过图来去解决数据的预聚合的问题,也可以通过我们的实时分析引擎去做数据的实时的分析,包括去做面向于多维的,或者是面向于几思维的这种实施的数据分析。
另外,我们在整个生态上我做我们适配了非常多工具。第一块,我们是适配了io s和oss数据管理工具,我们适配了和其他工具。数据组件上,我们外表适配了,适配了框架数,我们数据库原生式支持数据库的全量和增量的备份。
另外,也可以,也可以在这种小小数据量的情况下,用mysql去做小表的配分。另外,我们通过一条工具也可以去实现对于s, q, l种数据源的抽取和抽取和导出,第三方java, python等等主流的开发语言,以及提供对应的程序。
在外表上,我们支持o表,q表以及地图,我们支持了思维地图,融地图。数据可视化上,支持了科技数据可视化方案,数据上,也失陪了很多。另外,我们去年分布存储方案上也做了不少的功课,利用分布式快存组合分布对象存储。