一站式实时数仓Hologres整体能力介绍

讲师:阿里云Hologres PD丁烨

一、产品定位

随着技术的进步,大数据正从规模化转向实时化处理。用户对传统的T+1分析已不满足,期望获得更高时效性的计算和分析能力。例如实时大屏,城市大脑的交通监控、风控和实时的个性化推荐,各行各业、各种业务都在试图从实时分析中寻找、洞察和创造业务价值。

在典型业务场景中,数据会从交易系统和日志实时同步到数仓。明细数据被实时加工,对于应用和BI提供交互式探索式的分析。同时也会批量化的进行聚合,实现离线的数仓分层。同时,实时数据会与维表进行即时关联(join),之后进行聚合并写入KV数据库,以服务推荐系统。

如今,实时数据正在从成本中心转化成为一种在线业务系统。整套系统包括批、流、olap分析、KV的明细查询,混合多种负载。首先,数据处理分为三个主要链路:离线数据归档至如MaxCompute、Hive等离线数仓,数据在离线数仓中分层后对外提供服务;实时数据写入如ClickHouse、Druid等OLAP系统,提供即时聚合分析;最后,使用Flink进行流式计算,实时汇总数据并写入KV数据库。这个过程中也可能会将实时事件的流数据和存储在KV存储中的维表属性进行打宽,然后再进行聚合。例如真正的事件流是用户浏览淘宝的记录,那么就会匹配上用户的属性、特征,再进行聚合,最后写到KV数据库中。

对于业务,通常需要同时查询历史的数据和实时的数据,进行结果对比。例如今年双十一需要使用去年双十一的数据进行对比和参照。此时就需要使用联邦分析的查询系统,但是对于联邦分析的查询系统来说,性能会受限于最慢的那一方,性能一般无法满足要求。所以在前面可能会把结果导入MySQL或者Redis中进行结果缓存,最终服务于业务报表、业务应用等。图里的每一根线都是一次数据的迁移。

为了搭建实时数仓,一共用了十余种数据技术,架构非常的复杂,数据同步很难且资源消耗大,各个资源之间无法共享,最终还产生了一堆数据孤岛。

面对这样的场景和痛点,Hologres应运而生。Hologres提供了一种数据存储,一款产品能够同时服务上层的多维分析、在线应用数据看板等。同时支持数据离线的高性能导入,也支持实时数据的实时更新,写入即可见,真正做到了一站式实时入仓。

下图是Hologres典型的应用场景。包括传统的统计分析,例如BI报表、实时大屏、数据中台以及现在大量应用的人群运营推荐等,做精准的营销用户画像以及广告投放智能化、个性化的推荐。还包括实时流量监控、网络流量的监控、实时风控、直播的监控,例如实时观看直播间的观看情况、观看时长、进入和退出的用户数等信息。

二、Hologres核心功能及核心优势

Hologres是存储和计算分离的架构。每一个实例的计算层是容器化部署的,分为frontend和worker node两类节点。frontend主要负责协议层的接入、sql的解析优化、实时写入、数据的调度和查询。同时基于独有的fixed plan的技术,实现百万级的RPS写入。worker node主要用于计算,主要负责配合存储引擎实现KV的查询、OLAP查询的多种负载查询,以及读取MaxCompute、OSS等存储,提供湖仓一体的能力。存储层使用阿里自研的DFS盘古存储。存储层支持按需冷热的分层存储。利用分层存储实现冷热数据的分离,从而降低成本,实现性能和成本之间的平衡,同时还支持行存、列存和行列共存以及各类索引,达到不同场景上均有极致的性能。

产品优势

产品的优势主要来自四个方面。

首先支持实时OLAP分析,支持高性能写入,写入即可查。使用了业界主流的列式存储,用来支持OLAP的场景。支持多种索引,包括聚簇索引、Bitmap、字典等。支持向量化的引擎,使用全异步调度框架,最大程度的释放硬件的性能。Hologres从诞生就支持了主键模型,并且支持主键去重,基于主键的全量更新,部分列更新等场景。其次支持Serving的场景、百万到千万级别的高性能检查、行存。同时也支持多副本模式。当副本发生故障的时候,点查会自动重试,最大程度的保证了点查场景的可用性。

