Mobil rivojlanishda ma'lumotlarni saqlash — bu nima, usullari va qanday ishlaydi

Muallif: IT Sectr Nashr etilgan: 2026-03-14 O'qish vaqti: 8 daq

Ma'lumotlarni doimiy saqlash mobil ilova ish seanslari o'rtasida foydalanuvchi ma'lumotlarining saqlanishini ta'minlaydi. Ushbu texnologiyasiz dasturning har bir ishga tushirilishi bo'sh varaqdan boshlanardi — sozlamalar, tarix va yuklangan fayllar yopilganda yo'qolardi. Google Developers, 2024 ma'lumotlariga ko'ra, mobil ilovalarning 90% dan ortig'i foydalanuvchi ma'lumotlari va interfeys holatini saqlash uchun kamida bitta doimiy saqlash mexanizmidan foydalanadi.

Asosiy fikrlar

  • Data Persistence — ilova seanslari o'rtasida ma'lumotlarni saqlash mexanizmlari
  • SharedPreferences — Android-da oddiy kalit-qiymat juftliklarini saqlash
  • SQLite — mobil qurilmalar uchun o'rnatilgan relyatsion ma'lumotlar bazasi
  • Room — Android uchun Google-dan SQLite ustidagi ORM qoplamasi
  • Core Data — iOS va macOS-da obyektlarni boshqarish tizimi

Ma'lumotlarni doimiy saqlash nima

Data Persistence — ilovaning ma'lumotlarni qurilmaning o'chmaydigan xotirasida saqlash qobiliyatidir. Mobil rivojlanishda doimiy saqlash ma'lumotlar bazalari, fayl tizimi, sozlamalar va keshni o'z ichiga oladi. Har bir mexanizm o'zining ishlash unumdorligi, xavfsizlik va saqlash hajmi xususiyatlariga ega.

Vaqtinchalik va doimiy ma'lumotlar

Vaqtinchalik ma'lumotlar faqat operativ xotirada mavjud bo'lib, jarayon tugaganda yo'qoladi. Bularga ekran holati, vaqtinchalik hisob-kitoblar va rasm keshi kiradi. Doimiy ma'lumotlar fayl tizimiga yoki ma'lumotlar bazasiga yoziladi va ilova qayta ishga tushirilganda ham mavjud bo'ladi. Bularga foydalanuvchi sozlamalari, avtorizatsiya tokenlari, operatsiyalar tarixi va yuklangan kontent kiradi.

Saqlash mexanizmini tanlash mezonlari

Saqlash usulini tanlashda dasturchi bir necha omillarni baholaydi. Ma'lumot turi saqlash strukturasini belgilaydi: oddiy sozlamalar — SharedPreferences yoki DataStore, tuzilgan yozuvlar — SQLite yoki Room, fayllar — File Storage. Ma'lumotlar hajmi unumdorlikka ta'sir qiladi: ma'lumotlar bazalari minglab yozuvlar uchun optimallashtirilgan, fayllar esa katta ikkilik obyektlar uchun. Xavfsizlik maxfiy ma'lumotlarni EncryptedSharedPreferences yoki SQLCipher orqali shifrlashni talab qiladi.

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

enum class StorageType {
    KEY_VALUE,
    RELATIONAL,
    FILE
}

SharedPreferences va DataStore

SharedPreferences — Android-da kalit-qiymat juftliklarini saqlashning klassik usuli. Ushbu API platformaning birinchi versiyalaridan mavjud va primitiv turlarni qo'llab-quvvatlaydi: satrlar, sonlar, mantiqiy qiymatlar. Ma'lumotlar ilovaning shaxsiy katalogidagi XML faylda saqlanadi va faqat uning jarayoni uchun mavjud.

DataStore muqobil sifatida

Jetpack DataStore — Kotlin Coroutines va Flow asosida qurilgan SharedPreferences-ning zamonaviy o'rnini bosuvchisi. DataStore ikkita variantni taklif qiladi: oddiy qiymatlar uchun Preferences DataStore va tiplangan obyektlar uchun Proto DataStore. SharedPreferences-dan farqli o'laroq, DataStore raqobatli kirishda ma'lumotlar izchilligini kafolatlaydi va asosiy oqimni bloklamasdan asinxron operatsiyalarni qo'llab-quvvatlaydi.

kotlin
// SharedPreferences — an'anaviy usul
val prefs = context
    .getSharedPreferences("settings", Context.MODE_PRIVATE)
with (prefs.edit()) {
    putString("username", "john_doe")
    putInt("score", 1500)
    apply()
}

// DataStore — asinxron yondashuv
val settingsDataStore = context
    .createDataStore("settings.pb")

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

iOS-da SharedPreferences-ning ekvivalenti UserDefaults — Property List formatida oddiy qiymatlarni saqlash tizimidir. UserDefaults sinxron kirishdan foydalanadi va kichik hajmdagi konfiguratsiya ma'lumotlari uchun mos keladi, lekin maxfiy ma'lumotlarni saqlash uchun tavsiya etilmaydi.

Mobil ilovalarda SQLite

SQLite — alohida serversiz ilova jarayoni ichida ishlaydigan o'rnatilgan relyatsion ma'lumotlar bazasidir. Bu mobil rivojlanishda eng keng tarqalgan DBMS: har ikkala platformada standart sifatida ishlatiladi. Android SQLite-ni SDK-ga, iOS esa libsqlite3 kutubxonasiga kiritadi. SQLite standart SQL, tranzaksiyalar, indekslar va triggerlarni qo'llab-quvvatlaydi.

Jadval yaratish va CRUD operatsiyalari

SQLite bilan ishlash ma'lumotlar bazasi sxemasini yaratish bilan boshlanadi. Dasturchi jadvallar, ularning maydonlari va turlarini belgilaydi, so'ng qo'shish, o'qish, yangilash va o'chirish operatsiyalarini bajaradi. SQLiteOpenHelper Android-da ma'lumotlar bazasini yaratish va migratsiyasini boshqaradi, iOS-da esa C interfeysi yoki FMDB qoplamasi ishlatiladi.

kotlin
// Android-da 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)
    }
}
Ma'lumot turiSharedPreferencesSQLiteFayl tizimi
Turkalit-qiymatrelyatsion MBikkilik fayllar
Hajmyuzlab yozuvlarminglab yozuvlarmavjud joy
Unumdorlikyuqorio'rtachahajmga bog'liq
Oddiy qo'llanishsozlamalartuzilgan ma'lumotlarrasmlar, video

Room — Android uchun ORM

Room — Jetpack to'plamidan SQLite ustida ORM qatlamini ta'minlovchi kutubxona. Room SQL so'rovlari va ContentValues yozish bo'yicha odatiy ishni bartaraf qiladi, ularni annotatsiyalar va Kotlin funksiyalari bilan almashtiradi. Room kompilyatori DAO (Data Access Object) implementatsiyasini qurish bosqichida yaratadi, bu esa SQL sintaksisidagi xatolarni bartaraf qiladi.

Room-ni loyihada sozlash

Room-ni ulash uchun kapt bog'liqligini qo'shish va ob'ekt sinfini, DAO interfeysini va ma'lumotlar bazasi sinfini annotatsiya qilish kerak. RoomDatabase kirish nuqtasi sifatida xizmat qiladi: u orqali DAO olinadi va baza ustida operatsiyalar bajariladi. Room reaktiv so'rovlar uchun Flow-ni, sxema migratsiyasini va so'rovlarni kompilyatsiya bosqichida tekshirishni qo'llab-quvvatlaydi.

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 tizimi

Core Data — Apple-ning obyekt grafini boshqarish va ularni diskda saqlash tizimidir. Room-dan farqli o'laroq, Core Data jadvallar bilan emas, balki bog'lanishlar iyerarxiyasini tashkil etuvchi boshqariladigan obyektlar (NSManagedObject) bilan ishlaydi. Core Data dangasa yuklashni, o'zgarishlarni bekor qilishni va NSFetchRequest orqali murakkab so'rovlarni qo'llab-quvvatlaydi.

Core Data Stack

Core Data-ning asosini uch komponentdan iborat stack tashkil etadi: boshqariladigan kontekst (NSManagedObjectContext), doimiy saqlash (NSPersistentStoreCoordinator) va ma'lumotlar modeli (NSManagedObjectModel). NSPersistentContainer barcha komponentlarni yagona kirish nuqtasida birlashtiradi, Swift-dagi zamonaviy ilovalar uchun sozlashni soddalashtiradi.

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("Saqlash xatosi: \(error)")
        }
    }
}

Fayl saqlash (File Storage) rasmlar, videolar va hujjatlarni saqlash uchun ishlatiladi. Android ichki xotirani (context.filesDir) — ilova uchun shaxsiy, va tashqi xotirani (Environment.getExternalStorageDirectory) — boshqa ilovalar uchun mavjud ta'minlaydi. iOS-da fayllar Documents va Library kataloglarida saqlanadi, Library/Caches esa iCloud-da zaxiralanmaydigan kesh uchun mo'ljallangan. Fayllar bilan ishlash uchun ikkala platforma File API va oqimli o'qish/yozish operatsiyalarini taqdim etadi. Coil va SDWebImage kabi zamonaviy kutubxonalar optimal unumdorlik uchun fayl saqlashni operativ xotira bilan birlashtiruvchi keshlash qatlamini qo'shadi.

Android-da Core Data-ga murakkablik va funksionallik bo'yicha muqobil Realm — SQL qatlamisiz to'g'ridan-to'g'ri modellar bilan ishlaydigan obyektga yo'naltirilgan ma'lumotlar bazasidir. Realm o'qish operatsiyalarida SQLite-dan tezroq va ma'lumotlar o'zgarganda UI-ni avtomatik yangilaydigan jonli obyektlarni qo'llab-quvvatlaydi.

Tez-tez beriladigan savollar

Mobil rivojlanishda Data Persistence nima?

Data Persistence — ilova qayta ishga tushirilgandan keyin ma'lumotlarning mavjudligini ta'minlovchi, qurilmaning o'chmaydigan xotirasida ma'lumotlarni saqlash mexanizmlaridir. Bularga ma'lumotlar bazalari, fayl saqlash va sozlamalar tizimlari kiradi.

Room to'g'ridan-to'g'ri SQLite ishlatishdan qanday farq qiladi?

Room SQLite ustidagi ORM qoplamasi bo'lib, qo'lda SQL so'rovlari va ContentValues yozishni bartaraf qiladi. Room SQL so'rovlarini kompilyatsiya bosqichida tekshiradi, Kotlin Coroutines va Flow-ni qo'llab-quvvatlaydi, shuningdek avtomatik ma'lumotlarga kirish kodini yaratadi.

SharedPreferences qachon ishlatilishi kerak?

SharedPreferences kichik hajmdagi oddiy ma'lumotlarni saqlash uchun mos keladi: ilova sozlamalari, bayroqlar, identifikatorlar va foydalanuvchi afzalliklari. Murakkab yoki tuzilgan ma'lumotlar uchun Room yoki DataStore dan foydalanish yaxshiroq.

iOS-da Core Data nima?

Core Data — Apple-ning obyekt grafini boshqarish tizimidir. U boshqariladigan obyektlar bilan ishlash, o'zgarishlarni kuzatish, dangasa yuklash va doimiy saqlashga (SQLite, XML yoki ikkilik format) avtomatik yozish imkonini beradi.

Yangi loyiha uchun qaysi ma'lumot saqlash usulini tanlash kerak?

Tanlov ma'lumotlarning murakkabligiga bog'liq: sozlamalar uchun — DataStore yoki UserDefaults, tuzilgan yozuvlar uchun — Room (Android) yoki Core Data (iOS), fayllar uchun — File Storage. Mezonlar ma'lumotlar hajmini, unumdorlik talablarini va shifrlash zaruratini o'z ichiga oladi. Bir ilovada bir nechta mexanizmlarni birlashtirish har bir yondashuvning kuchli tomonlaridan optimal foydalanish imkonini beruvchi standart amaliyotdir.

Xulosa

  • Data Persistence — har qanday mobil ilovaning asosi, seanslar o'rtasida foydalanuvchi ma'lumotlarining saqlanishini ta'minlaydi
  • SharedPreferences va UserDefaults — sinxron kirish bilan kalit-qiymat juftliklarini saqlash uchun oddiy tizimlar
  • SQLite — qo'shimcha bog'liqliklarsiz ikkala platformada mavjud bo'lgan o'rnatilgan relyatsion ma'lumotlar bazasi
  • Room — Google-dan ORM yechimi, tip xavfsizligi va Flow orqali reaktiv so'rovlarni ta'minlaydi
  • Core Data — o'zgarishlarni avtomatik kuzatish bilan murakkab obyekt graflarini boshqarish uchun kuchli Apple tizimi
  • DataStore — Coroutines va Flow-ga asoslangan asinxron API bilan SharedPreferences-ning zamonaviy muqobili

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing