Mobil inkişafda məlumatların saxlanması — bu nədir, üsulları və necə işləyir

Müəllif: IT Sectr Dərc olunub: 2026-03-14 Oxuma vaxtı: 8 dəq

Məlumatların davamlı saxlanması mobil tətbiqin iş sessiyaları arasında istifadəçi məlumatlarının qorunmasını təmin edir. Bu texnologiya olmadan proqramın hər açılışı təmiz vərəqdən başlayardı — parametrlər, tarixçə və yüklənmiş fayllar bağlananda itirilərdi. Google Developers, 2024 məlumatlarına görə, mobil tətbiqlərin 90%-dən çoxu istifadəçi məlumatlarını və interfeys vəziyyətini qorumaq üçün ən azı bir davamlı saxlama mexanizmindən istifadə edir.

Əsas məqamlar

  • Data Persistence — tətbiq sessiyaları arasında məlumatların saxlanması mexanizmləri
  • SharedPreferences — Android-də sadə açar-dəyər cütlərinin saxlanması
  • SQLite — mobil cihazlar üçün quraşdırılmış relyasiyalı verilənlər bazası
  • Room — Android üçün Google-dan SQLite üzərində ORM sarğısı
  • Core Data — iOS və macOS-da obyektlərin idarə edilməsi çərçivəsi

Məlumatların davamlı saxlanması nədir

Data Persistence — tətbiqin məlumatları cihazın qeyri-uçucu yaddaşında saxlama qabiliyyətidir. Mobil inkişafda davamlı saxlama verilənlər bazalarını, fayl sistemini, parametrləri və keşi əhatə edir. Hər bir mexanizmin öz performans, təhlükəsizlik və saxlama həcmi xüsusiyyətləri var.

Müvəqqəti və davamlı məlumatlar

Müvəqqəti məlumatlar yalnız operativ yaddaşda mövcuddur və proses bitdikdə itirilir. Bunlara ekran vəziyyəti, müvəqqəti hesablamalar və şəkil keşi daxildir. Davamlı məlumatlar fayl sisteminə və ya verilənlər bazasına yazılır və tətbiq yenidən başladıldıqda əlçatan qalır. Bunlara istifadəçi parametrləri, avtorizasiya tokenləri, əməliyyat tarixçəsi və yüklənmiş məzmun daxildir.

Saxlama mexanizminin seçilmə meyarları

Saxlama üsulunu seçərkən proqramçı bir neçə amili qiymətləndirir. Məlumat növü saxlama strukturunu müəyyən edir: sadə parametrlər — SharedPreferences və ya DataStore, strukturlaşdırılmış qeydlər — SQLite və ya Room, fayllar — File Storage. Məlumatların həcmi performansa təsir edir: verilənlər bazaları minlərlə qeyd üçün optimallaşdırılıb, fayllar isə böyük ikili obyektlər üçün. Təhlükəsizlik həssas məlumatların EncryptedSharedPreferences və ya SQLCipher vasitəsilə şifrələnməsini tələb edir.

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

enum class StorageType {
    KEY_VALUE,
    RELATIONAL,
    FILE
}

SharedPreferences və DataStore

SharedPreferences — Android-də açar-dəyər cütlərini saxlamaq üçün klassik üsul. Bu API platformanın ilk versiyalarından mövcuddur və primitiv növləri dəstəkləyir: sətirlər, ədədlər, məntiqi dəyərlər. Məlumatlar tətbiqin xüsusi kataloqunda XML faylında saxlanılır və yalnız onun prosesi üçün əlçatandır.

DataStore alternativ olaraq

Jetpack DataStore — Kotlin Coroutines və Flow üzərində qurulmuş SharedPreferences-in müasir əvəzedicisidir. DataStore iki variant təklif edir: sadə dəyərlər üçün Preferences DataStore və tipləşdirilmiş obyektlər üçün Proto DataStore. SharedPreferences-dən fərqli olaraq, DataStore rəqabətli giriş zamanı məlumatların ardıcıllığını təmin edir və əsas axını bloklamadan asinxron əməliyyatları dəstəkləyir.

kotlin
// SharedPreferences — ənənəvi üsul
val prefs = context
    .getSharedPreferences("settings", Context.MODE_PRIVATE)
with (prefs.edit()) {
    putString("username", "john_doe")
    putInt("score", 1500)
    apply()
}

// DataStore — asinxron yanaşma
val settingsDataStore = context
    .createDataStore("settings.pb")

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

iOS-da SharedPreferences-in ekvivalenti UserDefaults — Property List formatında sadə dəyərlərin saxlanması sistemidir. UserDefaults sinxron girişdən istifadə edir və kiçik həcmli konfiqurasiya məlumatları üçün uyğundur, lakin həssas məlumatların saxlanması üçün tövsiyə edilmir.

Mobil tətbiqlərdə SQLite

SQLite — ayrıca server olmadan tətbiq prosesi daxilində işləyən quraşdırılmış relyasiyalı verilənlər bazasıdır. Bu, mobil inkişafda ən geniş yayılmış DBMS-dir: hər iki platformada defolt olaraq istifadə olunur. Android SQLite-i SDK-ya, iOS isə libsqlite3 kitabxanasına daxil edir. SQLite standart SQL, transaksiyalar, indekslər və triggerləri dəstəkləyir.

Cədvəl yaratma və CRUD əməliyyatları

SQLite ilə iş verilənlər bazası sxeminin yaradılması ilə başlayır. Proqramçı cədvəlləri, onların sahələrini və növlərini təyin edir, sonra əlavə etmə, oxuma, yeniləmə və silmə əməliyyatlarını yerinə yetirir. SQLiteOpenHelper Android-də verilənlər bazasının yaradılması və miqrasiyasını idarə edir, iOS-da isə C interfeysi və ya FMDB sarğısı istifadə olunur.

kotlin
// Android-də 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)
    }
}
Məlumat növüSharedPreferencesSQLiteFayl sistemi
Növaçar-dəyərrelyasiyalı VBikili fayllar
Həcmyüzlərlə qeydminlərlə qeydmövcud yer
Performansyüksəkortaölçüdən asılıdır
Tipik tətbiqparametrlərstrukturlaşdırılmış məlumatlarşəkillər, video

Room — Android üçün ORM

Room — Jetpack paketindən SQLite üzərində ORM qatı təmin edən kitabxanadır. Room SQL sorğuları və ContentValues yazmaq üzrə rutin işi aradan qaldırır, onları annotasiyalar və Kotlin funksiyaları ilə əvəz edir. Room kompilyatoru DAO (Data Access Object) implementasiyasını qurma mərhələsində yaradır ki, bu da SQL sintaksisində səhvləri aradan qaldırır.

Room-un layihədə konfiqurasiyası

Room-u qoşmaq üçün kapt asılılığını əlavə etmək və varlıq sinfini, DAO interfeysini və verilənlər bazası sinfini annotasiya etmək lazımdır. RoomDatabase giriş nöqtəsi kimi xidmət edir: onun vasitəsilə DAO əldə edilir və baza üzərində əməliyyatlar yerinə yetirilir. Room reaktiv sorğular üçün Flow-u, sxem miqrasiyasını və sorğuların kompilyasiya mərhələsində yoxlanılmasını dəstəkləyir.

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 çərçivəsi

Core Data — Apple-ın obyekt qrafını idarə etmək və onları diskdə saxlamaq üçün çərçivəsidir. Room-dan fərqli olaraq, Core Data cədvəllərlə deyil, əlaqələr iyerarxiyası yaradan idarə olunan obyektlərlə (NSManagedObject) işləyir. Core Data tənbəl yükləməni, dəyişikliklərin ləğvini və NSFetchRequest vasitəsilə mürəkkəb sorğuları dəstəkləyir.

Core Data Stack

Core Data-nın əsasını üç komponentdən ibarət yığın təşkil edir: idarə olunan kontekst (NSManagedObjectContext), davamlı saxlama (NSPersistentStoreCoordinator) və məlumat modeli (NSManagedObjectModel). NSPersistentContainer bütün komponentləri vahid giriş nöqtəsində birləşdirir, Swift-də müasir tətbiqlər üçün konfiqurasiyanı sadələşdirir.

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("Yazma xətası: \(error)")
        }
    }
}