其次点查不仅对查询延时非常敏感,同时对稳定性也非常敏感。所以也支持容器级别物理资源隔离,支持读写分离架构,也推出了计算组模式,最大程度保证了多种负载不互相影响。

还支持数据湖的数据交互式分析,不仅支持对maxcompute数据进行分析,还支持对数据湖中表进行秒级交互式查询和加速。在导入能力上,支持百万行每秒极速数据同步,能够快速从MaxCompute或者其他湖存储中把数据同步到Hologres中。在用户使用体验上,无需主动建表,支持原数据自动发现,极大简化用户使用。

最后,Hologres使用PostgreSQL生态,兼容这个生态下的开发工具和BI工具。支持PostgreSQL生态下多种扩展。支持做空间地理分析、空间维度分析。

重点特性

首先是分析性能,TPC-H是世界公认OLAP性能排行榜。至今Hologres以2786万分占据TPC-H性能榜首。

Serverless computing是Hologres最新推出功能,它支持用户将大任务(例如insert查询、update查询、delete查询) 使用全托管Serverless computing资源池执行。每条查询单独分配使用资源进行操作,资源与资源之间互相隔离,互不影响。Serverless computing按照占用计算资源和执行时长收费。那么就无需为周期性大任务预留大量计算资源,而造成没有大作业时计算资源浪费。同时各个ETL任务独立使用资源进行,互相之间资源隔离,互相之间不会争抢,运行更加稳定和更加可靠。最后他不占用现有实例资源,不会影响现有实例的查询,从源头上解决了MPP架构上跑大任务的痛点,在稳定性和性价比上找到了平衡。

其次是资源隔离能力,MPP架构中最大痛点也就是资源隔离。Hologres在之前已经推出了共享存储的读写分离模式,它有主实例和从实例,主从之间数据毫秒级延迟。在原有架构基础上,Hologres再做升级,推出了计算组实例,实例内可以划分多个计算组,多个计算组之间共享存储,数据毫秒延迟,计算资源物理隔离,计算组与计算组之间故障式隔离。计算组支持弹性扩缩容,支持按时弹性,支持系统级高可用。通过标准SQL接口可以支持根据用户路由、负载自动路由自动切换。对外只暴露统一的endpoint。在用户需要切换的时候,无需上层应用变更任何代码,不用做任何配置修改,用户即可在实例层面主动进行切换。同时计算组支持在线扩缩容,在扩容和缩容期间查询不会中断。

高性能、高吞吐的实时写入是Hologres一直以来的优势能力。传统OLAP引擎写入数据时需要经过查询优化器、协调器、查询引擎、存储引擎等多个组件。Hologres对于特定查询,可以用FixedPlan模式进行写入数据,即不经过优化器、协调器、查询引擎、存储引擎等多个组件,极大缩短写入链路,显著提高写入性能。上图左下角是典型insert语句执行过程,它会经过各个组件才把数据写下去。使用FixedPlan之后,省去了中间的多余步骤,提高了性能。数据通过SQL写入的时候,SQL返回即表示写入完成,数据写入即可见,从写入到可查询的延迟在毫秒级别。同时Hologres支持多种存储,包括行存、列存和行列共存,用来服务不同负载场景。同时基于自研的FixedPlan优化原理,简化写入链路,实现高吞吐高并发的更新和删除,RPS可达百万以上。

Hologres在第一天就完整支持了组件场景,支持了exactly once语义,全场景支持主键去重、完整支持高性能,可以根据业务场景去选择适合写入模式,来满足不同场景下对于写入的需求。

