祗疼妳一个 发表于 2025-4-12 06:08:07

Apache Doris & SelectDB 技术能力全面解析

Apache Doris 是一款开源的 MPP 数据库,以其优异的分析性能著称,被各行各业广泛应用在实时数据分析、湖仓融合分析、日记与可观测性分析、湖仓构建等场景。Apache Doris 如今被 5000 多家中大型的企业深度应用在生产系统中,包含互联网、金融、制造、电信、能源、物流、政务等行业。如今项目已在 GitHub 获得超过 13000 Star,汇集 600 多名社区开发者,月度活跃贡献者数量连续数月位居全球大数据开源项目榜首,成为全球大数据领域最活跃的开源项目之一。
https://i-blog.csdnimg.cn/img_convert/f606e5897f25abd6dd0c2df06aac7909.png
SelectDB 是北京飞轮数据科技有限公司基于 Apache Doris 研发的现代化实时数据仓库,提供包罗面向私有化部署的 SelectDB Enterprise 和云原生存算分离的 SelectDB Cloud 云数仓服务。SelectDB 兼容 Apache Doris 的所有能力和接口,相比开源自建在安全、稳固、资源弹性等方面有明显上风。本文将对 Doris & SelectDB 适合的分析场景和技术能力举行概述解析。
1. Doris & SelectDB 典型分析场景

https://i-blog.csdnimg.cn/img_convert/48d23763fa507031646520cef119bdf0.jpeg
SelectDB & Doris 在如下的分析场景中通常是最优选择:


[*]实时分析

[*]面向内部的实时报表和 Dashboard。
[*]Ad-Hoc 分析和自助式 BI。
[*]面向终端客户 / 用户的高并发分析(Customer / User Facing Analysis):比如电商平台面向数百万广告主 / 店铺的数据分析、面向数十万快递员的分析,这类分析通常必要非常高的并发和较低的延时。
[*]用户行为和画像分析(CDP,Customer Data Platform):分析用户参与、留存、转化等行为,A/B Testing,支持人群洞察和人群圈选等画像分析,实现精致化的运营和精准的营销。

[*]湖仓融合分析

[*]湖仓查询和计算加快:作为查询引擎直接查询 Iceberg, Hudi, Paimon, DeltaLake, Hive 等湖仓中的数据,在不移动数据的情况下,实现查询分析的数倍加快。
[*]多源联邦分析:作为同一的查询网关,支持跨多个数据源查询位于数据湖、数据仓库、数据库中的数据,实现联邦查询,简化架构并消除数据孤岛。

[*]可观测性和日记分析

[*]实现对日记、事件、traces 的高效存储和分析,更换 Elasticsearch, Loki, ClickHouse 等方案,实现数倍的性价比提升。

[*]湖仓构建

[*]对数据举行 ETL / ELT 实现数据的加工和建模,数据可以同一在 SelectDB & Doris 中存储管理,也可以将加工处理过的数据回写到 Iceberg,Hudi,Paimon,DeltaLake,Hive 等 Data LakeHouse 中,实现湖仓融合构建。

2. Doris & SelectDB 技术能力解析

2.1 极速

Doris & SelectDB 的查询分析性能非常优异,在宽表聚合分析和复杂多表关联场景中均表现突出:


[*]在宽表聚合场景下,利用 SSB-FLAT benchmark 测试,雷同资源下,是 ClickHouse 的 3.4 倍,是 Presto 的 92 倍,是业界标杆产物 Snowflake 的 6 倍。
[*]在多表关联场景下,利用 TPC-H benchmark 测试,雷同资源下,其性能可达到 Redshift 的 1.5 倍,ClickHouse 的 49 倍,是业界标杆产物 Snowflake 的 2.5 倍,是 Greenplum 和 Presto 的 15 倍。
Doris & SelectDB 云云卓越的性能主要得益于以下技术加持:
2.1.1 列式存储

Doris & SelectDB 默认利用列式存储组织数据,在数据分析场景下,相比行存储通常有 5-10 倍的性能提升,这是因为:


