揭秘Hologres如何支持超高QPS在线办事(点查)场景

Hologres(中文名交互式分解)是阿里云自研的一站式及时数仓,这个云原生系统融合了及时办事和分解大数据的场景,全面兼容PostgreSQL协定并与大数据生态无缝打通,能用同一套数据架构同时支持及时写入及时盘问以及及时离线联邦分解。它的出现简化了业务的架构,为业务提供及时决策的能力,让大数据发挥出更大的商业价值。本期将为大家揭秘Hologres如何支持超高QPS点查。传统的 OLAP 系统在业务中往往扮演着比较静态的角色,以通过分解海量的数据得到业务的洞察(比如说预计算好的视图、模型等),从这些海量数据分解到的结

Hologres(中文名交互式分解)是阿里云自研的一站式及时数仓,这个云原生系统融合了及时办事和分解大数据的场景,全面兼容PostgreSQL协定并与大数据生态无缝打通,能用同一套数据架构同时支持及时写入及时盘问以及及时离线联邦分解。它的出现简化了业务的架构,为业务提供及时决策的能力,让大数据发挥出更大的商业价值。

本期将为大家揭秘Hologres如何支持超高QPS点查。

传统的 OLAP 系统在业务中往往扮演着比较静态的角色,以通过分解海量的数据得到业务的洞察(比如说预计算好的视图、模型等),从这些海量数据分解到的结果再通过另外一个系统提供在线数据办事(比如HBase、Redis、MySQL等)。这里的办事(Serving)和分解(Analytical)是个割裂的过程。与此不同的是,实际的业务决策过程往往是一个持续优化的在线过程。办事的过程会产生大量的新数据,我们需要对这些新数据举行复杂的分解。分解产生的洞察及时反馈到办事,让业务的决策更及时,从而创造更大的商业价值。

Hologres定位是一站式及时数仓,融合分解能力(Analytical)与在线办事(Serving)为一体,减少数据的割裂和移动。本文的内容将会针对Hologres的办事能力(核心为点查能力),介绍Hologres到底具备哪些办事能力,以及背后的实现原理。

通常我们所说的点查场景是指Key/Value盘问的场景,广泛用于在线办事。由于点查场景的广泛需求,市场上存在多种KV数据库定位于支持高吞吐、低延时的点查场景,例如被大家广而熟知的HBase,它通过自定义的一套API来提供点查的能力,在许多业务场景都能够获得较好的效果。但是HBase在实际使用中也会存在一定的缺点,这也使得很多业务从HBase迁移至Hologres,主要有以下几点:

当数据规模大到一定程度的时候,HBase在性能方面将会有所下降,无法满足大规模的点查计算,同时在稳定性上也变得不如人意,需要有经验的运维支持HBase提供的是自定义API,上手有一定的成本。Hologres直接通过SQL提供高吞吐、低延时的点查办事。相比于其它KV系统提供自定义API,SQL接口无疑更加的简单易用。HBase采用Schema Free设计,没有数据类型,对于检查数据质量,修正数据质量也带来了复杂度,查错难,修正难。Hologres具备与Postgres兼容的几乎所有主流数据类型,可以通过Insert/Select/Update/Delete标准SQL语句对数据举行查看、更新。在Hologres中的点查场景是指行存表基于主键(PK)的盘问。–建行存表
BEGIN;
CREATE TABLE public.holotest (
"a" text NOT NULL,
"b" text NOT NULL,
"c" text NOT NULL,
"d" text NOT NULL,
"e" text NOT NULL,
PRIMARY KEY (a,b)
);
CALL SET_TABLE_PROPERTY('public.holotest', 'orientation', 'row');
CALL SET_TABLE_PROPERTY('public.holotest', 'time_to_live_in_seconds', '3153600000');
COMMIT;

— Hologres通过SQL举行点查
select * from table where pk = ?; — 一次盘问单个点
select * from table where pk in (?, ?, ?, ?, ?); — 一次盘问多个点

点查场景技术实现难点

正常情况下,一条SQL语句的实行,需要经过SQL Parser举行剖析成AST(抽象语法树),再由Query Optimizer处理生成Plan(可实行计划),最终通过实行Plan拿到计算结果。而要想通过SQL做到高吞吐、低延时、稳定的点查办事,则必须要克服如下困难:

在不破坏PostgreSQL生态的情况下,SQL接口如何做到高QPS?如何做低甚至避免SQL剖析与优化器的开消一套高效的Client SDK如何与后端保存举行交互?如何在低消耗的情况下,做到高并发的交互如何减少消息传递过程中的开消如何感知后端的压力、配合做到最好的吞吐与延迟后端保存如何在高性能的情况下更加稳定?如何最大化利用cpu资源如何减少各种内存的分配与拷贝、避免热点key等问题对系统带来的不稳定性如何减少冷数据IO的影响

在克服上述3大类困难后,整体的工作方式就可以非常的简洁:在接入层(FrontEnd)上直接通过Client SDK与后端保存通信。

