SQLX - RustベースのSQLツールキット オープンソース
(github.com/launchbadge)- 非同期(async)方式の純粋なRustベースSQL crateで、Rustマクロを使って DSLなしでコンパイル時にSQLクエリを検証 可能
- ORMではない! : ORMなしでSQLをそのまま活用したいプロジェクト に最適
- PostgreSQL, MySQL, MariaDB, SQLite などのデータベースをサポート
.envファイルにDATABASE_URLを指定して、簡単にコンパイル時チェックが可能
- Pure Rust 実装(MySQL/MariaDBドライバは100% Rustで記述。SQLiteはCライブラリと連携)で、unsafeコードを使わずに 安全に設計されており信頼性が高い
- Tokio, async-std, actix など主要なRust非同期ランタイムおよび多様なTLSバックエンドと互換性があり、プラットフォーム非依存で利用可能
- MIT/Apache 2.0 デュアルライセンス で、オープンソースおよび商用プロジェクトで幅広く活用可能
主な機能
sqlx::Poolを利用した コネクションプーリング- データベースからのデータの 非同期Rowストリーミング
- コネクションごとの 自動クエリ準備とキャッシュ
- Preparedではないクエリも簡単に実行でき、結果は同じRow型で返される
- 対応DB(MySQL, MariaDB, PostgreSQL)でTLS暗号化接続をサポート
- 非同期 PostgreSQL通知 をサポート :
LISTENとNOTIFY - セーブポイント(Savepoint)を活用した ネストしたトランザクション をサポート
- 実行時にDBドライバを選択的に切り替え可能な
AnyPoolをサポート
6件のコメント
個人的には、Go の sqlc のアプローチが好きです。
まずネイティブクエリを書き、コードを生成する方式です。
_bin collationフィールドをStringとしてシリアライズできない問題が1年以上修正されておらず、プロダクション用途で使うには無理があります。しかも回帰問題であるため、多くのユーザーやライブラリが 0.7 バージョンにとどまっています。ひとまず修正はしたようですが、結局1年近くかかりましたね
イシューのリンクをお願いしてもいいでしょうか?少し探してみたのですが、見つけるのが難しくて。
https://github.com/launchbadge/sqlx/issues/3387
これだと思います
SQLx - Rust SQL Toolkit
5年前に一度共有したことがあるのですが、その間にかなり多くの変化がありました。
いまではコンパイル時に実際のDBと連携して検証できるようになり、
tokio/async-std/actix にも対応し、
コネクションプール、ネストしたトランザクション、AnyPool など実運用で使える機能やテストが強化され、大規模サービスにも適用可能な、
ORM なしで SQL を直接使うプロジェクトにおすすめできるプロジェクトになりました。
そして sqlx を通じて ORM を実装した SeaORM、Welds のようなプロジェクトも生まれましたし、
そのほかにクエリビルダーの SeaQuery や Web アプリケーションフレームワークの SQLPage のようなものもあります