[*]只必要读取 SQL 查询涉及的列,不相关的列无需读取息争压过滤,大大降低了 IO 和 CPU 开销。
[*]同一列的数据类型一致,方便举行高效的数据编码和压缩。数值类型采用 RLE 编码,字符串利用字典编码。编码后利用 LZ4 或者 ZSTD 等压缩算法压缩,大幅淘汰了数据存储空间,也节省了读取 IO。
https://i-blog.csdnimg.cn/img_convert/620a0b894b20a70023f774f4eb484c01.jpeg
2.1.2 丰富的索引

Doris & SelectDB 支持丰富的索引机制,通过索引机制,可以大幅淘汰对不相关数据的读取和处理,从而能够大幅提升性能。从加快的查询和原理来看,Doris & SelectDB 的索引分为点查索引和跳数索引两大类。


[*] 点查索引:常用于加快点查。 其原理是通过索引定位到满足 WHERE 条件的位置,直接读取其所在行。点查索引在满足条件的行数较少时,结果尤为明显。其点查索引包罗前缀索引和倒排索引。

[*]前缀索引:按照排序键以有序的方式存储数据,并每隔 1024 行数据创建一个稀疏前缀索引。索引中的 Key 是当前 1024 行中第一行中排序列的值。如果查询涉及已排序列,系统将找到相关 1024 行组的第一行,并从该行开始扫描。
[*]倒排索引:对创建了倒排索引的列,创建每个值到对应行号集合的倒排表。对于等值查询,先从倒排表中查到行号集合,然后直接读取对应行的数据,而无需逐行扫描匹配数据,从而淘汰 I/O 、加快查询。倒排索引还能加快范围过滤、文本关键词匹配,算法更加复杂但基本原理类似。
https://i-blog.csdnimg.cn/img_convert/a578aac7b0368cb086527a730567323a.jpeg

[*] **跳数索引:常用于加快分析。**原理是通过索引确定不满足 WHERE 条件的数据块,跳过这些不满足条件的数据块,只读取可能满足条件的数据块并再举行一次逐行过滤,最终得到满足条件的行。跳数索引在满足条件的行比力多时结果较好。其跳数索引包罗 ZoneMap 索引、BloomFilter 索引、NGram BloomFilter 索引。

[*]ZoneMap 索引:自动维护每一列的统计信息,为每一个数据文件(Segment)和数据块(Page)记载最大值、最小值、是否有 NULL、Sum。对于等值查询、范围查询、IS NULL,可以通过最大值、最小值、是否有 NULL 来判断数据文件和数据块是否可以包含满足条件的数据,如果没有则跳过不读对应的文件或数据块淘汰 I/O 加快查询。比如下方 SQL 所示,有一个过滤条件 a<='100101',统共有三个数据块,第一个数据块通过读 ZoneMap 索引发现,最大值是 100101,整个数据块都满足条件,那么直接从 ZoneMap 中取得 sum 结果作为第一个数据块的聚合结果,不必要读取息争压数据块。而第三个数据块 ZoneMap 记载的最小值都不满足过滤条件,以是第三个数据块直接排除。最终只必要解压、过滤和聚合第二个数据块。
https://i-blog.csdnimg.cn/img_convert/532ff22e5f27c764ea0f00007b1ff44e.jpeg
   

[*] BloomFilter 索引:将索引对应列的可能取值存入 BloomFilter 数据结构中,它可以快速判断一个值是否在 BloomFilter 里面,而且 BloomFilter 存储空间占用很低。对于等值查询,如果判断这个值不在 BloomFilter 里面,就可以跳过对应的数据文件或者数据块淘汰 I/O 加快查询。
[*] NGram BloomFilter 索引:用于加快文本 LIKE 查询,基本原理与 BloomFilter 索引类似,只是存入 BloomFilter 的不是原始文本的值,而是对文本举行 NGram 分词,每个词作为值存入 BloomFilter。对于 LIKE 查询,将 LIKE 的 pattern 也举行 NGram 分词,判断每个词是否在 BloomFilter 中,如果某个词不在,则对应的数据文件或者数据块就不满足 LIKE 条件,可以跳过这部分数据淘汰 I/O 加快查询。
https://i-blog.csdnimg.cn/img_convert/f5402c04d0b791b45bd1a5d6923ffe84.jpeg

2.1.3 MPP 架构

