डेटा स्टोरेज मोबाइल एप्लिकेशन के प्रमुख कार्यों में से एक है, जो प्रदर्शन, सुरक्षा और उपयोगकर्ता अनुभव को प्रभावित करता है। इस लेख में हम SQLite, Room, Core Data, Realm, Firebase Firestore, SharedPreferences, DataStore, Keystore और Keychain के साथ-साथ सीरियलाइज़ेशन फ़ॉर्मेट (JSON, Protobuf) और लाइब्रेरी (Gson, Moshi, kotlinx.serialization) को कवर करेंगे। यह गाइड शुरुआती डेवलपर्स को डेटा स्टोरेज का सही समाधान चुनने में मदद करेगा। अधिक जानकारी के लिए Android डेटा स्टोरेज की आधिकारिक गाइड देखें।
मुख्य बिंदु
एंटिटी के बीच संबंधों के साथ संरचित डेटा को संग्रहीत करने के लिए रिलेशनल डेटाबेस का उपयोग किया जाता है।
SQLite एक एम्बेडेड रिलेशनल डेटाबेस है जो किसी भी मोबाइल प्लेटफ़ॉर्म पर काम करता है। इसे अलग सर्वर की आवश्यकता नहीं होती है, डेटा एक फ़ाइल में संग्रहीत होता है। SQLite Room (Android) और वैकल्पिक रूप से Core Data (iOS) का आधार है। लाइब्रेरी: android.database.sqlite (Android), FMDB/Core Data (iOS), sqflite (Flutter)।
Room SQLite के साथ काम करने के लिए आधिकारिक Android Architecture Components लाइब्रेरी है। यह ORM लेयर प्रदान करती है: Entity (टेबल), DAO (क्वेरी), Database (एंट्री पॉइंट)। Room कंपाइल टाइम पर SQL क्वेरी की जाँच करता है, कोरूटीन और Flow को सपोर्ट करता है, और स्वचालित रूप से स्कीमा माइग्रेट करता है।
@Entity data class User( @PrimaryKey val id: Int, val name: String, val email: String ) @Dao interface UserDao { @Query("SELECT * FROM user WHERE id = :id") suspend fun getUser(id: Int): User? }
Core Data ऑब्जेक्ट ग्राफ़ प्रबंधित करने के लिए Apple का फ्रेमवर्क है। यह शुद्ध डेटाबेस नहीं है — यह SQLite, XML या बाइनरी स्टोरेज के ऊपर एक पर्सिस्टेंस लेयर है। Core Data ऑब्जेक्ट (NSManagedObject), रिलेशनशिप, स्कीमा वर्ज़निंग, अन्डू/रीडू और NSManagedObjectContext के माध्यम से मल्टीथ्रेडिंग को प्रबंधित करता है।
Realm SQLite का एक विकल्प है, जिसे उच्च-प्रदर्शन मोबाइल डेटाबेस के रूप में डिज़ाइन किया गया है। Realm रीड और राइट में SQLite से तेज़ है, रिएक्टिव नोटिफिकेशन (Live Objects), ऑन-द-फ्लाई एन्क्रिप्शन और क्रॉस-प्लेटफ़ॉर्म (Android, iOS, Flutter, React Native) को सपोर्ट करता है। नुकसान: बढ़ा हुआ APK/IPA आकार और अधिक मेमोरी उपयोग।
डेटा की छोटी मात्रा (सेटिंग्स, टोकन, कैश) को संग्रहीत करने के लिए सरल की-वैल्यू स्टोरेज का उपयोग किया जाता है।
SharedPreferences Android में एक लीगेसी की-वैल्यू स्टोरेज है। नुकसान: सिंक्रोनस एक्सेस (पढ़ने पर UI ब्लॉक करता है), टाइपिंग की कमी, बड़ी फ़ाइल लोड करने पर ANR जोखिम। नए प्रोजेक्ट के लिए अनुशंसित नहीं है।
DataStore Google की ओर से SharedPreferences का आधुनिक प्रतिस्थापन है। यह Kotlin Coroutines और Flow के माध्यम से एसिंक्रोनस रूप से काम करता है, Preferences DataStore (की-वैल्यू) और Proto DataStore (Protobuf के माध्यम से टाइप किया गया डेटा) को सपोर्ट करता है। DataStore UI थ्रेड के लिए सुरक्षित है और ट्रांज़ैक्शन को सपोर्ट करता है।
UserDefaults iOS में छोटी सेटिंग्स के लिए मानक स्टोरेज है। यह प्रिमिटिव टाइप, स्ट्रिंग, डेट, Data को सपोर्ट करता है। UserDefaults सिंक्रोनस है, इसलिए बड़े डेटा वॉल्यूम के लिए उपयुक्त नहीं है। register(defaults:) के माध्यम से डिफ़ॉल्ट मान सेट किए जाते हैं।
उन अनुप्रयोगों में डेटा संग्रहण के लिए जिन्हें उपकरणों के बीच सिंक्रोनाइज़ेशन की आवश्यकता होती है, Firebase क्लाउड डेटाबेस का उपयोग किया जाता है।
Firebase Firestore एक NoSQL दस्तावेज़ डेटाबेस है जिसमें रीयल-टाइम सब्सक्रिप्शन, स्वचालित स्केलिंग, शक्तिशाली क्वेरी और बिल्ट-इन ऑफ़लाइन मोड है। डेटा कलेक्शन और दस्तावेज़ों (JSON-जैसी संरचनाएं) में व्यवस्थित होता है। Firestore ट्रांज़ैक्शन और बैच ऑपरेशन को सपोर्ट करता है। चैट, फ़ीड और सोशल ऐप के लिए आदर्श।
Firebase Realtime Database एक पुराना Firebase NoSQL डेटाबेस है जो डेटा को एक एकल JSON ट्री के रूप में संग्रहीत करता है। Firestore से सरल लेकिन क्वेरी और स्केलिंग में कम लचीला। सरल रीयल-टाइम अनुप्रयोगों (ऑनलाइन स्थिति, सरल चैट) के लिए अनुशंसित।
| विशेषता | Cloud Firestore | Firebase Realtime DB |
|---|---|---|
| डेटा मॉडल | कलेक्शन → दस्तावेज़ | JSON ट्री |
| क्वेरी | जटिल (फ़िल्टरिंग, सॉर्टिंग, सीमा) | सरल (कुंजी द्वारा) |
| स्केलिंग | स्वचालित | मैनुअल शार्डिंग |
| ऑफ़लाइन मोड | हाँ (पर्सिस्टेंट कैश) | हाँ |
| मूल्य निर्धारण | प्रति रीड/राइट ऑपरेशन | प्रति ट्रैफ़िक + स्टोरेज |
टोकन, पासवर्ड और एन्क्रिप्शन कुंजियों के भंडारण के लिए विशेष सुरक्षित स्टोरेज की आवश्यकता होती है।
Android Keystore क्रिप्टोग्राफ़िक कुंजियों के लिए सिस्टम स्टोरेज है। कुंजियाँ हार्डवेयर वातावरण (TEE — Trusted Execution Environment) में संग्रहीत की जाती हैं, जो ऐप और OS के लिए दुर्गम है। यह कुंजी जनरेशन, एन्क्रिप्शन और साइनिंग को सपोर्ट करता है। Android 9+ में StrongBox Keymaster (समर्पित चिप) शामिल है।
Keychain Services पासवर्ड, कुंजियों और प्रमाणपत्रों के लिए एक सुरक्षित iOS स्टोरेज है। डेटा हार्डवेयर Secure Enclave का उपयोग करके एन्क्रिप्ट किया जाता है। Keychain एक्सेसिबिलिटी स्तरों को सपोर्ट करता है: Always, WhenUnlocked, WhenUnlockedThisDeviceOnly, AfterFirstUnlock।
EncryptedSharedPreferences AES256-GCM और HKDF के माध्यम से कुंजी और मान एन्क्रिप्शन के साथ SharedPreferences के ऊपर एक रैपर है। AndroidX Security लाइब्रेरी में लागू किया गया। टोकन और संवेदनशील सेटिंग्स को संग्रहीत करने के लिए अनुशंसित।
IT Sectr में हम रिफ्रेश-टोकन और बायोमेट्रिक-आधारित कुंजियों को संग्रहीत करने के लिए Android Keystore + EncryptedSharedPreferences का उपयोग करते हैं। iOS पर हम अधिकतम सुरक्षा के लिए kSecAttrAccessibleWhenUnlockedThisDeviceOnly स्तर के साथ Keychain का उपयोग करते हैं।
फ़ाइल स्टोरेज (इमेज, वीडियो, दस्तावेज़) के लिए मोबाइल प्लेटफ़ॉर्म कई प्रकार के स्टोरेज प्रदान करते हैं।
Android Internal Storage (/data/data/पैकेज/ — निजी स्टोरेज) और External Storage (SD कार्ड या एम्युलेटेड पार्टीशन) के बीच अंतर करता है। Cache Directory अस्थायी स्टोरेज है जिसे सिस्टम साफ़ कर सकता है। Scoped Storage (Android 10+) External Storage तक पहुँच को प्रतिबंधित करता है — ऐप केवल अपनी फ़ाइलें या MediaStore/SAF के माध्यम से फ़ाइलें देखते हैं।
iOS Documents Directory (iCloud बैकअप, स्थायी डेटा), Library/Caches (अस्थायी फ़ाइलें, बैकअप नहीं) और Tmp Directory (अस्थायी, साफ़ की जा सकती हैं) प्रदान करता है। फ़ाइल सिस्टम के साथ काम करने के लिए NSFileManager का उपयोग करें। iOS 11+ क्लाउड फ़ाइलों के लिए File Provider को सपोर्ट करता है।
सीरियलाइज़ेशन ऑब्जेक्ट को ट्रांसमिशन या स्टोरेज के लिए फ़ॉर्मेट में बदलता है। डीसीरियलाइज़ेशन विपरीत प्रक्रिया है।
JSON (JavaScript Object Notation) सबसे लोकप्रिय फ़ॉर्मेट है: पढ़ने योग्य, लचीला, सभी प्लेटफ़ॉर्म द्वारा समर्थित। XML अधिक सख्त है, लीगेसी सिस्टम में उपयोग किया जाता है। Protobuf (Protocol Buffers) Google का बाइनरी फ़ॉर्मेट है: JSON से 3-10 गुना अधिक कॉम्पैक्ट, तेज़ पार्सिंग, सख्त स्कीमा। उच्च-लोड सिस्टम और माइक्रोसर्विसेज़ के लिए उपयोग किया जाता है।
JSONSerialization JSON के साथ काम करने के लिए बिल्ट-इन API है। Codable (Encodable/Decodable) JSON, Property List और अन्य फ़ॉर्मेट में स्वचालित सीरियलाइज़ेशन के लिए आधुनिक Swift प्रोटोकॉल है।
struct User: Codable { let id: Int let name: String let email: String } let user = User(id: 1, name: "Alice", email: "alice@example.com") let encoder = JSONEncoder() let jsonData = try encoder.encode(user)
Flutter और React Native के लिए कुशल स्टोरेज लाइब्रेरी मौजूद हैं।
Hive Flutter के लिए एक हल्का, तेज़ की-वैल्यू स्टोरेज है। इसे नेटिव कोड की आवश्यकता नहीं है (शुद्ध Dart), TypeAdapter के माध्यम से टाइपिंग को सपोर्ट करता है, और isolates में काम करता है। कैश, सेटिंग्स और छोटे डेटा के लिए आदर्श।
ObjectBox Flutter, Android और iOS के लिए एक उच्च-प्रदर्शन एम्बेडेड डेटाबेस है। यह SQLite से 10+ गुना तेज़ है, न्यूनतम ओवरहेड के लिए फ्लैट फ़ाइल संरचना का उपयोग करता है। रिलेशनशिप, क्वेरी और रिएक्टिव सब्सक्रिप्शन (ObjectBox Dart) को सपोर्ट करता है।
Drift Flutter और Dart के लिए एक रिएक्टिव SQLite लाइब्रेरी है। यह टाइप-सेफ क्वेरी, माइग्रेशन, DAO फ़ंक्शन और Stream सपोर्ट (रिएक्टिव अपडेट) प्रदान करती है। Drift उन Flutter प्रोजेक्ट के लिए प्राथमिक विकल्प है जिन्हें SQLite की आवश्यकता होती है।
अक्सर पूछे जाने वाले प्रश्न
चुनाव प्लेटफ़ॉर्म पर निर्भर करता है: Room (Android) कंपाइल-टाइम क्वेरी जाँच के साथ SQLite-आधारित आधिकारिक लाइब्रेरी है। Core Data (iOS) ऑब्जेक्ट ग्राफ़ के साथ Apple का फ्रेमवर्क है। क्रॉस-प्लेटफ़ॉर्म प्रोजेक्ट के लिए Realm या ORM के माध्यम से SQLite उपयुक्त है।
SharedPreferences सिंक्रोनस एक्सेस और ANR जोखिम के साथ पुराना कार्यान्वयन है। DataStore (Jetpack) Kotlin Coroutines और Flow पर आधारित आधुनिक प्रतिस्थापन है, जो एसिंक्रोनसिटी, टाइपिंग और त्रुटि सुरक्षा का समर्थन करता है।
Android: EncryptedSharedPreferences या Android Keystore। iOS: WhenUnlockedThisDeviceOnly एक्सेसिबिलिटी के साथ Keychain Services। महत्वपूर्ण डेटा के लिए, बायोमेट्रिक्स के साथ Secure Enclave (iOS) और हार्डवेयर Keystore (Android) का उपयोग करें।
Cloud Firestore Firebase का एक NoSQL डेटाबेस है जिसमें रीयल-टाइम सिंक्रोनाइज़ेशन, ऑफ़लाइन मोड और स्वचालित स्केलिंग है। यह चैट, न्यूज़ फ़ीड और उन प्रोजेक्ट के लिए उपयुक्त है जिन्हें उपकरणों के बीच सिंक्रोनाइज़ेशन की आवश्यकता होती है।
Flutter: Hive (तेज़ की-वैल्यू), Floor (SQLite ORM), Drift (Moor, रिएक्टिव SQLite), ObjectBox (उच्च-प्रदर्शन एम्बेडेड DB)। React Native: Realm, WatermelonDB (लेज़ी लोडिंग) और AsyncStorage (SharedPreferences का एनालॉग)।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।