---
title: 'Databend 产品月报（2025 年 5 月）'
date: 2025-05-28
slug: category-product/monthly-may2025
cover_url: '2025-05-28-monthly.png'
description: '很高兴为您带来 Databend 2025 年 5 月的最新更新、新功能和改进！我们希望这些增强功能对您有所帮助，并期待您的反馈'
tags: [databend, monthly]
category: Product
authors:
  - DatabendLabs
---

# Databend 月报 - 2025 年 5 月

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

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

{/* truncate */}

## 📊 五月更新亮点

### 重磅功能

- **Ngram Index** - 让 `LIKE '%pattern%'` 查询飞起来，自带 bloom filter 加速
- **Iceberg 功能增强** - 新增 ORC 文件支持，数据缓存和 merge-on-read 优化
- **AVRO 文件支持** - 现在可以直接导入和查询 AVRO 文件了
- **Streaming Load API** - 重新上线，性能比之前更强
- **Sequence 管理** - 新增 `SHOW SEQUENCES` 和 `DESC 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 Index                  | Full-Text Index                |
| ------------ | ---------------------------- | ------------------------------ |
| **擅长场景** | 加速 `LIKE '%pattern%'` 查询 | 文档搜索和内容发现             |
| **典型用法** | 日志分析，精确子串匹配       | 内容搜索，模糊匹配             |
| **查询语法** | `WHERE col LIKE '%text%'`    | `WHERE MATCH(col, 'text')`     |
| **高级特性** | 大小写不敏感                 | 相关性打分，模糊搜索，布尔查询 |
| **主要优势** | 现有 LIKE 查询直接加速       | 专业搜索功能，替代传统 LIKE    |
| **迁移成本** | 零成本，现有 SQL 直接受益    | **兼容 Elasticsearch 语法**    |
| **维护工作** | **全自动**                   | **全自动**                     |

### Ngram Index：让你的 LIKE 查询起飞

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

```sql
-- 创建应用日志表
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 用户可以无缝迁移：

```sql
-- 创建知识库表
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 Index           | Full-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](https://github.com/databendlabs/databend) 🚀