随着日志分析兴起,半结构化数据变得越来越流行。它有很多优势,例如可以自由增加Key,在Key时不需要变更上下游数据。但是JSON也会带来很多问题,比如说查询更加耗费资源等问题。那么Hologres支持将Jason数据在写入的时候就做解析,它可以解析出来key和value,然后使用列存方式存储下来。例如上图左侧的JSON数据,如果需要查询男性平均年龄,当没有使用列存的时候,需要把当中所有key和value都查询出来,在列存中做筛选再做聚合。如果使用列存化之后,当数据存储的时候,就已经按照列存储下来。Hologres会根据解析出来的数据类型,选择合适的数据类型进行列存压缩和存储。在存储上会有明显提升,减少存储空间和降低存储成本。在查询时只需要查出年龄相关数据和性别相关数据。

同时在数据上可以使用bitmap索引。进一步提升查询和检索数据效率。从数据量、IO量、检索量上,多重方式、多种层次去优化查询性能。同时,和其他厂商不同,Hologres使用了原生PG协议下的JSON数据类型,可以很好跟与BI工具兼容,在BI场景下也可以原生使用列 存化能力。

同时,Hologres也支持冷热分层,只需指定表的冷热分层策略,即可以享受冷热分层存储能力,无需购买其他额外存储或者做其他数据搬迁。支持基于指定规则实现冷热分层的自动转储。转储过程中是异步,业务无感知,也不会影响读写。在使用查询的时候,会根据不同存储去查不同存储上数据。

Binlog能力是Hologres有别于其他olap的重要能力。在传统数仓中,olap就是数据终点。但是Hologres提供了Binlog,让Hologres不再仅仅是数据终点,它也可以是数据起点。Hologres的Binlog类似于传统数据库Binlog,用来记录单条数据修改日志。包括insert、delete before update、after update 4种事件类型。基于这样能力,Binlog可以被JDBC消费,也可以被flink消费,实现实时数仓分层。Flink可以基于ODS层的Binlog加工DWD层Binlog,最终得到ADS层数据,实现层层数据加工。做到真正全链路事件驱动开发,而不是原基于调度任务的开发。

Hologres一直在深耕流量分析场景,支持了丰富的分析函数,从最初的漏斗分析函数扩展到区间漏斗分析函数语法,可以用来做漏斗转化的分析。后来又实现了路径分析。它可以用于分析每个步骤流向和流量分层。在Hologres里面只需要通过简单函数,即可以实现复杂桑基图分析。在其他引擎里面如果要做分析,需要多种函数,多条语句互相嵌套,才可以实现部分桑基图功能。最后还有留存扩展函数,仅需要函数就可以画出数据分析。且中间经过高度优化, 性能比传统嵌套写法会有数百倍提升。

在数仓上,行为分析、画像分析都是非常核心场景。对比Doris、Clickhouse等产品在这些场景上的能力,Hologres完整覆盖了漏斗分析、留存分析、路径分析、属性标签分析和行为分析五大分析场景,真正做到了全场景全覆盖。而且在每场景都有完整函数支持。不仅在性能上全覆盖,功能上全覆盖,在函数上也做到了真正全覆盖。

在Hologres中原生支持Roaring Bitmap函数,可以将用户ID构建成Roaring Bitmap,实现标签快速分析。同时在2.1版本开始,支持了BSI函数,通过BSI高效压缩和切片索引实现标签高效分析。同时在查询时,可以通过二进制原理和Roaring Bitmap交并差进行快速计算,支持对高基数进行标签压缩存储和低延迟查询,从而实现属性标签和行为标签高效联动分析。Roaring Bitmap多用于属性标签,BSI函数多用于行为标签和属性标签联合查询。在保证精度的同时还可以避免与明细表进行关联查询。同时也支持高基数的行为标签,通常与Roaring Bitmap连用。

上图是Hologres主要产品组合,覆盖了实时数仓、离线数仓、湖仓一体和流批一体场景。实时交易系统的数据和消息队列的数据通常使用Flink进行实时处理,同时和Hologres可能会有维表关联,然后将数据写到Hologres里面。Dataworks作为统一开发平台,做离线和实时全链路开发。包括支持统一血缘分析,以及数据集成,能够将数据库里的数据通过简单配置就可以实时同步到Hologres中。对于离线部分,Hologres支持对湖上数据和MaxCompute数据进行高速分析,高速加速以及高速导入。同时也支持高速归档到MaxCompute或OSS中。

