SQLX - Rust-आधारित SQL टूलकिट ओपन सोर्स
(github.com/launchbadge)- यह async तरीके से काम करने वाला pure Rust-आधारित SQL crate है, जो Rust macro का उपयोग करके DSL के बिना compile time पर SQL query validation संभव बनाता है
- यह ORM नहीं है! : उन projects के लिए बेहतरीन जो ORM के बिना SQL को उसी रूप में इस्तेमाल करना चाहते हैं
- PostgreSQL, MySQL, MariaDB, SQLite जैसे databases का समर्थन
.envफ़ाइल मेंDATABASE_URLसेट करके आसानी से compile-time check किया जा सकता है
- Pure Rust implementation (MySQL/MariaDB driver 100% Rust में लिखे गए हैं. SQLite, C library integration का उपयोग करता है), unsafe code का उपयोग किए बिना सुरक्षित रूप से डिज़ाइन किया गया है, इसलिए इसकी विश्वसनीयता अधिक है
- Tokio, async-std, actix जैसे प्रमुख Rust async runtimes और विभिन्न TLS backends के साथ compatible है, और platform-independent तरीके से इस्तेमाल किया जा सकता है
- MIT/Apache 2.0 dual license के तहत, open source और commercial projects में व्यापक रूप से उपयोग किया जा सकता है
मुख्य विशेषताएँ
sqlx::Poolके ज़रिये connection pooling- database से डेटा का async Row streaming
- हर connection के लिए automatic query preparation और caching
- unprepared (Prepared नहीं) queries भी आसानी से चल सकती हैं, और result उसी Row type में लौटता है
- समर्थित DBs (MySQL, MariaDB, PostgreSQL) में TLS encrypted connection का समर्थन
- async PostgreSQL notifications का समर्थन :
LISTENऔरNOTIFY - savepoint का उपयोग करने वाले nested transactions का समर्थन
- runtime पर DB driver को वैकल्पिक रूप से बदलने योग्य
AnyPoolका समर्थन
6 टिप्पणियां
व्यक्तिगत रूप से, मुझे Go के sqlc का approach पसंद है.
यह पहले native query लिखने और फिर code generate करने का तरीका है.
_bin collationफ़ील्ड कोStringमें serialize न कर पाने वाली समस्या 1 साल से ज़्यादा समय से ठीक नहीं हुई है, इसलिए इसे production उपयोग के लिए इस्तेमाल करना व्यावहारिक नहीं है। यहाँ तक कि यह एक regression issue है, इसलिए बहुत से उपयोगकर्ता और libraries0.7version पर ही रुके हुए हैं।लगता है फिलहाल इसे ठीक तो कर दिया है, लेकिन इसमें लगभग 1 साल लग गया।
क्या आप issue link साझा कर सकते हैं? मैंने थोड़ा खोजा, लेकिन उसे ढूंढना मुश्किल हो रहा है।
https://github.com/launchbadge/sqlx/issues/3387
लगता है यही है
SQLx - Rust SQL Toolkit
इसे मैंने 5 साल पहले एक बार शेयर किया था। तब से इसमें काफ़ी बदलाव हुए हैं।
अब compile time पर असली DB से कनेक्ट करके validation संभव हो गया है,
tokio/async-std/actix तक compatible है,
और connection pool, nested transaction, AnyPool जैसी production में काम आने वाली features और tests मज़बूत हुए हैं, इसलिए अब यह बड़े पैमाने की services में भी लागू किया जा सकता है। यह उन projects के लिए recommend करने लायक बन गया है जो ORM के बिना सीधे SQL का इस्तेमाल करते हैं।
और
sqlxके ज़रिए ORM implement करने वाले SeaORM, Welds जैसे projects भी सामने आए हैं।इसके अलावा query builder SeaQuery और web application framework SQLPage जैसी चीज़ें भी हैं।