Swift (iOS/macOS) के लिए ORM: तुलना और उदाहरण
iOS और macOS के लिए एप्लिकेशन विकसित करते समय, डेवलपर्स को अक्सर डिवाइस पर डेटा संग्रहीत करने की आवश्यकता का सामना करना पड़ता है। डेटाबेस के साथ काम को सरल बनाने के लिए ORM (Object-Relational Mapping) का उपयोग किया जाता है — ये लाइब्रेरीज़ हैं जो SQL क्वेरीज़ की जटिलता को छिपाते हुए, डेटा को सामान्य Swift ऑब्जेक्ट्स के रूप में काम करने की अनुमति देती हैं। इस लेख में, हम चार लोकप्रिय समाधानों पर विचार करेंगे: Core Data, Realm, GRDB और SQLite.swift, उनकी क्षमताओं की तुलना करेंगे और व्यावहारिक उदाहरण देंगे।
1. Core Data
Core Data Apple का एक फ्रेमवर्क है, जो iOS और macOS में निर्मित है। यह शुद्ध ORM नहीं है, बल्कि ऑब्जेक्ट ग्राफ प्रबंधन के लिए एक फ्रेमवर्क है, जो SQLite, XML या बाइनरी स्टोरेज का उपयोग कर सकता है।
लाभ:
- Apple इकोसिस्टम (SwiftUI, iCloud, Undo Manager) के साथ गहरा एकीकरण।
- डेटा मॉडल का विज़ुअल एडिटर (Xcode Data Modeler)।
- वर्जनिंग और माइग्रेशन के लिए समर्थन।
नुकसान:
- उच्च प्रवेश सीमा (बहुत सारा boilerplate कोड)।
- बड़े डेटा सेट के साथ काम करते समय प्रदर्शन संबंधी समस्याएं।
- Apple प्लेटफॉर्म से मजबूत जुड़ाव।
कोड उदाहरण (Swift):
import CoreData
// कॉन्टेक्स्ट बनानाlet container = NSPersistentContainer(name: "Model")container.loadPersistentStores { _, error in if let error = error { print(error) }}
// ऑब्जेक्ट सहेजनाlet context = container.viewContextlet user = User(context: context)user.name = "इवान"user.age = 30
try? context.save()
// क्वेरीlet request: NSFetchRequest<User> = User.fetchRequest()request.predicate = NSPredicate(format: "age > 18")let users = try? context.fetch(request)2. Realm
Realm एक क्रॉस-प्लेटफॉर्म ORM है, जिसे विशेष रूप से मोबाइल एप्लिकेशन के लिए विकसित किया गया है। यह पढ़ने और लिखने के संचालन पर Core Data से तेज़ काम करता है।
लाभ:
- उच्च प्रदर्शन (Core Data से 10x तक तेज़)।
- SQL लिखने की आवश्यकता के बिना सरल API।
- ऑब्जेक्ट्स का स्वचालित अपडेट (live objects)।
- रिएक्टिव एक्सटेंशन (RxRealm, Combine) के लिए समर्थन।
नुकसान:
- डेटाबेस फ़ाइलों का बंद प्रारूप।
- सीमित डेटाबेस आकार (iOS पर 2 GB तक)।
- जटिल क्वेरीज़ के लिए कम लचीलापन।
कोड उदाहरण (Swift):
import RealmSwift
// मॉडल परिभाषाclass User: Object { @Persisted var name: String = "" @Persisted var age: Int = 0}
// सहेजनाlet realm = try! Realm()let user = User()user.name = "मारिया"user.age = 25
try! realm.write { realm.add(user)}
// क्वेरीlet users = realm.objects(User.self).filter("age > 18")for user in users { print("\\(user.name): \\(user.age)")}3. GRDB
GRDB Swift में SQLite के साथ काम करने के लिए एक आधुनिक लाइब्रेरी है। यह SQL तक निम्न-स्तरीय पहुंच और ORM की सुविधा को जोड़ती है।
लाभ:
- अधिकतम प्रदर्शन (नेटिव SQLite)।
- Combine और Swift Concurrency (async/await) के लिए समर्थन।
- SQL क्वेरीज़ पर पूर्ण नियंत्रण।
- माइग्रेशन और वर्जनिंग के लिए समर्थन।
नुकसान:
- SQL का ज्ञान आवश्यक है।
- कम "जादू" — अधिक मैन्युअल कोड।
कोड उदाहरण (Swift):
import GRDB
// मॉडल परिभाषाstruct User: Codable, FetchableRecord, PersistableRecord { var id: Int64? var name: String var age: Int}
// डेटाबेस से कनेक्शनlet dbQueue = try DatabaseQueue(path: "/path/to/database.sqlite")
// सहेजनाtry dbQueue.write { db in let user = User(nam पुस्तकालय में भी
Kotlin WebSocket लाइब्रेरी: Ktor WebSocket क्लाइंट और सर्वर
Kotlin में CSV के साथ कार्य: लाइब्रेरीज़, पार्सिंग और डेटा लेखन
gRPC C++ पूर्ण गाइड: उदाहरणों के साथ C++ में gRPC
Elasticsearch क्लाइंट Java के लिए: कनेक्शन और कार्य के लिए पूर्ण गाइड