मोबाइल डेवलपमेंट में डेटा स्टोरेज: यह क्या है, तरीके और यह कैसे काम करता है

लेखक: IT Sectr प्रकाशित: 2026-03-08 पढ़ने का समय: 9 मिनट

डेटा स्टोरेज मोबाइल एप्लिकेशन के प्रमुख कार्यों में से एक है, जो प्रदर्शन, सुरक्षा और उपयोगकर्ता अनुभव को प्रभावित करता है। इस लेख में हम SQLite, Room, Core Data, Realm, Firebase Firestore, SharedPreferences, DataStore, Keystore और Keychain के साथ-साथ सीरियलाइज़ेशन फ़ॉर्मेट (JSON, Protobuf) और लाइब्रेरी (Gson, Moshi, kotlinx.serialization) को कवर करेंगे। यह गाइड शुरुआती डेवलपर्स को डेटा स्टोरेज का सही समाधान चुनने में मदद करेगा। अधिक जानकारी के लिए Android डेटा स्टोरेज की आधिकारिक गाइड देखें।

मुख्य बिंदु

  • Room (Android) और Core Data (iOS) प्रत्येक प्लेटफ़ॉर्म पर रिलेशनल डेटाबेस के साथ काम करने के लिए आधिकारिक ORM हैं
  • SharedPreferences (Android) को DataStore द्वारा बदला जा रहा है — एक एसिंक्रोनस और टाइप-सेफ की-वैल्यू स्टोरेज
  • टोकन के सुरक्षित भंडारण के लिए हार्डवेयर सुरक्षा के साथ Keystore (Android) और Keychain (iOS) का उपयोग किया जाता है
  • Firebase Firestore रीयल-टाइम सिंक्रोनाइज़ेशन और ऑफ़लाइन मोड के साथ एक NoSQL डेटाबेस है
  • सीरियलाइज़ेशन — Gson, Moshi, kotlinx.serialization के माध्यम से ऑब्जेक्ट को JSON/Protobuf में बदलना

लोकल डेटाबेस: SQLite, Room, Core Data, Realm

एंटिटी के बीच संबंधों के साथ संरचित डेटा को संग्रहीत करने के लिए रिलेशनल डेटाबेस का उपयोग किया जाता है।

SQLite

SQLite एक एम्बेडेड रिलेशनल डेटाबेस है जो किसी भी मोबाइल प्लेटफ़ॉर्म पर काम करता है। इसे अलग सर्वर की आवश्यकता नहीं होती है, डेटा एक फ़ाइल में संग्रहीत होता है। SQLite Room (Android) और वैकल्पिक रूप से Core Data (iOS) का आधार है। लाइब्रेरी: android.database.sqlite (Android), FMDB/Core Data (iOS), sqflite (Flutter)।

Room (Android)

Room SQLite के साथ काम करने के लिए आधिकारिक Android Architecture Components लाइब्रेरी है। यह ORM लेयर प्रदान करती है: Entity (टेबल), DAO (क्वेरी), Database (एंट्री पॉइंट)। Room कंपाइल टाइम पर SQL क्वेरी की जाँच करता है, कोरूटीन और Flow को सपोर्ट करता है, और स्वचालित रूप से स्कीमा माइग्रेट करता है।

kotlin
@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 (iOS)

Core Data ऑब्जेक्ट ग्राफ़ प्रबंधित करने के लिए Apple का फ्रेमवर्क है। यह शुद्ध डेटाबेस नहीं है — यह SQLite, XML या बाइनरी स्टोरेज के ऊपर एक पर्सिस्टेंस लेयर है। Core Data ऑब्जेक्ट (NSManagedObject), रिलेशनशिप, स्कीमा वर्ज़निंग, अन्डू/रीडू और NSManagedObjectContext के माध्यम से मल्टीथ्रेडिंग को प्रबंधित करता है।

Realm

Realm SQLite का एक विकल्प है, जिसे उच्च-प्रदर्शन मोबाइल डेटाबेस के रूप में डिज़ाइन किया गया है। Realm रीड और राइट में SQLite से तेज़ है, रिएक्टिव नोटिफिकेशन (Live Objects), ऑन-द-फ्लाई एन्क्रिप्शन और क्रॉस-प्लेटफ़ॉर्म (Android, iOS, Flutter, React Native) को सपोर्ट करता है। नुकसान: बढ़ा हुआ APK/IPA आकार और अधिक मेमोरी उपयोग।

की-वैल्यू स्टोरेज और सेटिंग्स

डेटा की छोटी मात्रा (सेटिंग्स, टोकन, कैश) को संग्रहीत करने के लिए सरल की-वैल्यू स्टोरेज का उपयोग किया जाता है।

