Rust を使用して TiDB Cloud Lake に接続する
公式の Rust ドライバーは、async/await サポートと包括的な型安全性を備え、Rust アプリケーション向けにネイティブ接続を提供します。
インストール
ドライバーを Cargo.toml に追加します。
[dependencies]
lake-driver = "0.1.5-alpha.2"
tokio = { version = "1", features = ["full"] }
Connection String: DSN の形式と例については、ドライバー概要 を参照してください。
主な機能
- ✅ Async/Await Support: モダンな Rust 非同期プログラミング向けに構築
- ✅ Type Safety: Rust の型システムによる強力な型マッピング
- ✅ Connection Pooling: 効率的な接続管理
- ✅ Stage Operations: TiDB Cloud Lake stage との間でデータをアップロード/ダウンロード
- ✅ Streaming Results: 大規模な結果セットを効率的に処理
データ型マッピング
基本型
日付/時刻型
複合型
基本的な使い方
以下は、DDL、書き込み、およびクエリ操作を示すシンプルな例です。
use lake_driver::Client;
use tokio_stream::StreamExt;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Connect to TiDB Cloud Lake
let client = Client::new("<your-dsn>".to_string());
let conn = client.get_conn().await?;
// DDL: Create table
conn.exec("CREATE TABLE IF NOT EXISTS users (id INT, name VARCHAR, created_at TIMESTAMP)")
.await?;
// Write: Insert data
conn.exec("INSERT INTO users VALUES (1, 'Alice', '2023-12-01 10:00:00')")
.await?;
conn.exec("INSERT INTO users VALUES (2, 'Bob', '2023-12-01 11:00:00')")
.await?;
// Query: Select data
let mut rows = conn.query_iter("SELECT id, name, created_at FROM users ORDER BY id")
.await?;
while let Some(row) = rows.next().await {
let (id, name, created_at): (i32, String, chrono::NaiveDateTime) =
row?.try_into()?;
println!("User {}: {} (created: {})", id, name, created_at);
}
Ok(())
}
リソース
- Crates.io: lake-driver
- GitHub リポジトリ: LakeSQL/driver
- Rust ドキュメント: docs.rs/lake-driver