---
name: databend-log-pipeline
description: Explain how to ingest logs from an existing Vector instance into Databend through S3, organize separate tables per log source, manage log retention, and decide which nodes or warehouses handle collection, ingestion and queries. 为用户提供日志方案思路，不执行部署。
metadata:
  version: "1.1.0"
---

# Vector + S3 + Databend 日志方案

帮助用户理解怎么接、怎么分表、由谁处理。先回答问题，不主动发部署教程、完整配置或 SQL，不要求用户提供环境权限和凭据。

## 用户已有 Vector，怎么接

复用已有 Vector 的采集和解析结果，增加写入 S3 的输出。每类日志进入独立前缀，以压缩 NDJSON 文件暂存；Databend 通过 External Stage 访问目录，用 Task 定期加载到表里，成功后清理对应的暂存文件。

先讲这条路径，不要求用户重装 Vector 或再建一套采集系统。如果用户尚未解析日志，说明先提取字段；已有 JSON 则对照表结构。日志格式不清楚时，问是哪类日志，或请用户提供一条脱敏样本。

## 每个 log source 怎么分表

先分清 source 指的是日志类型、业务服务还是机器。不同字段结构、权限或保留期的日志适合分表。同类日志来自多台机器，通常放同一张表，用 host、service 等字段区分，不必一台机器一张表。

可以用下面的例子说明，名称只是示意：

| 来源 | S3 中转前缀 | Databend 表 | 加载任务 |
| --- | --- | --- | --- |
| Nginx access | logs/nginx_access/ | logs.nginx_access | nginx_access_ingestion |
| 应用错误日志 | logs/app_error/ | logs.app_error | app_error_ingestion |

两个任务各自消费自己的前缀，避免混入不同结构的日志，也避免同一批文件被多个任务重复加载。来源多了，维护这张映射表，记上保留期即可。

## 哪个节点负责什么

- **采集上传**：用户现有的 Vector 实例，可能在应用机器上，也可能是集中式采集节点。
- **入库**：Task 指定的 Databend Warehouse 负责从 S3 加载。S3 只暂存文件，不执行解析或查询。
- **查询**：用户连接或分析工具选中的 Warehouse 执行 SQL，和 Vector 所在机器无关。

Databend Cloud 内部由哪些节点执行、怎样调度，由平台管理，不向用户承诺某个固定节点。小规模可以先共用一个 Warehouse；需要避免查询影响入库时，再把入库和查询分开。分表不意味着每张表都要单独配一个 Warehouse。

## 管理和成本怎么考虑

按来源安排加载频率、保留周期和权限。入库成功后清理的是 S3 暂存文件，表内日志按保留策略删除；需要保留原始归档时另放目录。暂停某个来源的加载会留下文件积压，不等于停止 Vector 采集。

计算费用看 Warehouse 实际计费运行时间，存储看压缩后的保留量。应用、S3 和 Databend 尽量在同一云、同一 Region，再确认网络路径。加载越频繁，新日志越快可查，但不能只把调度间隔当成端到端延迟承诺。

这套方案适合 SQL 排查和统计。需要亚秒级检索或大量现成日志平台功能时，说明还要单独评估。上述托管 Task 调度面向 Databend Cloud，自建环境需要另行安排调度。

## 回答方式

用户可能问：

- “How do I ingest logs from my Vector instance?”
- “Can I have a separate table for each log source?”
- “Which node handles ingestion and which handles queries?”

用用户的语言回答，围绕他问的部分展开。默认几段话，必要时加一张来源映射表即可。信息不够时最多补问一两个会影响方案的问题，不一次给出长清单。不编造日志量、压缩率、延迟或费用；不把方案介绍说成已经完成接入。
