ITPub博客

首页 > 数据库 > 数据库开发技术 > 七座城堡③HTAP【上】

七座城堡③HTAP【上】

原创 数据库开发技术 作者:梁敬彬 时间:2025-04-11 05:04:57 0 删除 编辑

         往期回顾

-      ---------------------

         七座城堡①OLTP(上)

          七座城堡①OLTP(下)

-      ------------------------

          七座城堡② OLAP(上)

          七座城堡② OLAP(下)

 -       -----------------------


10. 两座城堡的巧妙配合


转眼间,OLAP城堡如期建成。当听闻这座城堡的卓越成果后,好学的老王兴奋不已,立即决定前往视察。在老柯的陪同下,老王登上了OLAP城堡的最高处,俯瞰着对面的OLTP城堡。这两座城堡相互呼应,景象壮观,老王心情愉悦。

老王:老柯,上次你提到的问题,在这次OLAP城堡建好后应该都解决了吧,具体什么情况,你给我讲讲吧。

老柯:老王,建完OLAP城堡之后,我们把OLTP城堡中需要分析的数据同步到了咱们这座OLAP城堡来,这样需要复杂查询分析的工作就都交给这个OLAP城堡了,在OLAP城堡里表都被设计为列存储模式,并且都有着极高的压缩比,再加上增加并行度和灵活分配内存等手段的结合,如今查询分析的工作性能大幅提升了。对于一些特别大的查询任务,我们就采用空间换时间的方式,将结果提前算好。所以现在您的智囊团在做分析工作时候,已经如鱼得水,再也不抱怨了。与此OLTP城堡因为没有了分析的需求,资源释放了许多,压力也得到了一定程度的缓解,此外由于有了这个OLAP城堡,原先OLTP城堡的历史数据可以迁移到OLAP城堡中,这样不仅释放了空间,还进一步提升了性能。而转入OLAP城堡的数据被转成了列式存储,在20倍压缩比加持下,存储压力也并不是太大。两座城堡的相互配合可谓珠联璧合,相得益彰。

老王:两大城堡行列组合吗,互通有无。这是取长补短的经典案例啊,太棒了!

老柯:老王,其实我们还是面临了很多的挑战的,您猜猜从OLAP城堡建成到今天,OLAP城堡的数据量增加了多少倍,访问量增加了多少倍?

老王:“倍?不至于吧”。

老柯:是的,我来告诉您吧,数据量增加了10倍,SQL访问量增加了20倍。

老王:这么可怕,那你们是怎么支撑住的?

老柯:不管是什么类型的数据库,要说如何提升数据库SQL的性能,其实无非就两个方式,增大资源(如CPU、内存、存储及网络等)和减少访问路径。在资源有限的情况下,你为这个SQL增大资源,就减少了那个SQL的资源,所以关键是如何合理规划资源。

再说减少访问路径,关于减少访问路径我们分为两种,一种是技术层面的实现方式(其实也是基于业务催生出来的技术):如列存、压缩,索引,甚至包括有着内部优化的高级SQL等。另一种是业务层面的实现方式:如利用报表的非实时性提前计算结果来完成空间换时间、清理不必要的数据等。而这两种方式中,技术层面的事最基础,该做的早就做了。所以推导到最后,我们的重点是合理规划资源、在业务层面实现减少SQL的访问路径。


11. 空间换时间


老王:逻辑非常清晰,这就是SQL优化的方法论啊。你说的业务层面减少SQL访问路径不就提前算计算,空间换时间吗,原先不也这么做吗,有什么特别之处吗?

老柯:老王果然睿智,是的,确实有特别之处,主要就是巧妙的利用了业务场景特征。您看OLTP城堡主要给人们衣食出行提供服务,而OLAP城堡则助力国家部门人员的的统计分析工作。这些场景都是人在使用,而人是要下班要休息的,于是一个显著的特征出来了:两座城堡呈现基本白天繁忙而晚上清闲的状态。

老王:哦,我还没想到这一层,然后呢?

老柯:如果晚上很闲,我们就没有很好的规划好资源,现在我们要做的就是让两座城堡晚上忙碌起来。首先还是在规则上完成规划,经过调研,咱们智囊团绝大部份的分析需求都允许至少在一天以上。基于此我们取消了OLTP与OLAP实时同步的机制,只允许两座城堡在晚上进行数据同步,让两座城堡白天的资源分配能更加最合理,毕竟传输与接收都会给数据库城堡带来不小的开销。

到了晚上,两座城堡依然忙碌。首先来看看OLTP城堡,我们可不满足仅仅将数据直接同步到OLAP城堡,这样就不能很好的利用OLTP城堡的计算能力,既然晚上资源很闲,我们就从直接同步改成先算后同步,把之前OLAP城堡需要做的工作挪到OLTP城堡来完成,比如完成一些简单聚合汇总、对数据对列做一些提前量的计算等等。总之目标就是在争取用满OLTP城堡资源的前提下,尽可能把OLAP城堡需要做的事给提前做了。

接下来是OLAP城堡,由于收到的都是预计算过的数据,OLAP城堡已经省心很多了,将更多的精力放在进一步预计算上,原先只是针对一些特别大的任务我们用空间换时间的方法提前算结果,现在就不是这样了,只要是符合空间换时间策略要求的,一律用空间换时间。目的只有一个,要把OLAP城堡夜间的资源尽量的打满,各种计算疯狂进行,当下我们夜间的资源利用率比白天还要高。就这样,天亮时,这些空间换时间计算的成果无论是一个具体结果集、还是汇聚的小宽表这不重要,重要的是大部分的查询都落在预计算后的输出结果上,比如减少了访问路径。

老王:你们这是把资源利用和减少访问路径做到极 致啊!

老柯:老您说做到极 致还真不为过,为了确保能把夜间资源尽量跑满,我们还做了自动检测资源阈值的机制,在系统资源未跑到指定阈值时时后自动加大运算,直到达到资源使用阈值为止。我们这是用晚上的辛苦换取白天的安宁。

老王:啊,真是超出了我的想象啊。


未完待续…

七座城堡③HTAP(下)


公众号:收获不止数据库

微信:ljbyxl1213

系列回顾


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9091385/viewspace-3080619/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
历任中电福富研究院副理事长、中盾安信研究院副院长、宁德时代技术顾问等职务,受聘电信集团专家和国家十四五课题负责人,著有《收获,不止Oracle》《收获,不止SQL优化》等多本畅销数据库技术书籍。

注册时间:2024-02-06

  • 博文量
    162
  • 访问量
    198374