موبائل ڈیولپمنٹ میں ڈیٹا اسٹوریج: یہ کیا ہے، طریقے اور یہ کیسے کام کرتا ہے

مصنف: 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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں