- Katılım
- 7 Ocak 2026
- Mesajlar
- 290
- Tepkime puanı
- 2
- Puanları
- 18
Rust dünyasında veritabanı işlemleri söz konusu olduğunda, topluluk iki ana kamp arasında bölünmüştür: Diesel ve SQLx. Her iki araç da Rust’ın güvenlik vaatlerini veritabanı seviyesine taşır, ancak bunu yapış yolları birbirinden tamamen farklıdır.
Bu rehberde, projeniz için hangi kütüphanenin daha uygun olduğunu anlamanıza yardımcı olacak detaylı bir inceleme yapacağız.
Öne Çıkan Özellikleri:
Öne Çıkan Özellikleri:
Bu rehberde, projeniz için hangi kütüphanenin daha uygun olduğunu anlamanıza yardımcı olacak detaylı bir inceleme yapacağız.
1. Diesel: Tip Güvenliğinin Zirvesi (ORM)
Diesel, Rust ekosisteminin en eski ve en olgun ORM (Object-Relational Mapper) kütüphanesidir. Diesel'in felsefesi şudur: "Eğer kod derleniyorsa, sorgu doğrudur."Öne Çıkan Özellikleri:
- Compile-time Check: SQL sorgularınız derleme aşamasında kontrol edilir. Geçersiz bir sütun adına erişmeye çalışırsanız kodunuz derlenmez.
- Sıfır Maliyetli Soyutlama: SQL yazmak yerine Rust fonksiyonları kullanırsınız, ancak bu performans kaybına yol açmaz.
- Senkron Yapı: Diesel geleneksel olarak senkron çalışır (ancak
diesel-asyncile asenkron destek eklenmiştir).
Kod:
// Diesel ile tip güvenli bir sorgu örneği let sonuclar = kullanicilar .filter(aktif.eq(true)) .limit(5) .load::<Kullanici>(&mut baglanti)?;
2. SQLx: Saf SQL ve Asenkron Güç
SQLx bir ORM değildir; bir SQL istemcisidir. Size SQL yazma özgürlüğü tanırken, Rust'ın tip güvenliğinden ödün vermez. En büyük farkı, tamamen asenkron olması ve çalışma zamanında (runtime) bir veritabanına bağlanarak SQL sorgularınızı doğrulamasıdır.Öne Çıkan Özellikleri:
- Saf SQL: Karmaşık DSL yapılarını öğrenmek yerine bildiğiniz SQL'i yazarsınız.
- Compile-time Verification: SQLx, derleme sırasında veritabanınıza bağlanır ve yazdığınız SQL sorgusunun veritabanı şemasıyla uyumlu olup olmadığını kontrol eder.
- Tamamen Asenkron:
tokioveyaasync-stdile mükemmel uyum sağlar.
Kod:
// SQLx ile derleme zamanında doğrulanan SQL sorgusu let kullanici = sqlx::query_as!( Kullanici, "SELECT id, ad FROM kullanicilar WHERE id = $1", 1 ) .fetch_one(&havuz) .await?;
3. Diesel vs SQLx: Hangisini Seçmelisiniz?
Doğru kararı vermek için projenizin önceliklerini belirlemeniz gerekir:| Özellik | Diesel | SQLx |
| Tür | Tam ORM | SQL İstemcisi |
| Sorgu Yazımı | Rust DSL (Fonksiyonel) | Saf SQL |
| Asenkron Destek | Eklenti ile (diesel-async) | Yerleşik (Native) |
| Hata Kontrolü | Derleme anında (Statik) | Derleme anında (DB bağlantısı ile) |
| Kurulum | Diesel CLI ve Şema yönetimi | Daha basit başlangıç |
Neden Diesel Seçilmeli?
- Veritabanı şemanızla Rust modellerinizin her zaman senkronize kalmasını istiyorsanız.
- SQL yazmaktan hoşlanmıyor ve Rust'ın tip sisteminin avantajlarını sonuna kadar kullanmak istiyorsanız.
- Büyük ve karmaşık kurumsal projelerde şema yönetimini (migrations) merkezi bir sistemle yönetmek istiyorsanız.
Neden SQLx Seçilmeli?
- SQL bilginize güveniyor ve sorgularınız üzerinde tam kontrol istiyorsanız.
- Projeniz baştan sona asenkron (async/await) mimari üzerine kuruluyorsa.
- Veritabanı şemasına müdahale edemediğiniz (legacy) veya çok karmaşık Join işlemleri olan bir projedeyseniz.
4. Migration (Göç) Yönetimi
Her iki araç da veritabanı şemanızı versiyonlamak için çözümler sunar:- Diesel: Kendi CLI aracı (diesel migration run) ile .sql dosyalarını yönetir.
- SQLx: sqlx-cli aracını kullanır veya kod içerisinde sqlx::migrate!().run(&pool).await? komutuyla uygulama başlarken otomatik göç sağlar.