对外提供KV高性能点查服务,以及olap多维分析能力。首先Hologres和flink可以组成企业级实时数仓架构。Hologres作为flink最佳搭档,同时支持了flink所有功能特性。当作为结果表时,支持高性能写入和更新数据,写入即可见。作为源表时,支持全量读取、binlog读取、CDC读取和全增量一体化多种方式读取。作为维表,支持高性能维表关联,数据打宽等多种应用场景。最后深度集成了catalog能力,支持原数据打通,支持原数据自动发现。在CDC场景中,上游数据发生了变化,就可以驱动Hologres中的表结构发生变更,进行schema evolution,不需要额外去重新配置flink任务即可实现。

上图是湖仓一体场景。DLF在这个场景中会提供原数据管理和发现能力。Hologres可以无缝自动发现DLF原数据。在整个架构中,Hologres支持加速和读取多种数据库格式,包括Paimon、Hudi、delta等外表格式。同时支持DLF源数据自动发现,支持OSS-HDFS高性能读取,与hadoop生态无缝集成。使用形态上, Hologres还提供了共享集群模式,可以按照查询、扫描量来按量付费,极大降低了数据库的分析门槛。

三、典型案例

案例一:国民种草笔记小红书

Hologresce主要应用在客户搜索推荐场景。搜索推荐是内容平台电商极其重要场景,需要通过大数据体系对海量信息和人群进行精准高效匹配,从而为用户推荐最精准内容。小红书推荐业务下有多种典型OLAP业务和分析场景,包括实时业务指标告警,实时指标核对等。推荐系统通过自建开源系统来完成,其中由自建的Clickhouse集群承担OLAP分析业务。但是随着业务高速增长,自建Clickhouse痛点越来越明显,无法满足业务诉求。其中包括自建的集群成本高,只能存储七天以内数据,否则就会存储爆炸;其次是查询慢,只能查询三天以内数据;接着Clickhouse没有主键,无法对主键去重,当上游flink任务fillover时很容易抖动。集群摆运维复杂,排查问题链路长。小红书业务就抛弃了自建的Clickhouse集群。通过Hologres助力搜索推荐业务上云。上云之后,客户收到了明显收益,包括免运维,节省人力成本;查询快,通过Hologres可以轻松查询 15天数据。同时Hologres提供了各类场景分析类函数,极大简化了查询使用成本和使用门槛。最后Hologres能够实现业务快速去重。上游任务有任何fillover也没有影响。Hologres在重新写入的时候,不会产生脏数据。Hologres存储和计算分离,可以轻松存储15天数据。如果后面数据还要多,可以轻松实现动态扩容。

案例二:阿里妈妈

广告业务是核心场景业务。在广告场景上实时推荐是非常典型的提升商业化收入方法。对于阿里妈妈这样广告平台来说,其目标是用更好商家端营销产品服务广告主,帮助广告主进行人群投放,提升经营效果。为了解决广告主更加实时且智能的实时推荐需求,阿里妈妈通过数据团队,通过flink加sql自研了一套具有AI分析的超融合一体化平台。其中flink提供实时计算,支持streaming和batch计算能力,实现流批一体。Hologres负责存储一体,并且向上提供olap分析能力,结合AI计算能力实现人群圈选,实时推荐。团队在上层自研SQL组件,实现SQL自动转移路由等能力;index build等组件,充分资源调度并改善算法能力,支持精准向量召回模型打分。

阿里妈妈通过flink加Hologres搭建广告智能计算引擎,尤其是结合Hologres bitmap和向量计算能力,给下游业务带来了巨大收益。包括秒级olap计算能力,毫秒级在线服务,提供毫秒级实时营销推荐和毫秒级用户召回计算,开发效率提升了三倍以上。Flink加Hologres的深度集成系统,支持数据加工和在线服务,显著提高了开发效率。

案例三:37手游