Doris & SelectDB 采用大规模并行处理(MPP)架构,一个 SQL 会被拆分成多个执行分片,分发到不同的机器上并行执行,节点内还支持多核的并行执行,将集群资源利用最大化。对于多张大表的 Join 操作,能够通过 Shuffle 机制将数据打散到多个节点上举行,从而有用应对复杂查询。
https://i-blog.csdnimg.cn/img_convert/4ded7261aacf70e3f8d35b9f07c6012c.png
2.1.4 向量化引擎

Doris & SelectDB 查询引擎是向量化引擎,所有内存结构均按列式布局。它一次处理一批数据,而非逐条处理,可明显淘汰虚函数调用、提高缓存命中率,并有用利用 SIMD 指令、充实采用延迟物化技术,进一步优化性能。比如下面一条 SQL ,左侧是传统的逐行处理的火山模子引擎,右侧是 Doris & SelectDB 纯向量化 + 延迟物化处理引擎,一次处理一个批量,在拼算子性能的宽表聚合场景下,向量化引擎带来的性能提升多达 5-10 倍。
https://i-blog.csdnimg.cn/img_convert/d3168884489014729dd74c9c1a3d45c0.jpeg
2.1.5 PipeLine 执行

采用 Pipeline 执行机制,该技术主要通过淘汰壅闭,数据流驱动的方式,以高并发原理充实提高查询和数据处理的服从。其核心头脑是将复杂的查询或数据处理任务分解为多个阶段或操作(称为 PipeLine Task),每个阶段负责处理数据的某个特定部分,例如过滤、投影、聚合或排序,通过并行或重叠执行这些步调来加快整体处理过程。
https://i-blog.csdnimg.cn/img_convert/e018b587f19870f7a47d7fb49d41161b.jpeg
Pipeline 执行模子通过壅闭逻辑将执行计划拆解成 Pipeline Task,将 Pipeline Task 分时调理到线程池中,实现了壅闭操作的异步化,解决了 Instance 长期占用单一线程的题目。同时,可以采用不同的调理战略,实现 CPU 资源在大小查询间、不同租户间的分配,从而更加灵活地管理系统资源。Pipeline 执行模子还采用了数据池化技术,将单个数据分桶中的数据举行池化和重分布,从而解除分桶数对 Instance 数量的限制,提高其对多核系统的利用能力,同时避免了线程频繁创建和销毁的题目,提高了系统的并发性能和稳固性。
https://i-blog.csdnimg.cn/img_convert/e89f3143093999830d9669520fac81dc.png
2.1.6 智能优化器

Doris & SelectDB 采用 Cascades + Dphyper 混淆智能摆列框架,优化大规模查询计划,并联合基于规则的和基于代价的查询改写、函数依赖优化及分布式执行优化,提升查询性能。同时,通过精准统计信息与动态调优,增强对业务场景的适配性,确保高效查询执行。
https://i-blog.csdnimg.cn/img_convert/9e2dc3ef646c845ea6f050c6b09fa00f.jpeg


[*]Cascades 和 Dphyper 混淆智能摆列框架 : Doris & SelectDB 优化器基于 Cascades 自顶向下摆列框架,具备解耦、易扩展和提前剪支的上风。为优化摆列空间,采用 project 规范化和 group 合并战略,避免无效计划膨胀。对于 8 张表以内的查询,举行完整的 Cascade 摆列,并引入 Dphyper 算法覆盖 8-64 张表规模,通过图简化降低摆列本钱,确保高效查询优化。总体而言,Doris & SelectDB 的 Cascades + Dphyper 混淆摆列框架,能够支持 64 张表的大规模复杂查询,提供卓越性能保障。
[*]基于代价和规则的查询改写:支持丰富的改写能力包含谓词下推、常量折叠、分区/列裁剪、外毗连消除、谓词推导、子查询提升、Limit 下压、物化 CTE、窗口函数消除子查询、Set 算子 Distinct 推导、Distinct 下压、OR-expansion 等。
[*]基于 FD 等属性信息的优化:其优化器维护了多种逻辑属性,如函数依赖、唯一性、匀称性和等值集合等,以支持多种优化规则的执行。例如,基于函数依赖属性,Doris & SelectDB 优化框架能够实现如 Group By Key/Order By Key/Join Elimination 等高效优化,从而明显淘汰查询计算量,大幅提升查询性能。
[*]深度的分布式查询优化: Doris & SelectDB 在分布式查询优化方面举行了深度优化。除了支持传统的高效毗连算法,如 colocate join 和 bucket shuffle join 外,还通太过析中央结果数据的分布特性,增强了聚合、毗连和窗口函数等分布式查询计划,能够智能识别数据特征,避免无效的数据重分布,从而提升查询性能。
[*]精准的统计信息管控和动态调优: 主流优化器依赖统计信息和代价模子选择最优执行计划,但在频繁更新的数据场景或数据湖中,静态统计信息易失效,影响计划质量和查询性能。Doris & SelectDB 通过精准控制统计信息的时效性,避免采集无效数据,防止低效计划生成。别的,在缺乏列统计信息时,采用启发式毗连重排优化查询,提升数仓及数湖场景适配性。同时,也在引入历史执行反馈(HBO),实现统计信息校准和动态调优,进一步优化查询性能。
2.1.7 物化视图

