天工开物 · Taibai · Drivers

Taibai 官方驱动

Taibai 提供五种官方语言驱动,全部走同一套二进制 Wire 协议(默认端口 5151): Rust(异步)、C++(C++17)、Python(asyncio 零依赖)、 JDBC(Java 11+)、Go(标准 database/sql)。 都支持预处理语句、事务与列式批量导入,习惯哪门语言就用哪门语言连 Taibai。

驱动总览

语言驱动当前版本一句话能力
Rusttaibai-rustv0.1.0tokio 异步驱动:连接池、TLS、二进制列式解码、列式批量导入、变更订阅
C++taibai-cppv0.1.0C++17 驱动:仅依赖 zlib,静态/动态库,列式批量插入(含 NULL)
Pythontaibaiv0.1.0asyncio 驱动:零第三方依赖,全量线协议,pipeline 批量导入、连接池、TLS
Javataibai-jdbcv1.0.4JDBC 4.2 驱动:PreparedStatement、事务、连接池、TLS、高性能批量插入
Gotaibai-go随源码分发标准 database/sql 接口 + 原生 API:DSN 直连、列式二进制批量导入、负载均衡
驱动版本以各仓库构建清单为准(核对于 2026-10)。Rust / C++ / Python / Go 驱动随官方源码仓库分发, 暂未上架公共包管理平台;JDBC 驱动已发布到自建 Maven 仓库。图形化管理请用官方桌面客户端 Taibai UI。

Rust 驱动(taibai-rust)

tokio 异步 TCP 客户端:登录、查询与执行、文本/二进制列式结果、19 种 wire 数据类型、预处理语句、 事务、flush、列式批量导入与 pipeline、变更订阅、连接池,可选 TLS(rustls)。

接入

use taibai_rust::{Client, ClientOptions};

#[tokio::main]
async fn main() -> taibai_rust::Result<()> {
    let mut client = Client::connect_with_options(ClientOptions::default()).await?;
    let rows = client.query("SHOW TABLES").await?;
    println!("{rows:?}");
    Ok(())
}

C++ 驱动(taibai-cpp)

C++17 实现,仅依赖 zlib,CMake 构建,可编静态或动态库;对齐服务端 0.1.4+ 协议, 支持列式批量插入(含 NULL 值),自带示例命令行客户端 taibai_query。

构建与安装

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
cmake --install build --prefix /usr/local

下游工程引用

find_package(taibai_cpp CONFIG REQUIRED)
target_link_libraries(app PRIVATE taibai::taibai_cpp)

Python 驱动(taibai)

官方 asyncio 驱动,零第三方依赖(仅 Python 标准库),要求 Python 3.10+。 实现线协议完整能力:连接认证、文本/二进制查询结果、预处理语句、事务、 列式批量导入(BulkImporter pipeline)、连接池、TLS 与连接级 zlib 压缩。

pip 里的 taibai 不是这个驱动

PyPI 上名为 taibai 的包是一个与 Taibai 数据库无关的第三方命令行工具, 不要用它连接 Taibai。官方 Python 驱动目前随源码仓库分发: 获取源码后在项目目录执行 pip install -e . 安装。

import asyncio
from taibai import Client

async def main():
    client = await Client.connect("127.0.0.1", 5151,
                                  user="root", password="taibai", database="main")
    result = await client.query("SELECT symbol, COUNT(*) FROM ticks GROUP BY symbol")
    print(result.dicts())
    await client.close()

asyncio.run(main())

JDBC 驱动(taibai-jdbc)

完整 JDBC 4.2 API:基于 Taibai 二进制 Wire 协议通信,支持 PreparedStatement 参数绑定、 事务、TaibaiDataSource 连接池、SSL/TLS 连接、TaibaiBulkInsert 高性能批量插入,以及标准 SQLSTATE 错误码映射。要求 Java 11+。

Maven 依赖(自建 Maven 仓库)

<dependency>
    <groupId>com.taibai</groupId>
    <artifactId>taibai-jdbc</artifactId>
    <version>1.0.4</version>
</dependency>
try (Connection conn = DriverManager.getConnection(
        "jdbc:taibai://localhost:5151/main", "root", "taibai");
     Statement stmt = conn.createStatement();
     ResultSet rs = stmt.executeQuery(
        "SELECT symbol, AVG(price) FROM ticks GROUP BY symbol")) {
    while (rs.next()) {
        System.out.println(rs.getString(1) + " " + rs.getDouble(2));
    }
}

Go 驱动(taibai-go)

兼容 Go 标准 database/sql,同时提供面向高性能场景的原生 API: DSN 直连(taibai://user:password@host:port/database)、服务端预处理语句、 事务、原生连接池、TLS、列式二进制批量导入、重试、健康检查与负载均衡。要求 Go 1.21+。

import (
    "database/sql"
    _ "gitlab.tarzip.com/liutian/taibai-go"
)

db, err := sql.Open("taibai", "taibai://root:taibai@127.0.0.1:5151/main")
rows, err := db.Query("SELECT symbol, price FROM ticks LIMIT 10")

选型建议

你的场景推荐
Java / 大数据生态(Spark、Flink、自研 Java 服务)JDBC 驱动,连接池 + 批量插入都齐
数据分析、算法、脚本灌数Python 驱动(BulkImporter pipeline 吞吐优先)
Go 微服务、行情落地、日志采集端Go 驱动(database/sql 或原生 API)
高性能服务端组件、嵌入式采集Rust(异步 + 连接池)或 C++(列式批量插入)
不想写代码,想点开就用桌面客户端 Taibai UI(图形界面)

Taibai 产品页 · 桌面客户端 · 常见问题 · 更新日志