摘要:Apache Doris 4.0 作为一个重要里程碑正式发布,引入了原生向量检索、AI 函数以及全新的混合检索与分析处理(HSAP)架构。此后,社区通过 4.0.1 至 4.0.4 四个版本快速演进,本文总结了这四个版本中引入的关键新特性。
Apache Doris 4.0.4 现已正式发布,该版本相较于其他 4.0.x 版本,更为稳定、可靠。Apache Doris 4.0.4 版本囊括了 4.0.1 至 4.0.4 四个版本中所有的优化及增强功能。该版本的发布,标志着其从实时分析领域迈向广阔的数据管理领域,以应对由生成式 AI 和基于 Agent 系统所驱动的数据管理格局变化带来的数据新挑战。
检索正在成为现代数据平台的核心分析负载,涵盖日志检索、可观测性、文档检索及上下文工程等领域。Apache Doris 在 4.0.X 的每个版本中持续增强其原生搜索能力。
SEARCH() 函数现已支持短语查询、通配符查询和正则表达式查询(4.0.1),用户可以直接在 SQL 中执行复杂的文本检索。
SELECT * FROM logs
WHERE SEARCH(message, 'timeout* OR "connection error"');
在 4.0.3 版本中,该函数进一步增强了 Lucene 布尔模式,将 Elasticsearch 风格的布尔查询语义(must / should / must_not)引入到基于 SQL 的搜索中。
在 4.0.4 版本中,引入了 BM25 分数范围过滤(min_score 语义),允许用户按相关性分数筛选搜索结果,仅保留最匹配的条目——非常适合搜索推荐和智能检索场景。
Apache Doris 4.0.1 中引入了两个新参数:
default_field: 指定搜索的默认列default_operator:控制多列查询的布尔运算符(AND 或 OR)用户现在可以更方便地执行多字段搜索,而无需编写复杂的 SQL 表达式。
SEARCH() 函数现在支持通过点表示法直接查询 Variant 类型的子列(4.0.1):
SEARCH(event.payload.error:timeout)
这对于事件数据和日志分析尤为实用,因为这些场景中 JSON 被广泛使用。
单列现在支持创建多个分词器索引(4.0.4)。这使得不同查询场景可以采用不同的分词策略,如多语言搜索、n-gram 采用不同的分词策略,从而显著提高文本搜索的灵活性和质量。
在 4.0.x 版本中,倒排索引获得一系列基础能力的提升:
ANN(近似最近邻)索引现在支持 仅索引扫描模式(4.0.2),允许向量搜索直接从索引中解析结果,而无需扫描表数据。这在大规模向量检索场景中显著降低了 I/O 开销。
在 4.0.4 版本中新增了三个空间函数:
ST_Distance:计算两个几何对象间的距离ST_GeometryType:返回几何对象的类型(Point、LineString、Polygon 等)ST_Length:计算 LineString 的总长度这些功能使基本地理空间分析用例(如基于位置的分析、路线测量和地理报告)能够直接在 SQL 中实现,无需外部 GIS 工具。
两项改进简化了 BI 工作负载中常见的时间分析:
PREVIOUS_DAY()**函数 (4.0.4):返回指定日期之前最近一个工作日的日期,适用于财务报告和基于日历的业务逻辑。INTERVAL**时间单位(4.0.4):INTERVAL表达式现在支持更多的时间粒度,从而能够进行更灵活的时间窗口计算。4.0.x 版本中新增的时间函数包括TIME_FORMAT(4.0.3)、兼容 MySQL 的UTC_DATE、UTC_TIME、UTC_TIMESTAMP(4.0.1)、INTERVAL函数支持(4.0.3),以及add_time/sub_time(4.0.2)。
在 4.0.1 版本中新增了两个哈希函数:
mmh64_v2:生成与第三方库一致的 MurmurHash64 结果,适用于跨系统数据一致性检查和分片逻辑json_hash:为 JSONB 类型生成哈希值,支持 JSON 数据的去重和比较物化视图在 4.0.2 版本中得到了多项重要改进:
Streaming Job 现在支持实时同步 PostgreSQL 分区表(4.0.4),实现了以 PostgreSQL 作为事务源、Doris 作为分析目标的 HTAP 架构。
在现代分析负载中,半结构化数据持续快速增长。
Doris 为现有的 VARBINARY 类型新增了四个内置函数(4.0.1):
length:返回二进制值的字节长度from_base64_binary:将 Base64 字符串解码为二进制值to_base64_binary:将二进制值编码为 Base64 字符串sub_binary:从二进制值中提取子字节序列这些函数使得直接在 SQL 中处理二进制数据(如编码载荷或序列化格式)变得可行,无需往返于应用代码。此外,VARBINARY 类型映射支持已扩展至 Hive、Iceberg、Paimon 和 JDBC 外表(4.0.2),减少了从外部源读取二进制列时的类型不兼容错误。
引入多个函数来改进 JSON 规范化和哈希(4.0.1):
sort_json_object_keys:对 JSONB 对象的键进行排序,使 JSON 比较具有确定性normalize_json_numbers_to_double:将 JSON 中的数值规范化为 double 类型,简化跨系统比较json_hash:为 JSONB 数据生成一致的哈希值这些功能使 JSON 去重和比较更加简便和可靠。在 4.0.2 版本中,JSON/JSONB 类型增加了对 GROUP BY 和 DISTINCT 的支持,允许 JSON 字段直接参与聚合和去重,而无需进行类型转换。
新增支持了 Iceberg 系统表 all_manifests(4.0.4),允许用户直接通过 SQL 查看 Iceberg 的清单元数据。这极大地简化了问题排查、存储审计和元数据诊断。此外,4.0.3 版本引入了清单级缓存,以减少频繁查询大型 Iceberg 表时重复的元数据 I/O 开销。
4.0.4 版本实现了 expire_snapshots 存储过程,允许用户按计划清理 Iceberg 旧快照。这有助于控制元数据增长,降低存储成本,是长期运行 Iceberg 表的重要数据治理工具。
rewrite_data_files 操作已在 4.0.2 版本中实现(通过 ALTER TABLE ... EXECUTE 语法触发),支持对 Iceberg 表进行小文件合并和数据重组。这解决了频繁写入导致的数据碎片化问题,并提升了后续查询性能。同时,4.0.2 版本新增了对分区演进 DDL 的支持,允许在不重建表的情况下更改分区策略。
Doris 现在支持对 Iceberg 外表中的复杂类型(Array、Map、Struct)进行 Schema 变更(4.0.4),使外表元数据能够与不断演进的 Iceberg Catalog 架构保持同步。
bucket-domain-name 配置,满足企业私有域 OSS 访问场景。ram_role_arn 和 ecs_ram_role 认证模式,增强了云原生部署的安全访问能力。dfs.client.use.datanode.hostname 配置,解决了在 Hadoop 环境中 DataNode 通过主机名而非 IP 通信时的连接问题。以上是 Apache Doris 4.0.x 系列的主要特性概览,更多细节请参阅官方文档:https://doris.apache.org/docs/4.x/releasenotes/v4.0
Apache Doris 4.0.4 由超过 200 位社区贡献者共同构建。欢迎加入 Apache Doris 微信交流群,共同参与下一版本的开发。

上述更新特性 SelectDB 即将同步支持。如果你想快速体验这些新特性,可以访问 SelectDB 官网申请免费试用,或继续使用开源 Apache Doris 自行部署。