在数据分析中,物化视图采用空间换时间的战略,提供了有用的查询加快方案,兼具视图的灵活性和物理表的高性能。它可以预先计算并存储查询结果集,从而在查询请求到达时直接从物化视图中获取结果,而无需重新执行查询语句。这种机制有用提升了查询性能,降低了重复执行查询的开销。
Doris & SelectDB 支持两种物化视图:同步物化视图和异步物化视图。 前者能够保持物化视图和基表数据同步一致,但只支持单表,适合单表聚合查询的分析加快。后者能够支持多表以及复杂查询,但是物化视图更新滞后于基表(两者最终一致),并支持对多表物化视图的手动刷新和按照分区级别增量自动更新。下面对其物化视图特性和适用场景的总结:
https://i-blog.csdnimg.cn/img_convert/eac6441b293ff4802fe8715505cb690b.jpeg
2.1.8 多级缓存

缓存技术是有用的加快手段,Doris & SelectDB 支持多级缓存机制:SQL 的最终结果、聚合结果缓存、原始数据缓存、存算分离和数据湖分析场景下的本地文件缓存。通过多级缓存机制,能够最大水平实现数据的复用,淘汰不必要的执行和 IO,最大化系统性能。


[*]SQL Cache : 用于缓存 SQL 查询的结果,特殊适用于重复执行雷同查询的场景,例如报表生成或仪表盘应用。它根据 SQL 签名、查询表的分区 ID 以及分区的最新版原来缓存结果。只有当 SQL 语句完全一致时,缓存才会命中。这种缓存特殊适合更新频率不高的场景(比如 T+1),对于实时更新场景,只管支持,但是命中率可能较低。
[*]Query Cache(聚合结果缓存 ):在处理聚合查询时,都会将本地聚合的中央结果缓存于内存中。这样,当后续收到雷同或类似的聚合查询时,能够直接从 Query Cache 获取匹配的聚合结果,无需再次从磁盘读取并计算数据。
[*]Page Cache : 利用内存来缓存最近频繁读取的数据,这里面缓存的都是经过解压之后的数据,这种缓存在优化 IO 的同时,也避免了 CPU 的解压开销。在高并发查询场景下,优化结果尤为明显。
[*]File Cache : 在存算分离和数据湖分析场景下,File Cache 通过缓存最近访问的远程存储系统(如 HDFS 或对象存储)中的数据文件来加快查询,淘汰频繁从远程获取数据的昂贵开销。文件缓存将数据块存储在 Backend(BE)节点本地,并利用 LRU(最近最少利用)战略管理空间,明显提升了热点数据的查询性能和稳固性。
2.1.9 分区分桶

**Doris & SelectDB 支持两层数据分别:分区和分桶。**通太过区分桶机制能够有用将数据和负载分别到多个节点上,以提升系统的扩展性和并行处理能力,与此同时也有利于对查询举行分区分桶裁剪,淘汰非必要的数据扫描,从而提升系统的性能和高并发处理的能力。如下图所示,以下查询通太过区键 day裁剪掉不相关分区,通太过桶键id裁剪掉不相关分桶。
SELECT * FROM user_table
WHERE id = 5122 and day = '2022-01-01';
https://i-blog.csdnimg.cn/img_convert/3deb82fa3292754708b46bfc240672e0.png
2.1.10 聚合模子

