关于结构化数据存储:下一个十年我们需要一款什么样的分析型数据库

33次阅读

共计 8417 个字符,预计需要花费 22 分钟才能阅读完成。

本文来自于 Doris Summit 2022 演讲实录,演讲人:陈明雨

十年对于数据库意味着什么?

身处在突飞猛进的时代,咱们见惯了技术的衰亡与凋敝、变迁与衰败,甚至是朝荣夕灭。信息技术以前所未有的速度更迭,给周遭事物带来了颠覆性地变动。数据库亦是如此,有数数据库悄悄埋没在技术更迭的浪潮里,直到在浩渺如海的代码片段中都找不到些许印记。而有的则历久而弥新,禁受了工夫的考验,彰显出弱小的生命力,并以更加枯萎的姿势扎根成长。

十年对于数据库而言,可能是一段从诞生到消失的残缺软件生命周期,也可能是迈过里程碑之后的全新旅程。

所以从 MySQL 1.0 版本诞生,到具备颠覆性意义的 MySQL 5.7 版本正式公布,时间跨度刚好是十年,而十年之后的故事,大家曾经都晓得了。

所以从 Benoit、Thierry、Marcin 联结创立 Snowflake,到在纽交所胜利上市、成为软件行业有史以来最大规模的 IPO,再到全面开启云数据仓库时代,时间跨度也差不多十年。

而对于 Apache Doris,十年意味着什么?

留个悬念,在答复这个问题之前,咱们无妨来回顾下社区倒退历程。

只管最早的历史能够追溯到 2008 年的百度凤巢广告零碎,但彼时非 SQL 的单机查问引擎加 KV 存储系统在产品状态上与 OLAP 还有着较大的差别。

正式确立 OLAP 数据库这一状态是在 2013 年。通过自研全列式存储引擎 OLAP Engine 并基于 Apache Impala 革新了全新的 MPP 查问引擎,自此,Doris 真正成为了具备大数据量下高效反对数据分析能力的 OLAP 数据库,并在百度外部大规模利用,成为了百度外部对立的 OLAP 剖析平台。

往往一个外部我的项目的倒退会有两种演进模式,一种是随着需要的减少零碎架构日益臃肿,当面对较为灵便的需要,常因改变老本过大而被彻底重构。另一种则是长期服务某一固定场景、需要逐步收敛乃至停滞,最终被疾速变革的内部技术彻底取代。而开源则是外部我的项目的一场新生,在更广大的利用场景、更多样的开发者群体以及更高效的研发模式加持下开启新的篇章。

