云原生实时数仓-StoneDB:开源MySQL HTAP数据库及其演进计划(一)
嘉宾信息
李浩 StoneDB首席架构师 StoneDB PMC
StoneDB:开源MySQL HTAP数据库及其演进计划(一)
内容介绍
一、 Who am I? A brief introduction of StoneStoneDB
二、Present of StoneStoneDB
三、Where StoneStoneDB will go?
今天给大家带来的分享是开源的MySQL htp数据库及其演进的计划,那么首先介绍一下StoneDB的应用场景是什么?我们为什么会做StoneDB这样产品?
一、Who am I? A brief introduction of StoneStoneDB
那么StoneDB是作为开源的MySQL http的数据库,其主要是为了解决在MySQL生态下面MySQL在app分析能力上的不足,那么从以下几个方面来讨论一下我们StoneStoneDB产品的优势或者是一些能力。
首先第就是完全兼容力MySQL时代,因为我们是基于MySQL上面做的htp数据库,因此,对于生态我们是完全兼容的,无论是从语法使用习惯上带来的好处是如果业务可以频发的迁移到我们自从StoneDB上面,第二个就是事务分析的一体化,因为我们是htp数据库,因此,无论是tp负载或者说我们均可以承载,同时在app上面,也保留了事物的acid的特性,第三个就是完全的开源,带来的好处是,我们可以去利用社区广大的一些人才资源,同时在互联网上存在着关于MySQL海量的一些解决方案,或者说一些知识库,这也是我们给我们StoneDB带来一个好处,就是我们所有遇到的问题,可以得到快速的社区的响应,以及相应的一些丰富的人才,再就是十倍特性,主要是因为我们采用了触造级过滤以及知识网格的方式,同时,我们在执行的时候,会引入项量化执行的策略,因此带来十倍的性能,十倍的导入速度,那么是主要是通过预处理方式,将数据进行预处理,使得我们在导入的过程中无需经过层的一些解析,直接会把数据去加载到存储引擎上面,来获得十倍的导入速度,那最后是成本是,我们是完全进入MySQL生态的,因此,以前的解决方案,或者etf工具,或者运文的习惯,运维的人员的一些能力,支持他完全可以去兼容到我们,因此,总体t c o成本上可以最多给原来的1/10的成本。
1、产品架构
我们从产品的架构来讨论一下,上边是我们StoneDB的鉴临版本,另外是2.0版本,那么一在我们StoneDB中,我们引入了目的,劣势存储引擎,它主要的作用就是使得我们所有的app上的一些数据,会以列存的方式去存储在天目引擎上面,带来的好处在下面,会比较详细的去来分析一下,
2、数据组织
首先直观的好处就是我们在StoneDB上,一条查询涉及到一些大数据上的app的分析的时候,使得查询能力可以得到飞速的提升,那么从数据的组织上我们可以看出是采用的方式及我们在StoneDB上存在着行存和列存两种存储格式,那么主要是为了方面及引擎,那么,基于内存的存储引擎,就是我们所引入的新的天目存储引擎,
所有的数据是列存的方式进行组织,组织的方以列存的方带来好处就是可以对数据进行一些压缩,可以选择一些高效的压缩算法,可以进步,同时对于一些catch也是比较友好的,那么在查询的过程中,会利用各种针对于列运算进行一些并发的执行,使得我们查询的效率或者现场进一步的提升。
同时,在在查询扫描的过程中,创建索引,因为我们是利用测套集合知识网格的方式提供这样方式,不需要进行索引,给获得相对比较高效的,相较于MySQL来说,高效的app的处理的能力,从数据压缩的角度来看,由于我们是列存的方式,同时,每一列这种数据的类型,它的分布情况是比较比较比较有大量的一些冗余或者比较相似,为我们数据加缩提供了很好的使用的场景,所以因为支持多到20种以上的自信的压缩方法,你方式等压缩算法,从查询处理的部分来看,首先我们查询优化是基于知识网格的进行优化。
3、数据处理
那么就是说,在我们数据加载或者在执行的过程中,会构建知识网格,构建知识网格是为了在我们查询过程中,通过知识网格和塑造集来进行数据的减值,对于在查询中无关数据,会把它舍弃掉,我们只会关注相关的数据么带来的好处就是我们那io可以进入去节约。
我们在检索的过程中所涉及到的数据量的一些io,会大大的减少。
4、数据导入
进一步会提高我们在查询处理方面的一些能力,再就是从数据导入方面看,刚才也提到了,我们导入是经过server层的一些处理直接是通过预处理,直接从二进制的方式导入天目引擎,好处就是说,与传统的逻辑导入的方式不同,那么逻辑导入方式,需要经过有层的一些sq解析,那么在解析包括这部分的处理过程中会消耗大量的cpu资源,因此双StoneDB的导入,是无需要经过的一些serve处理,带来的好处就是我们可以节约大量的cpu资源,使得我们cpu可以更好的利用到我们在真正的导入过程中,处理能力。
再就是所支持的部署方式,总共有以下几种部署方式,最简单的是基础方式,就是我们单节点单实例的部署方式,除了这种单节点的部署方式,主要是面向于中小的客户,要求不是特别高的情况下,如果需要对于高可用业务的一些稳定性有相关的要求的时候,可以采用高可用的部署方式,那么再可以提供读,读写分离部署方式,最后就是三节点的部署方式,那么接下来我们会介绍一下当前的情况。