SQLX - Toolkit SQL open source berbasis Rust
(github.com/launchbadge)- Crate SQL murni berbasis Rust dengan pendekatan asinkron (
async), yang memungkinkan validasi query SQL pada waktu kompilasi tanpa DSL dengan memanfaatkan macro Rust- Bukan ORM! : sangat cocok untuk proyek yang ingin menggunakan SQL apa adanya tanpa ORM
- Mendukung database seperti PostgreSQL, MySQL, MariaDB, SQLite
- Pemeriksaan pada waktu kompilasi dapat dilakukan dengan mudah dengan menetapkan
DATABASE_URLdi file.env
- Pemeriksaan pada waktu kompilasi dapat dilakukan dengan mudah dengan menetapkan
- Implementasi Pure Rust (driver MySQL/MariaDB ditulis 100% dengan Rust. SQLite terhubung dengan library C), dirancang aman tanpa penggunaan kode
unsafe, sehingga memiliki keandalan tinggi - Kompatibel dengan runtime asinkron utama Rust seperti Tokio, async-std, actix serta berbagai backend TLS, dan dapat digunakan secara independen dari platform
- Lisensi ganda MIT/Apache 2.0, sehingga dapat dimanfaatkan secara luas untuk proyek open source maupun komersial
Fitur utama
- Connection pooling dengan
sqlx::Pool - Streaming Row asinkron dari database
- Persiapan dan caching query otomatis untuk setiap koneksi
- Query yang tidak dipersiapkan (bukan Prepared) juga dapat dijalankan dengan mudah, dan hasilnya dikembalikan dalam tipe Row yang sama
- Mendukung koneksi terenkripsi TLS pada DB yang didukung (MySQL, MariaDB, PostgreSQL)
- Mendukung notifikasi PostgreSQL asinkron :
LISTENdanNOTIFY - Mendukung transaksi bertingkat dengan memanfaatkan savepoint
- Mendukung
AnyPoolyang memungkinkan penggantian driver DB secara selektif saat runtime
6 komentar
Secara pribadi saya menyukai pendekatan
sqlcdi Go.Pada dasarnya, caranya adalah menulis kueri native terlebih dahulu lalu menghasilkan kode.
Masalah di mana field collation
_bintidak bisa diserialisasikan menjadiStringsudah lebih dari setahun belum juga diperbaiki, sehingga kurang layak digunakan untuk kebutuhan produksi. Bahkan ini adalah isu regresi, jadi banyak pengguna maupun library masih bertahan di versi 0.7.Sepertinya memang sudah diperbaiki, tapi butuh waktu hampir setahun juga.
Boleh minta tautan isunya? Saya sudah coba cari, tapi agak sulit menemukannya.
https://github.com/launchbadge/sqlx/issues/3387
Sepertinya ini
SQLx - Rust SQL Toolkit
Saya pernah membagikannya sekali sekitar 5 tahun lalu, dan selama itu sudah ada cukup banyak perubahan.
Sekarang validasi sudah bisa dilakukan pada saat compile time dengan terhubung ke DB yang sebenarnya,
serta kompatibel hingga dengan tokio/async-std/actix,
dengan penguatan fitur dan pengujian yang layak dipakai di lingkungan produksi seperti connection pool, nested transaction, AnyPool, sehingga bisa diterapkan juga pada layanan berskala besar,
dan kini menjadi proyek yang layak direkomendasikan untuk proyek yang menggunakan SQL secara langsung tanpa ORM.
Selain itu, melalui sqlx juga muncul proyek yang mengimplementasikan ORM seperti SeaORM dan Welds.
Di luar itu, ada juga SeaQuery sebagai query builder dan SQLPage sebagai framework aplikasi web.