37手游是37互娱集团下的运营子公司,致力于游戏发行业务,在中国大陆地区37手游已近10%市场占有率,仅次于腾讯和网易,位居top 3。37手游原有大数据平台全套使用开源flink+Presto+HBase+Clickhouse的架构。主要具有如下痛点,原有的ETL链路非常复杂;开源flink缺乏schema evolution能力,变更表结构需要重启任务,操作非常麻烦;查询需要额外加速,整个链路非常冗余。同时两种查询引擎不能统一起来,OLAP架构冗余,查询慢,OLAP组件多,操作非常繁琐;OLAP查询引擎性能不足,无法满足业务快速增长的需求;系统多,存储冗余,成本居高不下,集群稳定性需要专人去做运维。

在全面上云之后,带来了非常显著的业务收益。首先使用Hologres之后,业务写入即可见,百万数据更新毫秒延迟,业务拿数据更实时,不同于过去Clickhouse方式,需要和数据合并之后,才能看到最新的结果。然后阿里云flink提供了完整schema evolution能力,降低了开发和运维管理成本、使用成本。实时链路flink直接读取,Hologres+Binlog替代kafka,减少了数据流转。在整个数仓分层中,不需要两套存储即可实现整个实时数仓分层。Hologres统一了数据服务出口,查询毫秒级延迟,相比Clickhouse性能有百分之百的提升,join运行性能有十倍以上提升。架构更简单、更灵活,运维更方便;上新业务或业务变更的时候变得更加敏捷,整个开发效率变得更高。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/735277.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机专业:昔日万金油,明日科技潮头的弄潮儿

高考后的十字路口:计算机专业,依旧闪耀吗? 随着2024年高考的尘埃落定,数百万青春洋溢的脸庞再次凝视着未来的迷雾,试图在繁星点点的专业宇宙中找到那颗最亮的星——计算机科学与技术。长久以来,计算机专业…

如何在Windows 11和10上清除更新缓存?这里提供了几种方法

​Windows 11和Windows 10都可以非常轻松地清除Windows更新缓存。可以使用图形方法或命令行选项删除保存的更新文件。我们将向你展示你的可用选项。 为什么要清除Windows更新缓存 你可能希望清除Windows更新缓存的原因有很多。 你可能在查找或安装更新时遇到问题,清除缓存通…

ansible 模块进阶及变量

yum 模块进阶 - name: install pkgs hosts: webservers tasks: - name: install web pkgs # 此任务通过yum安装三个包 yum: name: httpd,php,php-mysqlnd state: present # 根据功能等,可以将一系列软件放到一个组中,安装软件包组,将会把很…

IK分词器---Elasticsearch(standard、ik_smart、ik_max_word、拓展词典---ik_max_word)

IK分词器 Elasticsearch的关键就是倒排索引,而倒排索引依赖于对文档内容的分词,而分词则需要高效、精准的分词算法,IK分词器就是这样一个中文分词算法。 1.4.1.安装IK分词器 方案一:在线安装 运行一个命令即可: do…

稳态与敏态业务阶段

稳态业务就是比如你登录学校的图书馆教务处这些业务系统 用户数量和数据基本上不会发生太大的变化 业务系统的更新也不是很频繁,比较方便资源的采购 敏态业务就是比如我开发一个应用上线了,我不知道有多少用户和数量,无法预估 这就没办法…

ru俄罗斯域名如何申请SSL证书?

我们日常看到的都是com这种国际域名比较普遍,尤其是主流网站,主要原因考虑的其通用性,那么对于地方性的域名大家很少看到,比如俄罗斯国家域名.ru大家还是有些陌生的,但要说中国.CN域名那你就很熟悉了。 有用户在申请过…

python子类调用其他.py文件的父类

main.py需要使用os.py中的构造类。 os.py中定义了一个Ui_MainWindow类 在main.py中定义了一个MyMainWindow子类,传入两个父类的变量名 super(Ui_MainWindow, self).__init__()super() super() 是一个内置函数,用于返回一个代表父类的对象,…

使用Mysql模糊查询指定多个字段条件,输出结果的详细教程!

本篇文章主要讲解:通过mysql实现对多个列字段进行模糊查询的方式说明,通过本篇文章你可以快速掌握对多条件查询的方法 日期:2024年6月22日 作者:任聪聪 一、准备工作 步骤一、新建一个test数据库,如下图: …

使用C语言实现植物大战僵尸教程

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

如何使用kimi智能助手:您的智能生活小助手

Kimi智能助手是一款功能强大的AI工具,旨在帮助用户提高工作效率和生活品质。下面小编将详细介绍如何使用Kimi智能助手,涵盖其主要功能以及一些实用技巧。 一、Kimi智能助手的主要功能 多语言对话能力:Kimi擅长中文和英文的对话,可…

Ubuntu编译安装sqlite3库

基础环境说明:本机使用Windows 11 家庭版本搭载 Ubuntu 22.04.4 LTS 子系统。进行sqlite3 数据库源码编译和库函数生成。 sqlite3的简介 什么是SQLite3? sqlite3是一个进程内的库,实现了自给自足、无服务器、零配置、事务性的SQL数据库引擎…

[手机Linux PostmarketOS]一,1加6T真正的手机Linux系统

前面用Linux deploy软件安装了Linux系统在手机,实则不是真正的手机刷成了linux系统,而是通过Linux deploy软件在容器里安装了Linux系统,在使用方面会有诸多限制,并不能发挥Linux的真实强大之处,于是我又百度又谷歌(真不…

《分析模式》“鸦脚”表示法起源,Everest、Barker和Hay

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 《分析模式》这本书里面用的并不是UML表示法。作者Martin Fowler在书中也说了,该书写于1994-1995年,当时还没有UML。作者在书中用的是一种常被人称为“鸦脚”的…

常见数字化转型方案撰写的思维模式

通过这一段时间的学习和倾听,结合DAMA数据管理知识体系学习与项目实践,对大部分数据治理类项目、信息化建设和数字化转型项目的思维模式做了一些总结梳理,具体有如下四种,供参考。 一、方法1:结合环境六边形法 1.要点题,弄清楚问题是什么 2.目标原则有哪些,补充哪些 3.…

web基础学习

1、安装 1.1、创建一个 React 新项目 如果你正在学习 React 或者考虑将其应用到现有的项目中,你可以 利用 script 标签将 React 添加到任何 HTML 页面 来快速开启学习之旅。如果你的项目需要许多组件和许多文件,那就需要考虑以下方式了! 1…

1-Wire的使用

代码: ds18b20.c /*《AVR专题精选》随书例程3.通信接口使用技巧项目:1-Wire 单总线的使用文件:ds1820.c说明:DS18B20驱动文件。为了简单,没有读取芯片地址,也没有计算校验作者:邵子扬时间&…

学生选课管理系统(JAVA课设)PS:有前端界面

1.课设要求描述 实现系统的所有功能,包括但不限于: 学生信息管理(增加、删除、修改、查询)课程信息管理选课操作成绩管理 2.制作思路及基础讲解 此项目主要是用于完成大二下半学期的JAVA大作业,也可当作课设&…

详细解析MATLAB和Simulink中的文件格式:mat, mdl, mexw32, 和 m 文件

matlab 探索MATLAB和Simulink中的文件格式:MAT, MDL, MEXW32, 和 M 文件**MAT 文件 (.mat)****MDL 文件 (.mdl)****MEX 文件 (.mexw32/.mexw64)****M 文件 (.m)****总结** 探索MATLAB和Simulink中的文件格式:MAT, MDL, MEXW32, 和 M 文件 当你开始使用M…

纯js开发在线截图生成器工具,思路和方法在这里

不谈使用转账付款交易截图的用途是什么,我这里只谈怎么通过代码来实现这个功能的思路,以及用到的技术。 最近有个客户找到探奇客需要定制一个截图生成的工具。开发后的效果是这样的 开发这个转账付款交易截图生成器用到了这些组件,这里就直接…

C# OCCT Winform 界面搭建

目录 1.创建一个WInform项目 2.代码总览 代码解析 3.添加模型到场景 4.鼠标交互 1.创建一个WInform项目 2.代码总览 using Macad.Occt.Helper; using Macad.Occt; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Remoting.Co…