Doris & SelectDB 支持多种表模子,此中聚合模子是一种表模子,允许用户在建表时指定聚合键(Aggregate Key)和聚合函数。在数据导入过程中,会根据聚合键对数据举行分组,并对每个分组应用指定的聚合函数举行预聚合。预聚合后的结果会被存储,查询时可以直接利用这些结果,而无需在运行时扫描和计算原始数据,从而优化查询性能。这一技术通常被应用在一些指标分析的场景中。
https://i-blog.csdnimg.cn/img_convert/6b34bb801e46d718f6952a2f6243a551.jpeg
2.1.11 高并发点查优化

在高并发点查的 DataServing 场景,Doris & SelectDB 特殊做了几项优化,使得高并发点查的单节点 QPS 提升到万级别,而且可以随着节点数线性扩展,具体来说:


[*]行列混淆存储: 针对点查询需求,支持在列式存储底子上另存行存格式数据,整行数据可直接读取,淘汰单次点查询的随机 I/O 放大题目。
[*]点查询短路径优化(Short-Circuit Path): 跳过传统 MPP 查询框架的复杂调理流程,直接通过轻量级执行计划(Short-Circuit Plan)快速返回结果。例如,FE 解析 SQL 后,若查询符合条件(如基于主键的等值查询),直接生成短路径计划,淘汰 FE 资源斲丧和网络开销。
[*]预处理语句(Prepared Statement): 复用已解析的 SQL 结构和表达式,避免重复解析。例如,高并发场景下,FE 通过会话级缓存存储预处理语句,降低 CPU 开销,提升吞吐量。
2.2 实时

2.2.1 实时导入

数据从产生到能够进入到 Doris & SelectDB 举行分析的实时性要求越来越高,尤其是在电商实时大屏、物联网装备监控、金融分控系统等业务中。其提供了多种实时数据导入的机制,而且也在连续优化底层技术,来达到更好的时效性和并发吞吐。


[*]流式同步:通过实时数据流(如 Flink、Kafka、事务数据库)将数据实时导入到 Doris & SelectDB 表中,适用于必要实时分析和查询的场景。

[*]可以利用 Flink Doris Connector 将 Flink 的实时数据流写入到 Doris & SelectDB 表中。
[*]可以利用 Routine Load 或者 Doris Kafka Connector 将 Kafka 的实时数据流写入到 Doris & SelectDB 表中。
[*]可以利用 Flink CDC 或 Datax 将事务数据库的 CDC 数据流写入到 Doris & SelectDB 中。

[*]Stream Load:导入本地文件或者程序通过 HTTP 写入数据到 Doris & SelectDB 中,既能够保证时效性也能够保证高吞吐,最快可达到秒级别可见。
[*]数据集成工具导入:DTS、DataWorks 等数据集成工具也支持集成数据到 SelectDB
别的,还支持通过 JDBC INSERT 方式实时写入数据,但该方式吞吐不优并不推荐。对于大批量数据写入和高吞吐场景支持其他机制,包罗通过数据湖 Insert Into Select 方式或 Broker Load 方式,来批量导入 HDFS 或对象存储上的数据。
为保障实时导入服从,其举行了多项技术创新:


[*]Group Commit 事务合并: 将多个小批量写入合并为单个事务提交,淘汰事务开销,明显提升高并发写入性能。
[*]MemTable 前移优化: 在写入协调端举行 MemTable 的构建,淘汰数据编码次数和优化内存反压战略,降低写入延迟并提升稳固性
2.2.2 实时更新

在实时数据仓库的业务场景中,支持数据的实时更新是核心能力之一。例如在数据库同步(CDC)、电商交易订单、广告结果投放、营销业务报表等业务场景中,面对上游数据的厘革,通常必要快速获取到变更记载并针对单行或多行数据举行实时变更,保证业务分析师及相关分析平台能快速捕捉到最新进展,提升业务决定的实时性。
传统的大数据分析系统解决这类题目通常比力吃力,很多系统只能做到分区级别的更新。Doris & SelectDB 针对实时数据更新做了系统性优化,相比于传统的 Merge-on-Read 或者 Copy-on-Write 的方案,Doris & SelectDB 采用的 Merge-on-Write 的方案利用记载删除标记和更新增量的方式,在查询性能和更新性能方面取得了最佳平衡。
https://i-blog.csdnimg.cn/img_convert/4ec4275481fe809b316f7338e758d427.jpeg
除了整行更新的模式,Doris & SelectDB 也支持部分列更新的模式,进一步优化了利用体验。
2.3 云原生