于是在数个版本的迭代与优化后,2017 年 Doris 的前身在 GitHub 上开源,2018 年进入 Apache 基金会孵化,并正式更名为 Apache Doris。(GitHub 地址:https://github.com/apache/doris)

时至 2022 年,正是 Apache Doris 在 OLAP 畛域深耕的十年之际。

# 咱们该如何回顾过去的 2022 年?

2022 年,内部世界正处在前所未有的变动之中,有数魔幻时刻在事实中产生。须要庆幸的是,技术和开源的力量帮忙咱们穿梭了许多不确定性。而这一年势必成为 Apache Doris 倒退历程中有着浓墨重彩的一年,咱们从几个角度来回顾一下 Apache Doris 过来一年的倒退:

社区重要指标

过来一年中:

  • 社区累计贡献者的数量从 200 余位增长至近 420 位,同比增长 超过 100%,目前仍在持续上升中。
  • 每月沉闷贡献者的数量从 50 位增长至 100 位,同样出现 翻倍 增长的趋势。
  • GitHub Star 数量从 3.6k 增长至 6.8k,屡次登上 GitHub Trengding 日 / 周 / 月度 榜单前列
  • 全副 Commits 数量从 3.7k 增长至 7.6k,过来一年新提交代码量超过了以往多年累加总和。

从这些数据中,咱们能够感触到 2022 年是 Apache Doris 全面暴发的一年,各个维度数据指标简直都有了 100% 的增长。这一年的致力也使 Apache Doris 成为了寰球大数据和数据库畛域最为沉闷的开源社区之一,上方 GitHub Contribution 增长趋势图更是证实了这一点。而这所有,正是由社区所有的用户和开发者独特发明的。

另外值得纪念的是,在 2022 年 6 月,Apache Doris 迎来了开源以来最重要的里程碑之一,正式从 Apache 孵化器毕业、成为了 Apache 顶级我的项目

开源用户规模

得益于社区成立的专职工程师团队,为 Apache Doris 社区用户提供任务的技术支持,2022 年咱们在用户连贯与沟通方面变得更加顺畅,能够更直面用户、去聆听用户实在的声音。

在过来的一年里,Apache Doris 曾经在互联网、金融、电信、教育、汽车、制作、物流、能源、政务等数十个行业利用落地,尤其是在以海量数据著称的互联网行业。在中国市值或估值排行前 50 的互联网公司中,有 80% 企业在长期应用 Apache Doris 来解决本身业务中的数据分析问题,其中蕴含了百度、美团、小米、腾讯、京东、字节跳动、网易、新浪、360、米哈游、知乎等头部知名企业。

在寰球范畴内,Apache Doris 曾经失去了超过 1000 家企业用户的认可,并且这一数字仍在快速增长中。这 1000 多家企业用户中,绝大多数与社区有着间接分割,并通过各种形式参加到社区建设中来。他们中的许多企业用户也参加到本次 Doris Summit 的议题分享中,将本身基于实在业务场景的实践经验分享给大家。

版本更新迭代

如果说过来版本将应用和运维的繁难性作为第一谋求的话,那么 2022 年公布版本则是在 性能、稳定性、易用性 等多方面个性的全面进化。

  • 4 月份社区公布了自开源以来的首个 1 位版本—— Apache Doris 1.0,在 1.0 版本中,意义不凡的向量化执行首次与大家见面,标记着 Apache Doris 开始迈入极速数据分析时代。
  • 6 月份公布的 1.1 版本,咱们对向量化引擎进行了进一步欠缺和优化,并将其作为正式性能默认开启。与此同时,社区建设了 LTS 版本公布机制,以每月公布一个 3 位版本的速度,对 1.1 版本进行疾速地 Bug 修复和性能优化,力求满足更多社区用户在稳定性方面的高要求。
  • 在综合思考版本迭代节奏和用户需要后,咱们决定将泛滥新个性在 1.2 版本中公布。同期间社区的稳定性和品质保障工作也获得了显著的功效,测试 Case 失去了极大水平地丰盛,并在 Master 分支上构建了流水线。通过一系列品质伎俩,Apache Doris 的代码品质和稳定性失去进一步晋升,这也使得版本公布有着更加严格的准出规范。
  • 12 月初 1.2 版本正式面世。这一版本的公布不仅使查问性能有了近十倍的晋升,同时咱们还推出了过来半年工夫里研发的诸多重磅性能,包含 Unique Key 模型 Merge-on-Write 的数据更新模式、反对无缝对接多种数据湖的 Multi-Catalog 多源数据目录、Java UDF、Array 数组类型和 JSONB 类型等,让 Apache Doris 在更多数据分析场景具备了更强的适应性和可能性。
  • 咱们也针对零碎稳定性进行了大量的工作,一方面,利用 SQL Smith 等自动化测试工具以及各个出名开源我的项目的测试用例,构建了数以百万计的测试用例集;另一方面,通过社区准入流水线和欠缺的回归测试框架,保障了代码合入的品质。因而 1.2 版本不管从性能、性能还是稳定性方面,都是一次厚积薄发后的全面进化,也是对所有开发者在 2022 年辛苦付出的最好回报。

外围个性演进

外围个性方面,社区的研发力量次要围绕四个方面发展工作,别离是 性能、实时性、半结构化数据反对与 Lakehouse

  • 查问性能晋升 。从 1.0 版本面世到 1.2 版本公布,Apache Doris 在性能方面获得了极为显著的问题。在单表场景上,Apache Doris 荣登 Clickhouse 公司推出的 Clickbench 数据库性能榜单,并获得了 前三名 的优良问题。在多表关联场景上,得益于向量化执行引擎及各种查问优化技术,绝对 2021 年底公布的 0.15 版本,Apache Doris 在 SSB 和 TPC-H 等规范测试数据集下均 获得了数倍乃至数十倍的性能晋升。这一系列性能方面的优化,曾经胜利让 Apache Doris 跻身寰球数据库性能最优阵列中!
  • 实时场景优化。 在 1.2 版本中,咱们在原有 Unique Key 数据模型上实现了 Merge-On-Write 的数据更新形式,查问性能在高频更新时有 5-10 倍的晋升,实现了在可更新数据上的低提早实时剖析体验。另外还实现了轻量 Schema Change 性能,对于数据的加减列不再须要转换历史数据,可通过 Flink CDC 等工具疾速便捷地同步上游事务数据库中的 DML 或 DDL 操作,使数据同步工作可能更加晦涩对立。
  • 半结构化数据反对。 目前 Apache Doris 反对了 Array 和 JSONB 类型,其中 Array 类型不仅能更不便地存储简单的数据结构,还能够通过 Array 函数满足用户行为剖析等场景的业务需要。而 JSONB 是一种二进制 JSON 存储形式,它岂但比纯文本 Text JSON 的拜访性能快 4 倍,同时也有更低的内存耗费。通过 JSONB 能够不便地导入各种 JSON 格局的日志数据结构,并能获得优异的查问效率。这也是 Apache Doris 在日志剖析畛域所做的摸索之一。
  • Lakehouse。在最新公布的 1. 2 版本中,咱们引入了全新的 Catalog 概念,正式将 Apache Doris 迈入湖仓一体时代。通过简略的命令便能够不便地连贯到各自内部数据源并主动同步元数据,实现对立的剖析体验。通过 Native Format Reader、提早物化、异步 IO、数据预取等多项针对内部数据源的性能优化,并充沛利用自身的高性能执行引擎和查问优化器,在对表面拜访性能上,Apache Doris 能够达到 Trino/Presto 的 3- 5 倍、Hive 的 10-100 倍

2023 RoadMap

承前而启后,2023 年,Apache Doris 社区在以上几方面个性继续欠缺的同时,也将开启更多有意义的工作。全年的 RoadMap 以及明年 Q1 的具体打算,能够参考以下的全景图:

稳固的版本公布和迭代速度对于开源软件至关重要。在 2023 年,咱们将以每季度一个 2 位版本的节奏,开始 Apache Doris 2.x 版本的迭代。同时,针对每个 2 位版本,咱们也将以每月一个 3 位版本的速度进行性能保护和优化。

从性能角度来看,后续研发工作将会围绕以下几个次要方向开展:

高性能

高性能是 Apache Doris 一直谋求的指标,过来一年在 Clickbench、TPC-H 等公开测试数据集上的优异体现,曾经证实了其在执行层以及算子优化方面做到了业界当先。将来咱们也会一直优化各个场景下的性能体现,回馈用户极速的数据分析体验,具体包含:

  • 更简单 SQL 性能晋升: 2022 年咱们曾经启动全新查问优化器的设计与开发,而这一成绩在 2023 年一季度就将与大家见面。全新查问优化器提供了丰盛的规定模型,实现了更智能的代价抉择,能够更高效地撑持简单查问,可能残缺执行 TPC-DS 全副 99 个 SQL。同时全新查问优化器还具备全查问场景的自适应优化,便于用户在面对不同剖析负载和业务场景时都取得一致性的应用体验。
  • 更高的点查问并发: 高并发始终是 Apache Doris 所善于的场景,而 2023 年咱们将会进一步增强这一能力,通过 Short-Circuit Plan、Prepare Statement、Query Cache 等一系列技术,实现单机数万 QPS 的超高并发反对,并具备随集群规模的拓展进而线性晋升并发的能力。
  • 更灵便的多表物化视图: 在过来版本中,通过强统一的单表物化视图,Apache Doris 减速了固定维度数据的剖析效率。而全新的多表物化视图将会解耦 Base 表与 MV 表的生命周期,通过异步刷新和灵便的增量计算形式,满足多表关联以及更简单 SQL 的预计算减速需要,这一个性将在接下来的 2023 年第一季度与大家见面!

高性价比

老本和效率对企业而言是博得市场竞争的要害,对数据库而言亦是如此。过来 Apache Doris 凭借在易用性方面的诸多设计帮忙用户大幅节约了计算与存储资源老本,后续咱们也会引入一系列云原生能力,在不影响业务效率的同时进一步降低成本,具体包含:

  • 更低的存储老本: 咱们将摸索与云上对象存储系统和文件系统的联合,帮忙用户进一步升高存储老本,包含更欠缺的冷热数据拆散能力,将冷数据智能转移至更便宜的对象存储或文件系统中。联合繁多近程正本、冷数据 Cache 以及冷热智能转换等技术,保障业务查问效率不受影响的同时实现存储老本大幅升高,这一性能将于 2023 年第一季度公布。
  • 更弹性的计算资源: 剥离存储与计算状态,引入仅用于计算的 Elastic Compute Node。因为不存储数据,弹性计算节点具备更加疾速的弹性伸缩能力,便于用户在业务高峰期进行疾速扩容,进一步晋升在海量数据计算场景(如数据湖剖析)的剖析效率,这一性能曾经处于最终调试阶段,行将与大家见面。后续咱们还将通过对集群内存和 CPU 运行指标的监控和主动策略配置,实现主动的节点扩缩容(Auto-scaling)。

混合负载

随着用户规模的极速扩张,越来越多的用户将 Apache Doris 用于构建企业外部的对立剖析平台。这一方面须要 Apache Doris 去承当更大规模的数据处理和剖析,另一方面也须要 Apache Doris 同时去应答更多剖析负载的挑战,从过来的实时报表和 Ad-hoc 等典型 OLAP 场景,扩大到 ELT/ETL、日志检索与剖析等更多场景的对立。为了能更好适配这些场景,许多工作曾经进入紧锣密鼓的研发中,并将于 2023 年陆续与大家见面,具体包含:

  • 更灵便的 Pipeline 执行引擎 :** 与传统的火山模型相比,Pipeline 模型无需手动设置并发度,能够实现不同管道之间的并行计算,充分利用多核的计算能力,实现更灵便的执行调度,晋升在混合负载场景下的综合性能体现。
  • Workload Manager: 在性能晋升的同时,也亟需欠缺的资源隔离和划分的能力。咱们将会基于 Pipeline 执行引擎实现更细粒度和更灵便的负载治理、资源队列以及共享隔离等性能,兼顾多种混合负载场景下的查问性能与稳定性。
  • 轻量级容错: 轻量级容错能力也是咱们后续继续欠缺的中央,既能利用 MPP 的高效率又能对谬误进行容忍,以更好适应用户在 ETL/ELT 场景的挑战。
  • 函数兼容与多语言 UDF: 与此同时,后续也将反对 Hive/Trino/Spark 函数的兼容性以及多语言的 UDF,来帮忙用户更灵便地进行数据加工,也能够更不便地从其余数据库系统迁徙到 Apache Doris。

多模数据分析

在过来 Apache Doris 更多是是擅长于结构化数据分析,随着对半结构化、非结构化数据分析需要的减少,从 1.2 版本起咱们减少了 Array 和 JSONB 类型以实现数据的 Native 反对,后续版本仍将继续增强这一能力,为日志剖析场景提供性价比更高、性能更强的解决方案,具体包含:

  • 更丰盛的简单数据类型 :** 除 Array/JSONB 类型以外,2023 年第一季度咱们将减少对 Map/Struct 类型的反对,包含高效写入、存储、剖析函数以及类型之间的互相嵌套,以更好满足多模态数据分析的反对。后续将反对更加丰盛的数据类型,包含 IP、GEO 地理信息等数据类型,并会摸索在时序数据场景的高效数据分析。
  • 更高效的文本剖析算法: 对于文本数据,咱们将引入更多的文本剖析算法,包含自适应 Like、高性能子串匹配、高性能正则匹配,Like 语句的谓词下推、Ngram Bloomfilter 等,同时基于倒排索引实现全文检索能力,在日志剖析场景提供比 ES 更高性能和性价比的剖析能力。这些性能都曾经处于就绪阶段,将在 2023 年初与大家见面。
  • 动静 Schema 表: 传统数据库在设计之初 Schema 是动态的,Schema 变更时须要执行 DDL,而这一操作往往具备阻塞性。在越来越多的古代数据分析场景中,表构造会随时间推移而变动,因而咱们引入了 Dynamic Table,能够依据数据写入主动适应 Schema,不再须要执行 DDL,由过来的人工干预数据结构进化为数据自驱动,极大晋升了灵便数据分析的便捷性。这一性能将在 2022 年第一季度正式公布。

Lakehouse

随着数据湖技术的倒退,剖析性能成为施展数据湖效用、开掘数据价值最大的掣肘。基于一款简略易用和高性能的查问剖析引擎在数据湖之上构建剖析服务,成为新的技术趋势。在过来一年,通过在数据湖上的诸多性能优化、联合本身的高性能执行引擎和查问优化器以及,Apache Doris 实现了数据湖上极速易用的剖析体验,性能较 Presto/Trino 有 3-5 倍的晋升。在 2023 年,咱们将会持续欠缺这一能力,具体包含:

  • 更繁难的数据对接: 在 1.2 版本中咱们公布了 Multi-Catalog,反对了多种异构数据源的元数据主动映射与同步,实现了数据湖的无缝对接,后续将对 Delta Lake 的反对以及 Iceberg、Hudi 等更多数据格式的反对。
  • 更残缺的数据湖能力反对: 提供数据湖上数据的增量更新与查问,还会反对将剖析后果写回数据湖、表面写入内表,实现数据分析流程的全闭环。同时还将反对多版本 Snapshot 读取和删除,并进一步在 Apache Doris 为数据湖数据提供物化视图。

实时性与存储引擎优化

数据价值会随着时间推移而升高,因而实时性对于高时效性要求的用户而言至关重要。在 1.1 版本中咱们在 Compaction 和 Flink 实时写入方面进行了诸多优化,同时 1.2 版本的 Merge-on-Write 数据更新模式进一步使 Apache Doris 在实时更新与极速查问得以对立。2023 年咱们将会继续强化对存储引擎的优化,具体包含:

  • 更稳固的数据写入: 通过一系列 Compaction 操作和批量数据写入方面的优化,节俭资源开销,升高写放大问题,并联合全新的内存治理框架晋升写入过程的内存稳定性,进而晋升零碎稳定性。
  • 更欠缺的数据更新反对: 过来局部列更新是通过 Agg 模型上的 Replace_if_not_null 来实现的,后续咱们将会减少 Unique Key 模型上的局部列更新反对,并残缺实现 Delete、Update、Merge 等数据更新的操作。
  • 更对立的数据模型: 以后 Apache Doris 的三种数据模型在各个场景均有丰盛的利用,后续咱们将尝试对立现有几种数据模型,使用户在应用体验上更加对立。

易用性和稳定性

除了性能方面的丰盛与欠缺,更简略、更易用、更稳固同样也是 Apache Doris 始终谋求的指标,2023 年咱们将在以下几方面登程,让用户具备更繁难和释怀的应用体验:

  • 简化建表: 目前 Apache Doris 在建表时候区曾经反对了工夫函数,后续咱们将进一步打消 Bucket 设置,帮忙用户最大水平简化建表建模。
  • 安全性: 目前曾经实现基于 RBAC 模型的权限管理机制,使用户权限更安全可靠;并对 ID-federation、行列级别权限,数据脱敏等进行了优化,后续将进一步欠缺。
  • 可观测性: Profile 是定位查问性能问题的重要伎俩,后续咱们将增强对 Profile 的监控并提供可视化 Profile 工具,帮忙用户更快定位问题。
  • 更好的 BI 兼容性和更欠缺的数据集成迁徙计划: 以后各 BI 工具能够通过 MySQL 协定连贯到 Apache Doris,后续咱们将对支流 BI 软件进一步适配,保障更佳的查问体验。随着 DBT、Airbyte 等新兴数据集成和迁徙工具的衰亡,越来越多用户应用此类零碎将数据同步至 Apache Doris,后续咱们也会提供对此些零碎的官网反对。

开启下一个十年!

或者有读者或听众还记得我在结尾提的问题,对于 Apache Doris,十年意味着什么?

有两层含意,上一个十年和下一个十年。

上一个十年,是 Apache Doris 起源的十年。从诞生到开源、从石破天惊到被越来越多人熟知和应用,开源赋予了 Apache Doris 更加旺盛的生命力和创造力。

而下一个十年,则是一场新的旅程

正如我在本次 Doris Summit 分享的主题,New Journey of Apache Doris。如果说过来 Apache Doris 更多是服务于在线报表场景和 Ad-hoc 剖析的 OLAP 引擎的话,那么在所有社区和开发者的致力下,以后 Apache Doris 曾经具备了更为广大的定位,即极速、易用、实时、对立的多模剖析型数据库。

这其中的对立,既蕴含了架构的对立、也蕴含了业务和数据的对立。用户能够通过 Apache Doris 构建多种不同场景的数据分析服务、同时撑持在线与离线的业务负载、高吞吐的交互式剖析与高并发的点查问;通过一套架构实现湖和仓的对立、在数据湖和多种异构存储之上提供无缝且极速的剖析服务;也可通过对日志 / 文本等半结构化乃至非结构化的多模数据进行对立治理和剖析、来满足更多样化数据分析的需要。

这是咱们心愿 Apache Doris 可能带给用户的价值,不再让用户在多套零碎之间衡量,仅通过一个零碎解决绝大部分问题,升高简单技术栈带来的开发、运维和应用老本,最大化晋升生产力。

“咱们曾经登程了太久,以至于遗记了为什么登程。”

心愿通过这肯定位的转变迎接下一个十年的挑战,或者技术趋势会有变动,架构将会变革,但咱们解决用户数据分析问题的初衷不会扭转。

心愿持续带着上一个十年登程的初心,开启下一个十年的旅程。

正文完
 0