头图

五月份的更新来啦!这个月我们为大家带来了不少实用的新功能和性能优化,希望能让你的大数据处理工作更加得心应手。

这个月我们一共推出了 31 个新功能,修复了 18 个 bug,还做了 15 项性能优化

📊 五月更新亮点

重磅功能

  • Ngram Index - 让 LIKE '%pattern%' 查询飞起来,自带 bloom filter 加速
  • Iceberg 功能增强 - 新增 ORC 文件支持,数据缓存和 merge-on-read 优化
  • AVRO 文件支持 - 现在可以直接导入和查询 AVRO 文件了
  • Streaming Load API - 重新上线,性能比之前更强
  • Sequence 管理 - 新增 SHOW SEQUENCESDESC SEQUENCE 命令
  • 类型转换优化 - 数字转布尔值、数字字符串转换更智能了

性能提升

  • Query Optimizer - 优化了 JOIN 条件中的关联子查询
  • Fragment Forest 执行引擎 - 分布式查询的 Broadcast 操作更高效
  • Histogram 计算 - 字符串类型的统计信息计算更快了
  • 内存管理 - 没有工作负载时自动释放内存
  • 并发处理 - Row-Fetch 和数据库操作的并发性能提升

存储和稳定性

  • Auto-Vacuum 选项 - 新增 enable_auto_vacuum 表级设置
  • 数据保留策略 - data_retention_num_snapshots_to_keep 参数控制快照保留
  • Meta-Service 改进 - 基于时间戳的 Semaphore 序列,缓存管理更智能
  • 超时处理 - 存储操作的取消机制更安全

开发体验

  • 时间序列 Profiling - 新的统计指标帮你更加详细的了解每个算子的实时吞吐
  • 错误处理优化 - 异常分类和日志记录更清晰
  • Python Bindings - 发布了 Python 集成支持
  • Arrow 升级 - 升级到 v55,兼容性更好

🚀 本月最值得关注的功能

文本搜索的双重加速:两种 Index 各有所长

我们这次推出了两种文本搜索的解决方案,各有特色,可以根据不同场景选择。最棒的是 两种 index 都是全自动维护的 - 创建后就不用管了,数据插入更新时会自动同步。

对比项Ngram IndexFull-Text Index
擅长场景加速 LIKE '%pattern%' 查询文档搜索和内容发现
典型用法日志分析,精确子串匹配内容搜索,模糊匹配
查询语法WHERE col LIKE '%text%'WHERE MATCH(col, 'text')
高级特性大小写不敏感相关性打分,模糊搜索,布尔查询
主要优势现有 LIKE 查询直接加速专业搜索功能,替代传统 LIKE
迁移成本零成本,现有 SQL 直接受益兼容 Elasticsearch 语法
维护工作全自动全自动

Ngram Index:让你的 LIKE 查询起飞

专门为加速 LIKE '%pattern%' 查询设计:

-- 创建应用日志表
CREATE OR REPLACE TABLE app_logs (
id INT,
timestamp TIMESTAMP,
level STRING,
message STRING
);

-- 创建 ngram index(按3个字符分段)
CREATE OR REPLACE NGRAM INDEX logs_message_idx ON app_logs(message) gram_size = 3;

-- 插入数据,index 会自动更新
INSERT INTO app_logs VALUES (1, '2025-05-01 10:00:00', 'ERROR', 'Database connection failed');
INSERT INTO app_logs VALUES (2, '2025-05-01 10:01:00', 'INFO', 'User login successful');
INSERT INTO app_logs VALUES (3, '2025-05-01 10:02:00', 'ERROR', 'Kubernetes pod restart failed');

-- 原来的 LIKE 查询现在飞快
SELECT * FROM app_logs WHERE message LIKE '%connection%';
SELECT * FROM app_logs WHERE message LIKE '%kubernetes%';

-- 看看 index 是否生效
EXPLAIN SELECT * FROM app_logs WHERE message LIKE '%error%';
-- 会显示:bloom pruning: X to Y(说明 index 在工作)

Ngram Index 文档:https://docs.databend.cn/guides/performance/ngram-index

Full-Text Index:专业级文档搜索

支持 Elasticsearch 语法,Elasticsearch 用户可以无缝迁移:

-- 创建知识库表
CREATE OR REPLACE TABLE knowledge_base (
doc_id INT,
title STRING,
content STRING,
category STRING
);

-- 创建全文搜索 index
CREATE OR REPLACE INVERTED INDEX kb_content_idx ON knowledge_base(title, content, category);

-- 插入文档数据,index 自动维护
INSERT INTO knowledge_base VALUES
(1, 'Database Setup', 'Learn how to configure database connections and troubleshoot common issues', 'tutorial');

INSERT INTO knowledge_base VALUES 
(2, 'Kubernetes Guide', 'Complete guide to deploying applications on Kubernetes clusters', 'guide');

INSERT INTO knowledge_base VALUES
(3, 'Error Handling', 'Best practices for error handling and logging in distributed systems', 'best-practices');

-- 基础搜索,带相关性打分(Elasticsearch 用户很熟悉)
SELECT doc_id, title, SCORE() as relevance
FROM knowledge_base
WHERE MATCH(content, 'database troubleshoot')
ORDER BY SCORE() DESC;

-- 模糊搜索 - 和 Elasticsearch 一模一样的语法
SELECT * FROM knowledge_base
WHERE MATCH(content, 'kuberntes', 'fuzziness=1');

-- 高级查询,完全是 Elasticsearch 的写法
SELECT * FROM knowledge_base
WHERE QUERY('content:"error handling" AND category:best-practices');

-- 布尔查询(Elasticsearch 用户几乎无学习成本)
SELECT * FROM knowledge_base
WHERE QUERY('title:database OR kubernetes AND content:guide');

ES 用户的福音:我们的全文搜索语法兼容 Elasticsearch,如果你之前用过 Elasticsearch,可以直接上手,零学习成本。

怎么选择?

你的需求Ngram IndexFull-Text Index
现有 LIKE 查询太慢✅ 完美,代码都不用改❌ 需要重写查询
日志分析和监控✅ 专门为这个设计的⚠️ 也能用,但有点大材小用
文档搜索功能❌ 功能太简单✅ 这就是专业的
需要模糊搜索和相关性❌ 不支持✅ 原生支持
从 Elasticsearch 迁移❌ 语法不一样✅ 无缝迁移

选择建议:

  • 用 Ngram Index 如果你想让现有的 LIKE '%pattern%' 查询跑得更快,不想改代码
  • 用 Full-Text Index 如果你要做搜索功能,或者从 Elasticsearch 迁移过来

Full-Text Index 文档:https://docs.databend.cn/guides/performance/fulltext-index

🔮 总结

五月份对 Databend 来说是个重要的里程碑。双重索引方案让查询性能有了质的飞跃,我们正在打造下一代云数据仓库的基础设施。

社区的反馈超出了我们的预期 - 很多用户已经在生产环境中使用,给了我们很多宝贵的建议。感谢所有社区成员、贡献者,以及愿意尝鲜的朋友们。

想体验一下未来的数据仓库吗?来看看我们的项目:github.com/databendlabs/databend 🚀

关于 Databend

Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式湖仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。

👨‍💻‍ Databend Cloud:databend.cn

📖 Databend 文档:docs.databend.cn

💻 Wechat:Databend

✨ GitHub:github.com/databendlab...


databend
20 声望10 粉丝

Databend 旨在成为一个 开源、弹性、可靠 的无服务器数仓,查询快如闪电,与 弹性、简单、低成本 的云服务有机结合。数据云的构建,从未如此简单!