点查1.png

下面将会介绍Hologres是如何克服以上3大困难,从而实现高吞吐低延时的点查。

降低、避免SQL剖析与优化器的开消

Query Optimizer举行Short Cut

由于点查的Query足够简单,Hologres的Query Optimizer举行了相应的short cut,点查Query并不会进入Opimizer的完整流程。Query进入FrontEnd后它会交由Fixed Planner举行处理,并由其生成对于的Fixed Plan(点查的物理Plan),Fixed Planner非常轻,无需经过任何的等价变换、逻辑优化、物理优化等步骤,仅仅是基于AST树举行了一些简单的分解并构建出对应的Fixed Plan,从而尽量规避掉优化器的开消。

Prepared Statement

尽管Query Optimizer对点查Query举行了short cut,但是Query进入到FrontEnd后的剖析开消依然存在、Query Optimizer的开消也没有完全避免。

Hologres兼容Postgres,Postgres的前、后端通信协定有extended协定与simple协定两种:

simple协定:是一次性交互的协定,Client每次会直接发送待实行的SQL给Server,Server收到SQL后直接举行剖析、实行,并将结果返回给Client。simple协定里Server无可避免的至少需要对收到的SQL举行剖析才能理解其语义。extended协定:Client与Server的交互分多阶段完成,整体大致可以分成两大阶段。第一阶段:Client在Server端定义了一个带名字的Statement,并且生成了该Statement所对应的generic plan(不与特定的参数绑定的通用plan)。

点查2.png

第二阶段:用户通过发送具体的参数来实行第一阶段中定义的Statement。第二阶段可以重复实行多次,每次通过带上第一阶段中所定义的Statement名字,以及实行所需要的参数,使用第一阶段生成的generic plan举行实行。由于第二阶段可以通过Statement名字和附带的参数来反复实行第一个阶段所准备好的generic plan,因此第二个段在Frontend的开消几乎等同于0。

为此Hologres基于Postgres的extended协定,支持了Prepared Statement,做到了点查Query在Frontend上的开消接近于0。

高性能的内部通信

BHClient是Hologres实现的一套用于与后端保存直接通信的高效Private Client SDK,主要有以下几个优势:

1)Reactor模型、全程无锁的异步操作

BHClient工作方式类似reactor模型,每个目标shard对应一个eventloop,以“死循环”的方式处理该shard上的请求。由于HOS对调度实行单元的抽象,即使是shard很多的情况下,这种工作方式的基础消耗也足够低。

2)高效的数据交换协定binary row

通过自定义一套内部的数据通信协定binary row来减少整个交互链路上的内存的分配与拷贝。

3)反压与凑批

BHClient可以感知后端的压力,举行自适应的反压与凑批,在不影响原有Latency的情况下提升系统吞吐。

稳定可靠的后端保存

1)LSM(Log Structured Merge Tree)

Hologres的行存表采取LSM举行保存,相比于传统的B+树,LSM能够提供更高的写吞吐,因为它不会出现任何的随机写,Append Only的操作保证了其只会顺序的写盘。

一个行存tablet上会存在一个memtable,和多个immutable memtable。数据更新都会写入到memtable中,当memtable写满后会转变为immtable memtable,immutable memtable会Flush成Key有序的SST(Sorted String Table)文献,SST文献一旦生成则不能修改,因此不会发生随机写的操作。SST文献在文献系统里面按层组织,除了level 0上的SST文献间无序,且存在overlap外,其它level上的SST文献间有序,且无overlap。因此盘问的时候,对于level 0上的文献需要逐个遍历,而其它level的文献可以二分查找。底层的SST文献通过Compaction成新的SST文献去到更高层,因此低层的数据要比高层的新,所以一旦在某层上找到了满足条件的key则无需往更高层去盘问。

2)基于C++纯异步的开发

采用LSM对数据举行组织保存的系统并不仅仅只有Hologres,LSM在谷歌的"BigTable"论文中被提出后,很多的系统都对其举行了借鉴采用,例如HBase。Hologres采用C++举行开发,相较于Java,native语言使得我们能够追求到更极致的性能。同时基于HOS(Hologres Operation System)提供的异步接口举行纯异步开发,HOS通过抽象ExecutionContext来自我管理CPU的调度实行,能够最大化的利用硬件资源、达到吞吐最大化。

3)IO优化与丰富的Cache机制

Hologres实现了非常丰富的Cache机制row cache、block cache、iterator cache、meta cache等,来加速热数据的查找、减少IO访问、避免新内存分配。当无可避免的需要发生IO时,Hologres会对并发IO举行合并、通过wait/notice机制确保只访问一次IO,减少IO处理量。通过生成文献级别的词典及压缩,减少文献物理保存成本及IO访问。

总结

Hologres致力于一站式及时数仓,除了具备处理复杂OLAP分解场景的能力之外,还支持超高QPS在线点查办事,通过使用标准的Postgres SDK接口,就能通过SQL获得低延时、高吞吐的在线办事能力,简化学习成本,提升开发效率。

原创文章,作者:阿里云大数据AI技术,如若转载,请注明出处:https://www.iaiol.com/news/jie-mi-hologres-ru-he-zhi-chi-chao-gao-qps-zai-xian-ban-shi/

(0)
上一篇 2021年 7月 27日 下午5:35
下一篇 2021年 7月 29日 下午6:44

相关推荐

  • 经济学家看「数据」,何谓数据财产时代?

    「数据是一切的起点,华夏又是数据大国,这使得数据运作在华夏变得非常重要。」在昨日举行的2021BAAI智源大会首日全体大会上,清华大学国家金融研究院院长朱民发表了题为《数据财产时代》的主题演讲,剖析了数据的经济学属性和财产特性,阐释了数据财产化的意义和必要性,解读了数据财产化转型将面临的挑战和应对策略。本文整理了朱民博士演讲的部分内容,并在文末附有相关演讲资料。整理报道 | 齐健数据在今天的社会中无处不在,随着数据范围的扩大,数据利用的加深,人们开始愈发重视数据的经济学特征。数据的虚拟特性,使其可重复利用,且转移成

    2021年 6月 2日
  • SIGGRAPH 2021 | 学习带神经交融外形的人物动画

    本文是对发表于计算机图形学顶级会议 SIGGRAPH 2021 的论文 Learning Skeletal Articulations with Neural Blend Shapes 的解读。
    该论文由北京大学陈宝权教授研究团队与北京电影学院未来影像高精尖创新中心、Google Research、特拉维夫大学以及苏黎世联邦理工学院合作,针对骨骼驱动的模型动画的高质量自动化天生进行改进,提出了神经交融外形手艺。实验证明,该法子显著减少了已有法子中需要的人工干预,大大提升了天生动画的质量。

    2022年 7月 18日
  • 如何更迷信地研讨AI+迷信?顶级学者将云集这次ICML研讨会

    ICML将举行一个AI+迷信的研讨会,由来自全球顶尖机构的研讨职员举行,集结了AI+各迷信畛域的领跑者。

    2022年 3月 30日
  • Call for Papers | IEEE国际聚会较量争论社会科学与复杂系统格外专题征文

    DSAA是由 IEEE、ACM、ASA 和 CCF 联合支持的首屈一指的数据科学聚会。

    2022年 3月 30日
  • 申请CS博士学位前,布朗大学Jeff Huang团队这份师资、排名和奖学金统计值得参考

    这是一份申请 CS 博士学位前可以认真参考的统计资料。

    2022年 5月 9日
  • [研究问卷] AI数据猎取与绽放的近况调查

    你是AI从业者或学习者吗?缺少数据做 AI 训练或尝试?华夏情境和语言的数据太少?那就来到场调研,一同改变近况吧!关于问卷我们是《AI 数据绽放的近况与标杆案例呈报》研究团队,由上海白玉兰开源绽放研究院与绽放数据华夏联合组成。我们的效果预期于 2022 年世界人工智能大会期间,由木兰开源社区和白玉兰开源联名颁布。你或许记得我们在 2021 年为了规范和促进 AI 数据绽放所颁布的「木兰-白玉兰绽放数据协议」,而我们现在的研究工作则旨在排摸现在供 AI 训练、尝试所使用的的AI 数据的猎取与绽放情况,从而进一步推出「

    2022年 4月 14日
  • Spark 大数据处理最佳实践

    开源大数据社区 & 阿里云 EMR 系列直播 第十一期主题:Spark 大数据处理最佳实践讲师:简锋,阿里云 EMR 数据开发平台 负责人内容框架:大数据概览如何摆脱技术小白Spark SQL 进修框架EMR Studio 上的大数据最佳实践直播回放:扫描文章底部二维码加入钉群观看回放,或进入链接https://developer.aliyun.com/live/247072一、大数据概览大数据处理 ETL (Data  → Data)大数据分析 BI   (Data &nbs

    2021年 8月 11日
  • 呆板之心CVPR线下论文分享会干货集锦,同时邀你报名ACL 2021论文分享会

    随着人工智能的火热,AAAI、NeurIPS、CVPR 等顶级学术会议的影响力也愈来越大,每年接收论文、参会人数的数量连创新高。但受疫情影响,近两年国外举办的学术会议都转为了线上,无法满足学者们现场交流的需求。以 CVPR 为例,2019 年,CVPR 注册参会人数高达 9227 人,其中来自国内的参会人数就达到 1044 位。因此,在 2020 年和 2021 年,国内 AI 从业者因疫情限制无法进行有效的学术交流。

    2021年 7月 1日
  • 跳过人脸检测和关键点定位,Facebook等提出及时3D人脸姿势估量新法子

    来自 Facebook AI 和美国圣母大学的研究者提出了一种 6 自由度的及时 3D 人脸姿势估量技术,可以不依赖人脸检测和人脸关键点定位独立运行。

    2021年 2月 9日

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注