云原生实时数仓-StoneDB:开源MySQL HTAP数据库及其演进计划(二)
嘉宾信息
李浩 StoneDB首席架构师 StoneDB PMC
StoneDB:开源MySQL HTAP数据库及其演进计划(二)
二、Present of StoneStoneDB
我们主要从几个角度来看,首先第一就是功能性,可用性,的角度来看,首先,StoneDB增强了dma的能力,与其他的一些app,数据库一些处理平台不同,对于我们在上增强了delet能力支持,比如说update一些能力,我们在后面也会提到,我们也支持了一些并行处理的能力,通过肉格式的以及并行回放的一些能力的,使得在储备的场景下,储备的延时可以大大的去减少原生的一码;第三个就是8.0,我们的8.0也在积极的开发内测过中,第5个就是从环境下或者主备环境下的强制的天默引擎,也就是说,无论是你使用引擎或者买引擎。
我们可以强制的为天空引擎,当主上发展数据变化时候,在背机上,就实时的转成劣势存储,那么在我的背机上提供对外的app分析的能力,这是一种主备的方式;通我们这种,第6个就是我们这是一种比较复杂的像utf,用户自定义的函数以及处罚器等等,对于我们数据类型的支持,现在这是一种decimal,这种方式为这种在金融方面,对于数据类型或者精度要求比较高的情况下,提供了更好的数据类型的一些支持,最后就是8.0版本的支持能力,当然,比如说像企业级特性,比如审计,包括一些ck镜像的一些知识,我们基本的能力,当前已经得到完全的一些支持,那么从性能的角度来看,除了刚才我们提及的一些粗造级过滤以及知识网格,用来加速查询处理,包括并行执行,现代化执行,我们还从查询优化的一些角度,比如说sql优化的角度,提供一exist转化为相应的的方式。
大家可能知道,对于exist,比如说转化为官方的8.0版本上,有相应的支持,但是把这部分的能力,我们会把它移植到我们都具有相同的查询优化的能力,再就是全表扫描条件的,就是说,我们在解锁的过程中,可以大大去减少我们满无关数据。
我们只需要检索到满足查询条件的一些数据集合,节约了io的消耗,再就是我们数据的一些加载的能力这表格就是我们与其他产品在100g的数据量的情况下,在tb的场景下,我们那些表现形式,测试的结果,这里就不再大做详细的介绍,大家可以去看一下。
那么作为数据库,作为基础软件,它的稳定性是至关重要的,为了加强稳定性,从主要从以下几个方面着手,首先第就是说我们在开发或者在开发的过程中常规的一些保证,不但需要通过StoneDB的一些case,同时我们需要也需要通过tm test case,再就是我们代码的覆盖率,使得所有的提交的代码或者运行的代码,基本上都要进行一覆盖,从而可以减少到覆盖代码的一些比较细微的,比较复杂场景下比较少的场景下的bug的发生的概率,第三个是按安全漏洞的扫描,我们在开发过程中,一些bug,无论是否涉及到MySQL的官方的一些bug,还是说引擎的一些bug,代码的持续的一些治理,只有在代码持续治理的过程中,才会减少,进一步去减少bug的产生。
从社区的情况来看,截止从去年六月底开源截止到现在,基本上github上收获的大概是707个star,然后外部的贡献者大概有31位左右,那么社区的情况下,我们也会积极的进行国产化适配,无论是从操作系统还是从基础的一些硬件平台或者软件平台上,做了一些积极的一些适配。
社区包括,在社区自动开源以来,获得社区的一致的一些好评,获得了2022年的优秀开源技术团队,也获得了2022技术卓业评定的年度创新产品奖,这都是对我们产品的一些认可,刚才介绍了我们StoneDB当前的一些情况。
三、Where StoneStoneDB will go?
未来动StoneDB会走向哪里呢?研究的方向是什么?
下面我们从主要几个方面去来给大家去讨论一下,第一是架构的一些引进的方向,未来会我们会向全内存的方式,内存计算加内存的演进的方向,在2.0版本中我们会去支持,我们想打造的是中国款的MySQL,这样开源的对标的产品,使得我们把在MySQL生态上的app的一些能力给给社区,给更多的广大的用户来获取到,我们就是比较方便的一些app处理的能力,比较低成本的app处理的能力。
在我们架构眼进的过程中,导致的一些变化主要从几个方面,首先第一就是用户界面一些变化,无论是从语法,还是从1.0上面的一些使用的方式,那么都会发生一些稍微的变化;第二个就是查询引擎,由于我们是in memory的,对于查询引的改造需要涉及到几个方面,首先我们要去知道负载的类型,同时我们要知道负载的我们根据cost,把负载去智能的,比较自动化的,到无论是;第二,对用户来说,它是不感知的,再就是变化,就是执行引擎方面的一些变化,未来我们会继续加强执行引擎方面的一些优化,第4个我们也提到了,其实是最大的不同,就是引入了劣势的内存引擎,那么除了以后,数据导入,数据的安全,资源的隔离,包括生态建设,这些也都是未来所努力的发展方向,或者说未来我们需要去引进的努力的目标。
单机版的未来,未来2.0相对来说处理能力相较于1.0上有有个比较大的提升,为了进一步提升在app处理方面的一些使用的产品无论从数据量还是从业务的类型。
我们将会支持所谓的集群方式的部署及部署的方式,会在后面的app上面会提供p集群,带来好处是候进一步扩大我们所能处理的数据,毕竟单节点的处理能力还是受限于一些技术架构,因为在2000版本中是memory的,由于内存的物理限制,使得数据量处理的能力是有一定使用场景是有移动的限制,通过我们这样方式,把我们节点进行使得我们所能够处理的数据量会进步的扩大,在天目class里面会涉及到几个主要的点,大概这里面会给大家去介绍一下。
首先第就是数据的一些分布策略,数据去加载进来的时候,数据的一些分布方式,我们首要的目的,就是将负载数据去均匀的分布到我们天目引擎的数据节点上面去,再是数据的一些重分布的策略,因为我们在业务的运行的过程中,会涉及到不断的一些操作,带来的一些问题,我们经过长时间的运行,使得我们数据在各个节点上的分布情况可能变得不那么均匀,会有一定的数据倾斜的情况存在。数据全分布的策略,就是非常重要的问题,怎样保证在迁移的过程中不会影响到上面的业务,因为数据迁移可能会涉及到io,网络这些方面的资源的消耗,怎么样能保证我们gts或者q ps不下降的情况下,做到平滑的,数据的一些分布的也是我们面临的问题,是我们未来前进的方向。
再是元数据的管理,包括后面的一些问题,其他a p p架构涉及到众多的,各种各样的一些细节的问题,这里面就不再详细的展开了。我们未来会支持多存储的解决方案,除了我们常用硬盘的一种方式的,比如说在有个2.0版本的memory方式,未来我们希望基于这种这样架构的方式,支持nfs对象存储,那么带量的好处使得我们StoneDB的一些存储成本会下降,我们会与阿里云采用阿里云的存储平台,它是本地的统一的存储平台提供了统一的,多协议的这样接入的方式为我们带来低成本,把高可用的,本地存储,我们基于阿里云的存储平台上存储方面的一些要求,比如说一些安全。
阿里云存储平台去负责,我们只关心上面的一些计算方面的一些计算的计算能力,除了本地化的部署方式,未来我们会也会上,那么在上云的以后,我们未来的点就是会使用,阿里云的就是阿里云的cds基础设施,云化的新的一代存储引擎。
它的特点就是打破了存储的架构,采用于公有员一样的架构体系,由此,可以去很平滑的未来迁移到我们私有云等比较灵活的部署方式,这里面会涉及到几个问题,首先就是我们存算分离,从刚才在介绍也可以知道,我们无论是1.0还是2.0,它其实是从存储,并不是存储分离的方式,因此,未来比如说StoneDB未来方式上云,最重要的一点就是要做到存储分离,第二个是说资源的池化,资源的池化是为了更好的存分,未来我们cpu的资源的实化,内存资源的实化,存储资源的实化,使得我们这样在我们存在分离的架构下,可以去更好地利用我们池化的资源,做到弹性的扩容。
再就是这样东西,现在已成为数据库方面的基本的,标准的能力,最后是ai能力,为什么会说ai会是未来在数据库上的非常重要能力,从我们StoneDB的角度考虑。
业务的的复杂度,包括我们用户的情况是未知的,希望通过ai方式减少用户的使用成本,提供自动化的一些集群的部署数据的加载,比如说可以通过机器学习的一种方式,哪类负载,哪类用户它的负载的情况,可以做到使得整体的成本做到最低包括,查询处理,故障处理,这些都是我们在做,引入机器学习以后,或者我们未来所引进的方式,就是说通过构建查询代价模型并更据负载的情况,历史数据,我们可以去更新,查询已经获得比较好的查询计划,好的查询计划所对应的就是好的执行计划,执行计法,带来优势就是对于查询性能一些质的提升,我要基于故障的数据,历史的负载数据做一些故障预测,因要考虑用户一些业务的连续性,不希望用户在我们使用我们服务的时候,出现较大的一些故障等等,同时也会一些负载的高峰期是什么样。
我们可以合理的规划一些资源的使用,从企业特性来看,会进一步去加强数据安全,同时也会在数据的一些协同方面,我们会做一些努力,我们会打通StoneDB的一些相关的上下游,数据的一些分享,同步等等,未来是做到一些数据的一些同步,协同方面的一些能力,再就是审计方面的一些能力,包括运维,包括生态,包括一些平台,多平台支持,这里面就会包括云平台上的东西,以及底层一些架构,比如说wr这样的东西。
StoneDB已经在阿里云计算上已经上线了,欢迎大家去适应StoneDB云上阿里带来的好处就是运维各方面的东西还是比较友好的,购买使用的东西也是比较方便。