sirius-db/sirius

GitHub: sirius-db/sirius

GPU 原生 SQL 引擎,通过 Substrait 格式无缝接入 DuckDB 等现有数据库,利用 NVIDIA CUDA 加速实现大规模数据分析的显著性能提升。

Stars: 959 | Forks: 94

Diagram
Slack

Sirius 是一个 GPU 原生的 SQL 引擎。它通过标准的 Substrait 查询格式接入 DuckDB 等现有数据库,无需重写查询或进行重大的系统更改。Sirius 目前支持 DuckDB 和 Doris(即将推出),标有 * 的其他系统已在我们的规划路线图中。Sirius 基于 NVIDIA CUDA-X 库(包括 cuDF 和 RAPIDS Memory Manager (RMM))构建,提供高性能的 GPU 加速分析。

Diagram

## 性能 在 1TB 数据上运行 TPC-H,Sirius 在 DGX Station (GB300) 上将 DuckDB 的性能提升了 5 倍。 ![性能](https://raw.githubusercontent.com/sirius-db/sirius/dev/super-sirius-perf.png) ## 支持的操作系统/GPU/CUDA - Ubuntu >= 22.04 - 计算能力 7.0+ 的 NVIDIA Volta™ 或更高版本 - CUDA >= 13.0(需要 NVIDIA 驱动 >= 570) - 我们建议使用至少 **16 个 vCPU** 来构建 Sirius,以确保更快的编译速度。 ### 安装依赖项 - Git(用于克隆仓库) - Pixi(安装说明见[此处](https://pixi.sh/latest/installation/)) ## 构建与运行 Sirius Sirius 提供两种执行路径。请参阅各个页面了解如何构建、运行和测试: - **[`gpu_execution`](gpu_execution.md)(推荐)** — 具有分层内存管理(GPU/主机/磁盘)、自动数据分区和溢出机制的外存执行。支持 **Parquet** 数据格式。 - **[`gpu_processing`](gpu_processing.md)** — 内存执行,要求数据集能够完全载入 GPU 内存。支持 DuckDB 的原生存储格式。 ## 日志 Sirius 使用 [spdlog](https://github.com/gabime/spdlog) 记录查询执行过程中的消息。默认日志目录为 `log`(相对于当前工作目录),默认日志级别为 `info`。 可以在加载扩展之前通过环境变量初始化日志目录和级别: ``` export SIRIUS_LOG_DIR=/path/to/logs export SIRIUS_LOG_LEVEL=trace ``` 这两项也可以在运行时通过 DuckDB 的 `SET` 命令进行配置: ``` SET sirius_log_dir = '/path/to/logs'; SET sirius_log_level = 'trace'; SET sirius_log_flush_seconds = 1; ``` ## 限制 Sirius 正在积极开发中。目前的主要限制包括: - **数据类型覆盖:** Sirius 目前支持常用的数据类型,包括 `INTEGER`、`BIGINT`、`FLOAT`、`DOUBLE`、`VARCHAR`、`DATE`、`TIMESTAMP` 和 `DECIMAL`。我们正在积极致力于支持更多数据类型——例如嵌套类型。 - **算子覆盖:** 目前,Sirius 支持 `FILTER`、`PROJECTION`、`JOIN`(Hash/Nested Loop/Delim)、`GROUP-BY`、`ORDER-BY`、`AGGREGATION`、`TOP-N`、`LIMIT` 和 `CTE`。我们正在努力添加更多高级算子,例如 `WINDOW` 函数和 `ASOF JOIN` 等。 有关当前限制和正在进行的工作的完整列表,请参阅我们的 [GitHub issues 页面](https://github.com/sirius-db/sirius/issues)。**如果在运行 Sirius 时遇到这些问题,Sirius 将优雅地回退到在 CPU 上执行 DuckDB 查询。** ## 未来路线图 Sirius 仍在大力开发中,我们正在努力为 Sirius 添加更多功能,例如磁盘溢出、多 GPU、多节点、更多算子、更多数据类型、加速更多引擎等等。 Sirius 随时欢迎新的贡献者!如果您感兴趣,请查看我们的[网站](https://www.sirius-db.com/),通过我们的[邮箱](siriusdb@cs.wisc.edu)联系我们,或加入我们的 [Slack 频道](https://join.slack.com/t/sirius-db/shared_invite/zt-33tuwt1sk-aa2dk0EU_dNjklSjIGW3vg)。 **让我们共同开启数据分析的 GPU 时代!**
标签:Apache Doris, C++, CUDA, cuDF, DuckDB, GPU原生, Parquet, RAPIDS Memory Manager, RMM, SQL引擎, Substrait, TPC-H, Vectored Exception Handling, 代码示例, 内存管理, 大数据分析, 开源数据库, 异构计算, 数据分析, 数据库加速, 数据擦除, 数据科学, 查询处理, 核外计算, 资源验证, 高性能计算