Databend 社区
Databend 是一个开源、弹性、工作负载感知的云原生数据仓库(Data Warehouse),使用 Rust 语言构建,旨在提供高性价比的 Snowflake 替代方案。它专为分析全球最大规模的数据集而设计。
- 性能
- 数据操作
- 对象存储
- 在对象存储上实现极速数据分析
- 利用数据级并行和指令级并行技术实现最佳性能
- 无需构建索引、手动调优或处理分区/分片
- 支持
SELECT
、INSERT
、DELETE
、UPDATE
、REPLACE
、COPY
和MERGE
等原子操作 - 提供时间回溯(Time Travel)和多目录(Apache Hive / Apache Iceberg)等高级功能
- 支持以 CSV、JSON 和 Parquet 格式加载半结构化数据
- 支持 ARRAY、MAP 和 JSON 等半结构化数据类型
- 支持类 Git 的 MVCC 存储,便于查询、克隆和恢复历史数据
- 支持多种对象存储平台,点击此处查看完整列表
- 支持即时弹性伸缩,按需调整资源规模
Databend 的高层架构由 meta-service layer
(元服务层)、query layer
(查询层)和 storage layer
(存储层)组成。
- 元服务层(Meta-Service Layer)
- 查询层(Query Layer)
- 存储层(Storage Layer)
Databend 通过元服务层高效支持多租户架构,该层在系统中承担关键职能:
- 元数据管理:处理数据库、表、集群、事务(Transaction)等元数据
- 安全性:管理用户认证与授权,保障环境安全
在 GitHub 的 meta 目录中了解更多元服务层信息
查询层(Query Layer)负责处理查询计算,由多个集群组成,每个集群包含若干节点。每个节点作为核心计算单元包含:
- Planner(规划器):基于关系代数元素制定 SQL 执行计划,包含 Projection、Filter 和 Limit 等算子
- Optimizer(优化器):应用"谓词下推"和"未使用列裁剪"等预定义规则的基于规则优化器
- Processors(处理器):按 Pull&Push 模式构建分布式查询执行 Pipeline(流水线)
在 GitHub 的 query 目录中了解更多查询层(Query Layer)信息
Databend 采用 Parquet 列式存储格式并引入专属表格式提升性能,关键特性包括:
- 二级索引:加速多维度数据定位与访问
- 复杂数据类型索引:优化半结构化数据处理效率
- Segments(段):高效数据组织单元
- 聚簇(Clustering):通过用户定义聚簇键(Cluster Key)优化数据扫描
在 GitHub 的 storage 目录中了解更多存储层(Storage Layer)信息