云计算底子设施的成熟带来了很多独有的上风,例如可根据必要快速增加或淘汰资源,无需担心底子设施的限制,只需为实际利用付费;又如提供了灵活多样的存储介质,可针对实际需求配置不同性能、不同价格的存储。SelectDB Cloud 采用存算分离模式,将计算资源和存储资源分开管理,从而更好地发挥云计算平台的强盛功能。 别的,Apache Doris 及 SelectDB Enterprise 在 3.0 版本开始也支持了存算分离架构。
https://i-blog.csdnimg.cn/img_convert/337783e3877060de7ce1ae2f30b5ebe2.jpeg


[*]更低本钱:与存算一体架构相比,存算分离架构综合本钱降低超 90%

[*]按需付费:相较于存算一体,无需再预置计算和存储资源,存储可按实际利用付费,计算资源则可以灵活弹性扩展。
[*]单副本存储:数据仅需在低本钱的对象存储中存储一份副本,而不再在高本钱的块存储中存储三个副本。热数据则缓存于块存储中,这不光降低了存储量和硬件资源需求,还明显降低了存储本钱(例如,云厂商的云盘价格通常是对象存储的数倍),同时保证了查询性能。
[*]资源斲丧降低:Compaction 操作所斲丧的资源和副本数量成正比,在存算分离模式下只必要处理单一数据副本,资源斲丧大幅淘汰。

[*]极致弹性:得益于无状态的计算节点设计,能够更加灵活地应对不断厘革的业务需求,提供高效、弹性的计算资源管理

[*]弹性扩缩容:支持灵活调整计算资源,更好应对业务高峰或颠簸。当系统负载增加时,计算节点可以迅速扩容;而在需求淘汰时,计算资源又可以灵活缩减,从而避免不必要的资源浪费。
[*]计算节点按需分配:支持将不同配置的计算节点灵活分配到各计算组中,根据任务需求精确分配资源。例如,高性能计算节点被用于复杂查询或高并发场景,而标准配置节点分配于简朴查询或低频请求。

[*]负载隔离:提供高效的资源管理和负载隔离,为不同业务需求提供精致化的计算资源调理

[*]业务间负载隔离:针对不同业务需求,可为每业务配置独立计算组,并实现物理隔离。确保各业务计算任务在专用资源上运行,淘汰相互干扰,保障系统的稳固性和高效性。
[*]离线负载隔离:对于大规模离线数据处理任务,可将其分配到特定的计算组,利用低本钱的资源举行批量数据处理,而不影响实时业务的计算性能。
[*]读写隔离:可分别为读、写操作创建计算组和用户。写计算组专门处理数据写入(插入、更新等),而读计算组专门处理查询请求,确保在线业务的查询延迟稳固。

在存算分离的架构中,数据必要从远端共享存储系统中读取,是否会对查询性能造成影响是客户广泛关注的题目。为了加快数据访问,Doris & SelectDB 实现了基于本地磁盘的高速缓存机制,并提供 LRU 和 TTL 两种高效的缓存管理战略,并对索引相关的数据举行了优化,旨在最大水平上缓存用户常用数据、提升查询性能,而且能够在多 Cluster 之间推送缓存,实现主动预热。在实际的评测中,只要缓存配比公道,性能并未明显降低。即使在没有 Cache 完全从对象存储冷读的场景下,性能丧失也只有 35%左右,相比业界同类系统有明显上风。
https://i-blog.csdnimg.cn/img_convert/1429dc46a36ac57a5a3b4dc71a3e0a35.png
2.4 湖仓融合

除了将数据导入到 Doris & SelectDB 内举行高效分析外,Doris & SelectDB 还可以当做一个湖仓的计算和查询(Data Lakehouse Compute & Query Engine)直接对位于 Data Lakehouse、数据库、离线数据仓库中的数据举行计算和查询,在不举行数据移动的情况下,买通湖仓和数据库的边界,实现同一的查询加快和多源联邦分析,达到数据无界、湖仓融合的结果。
https://i-blog.csdnimg.cn/img_convert/19850424a77f3e1e5713bcf94378bc79.png
2.4.1 全面的数据买通

Doris & SelectDB 通过 Multi-Catalog 和 可扩展的毗连器框架,支持主流数据系统和数据格式,并提供基于 SQL 的同一数据分析能力,用户能够在不改变现有数据架构的情况下,轻松实现跨平台的数据查询与分析。
https://i-blog.csdnimg.cn/img_convert/4b6a62be295858205f4f2bead9d4c1dd.jpeg
2.4.2 湖仓加快结果

得益于上面提到的各种极速查询的技术,当利用 Doris & SelectDB 作为湖仓计算和查询引擎的时候,相比 Presto、Trino、SparkSQL、Hive 等引擎,通常有数倍的性能提升,如下所示,在基于 Iceberg 表格式的 1TB 的 TPCDS 标准测试集上,其执行 99 个查询的总体运行耗时仅为 Trino 的 1/3。
https://i-blog.csdnimg.cn/img_convert/c8a65e765bca9ec3c9ead851c5cccf1d.png
实际用户场景中,在利用一半资源的情况下,相比 Presto 匀称查询延迟降低了 20%,95 分位延迟更是降低 50%,达到了降本增效的目的。
https://i-blog.csdnimg.cn/img_convert/eb04f329d1756bd02d457d4816adf5e8.png
2.4.3 多 SQL 方言的兼容

在企业整合多个数据源并实现湖仓一体转型的过程中,迁移业务的 SQL 查询到 Doris & SelectDB 是一项挑战,因为不同系统的 SQL 方言在语法和函数支持上存在差异。若没有符合的迁移方案,业务侧可能必要举行大量改造以适应新系统的 SQL 语法。
为相识决这个题目,Doris & SelectDB 提供了 SQL 转换服务,允许用户直接利用其他系统的 SQL 方言举行数据查询。转换服务会将这些 SQL 方言转换为 Doris & SelectDB SQL,极大降低了用户的迁移本钱。如今,已支持 Presto/Trino、Hive、PostgreSQL 和 Clickhouse 等常见查询引擎的 SQL 方言转换,在某些实际用户场景中,兼容率可达到 99%以上。
2.4.4 湖仓融合建模

数据分层建模,ODS 层在 LakeHouse 中,DWD,DWS,ADS 层的数据加工和数据服务在 Doris & SelectDB 中,充实利用其性能上风,别的还可以将其加工好的数据再通过 Write-Back 的机制写回到 LakeHouse 中,实现备份归档或者供其他的数据系统继续处理利用。
https://i-blog.csdnimg.cn/img_convert/df4627ec154c0a7911a89eb6187c5a16.png
2.5 多模数据分析

现代化的数据分析系统,除了能够高效的处理结构化的数据,也应该能够高效的存储和处理半结构化数据和非结构化数据:


[*]半结构化数据: 半结构化数据虽然拥有一定的结构,但不严格固定,具有很强的灵活性。比力典型的是 JSON 格式,可以便捷地增加新字段或删除不必要的字段,而日记、Trace、Metrics 是最典型的 JSON 格式半结构化数据。本章节将聚焦在高效的 JSON 数据分析和高性价比的可观测性分析方案(基于日记、Trace、Metrics )。
[*]非结构化数据:非结构化数据指没有固定结构的数据,例如文本、音频和视频等,这类数据缺乏明显的结构特征。针对非结构化数据的分析操作通常是检索(Search),比如在大模子 GenAI 的 RAG 中通常包含两类:

[*]文本检索:在文本中查找特定的关键字或短语,Doris & SelectDB 提供了倒排索引等功能,可以实现对非结构化文本数据的高效检索,包罗关键词检索、短语检索等。
[*]向量检索:将非结构化数据转化为高维向量,并在向量空间中计算相似性以实现高效检索,如今也在增强这方面的能力。

2.5.1 高效 JSON 存储分析方案 - VARIANT

JSON 格式数据的处理面临如下几个挑战:


