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

مصنف: IT Sectr اشاعت: 2026-03-14 مطالعے کا وقت: 8 منٹ

ڈیٹا پرسٹنس اس بات کو یقینی بناتا ہے کے موبائل ایپلیکیشن کے سیشنز کے درمیان صارف کی معلومات محفوظ رہے۔ اس ٹیکنالاجی کے بغیر، ہر ابتدا صفر سے شروع ہوگی — ترتیبات، ہسٹری اور ڈائن لوڈ کی گئی فائلیں بند کرنے پر گم ہو جائیں گین۔ Google Developers, 2024 کے مطابق، 90% سے زائد موبائل ایپلیکیشنز صارف کے ڈیٹا اور انٹرفیس کی حالت کو محفوظ رکھنے کے لیے کم سے کم ایک پرسٹنس میکانزم استعمال کرتے ہیں۔

اہم نکات

  • Data Persistence — ایپ کے سیشنز کے درمیان ڈیٹا کو محفوظ رکھنے کے میکانزم
  • SharedPreferences — Android پر سادہ کلید-قدر جوڑے محفوظ کرنا
  • SQLite — موبائل آلات کے لیے ضمنی متعلقاتی ڈیٹابیس
  • Room — Android کے لیے SQLite پر Google کا ORM ریپر
  • Core Data — iOS اور macOS پر آبجیکٹ مینجمنٹ فریم ورک

ڈیٹا پرسٹنس کیا ہے

Data Persistence کسی ایپلیکیشن کی آلہ کی غیر متغیر میمری میں ڈیٹا محفوظ کرنے کی صلاحیت ہے۔ موبائل ڈیولپمنٹ میں، پرسٹنس میں ڈیٹابیسز، فائل سسٹم، ترتیبات اور کیش شامل ہیں۔ ہر میکانزم کی کارکردگی، حفاظت اور ذخیرہ کی گنجائش کے حوالے سے اپنی خصوصیات ہیں۔

عارضی اور مستقل ڈیٹا

عارضی ڈیٹا صرف RAM میں موجود ہوتا ہے اور عملیہ کے ختم ہونے پر گم ہو جاتا ہے۔ اس میں سکرین کی حالت، عارضی حساب اور تصویر کیش شامل ہیں۔ مستقل ڈیٹا فائل سسٹم یا ڈیٹابیس میں لکھا جاتا ہے اور ایپ کے دوبارہ شروع کرنے کے بعد بھی دستیاب رہتا ہے۔ اس میں صارف کی ترتیبات، اختیار کے ٹوکنز، عملیات کی ہسٹری اور ڈائن لوڈ کردہ مواد شامل ہیں۔

ذخیرہ کے میکانزم کے انتخاب کا معیار

ذخیرہ کا طریقہ چونتے وقت، ڈیولپرز کئی عوامل کا جائزہ لیتے ہیں۔ ڈیٹا کی قسم ذخیرہ کے چھٹے کا تعین کرتی ہے: سادہ ترتیبات — SharedPreferences یا DataStore، منظم ریکارڈز — SQLite یا Room، فائلیں — File Storage۔ ڈیٹا کا حجم کارکردگی کو متاثر کرتا ہے: ڈیٹابیسز ہزاروں ریکارڈز کے لیے بہترین ہیں، جبکہ فائلیں بڑے بائنری آبجیکٹس کے لیے موزوں ہیں۔ حفاظت کے لیے EncryptedSharedPreferences یا SQLCipher کے ذریعہ حساس معلومات کو خفیہ کرنے کی ضرورت ہے۔

kotlin
data class StorageOption(
    name: String,
    dataType: StorageType,
    capacity: Long,
    secure: Boolean
)

enum class StorageType {
    KEY_VALUE,
    RELATIONAL,
    FILE
}

SharedPreferences اور DataStore

SharedPreferences Android پر کلید-قدر کے جوڑے محفوظ کرنے کا کلاسیکی طریقہ ہے۔ یہ API پلیٹ فارم کے پہلے ورژنز سے دستیاب ہے اور اساسی اقسام کی تاید کرتا ہے: سٹرنگز، عدد، بولین قیمتیں۔ ڈیٹا ایپ کی ذاتی ڈائریکٹری میں XML فائل میں محفوظ ہوتا ہے اور صرف اس کے عملیہ کے لیے رسائی ہے۔

متبادل کے طور پر DataStore

Jetpack DataStore Kotlin Coroutines اور Flow پر تعمیر شدہ SharedPreferences کا ایک جدید متبادل ہے۔ DataStore دو قسمیں پریش کرتا ہے: ساده قیمتیں کے لیے Preferences DataStore اور ٹائپ شدہ آبجیکٹس کے لیے Proto DataStore۔ SharedPreferences کے برعکس، DataStore هم زمان رسائی کے تحت ڈیٹا مستقلیت کی ضمانت دیتا ہے اور مرکزی ثریڈ کو روکے بغیر غیر هم زمان کاروائی کی حمایت کرتا ہے۔

kotlin
// SharedPreferences — روایتی طریقہ
val prefs = context
    .getSharedPreferences("settings", Context.MODE_PRIVATE)
with (prefs.edit()) {
    putString("username", "john_doe")
    putInt("score", 1500)
    apply()
}

// DataStore — غیر هم زمان طریقہ
val settingsDataStore = context
    .createDataStore("settings.pb")

val usernameFlow: Flow<String> = settingsDataStore
    .data
    .map { it[USERNAME_KEY] ?: "" }

iOS پر، SharedPreferences کا ہم پلہ UserDefaults ہے — Property List فارمٹ میں ساده قیمتیں محفوظ کرنے کا ایک نظام۔ UserDefaults هم زمان رسائی استعمال کرتا ہے اور ترتیب کے ڈیٹا کی چھوٹی مقدار کے لیے موزوں ہے، لیکن حساس معلومات کے ذخیرہ کے لیے تجویز نہیں کی جاتی۔

موبائل ایپس میں SQLite

SQLite ایک ضمنی متعلقاتی ڈیٹابیس ہے جو علاحدہ سرور کے بغیر ایپ کے عملیہ کے اندر چلتی ہے۔ موبائل ڈیولپمنٹ میں یہ سب سے مقبول DBMS ہے: یہ دونوں پلیٹ فارمز پر طور طور استعمال ہوتی ہے۔ Android SDK میں SQLite شامل کرتا ہے، اور iOS libsqlite3 لائبریری میں شامل کرتا ہے۔ SQLite معیاری SQL، لین دین، انڈیکسز اور ٹرگرز کی حمایت کرتی ہے۔

ٹیبل تشکیل اور CRUD کاروائی

SQLite کے ساتھ کام کا آغاز ڈیٹابیس کے سکیم کی وضاحت سے ہوتا ہے۔ ڈیولپر ٹیبلیں، ان کے فیلڈز اور اقسام کی وضاحت کرتا ہے، پھر درج، پڑھنا، تازہ کرنا اور حذف کی کاروائی کرتا ہے۔ Android پر SQLiteOpenHelper ڈیٹابیس کی تخلیق اور مائگریشنز کا انتظام کرتا ہے، جبکہ iOS C انٹرفیس یا FMDB ریپر استعمال کرتا ہے۔

kotlin
// Android پر SQLiteOpenHelper
class DBHelper(context: Context) :
    SQLiteOpenHelper(context, "app.db", null, 1) {

    override fun onCreate(db: SQLiteDatabase) {
        db.execSQL("""
            CREATE TABLE users (
                id INTEGER PRIMARY KEY,
                name TEXT NOT NULL,
                email TEXT UNIQUE
            )
        """)
    }

    fun insertUser(name: String, email: String) {
        val db = writableDatabase
        val values = ContentValues().apply {
            put("name", name)
            put("email", email)
        }
        db.insert("users", null, values)
    }
}
ڈیٹا کی قسمSharedPreferencesSQLiteفائل سسٹم
قسمکلید-قدرمتعلقاتی DBبائنری فائلیں
مقدارسوئیں ریکارڈزہزاروں ریکارڈزدستیاب جگہ
کارکردگیاعلیٰدرمیانہحجم پر منحصر
ممولی استعمالترتیباتمنظم ڈیٹاتصویریں، ویڈیو

Room — Android کے لیے ORM

Room Jetpack کی ایک لائبریری ہے جو SQLite کے اوپر ORM کی پرت فراہم کرتی ہے۔ Room SQL کوئریز اور ContentValues لکھنے کے دوہرائی کام کو ختم کرتی ہے، ان کی جگہ اینوٹیشنز اور Kotlin فنکشنز کا استعمال کرتی ہے۔ Room کامپائلر تعمیر کے وقت DAO (Data Access Object) کے نفاذ پیدا کرتا ہے، جو SQL گرامر کی غلطیوں کو ختم کرتا ہے۔

منصوبہ میں Room کا قیام

Room کو ضم کرنے کے لیے، آپ کو kapt انحصار شامل کرنا ہوگا اور هستی کے طبقہ، DAO انٹرفیس اور ڈیٹابیس کے طبقہ پر اینوٹیشن لگانا ہوگا۔ RoomDatabase داخلی مقام کے طور کام کرتا ہے: اس کے زریعہ DAO حاصل کیا جاتا ہے اور ڈیٹابیس کے کاروائی، انجام دی جاتی ہیں۔ Room ری ایکٹف کوئریز کے لیے Flow، اسکیم مائگریشنز اور تعمیر کے وقت کوئری کی تصدیق کی حمایت کرتا ہے۔

kotlin
@Entity(tableName = "users")
data class User(
    @PrimaryKey val id: Int,
    @ColumnInfo(name = "full_name") val name: String,
    @ColumnInfo val email: String
)

@Dao
interface UserDao {
    @Query("SELECT * FROM users")
    fun getAll(): Flow<List<User>>

    @Insert
    suspend fun insert(user: User)

    @Delete
    suspend fun delete(user: User)
}

@Database(
    entities = [User::class],
    version = 1
)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}

Core Data — iOS فریم ورک

Core Data آبجیکٹ گراف کو منتظم کرنے اور اسے ڈیسک پر محفوظ کرنے کا Apple کا فریم ورک ہے۔ Room کے برعکس، Core Data ٹیبلیوں کے ساتھ نہیں بلکہ منتظم آبجیکٹس (NSManagedObject) کے ساتھ کام کرتا ہے جو تعلقات کا درجہ بندی بناتے ہیں۔ Core Data سست لوڈنگ، تبدیلیات کو واپس لیتے ہوئے اور NSFetchRequest کے ذریعہ پیچیدہ کوئریز کی حمایت کرتا ہے۔

Core Data سٹاک

Core Data کا مرکزی حصہ تین اجزاء پر مشتمل ہے: منتظم آبجیکٹ کونٹیکسٹ (NSManagedObjectContext)، مستقل ذخیرہ کوآرڈینیٹر (NSPersistentStoreCoordinator) اور ڈیٹا ماڈل (NSManagedObjectModel)۔ NSPersistentContainer تمام اجزاء کو ایک واحد داخلی مقام میں متحد کرتا ہے، جو جدید Swift ایپلیکیشنز کے لیے ترتیب کو آسان بناتا ہے۔

swift
import CoreData

class PersistenceController {
    static let shared = PersistenceController()
    let container: NSPersistentContainer

    init() {
        container = NSPersistentContainer(name: "AppModel")
        container.loadPersistentStores { _, error in
            if let error = error {
                fatalError("Failed: \(error)")
            }
        }
    }

    func saveUser(name: String, email: String) {
        let context = container.viewContext
        let user = User(context: context)
        user.name = name
        user.email = email

        do {
            try context.save()
        } catch let error {
            print("Save error: \(error)")
        }
    }
}

فائل ذخیرہ (File Storage) تصویروں، ویڈیو اور دستاویز کو محفوظ کرنے کے لیے استعمال ہوتا ہے۔ Android اندرونی ذخیرہ (context.filesDir) — ایپ کے لیے ذاتی، اور بیرونی ذخیرہ (Environment.getExternalStorageDirectory) — دیگر ایپس کے لیے رسائی فراہم کرتا ہے۔ iOS پر، فائلیں Documents اور Library کی ڈائریکٹریوں میں محفوظ ہوتی ہیں، جہاں Library/Caches کیش کے لیے ہے جو iCloud میں بیک اپ نہیں ہوتا۔ فائل کی کاروائی کے لیے، دونوں پلیٹ فارمز File API اور سٹریمنگ پڑھنے/لکھنے کی کاروائی فراہم کرتے ہیں۔ Coil اور SDWebImage جیسی جدید لائبریریاں بہترین کارکردگی کے لیے فائل ذخیرہ کو RAM کے ساتھ ملا کر ایک کیشنگ پرت شامل کرتی ہیں۔

Android پر، پیچیدگی اور کارکردگی میں Core Data کا متبادل Realm ہے — ایک آبجیکٹ ڈیٹابیس جو SQL کی پرت کے بغیر سیدھے ماڈلز کے ساتھ کام کرتا ہے۔ Realm پڑھنے کے کاروائی میں SQLite سے تیز ہے اور لائیو آبجیکٹس کی حمایت کرتا ہے جو ڈیٹا بدلنے پر خودکار طور پر UI کو اپ ڈیٹ کرتے ہیں۔

اکثر پوچے جانے والے سوالات

موبائل ڈیولپمنٹ میں Data Persistence کیا ہے؟

Data Persistence آلہ کی غیر متغیر میمری میں ڈیٹا محفوظ کرنے کے میکانزم کو کہتے ہیں، جو ایپ کے دوبارہ شروع کرنے پر ان کی دستیابی کو یقینی بناتے ہیں۔ ان میں ڈیٹابیسز، فائل ذخیرہ اور ترتیبات کے نظام شامل ہیں۔

Room سیدھے SQLite استعمال کرنے سے کیسے مختلف ہے؟

Room SQLite پر ایک ORM ریپر ہے جو دستی SQL کوئریز اور ContentValues کو ختم کرتا ہے۔ Room تعمیر کے وقت SQL کوئریز کی تصدیق کرتا ہے، Kotlin Coroutines اور Flow کی حمایت کرتا ہے، اور خودکار طور پر ڈیٹا رسائی کوڈ تیار کرتا ہے۔

میں SharedPreferences کب استعمال کروں؟

SharedPreferences تھوڑی مقدار میں سادہ ڈیٹا محفوظ کرنے کے لیے موزوں ہے: ایپ کی ترتیبات، فلیجز، شناختی اور صارف کی ترجیحات۔ پیچیدہ یا منظم ڈیٹا کے لیے، Room یا DataStore استعمال کرنا بہتر ہے۔

iOS پر Core Data کیا ہے؟

Core Data آبجیکٹ گراف کو منتظم کرنے کا Apple کا فریم ورک ہے۔ یہ منتظم آبجیکٹس، تبدیلیات کی ٹریکنگ، سست لوڈنگ اور ایک ذخیرہ (SQLite، XML یا بائنری فارمٹ) میں خودکار پرسٹنس فراہم کرتا ہے۔

میں ایک نئے منصوبے کے لیے کون سا ذخیرہ کا طریقہ چنوں؟

انتخاب ڈیٹا کی پیچیدگی پر منحصر ہے: ترتیبات کے لیے — DataStore یا UserDefaults، منظم ریکارڈز کے لیے — Room (Android) یا Core Data (iOS)، فائلوں کے لیے — File Storage۔ معیار میں ڈیٹا کا حجم، کارکردگی کے تقاضے اور خفیہ کرنے کی ضرورت شامل ہیں۔ ایک ایپ میں کئی میکانزمز کو ملانا ایک معیاری مشق ہے جو ہر طریقے کی طاقت کا بہترین فائدہ اٹھانے کی اجازت دیتا ہے۔

خلاصہ

  • Data Persistence — کسی بھی موبائل ایپ کی بنیاد، سیشنز کے درمیان صارف کے ڈیٹا کو محفوظ رکھتا ہے
  • SharedPreferences اور UserDefaults — هم زمان رسائی کے ساتھ کلید-قدر کے جوڑے محفوظ کرنے کے سادہ نظام
  • SQLite — بغیر کسی ضمنی انحصارات کے دونوں پلیٹ فارمز پر دستیاب ضمنی متعلقاتی ڈیٹابیس
  • Room — Flow کے ذریعہ قسم کی حفاظت اور ری ایکٹف کوئریز فراہم کرنے والا Google ORM حل
  • Core Data — خودکار تبدیلی کی ٹریکنگ کے ساتھ پیچیدہ آبجیکٹ گرافز کو منتظم کرنے کا Apple کا طاقت ور فریم ورک
  • DataStore — Coroutines اور Flow پر مبنی غیر هم زمان API کے ساتھ SharedPreferences کا ایک جدید متبادل

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

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

مزید پڑھیں