当前位置: 首页 > 科技观察

无法运行复杂的SQL查询?DRDS只读实例解决!

时间:2023-03-16 17:06:01 科技观察

背??景在实际业务生产环境中,业务应用系统使用OLTP数据库存储数据后,会出现后台操作系统进行统计报表分析等复杂的SQL查询需求。为了满足快速响应此类复杂SQL查询的需求,DRDS团队进一步引入了自主研发的MPP多机并行计算引擎(Fireworks)以及基于第三代分布式SQL引擎的相应优化策略,极大地加强了DRDS的复杂性。查询处理能力。***数据下的分布式多表Join、聚合、排序、子查询等操作,秒级返回结果,可大幅提升响应速度。它使用相同的数据(RDS只读)进行处理,无需将数据同步到其他数据源,降低业务架构的整体链路复杂度,节省业务运维和预算成本。主要特点自主研发的MPP多机并行计算引擎FireworksDRDS只读实例搭载SQL执行引擎(Fireworks),具备完整的多机并行处理能力。它与DRDSMaster实例上承载的SQL执行引擎有很大区别。DRDS主实例执行引擎采用单机架构,采用尽可能将计算下推到底层物理分库执行的策略,依托计算实现逻辑SQL的分布式计算物理子数据库的强大功能。DRDS只读实例上的Fireworks引擎是由多个计算节点组成的集群,将SQL查询转化为分布式计算任务,突破了挂载物理数据库的计算能力限制,大幅提升了性能复杂的逻辑SQL。计算速度,对Join、Aggregate、Sort计算有明显的加速作用。Fireworks通过Shuffle将Join、Aggregate、Sort等计算任务分散分发到计算集群中的多个计算节点,通过多个计算节点的并行计算达到计算加速的目的。为多机并行执行模式定制的优化器。原DRDS主实例优化器主要针对OLTP场景。其核心思想是尽可能将所有计算下推到附属的物理库中执行。其目的是充分利用实体图书馆的计算资源,同时避免大量的数据流,从而获得更快的响应速度。但是,当面对涉及大量数据的评论查询场景时,整体性能会受到挂载的物理库的限制,同时也会给物理库带来很大的压力,影响稳定性。总的来说,它的OLAP功能有很多局限性。在引入了MPP多机并行计算引擎Fireworks之后,DRDS本身在计算能力上有了很大的提升,优化器的整体优化策略也进行了调整:尽量提高复杂计算(如Join、Aggregation,Sort)给自己执行引擎计算,通过Fireworks计算集群实现计算加速和可扩展性;继续将轻量计算(如Project、Filter)下推到实体库,降低取数据的成本。DRDS分布式SQL优化器可以通过对执行计划最细粒度的优化,生成对多机并行执行引擎友好的执行计划,获得更好的执行效率。同时提供细粒度的算子下推策略,将对RDS压力较小的算子下推到物理库,实现更高的计算性价比,保护RDS免受昂贵算子的影响,从而保证在线流量的稳定性。基于对线上数据的直接分析,以新零售服务为代表的新兴互联网服务不断涌现。此类业务除了实时OLTP需求外,还伴随着一些复杂的准实时OLAP需求,以支持实时决策等需求。目前大部分针对数据分析场景的解决方案,都需要将OLTP数据库的生产数据导出到其他数据源,再次进行离线分析。这种传统方案很难满足准实时要求。存在数据丢失的风险。DRDS只读实例无需执行冗长繁琐的数据同步任务,可直接基于RDS只读实例或RDS主实例处理复杂数据,降低业务架构整体链路复杂度,节省业务运维和预算成本。DRDS只读实例可以保证数据处理的及时性,同时避免数据同步,最终可以达到READCOMMITED的实时性(基于RDS主实例)。清晰的SQL兼容性DRDS只读实例完全兼容DRDS主实例的SQL查询语法,与DRDS5.3版本的SQL兼容性和SQL支持边界高度一致。与同类产品相比,具有兼容性高、支持边界清晰的特点。可以提供与DRDS主实例几乎相同的体验。在DRDSMaster实例上无法执行或执行缓慢的复杂SQL,可以直接迁移到只读实例上执行,省去SQL重写的额外开销。产品体验灵活独立。DRDS只读实例自动同步DRDS主实例的账号权限信息。它支持原生VPC。可以同时打开内部和外部网络。可根据业务情况灵活更改配置,数据处理能力线性提升。技术架构概述DRDS只读实例的整体架构与DRDS主实例基本相同。只是查询层发生了变化,增加了MPP执行引擎和相应的优化器,如下图:层进行处理。查询层负责由执行器解析SQL并生成优化后的执行计划,交给存储层由执行引擎进行查询和计算。如果需要Fireworks引擎计算,查询层在获取到执行计划后,会将执行计划进一步转化为分布式执行计划,作为分布式任务提交给FireworksCluster。远程Fireworks集群完成对存储层的数据查询和后续计算工作。简单来说,DRDS只读实例可以认为是在原有DRDS的基础上增加了一条具有多机并行处理能力的执行链路。适用场景一般来说,DRDS只读实例适用于处理低并发、高延迟、大数据量的复杂查询。比如数据分析和报表场景,典型的特点是大量的关联、聚合、排序操作,涉及计算的数据量大。目前DRDS只读实例已经部署在阿里巴巴集团内的多个业务中,其中最具代表性的就是盒马鲜生、商业大脑等新零售场景。围绕人、货、场、库等多个维度进行关联分析,将分散在不同逻辑库中的数个甚至数十个逻辑表进行关联,进而聚合排序,满足库存对账、决策支持等业务需求.DRDS只读实例的出现,让业务开发同学不再需要配置和维护大量的数据同步链路,不用担心数据不同步导致的时效性差或结果不准确,减轻了开发负担学生在一定程度上。工作量。对于已经在使用DRDS的用户,DRDS只读实例可以解决以下两类已知问题:在使用DRDS的过程中,可能会发现一些涉及Join、聚合、排序的复杂SQL需要在二次计算是在DRDS执行引擎中进行的,由于单机执行引擎的内存限制无法进行本次计算。SQL复杂的计算部分可以下推,但是涉及的数据规模大,会增加物理数据库的压力,影响OLTP业务,或者响应时间太慢,达不到要求。总结长期以来,DRDS受限于单机架构的执行引擎,未能很好地支持基于大数据规模的复杂查询,也无法实现自身本地计算能力的线性扩展通过扩大物理资源。DRDS只读实例的引入,完全弥补了DRDS在OLAP场景下的短板,使DRDS能够同时提供强大的OLTP能力和可扩展的OLAP能力,为用户提供兼具OLTP需求和中等规模数据分析需求的用户-一站式整体解决方案为用户带来便利。未来六个月,DRDS只读实例将发布跨逻辑库关联查询功能,并通过更多技术手段,不断提升只读实例的核心能力,并发、响应时间、数据量、交互查询等都会得到提升。具有更好的性能,满足企业级应用对数据库的苛刻要求。