[*]怎样支持灵活的 Schema:字段随着业务发展而增加/淘汰,类型也可能厘革,数据中的嵌套结构也让字段变的更加复杂,因此要求数据库能够支持灵活的 Schema。
[*]怎样高效存储:大量重复的自形貌内容,比如大量重复的字段名,通常是由机器产生。如果按原始数据存储,数据冗余存储带来的资源浪费非常高,因此要求数据库能够高效存储。
[*]怎样极速分析:半结构化数据通常为文本情势,直接对文本解析和分析虽然可行但性能较差。特殊是在分组、聚合、过滤等操作时,要从大量的字段中分析此中的几个字段,将带来很多不必要的 IO 息争析开销。
业界惯常的做法是将 JSON 存储成 String,而且支持丰富的处理函数,这种方案能够解决灵活 Schema 的题目,但是存储和分析服从都非常低。
为此,推出了 VARIANT 数据类型,VARIANT 数据类型可以存储任何合法的 JSON,可自动从 JSON 中抽取字段并推断其类型;并将这些字段存储为 VARIANT 列的子列,这些子列以列存的方式存储,能够高效压缩存储;这种列式存储方式使得 VARIANT 具备很好的分析性能,当举行聚合/过滤/排序等查询时,只必要读取 VARIANT 子列数据即可,不会产生额外的数据解析开销,查询性能可获得数量级的提升。VARIANT 的方案使得半结构化数据处理服从逼近结构化数据,同时又满足了灵活性的目的。
https://i-blog.csdnimg.cn/img_convert/aea526d74a9578e2366c42a6e54e6065.jpeg
2.5.2 高性价比可观测性分析方案

日记、Trace、Metrics 是最典型的 JSON 格式半结构化数据,而这些数据是可观测性分析的主要内容。这类数据具有高写入吞吐、海量存储和实时响应需求,以是必要一个高性价的方案。
https://i-blog.csdnimg.cn/img_convert/bc5f595758f07f2879c4f9d6dd76a775.jpeg
通过一系列的技术优化,使得在 Log Trace 相对于 ElasticSearch 写入性能 3~5 倍,80% 存储空间降低,查询性能 2~3 倍;相对 CK 查询性能 3 倍。Metrics 相对于 TimescaleDB InfluxDB 写入性能 5~7 倍,查询性能 2~6 倍。
https://i-blog.csdnimg.cn/img_convert/0f9c14ab8e2b05282d8a36fd24fbb702.png
https://i-blog.csdnimg.cn/img_convert/55f2d992ff196d368ae2f215314efccd.png


[*]提升写入吞吐量

[*]利用 SIMD 指令和 CPU 向量指令加快数据解析和索引创建。
[*]移除不必要的正向索引,简化索引创建过程。

[*]降低存储本钱

[*]移除占索引数据 30% 的正向索引。
[*]采用列式存储和 ZSTD 压缩算法,压缩比达 5:1 到 10:1
[*]采用存算分离、冷热数据分层存储机制,将历史日记存储于低本钱介质。

[*]高性能查询引擎 : 除之前先容的极速分析,还对可观测性场景下常用的 TopN 做了动态剪枝优化
[*]高性能日记全文检索分析:支持倒排索引和全文检索,日记场景常见查询(关键词检索明细、趋势分析等)秒级响应。
[*]标准 SQL 接口: 学习本钱低,简朴易用,快速上手。
[*]开放、易用的上卑鄙生态: 上游通过 Stream Load 通用 HTTP APIs 对接常见的日记采集系统和数据源 Logstash、Filebeat、Fluentbit、Kafka 等,卑鄙通过标准 MySQL 协议和语法对接各种可视化分析 UI,比如可观测性 Grafana、BI 分析 Superset、类 Kibana 的日记检索 Doris WebUI。
3. 结语

Doris & SelectDB 以其极速、实时、云原生、湖仓融合、高效多模数据分析的良好能力,使得其成为实时数据分析、湖仓融合分析、可观测性与日记分析、数仓构建的最佳选择。安踏、长安汽车、顺丰科技、特步、中通快递、趣丸科技、MINISO、MiniMax、观测云、迅雷、新东方、星火保等浩繁客户基于 Doris & SelectDB 构建了高效的数据分析平台。未来,将连续提升其弹性的能力、批量处理能力、增量流式处理能力、面向大模子 GenAI 的混淆检索能力。如果您对 Doris & SelectDB 感爱好,欢迎体验。


[*]Apache Doris 官网
[*]SelectDB 官网

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Apache Doris & SelectDB 技术能力全面解析