Slide 1
Slide 1 text
Rust SQL
ライブラリの比較検討 1
Rust SQL
ライブラリの比較検討
目的
Rust
のSQL
ライブラリを比較し、ユースケースや場面ごとにどれを使うのがよいのかを検討する軸を学ぶ
比較するライブラリ
各ライブラリの説明
sqlx
sqlx
はシンプルなSQL
ライブラリです。sqlx
はOR
マッパーでもクエリビルダーでも
なく、SQL
のコンパイル時のチェックやマイグレーションのみを行い、非同期処理
に対応しています。実装者がSQL
を書かないといけないので、OR
マッパーにある
ようなメリットは享受できませんが、diesel
のDSL
や多くのメソッドの理解は必要
ないというメリットがあります。
『Web
アプリ開発で学ぶRust
言語入門』p.167
非同期処理をサポートしており、tokio
などの非同期ランタイムを選択可能
PostgresSQL
、MySQL
、SQLite
、SQLServer
などの多数のRDBMS
をサポートする
async fn find(&self, id: i32) -> anyhow::Result {
let product_table = sqlx::query_as::<_, ProductTable>(
r#"
select * from sqlx.product
where id = $1
"#,
)
.bind(id)
.fetch_one(&self.pool)
.await
.map_err(|e| match e {
sqlx::Error::RowNotFound => RepositoryError::NotFound(id),
_ => RepositoryError::Unexpected(e.to_string()),
})?;
Ok(Product::from(product_table))
}
SeaORM
SeaORM
は最初から非同期処理をサポートしたORM
として開発されたもので、
tokio
やaync_std
、actix
などの非同期ランタイムを選択して使用できます。SQL
実行
基盤には、(中略)SQL
実行クレートのsqlx
を利用しています。使用するデータベ