SharedPreferences (Android)

SharedPreferences Android में एक लीगेसी की-वैल्यू स्टोरेज है। नुकसान: सिंक्रोनस एक्सेस (पढ़ने पर UI ब्लॉक करता है), टाइपिंग की कमी, बड़ी फ़ाइल लोड करने पर ANR जोखिम। नए प्रोजेक्ट के लिए अनुशंसित नहीं है।

DataStore (Jetpack Android)

DataStore Google की ओर से SharedPreferences का आधुनिक प्रतिस्थापन है। यह Kotlin Coroutines और Flow के माध्यम से एसिंक्रोनस रूप से काम करता है, Preferences DataStore (की-वैल्यू) और Proto DataStore (Protobuf के माध्यम से टाइप किया गया डेटा) को सपोर्ट करता है। DataStore UI थ्रेड के लिए सुरक्षित है और ट्रांज़ैक्शन को सपोर्ट करता है।

NSUserDefaults (iOS)

UserDefaults iOS में छोटी सेटिंग्स के लिए मानक स्टोरेज है। यह प्रिमिटिव टाइप, स्ट्रिंग, डेट, Data को सपोर्ट करता है। UserDefaults सिंक्रोनस है, इसलिए बड़े डेटा वॉल्यूम के लिए उपयुक्त नहीं है। register(defaults:) के माध्यम से डिफ़ॉल्ट मान सेट किए जाते हैं।

क्लाउड डेटाबेस: Firebase Firestore और Realtime DB

उन अनुप्रयोगों में डेटा संग्रहण के लिए जिन्हें उपकरणों के बीच सिंक्रोनाइज़ेशन की आवश्यकता होती है, Firebase क्लाउड डेटाबेस का उपयोग किया जाता है।

Cloud Firestore

Firebase Firestore एक NoSQL दस्तावेज़ डेटाबेस है जिसमें रीयल-टाइम सब्सक्रिप्शन, स्वचालित स्केलिंग, शक्तिशाली क्वेरी और बिल्ट-इन ऑफ़लाइन मोड है। डेटा कलेक्शन और दस्तावेज़ों (JSON-जैसी संरचनाएं) में व्यवस्थित होता है। Firestore ट्रांज़ैक्शन और बैच ऑपरेशन को सपोर्ट करता है। चैट, फ़ीड और सोशल ऐप के लिए आदर्श।

Firebase Realtime Database

Firebase Realtime Database एक पुराना Firebase NoSQL डेटाबेस है जो डेटा को एक एकल JSON ट्री के रूप में संग्रहीत करता है। Firestore से सरल लेकिन क्वेरी और स्केलिंग में कम लचीला। सरल रीयल-टाइम अनुप्रयोगों (ऑनलाइन स्थिति, सरल चैट) के लिए अनुशंसित।

विशेषता Cloud Firestore Firebase Realtime DB
डेटा मॉडलकलेक्शन → दस्तावेज़JSON ट्री
क्वेरीजटिल (फ़िल्टरिंग, सॉर्टिंग, सीमा)सरल (कुंजी द्वारा)
स्केलिंगस्वचालितमैनुअल शार्डिंग
ऑफ़लाइन मोडहाँ (पर्सिस्टेंट कैश)हाँ
मूल्य निर्धारणप्रति रीड/राइट ऑपरेशनप्रति ट्रैफ़िक + स्टोरेज

सुरक्षित स्टोरेज: Keystore, Keychain और EncryptedSharedPreferences

टोकन, पासवर्ड और एन्क्रिप्शन कुंजियों के भंडारण के लिए विशेष सुरक्षित स्टोरेज की आवश्यकता होती है।

Android Keystore

Android Keystore क्रिप्टोग्राफ़िक कुंजियों के लिए सिस्टम स्टोरेज है। कुंजियाँ हार्डवेयर वातावरण (TEE — Trusted Execution Environment) में संग्रहीत की जाती हैं, जो ऐप और OS के लिए दुर्गम है। यह कुंजी जनरेशन, एन्क्रिप्शन और साइनिंग को सपोर्ट करता है। Android 9+ में StrongBox Keymaster (समर्पित चिप) शामिल है।

iOS Keychain

Keychain Services पासवर्ड, कुंजियों और प्रमाणपत्रों के लिए एक सुरक्षित iOS स्टोरेज है। डेटा हार्डवेयर Secure Enclave का उपयोग करके एन्क्रिप्ट किया जाता है। Keychain एक्सेसिबिलिटी स्तरों को सपोर्ट करता है: Always, WhenUnlocked, WhenUnlockedThisDeviceOnly, AfterFirstUnlock।

EncryptedSharedPreferences (Android)

EncryptedSharedPreferences AES256-GCM और HKDF के माध्यम से कुंजी और मान एन्क्रिप्शन के साथ SharedPreferences के ऊपर एक रैपर है। AndroidX Security लाइब्रेरी में लागू किया गया। टोकन और संवेदनशील सेटिंग्स को संग्रहीत करने के लिए अनुशंसित।

IT Sectr में हम रिफ्रेश-टोकन और बायोमेट्रिक-आधारित कुंजियों को संग्रहीत करने के लिए Android Keystore + EncryptedSharedPreferences का उपयोग करते हैं। iOS पर हम अधिकतम सुरक्षा के लिए kSecAttrAccessibleWhenUnlockedThisDeviceOnly स्तर के साथ Keychain का उपयोग करते हैं।

फ़ाइल स्टोरेज: Internal, External, Cache Directory

फ़ाइल स्टोरेज (इमेज, वीडियो, दस्तावेज़) के लिए मोबाइल प्लेटफ़ॉर्म कई प्रकार के स्टोरेज प्रदान करते हैं।

Android Storage

Android Internal Storage (/data/data/पैकेज/ — निजी स्टोरेज) और External Storage (SD कार्ड या एम्युलेटेड पार्टीशन) के बीच अंतर करता है। Cache Directory अस्थायी स्टोरेज है जिसे सिस्टम साफ़ कर सकता है। Scoped Storage (Android 10+) External Storage तक पहुँच को प्रतिबंधित करता है — ऐप केवल अपनी फ़ाइलें या MediaStore/SAF के माध्यम से फ़ाइलें देखते हैं।

iOS Storage

iOS Documents Directory (iCloud बैकअप, स्थायी डेटा), Library/Caches (अस्थायी फ़ाइलें, बैकअप नहीं) और Tmp Directory (अस्थायी, साफ़ की जा सकती हैं) प्रदान करता है। फ़ाइल सिस्टम के साथ काम करने के लिए NSFileManager का उपयोग करें। iOS 11+ क्लाउड फ़ाइलों के लिए File Provider को सपोर्ट करता है।

डेटा सीरियलाइज़ेशन: JSON, Protobuf और लाइब्रेरी

सीरियलाइज़ेशन ऑब्जेक्ट को ट्रांसमिशन या स्टोरेज के लिए फ़ॉर्मेट में बदलता है। डीसीरियलाइज़ेशन विपरीत प्रक्रिया है।

फ़ॉर्मेट

JSON (JavaScript Object Notation) सबसे लोकप्रिय फ़ॉर्मेट है: पढ़ने योग्य, लचीला, सभी प्लेटफ़ॉर्म द्वारा समर्थित। XML अधिक सख्त है, लीगेसी सिस्टम में उपयोग किया जाता है। Protobuf (Protocol Buffers) Google का बाइनरी फ़ॉर्मेट है: JSON से 3-10 गुना अधिक कॉम्पैक्ट, तेज़ पार्सिंग, सख्त स्कीमा। उच्च-लोड सिस्टम और माइक्रोसर्विसेज़ के लिए उपयोग किया जाता है।

Android लाइब्रेरी

  • Gson (Google) — सरल, लचीला, लेकिन धीमा। Java/Kotlin ऑब्जेक्ट के साथ स्वचालित रूप से काम करता है
  • Moshi (Square) — Gson से तेज़, बेहतर Kotlin सपोर्ट (नॉन-नल प्रॉपर्टी, डिफ़ॉल्ट वैल्यू, सील्ड क्लास)
  • kotlinx.serialization — JetBrains से नेटिव Kotlin सीरियलाइज़ेशन, कंपाइल टाइम पर काम करता है, JSON, Protobuf, CBOR को सपोर्ट करता है

iOS लाइब्रेरी

JSONSerialization JSON के साथ काम करने के लिए बिल्ट-इन API है। Codable (Encodable/Decodable) JSON, Property List और अन्य फ़ॉर्मेट में स्वचालित सीरियलाइज़ेशन के लिए आधुनिक Swift प्रोटोकॉल है।

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)

क्रॉस-प्लेटफ़ॉर्म समाधान: Hive, ObjectBox, Drift

Flutter और React Native के लिए कुशल स्टोरेज लाइब्रेरी मौजूद हैं।

Hive (Flutter)

Hive Flutter के लिए एक हल्का, तेज़ की-वैल्यू स्टोरेज है। इसे नेटिव कोड की आवश्यकता नहीं है (शुद्ध Dart), TypeAdapter के माध्यम से टाइपिंग को सपोर्ट करता है, और isolates में काम करता है। कैश, सेटिंग्स और छोटे डेटा के लिए आदर्श।

ObjectBox

ObjectBox Flutter, Android और iOS के लिए एक उच्च-प्रदर्शन एम्बेडेड डेटाबेस है। यह SQLite से 10+ गुना तेज़ है, न्यूनतम ओवरहेड के लिए फ्लैट फ़ाइल संरचना का उपयोग करता है। रिलेशनशिप, क्वेरी और रिएक्टिव सब्सक्रिप्शन (ObjectBox Dart) को सपोर्ट करता है।

Drift (पूर्व में Moor)

Drift Flutter और Dart के लिए एक रिएक्टिव SQLite लाइब्रेरी है। यह टाइप-सेफ क्वेरी, माइग्रेशन, DAO फ़ंक्शन और Stream सपोर्ट (रिएक्टिव अपडेट) प्रदान करती है। Drift उन Flutter प्रोजेक्ट के लिए प्राथमिक विकल्प है जिन्हें SQLite की आवश्यकता होती है।

अक्सर पूछे जाने वाले प्रश्न

लोकल डेटा स्टोरेज के लिए क्या बेहतर है: Room या Core Data?

चुनाव प्लेटफ़ॉर्म पर निर्भर करता है: Room (Android) कंपाइल-टाइम क्वेरी जाँच के साथ SQLite-आधारित आधिकारिक लाइब्रेरी है। Core Data (iOS) ऑब्जेक्ट ग्राफ़ के साथ Apple का फ्रेमवर्क है। क्रॉस-प्लेटफ़ॉर्म प्रोजेक्ट के लिए Realm या ORM के माध्यम से SQLite उपयुक्त है।

SharedPreferences और DataStore में क्या अंतर है?

SharedPreferences सिंक्रोनस एक्सेस और ANR जोखिम के साथ पुराना कार्यान्वयन है। DataStore (Jetpack) Kotlin Coroutines और Flow पर आधारित आधुनिक प्रतिस्थापन है, जो एसिंक्रोनसिटी, टाइपिंग और त्रुटि सुरक्षा का समर्थन करता है।

मोबाइल ऐप में टोकन और पासवर्ड को सुरक्षित रूप से कैसे स्टोर करें?

Android: EncryptedSharedPreferences या Android Keystore। iOS: WhenUnlockedThisDeviceOnly एक्सेसिबिलिटी के साथ Keychain Services। महत्वपूर्ण डेटा के लिए, बायोमेट्रिक्स के साथ Secure Enclave (iOS) और हार्डवेयर Keystore (Android) का उपयोग करें।

Firebase Firestore क्या है और इसका उपयोग कब करना चाहिए?

Cloud Firestore Firebase का एक NoSQL डेटाबेस है जिसमें रीयल-टाइम सिंक्रोनाइज़ेशन, ऑफ़लाइन मोड और स्वचालित स्केलिंग है। यह चैट, न्यूज़ फ़ीड और उन प्रोजेक्ट के लिए उपयुक्त है जिन्हें उपकरणों के बीच सिंक्रोनाइज़ेशन की आवश्यकता होती है।

Flutter और React Native के लिए कौन से ORM मौजूद हैं?

Flutter: Hive (तेज़ की-वैल्यू), Floor (SQLite ORM), Drift (Moor, रिएक्टिव SQLite), ObjectBox (उच्च-प्रदर्शन एम्बेडेड DB)। React Native: Realm, WatermelonDB (लेज़ी लोडिंग) और AsyncStorage (SharedPreferences का एनालॉग)।

सारांश

  • Room (Android) और Core Data (iOS) प्रत्येक प्लेटफ़ॉर्म पर रिलेशनल डेटाबेस के लिए आधिकारिक समाधान हैं
  • DataStore एसिंक्रोनस सेटिंग्स स्टोरेज के लिए SharedPreferences को बदलता है
  • Keystore / Keychain टोकन और कुंजियों के सुरक्षित भंडारण के लिए अनिवार्य हैं
  • Firebase Firestore उपकरणों के बीच रीयल-टाइम सिंक्रोनाइज़ेशन के लिए सबसे अच्छा विकल्प है
  • Kotlinx.serialization (Android) और Codable (iOS) आधुनिक सीरियलाइज़ेशन दृष्टिकोण हैं
  • Flutter के लिए: Drift (SQLite), Hive (की-वैल्यू), ObjectBox (उच्च प्रदर्शन)
  • Realm रिएक्टिव नोटिफिकेशन के साथ SQLite का क्रॉस-प्लेटफ़ॉर्म विकल्प है

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें