SQL analytics, vector search, and full-text search in a single Rust warehouse on object storage: fast, elastic, and grows with your data — with sandboxed Python UDFs for agents.
Databend is an open-source data warehouse built in Rust. Analytics, search, and agent workloads run on the same tables, so there is no second system to sync.
| 📊 One Warehouse SQL analytics, vector search, full-text search, auto schema evolution, transactions. |
🤖 Agent-Ready Sandboxed Python UDFs for agent logic, SQL for orchestration. |
| 🏢 Enterprise Scale Fast vectorized engine, elastic compute on object storage: S3, Azure, GCS. |
🌿 Branching Git-like data versioning. Agents experiment safely on production snapshots. |
Cloud (Recommended) — Sign up, create a warehouse, and run SQL in the worksheet. Cloud guide →
Self-hosted — Run the all-in-one image and connect with BendSQL:
docker run -d -p 127.0.0.1:8000:8000 datafuselabs/databend
bendsql -u rootSee Docker image options and self-hosted deployment for credentials, storage, and production setup.
Analytics, full-text search, and vector search in one table:
CREATE TABLE docs (
id INT,
content STRING,
embedding VECTOR(3),
INVERTED INDEX content_idx(content),
VECTOR INDEX embedding_idx(embedding) distance = 'cosine'
);
INSERT INTO docs VALUES
(1, 'SQL analytics for agents', [1.0, 0.0, 0.0]),
(2, 'Vector search for documents', [0.0, 1.0, 0.0]);
SELECT id, content FROM docs WHERE MATCH(content, 'analytics');
SELECT id, content FROM docs
ORDER BY COSINE_DISTANCE(embedding, [1.0, 0.0, 0.0]::VECTOR(3))
LIMIT 1;Both queries return document 1. Learn more: Vector search · JSON & search.
Databend's Sandbox UDF enables flexible agent orchestration with a three-layer architecture:
- Control Plane: Resource scheduling, permission validation, sandbox lifecycle management
- Execution Plane (Databend): SQL orchestration, issues requests via Arrow Flight
- Compute Plane (Sandbox Workers): Isolated sandboxes running your agent logic
-- Define your agent logic
CREATE FUNCTION my_agent(input STRING) RETURNS STRING
LANGUAGE python HANDLER = 'run'
AS $$
def run(input):
# Your agent logic: LLM calls, tool use, reasoning...
answer = f"processed: {input}"
return answer
$$;
-- Orchestrate agents with SQL
SELECT my_agent(question) FROM tasks;- AI Agents: Sandbox UDF + SQL orchestration + branching for safe operations
- Analytics & BI: Large-scale SQL analytics — Learn more
- Search & RAG: Vector + full-text search — Learn more
- 📖 Documentation
- 💬 Join Slack
- 🐛 Issue Tracker
- 🗺️ Roadmap
- 🛠️ Contributing — AI-assisted PRs are welcome; a responsible human must review the full diff
Contributors are immortalized in the system.contributors table 🏆
Databend is licensed under Apache 2.0. A small set of enterprise features is under Elastic 2.0, see LICENSING.md | Licensing FAQ