Fayl saxlama (File Storage) şəkillərin, videoların və sənədlərin saxlanması üçün istifadə olunur. Android daxili yaddaşı (context.filesDir) — tətbiq üçün özəl, və xarici yaddaşı (Environment.getExternalStorageDirectory) — digər tətbiqlər üçün əlçatan təmin edir. iOS-da fayllar Documents və Library qovluqlarında saxlanılır, Library/Caches isə iCloud-da ehtiyatı aparılmayan keş üçün nəzərdə tutulub. Fayllarla işləmək üçün hər iki platforma File API və axın oxuma/yazma əməliyyatları təqdim edir. Coil və SDWebImage kimi müasir kitabxanalar optimal performans üçün fayl saxlama ilə operativ yaddaşı birləşdirən keşləmə qatı əlavə edir.

Android-də Core Data-ya mürəkkəblik və funksionallıq baxımından alternativ Realm — SQL təbəqəsi olmadan birbaşa modellərlə işləyən obyekt yönümlü verilənlər bazasıdır. Realm oxuma əməliyyatlarında SQLite-dən daha sürətlidir və məlumat dəyişdikdə UI-ni avtomatik yeniləyən canlı obyektləri dəstəkləyir.

Tez-tez verilən suallar

Mobil inkişafda Data Persistence nədir?

Data Persistence — tətbiq yenidən başladıldıqdan sonra məlumatların əlçatanlığını təmin edən, cihazın qeyri-uçucu yaddaşında məlumatların saxlanması mexanizmləridir. Bunlara verilənlər bazaları, fayl saxlama və parametr sistemləri daxildir.

Room birbaşa SQLite istifadəsindən nə ilə fərqlənir?

Room SQLite üzərində ORM sarğısıdır ki, əl ilə SQL sorğuları və ContentValues yazmağı aradan qaldırır. Room SQL sorğularını kompilyasiya mərhələsində yoxlayır, Kotlin Coroutines və Flow-u dəstəkləyir, həmçinin avtomatik olaraq məlumat giriş kodunu yaradır.

SharedPreferences nə vaxt istifadə edilməlidir?

SharedPreferences kiçik həcmli sadə məlumatların saxlanması üçün uyğundur: tətbiq parametrləri, bayraqlar, identifikatorlar və istifadəçi seçimləri. Mürəkkəb və ya strukturlaşdırılmış məlumatlar üçün Room və ya DataStore istifadə etmək daha yaxşıdır.

iOS-da Core Data nədir?

Core Data — Apple-ın obyekt qrafını idarə etmək üçün çərçivəsidir. O, idarə olunan obyektlərlə iş, dəyişikliklərin izlənməsi, tənbəl yükləmə və davamlı saxlamaya (SQLite, XML və ya ikili format) avtomatik yazma imkanı təmin edir.

Yeni layihə üçün hansı məlumat saxlama üsulunu seçmək lazımdır?

Seçim məlumatların mürəkkəbliyindən asılıdır: parametrlər üçün — DataStore və ya UserDefaults, strukturlaşdırılmış qeydlər üçün — Room (Android) və ya Core Data (iOS), fayllar üçün — File Storage. Meyarlar məlumatların həcmini, performans tələblərini və şifrələmə ehtiyacını əhatə edir. Bir tətbiqdə bir neçə mexanizmin birləşdirilməsi hər bir yanaşmanın güclü tərəflərindən optimal istifadə etməyə imkan verən standar təcrübədir.

Nəticə

  • Data Persistence — istənilən mobil tətbiqin əsası, sessiyalar arasında istifadəçi məlumatlarının qorunmasını təmin edir
  • SharedPreferences və UserDefaults — sinxron girişlə açar-dəyər cütlərini saxlamaq üçün sadə sistemlər
  • SQLite — əlavə asılılıqlar olmadan hər iki platformada mövcud olan quraşdırılmış relyasiyalı verilənlər bazası
  • Room — Google-dan ORM həlli, tip təhlükəsizliyi və Flow vasitəsilə reaktiv sorğular təmin edir
  • Core Data — dəyişikliklərin avtomatik izlənməsi ilə mürəkkəb obyekt qraflarını idarə etmək üçün güclü Apple çərçivəsi
  • DataStore — Coroutines və Flow-a əsaslanan asinxron API ilə SharedPreferences-in müasir alternativi

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun