Mobil inkişafda məlumat saxlama: bu nədir, üsullar və necə işləyir

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

Məlumat saxlama mobil tətbiqin əsas vəzifələrindən biridir, performansa, təhlükəsizliyə və istifadəçi təcrübəsinə təsir göstərir. Bu məqalədə SQLite, Room, Core Data, Realm, Firebase Firestore, SharedPreferences, DataStore, Keystore və Keychain, həmçinin serializasiya formatları (JSON, Protobuf) və kitabxanaları (Gson, Moshi, kotlinx.serialization) əhatə edəcəyik. Bu bələdçi təcrübəsiz tərtibatçılara düzgün məlumat saxlama həllini seçməyə kömək edəcək. Ətraflı məlumat üçün rəsmi Android məlumat saxlama bələdçisinə baxın.

Əsas məqamlar

  • Room (Android) və Core Data (iOS) hər platformada relyasiyalı verilənlər bazaları ilə işləmək üçün rəsmi ORM-lərdir
  • SharedPreferences (Android) DataStore ilə əvəz olunur — asinxron və tip təhlükəsiz açar-dəyər anbarı
  • Tokenlərin təhlükəsiz saxlanması üçün aparat qorunması ilə Keystore (Android) və Keychain (iOS) istifadə olunur
  • Firebase Firestore real vaxt sinxronizasiyası və oflayn rejimi olan NoSQL verilənlər bazasıdır
  • Serializasiya — Gson, Moshi, kotlinx.serialization vasitəsilə obyektlərin JSON/Protobuf-a çevrilməsi

Yerli verilənlər bazaları: SQLite, Room, Core Data, Realm

Varlıqlar arasında əlaqələri olan strukturlaşdırılmış məlumatları saxlamaq üçün relyasiyalı verilənlər bazaları istifadə olunur.

SQLite

SQLite istənilən mobil platformada işləyən yerləşdirilmiş relyasiyalı verilənlər bazasıdır. Ayrıca server tələb etmir, məlumatlar bir faylda saxlanılır. SQLite Room (Android) və istəyə bağlı olaraq Core Data (iOS) üçün əsasdır. Kitabxanalar: android.database.sqlite (Android), FMDB/Core Data (iOS), sqflite (Flutter).

Room (Android)

Room SQLite ilə işləmək üçün rəsmi Android Architecture Components kitabxanasıdır. ORM qatını təmin edir: Entity (cədvəl), DAO (sorğular), Database (giriş nöqtəsi). Room SQL sorğularını kompilyasiya vaxtında yoxlayır, korutinləri və Flow-u dəstəkləyir və sxemi avtomatik miqrasiya edir.

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 obyekt qrafını idarə etmək üçün Apple freymvorkudur. Təmiz verilənlər bazası deyil — SQLite, XML və ya ikili anbar üzərində davamlılıq qatıdır. Core Data obyektləri (NSManagedObject), əlaqələri, sxem versiyalaşdırmasını, geri qaytarma/təkrar etmə və NSManagedObjectContext vasitəsilə çoxiplikliyi idarə edir.

Realm

Realm SQLite-a alternativ olaraq yüksək performanslı mobil verilənlər bazası kimi hazırlanmışdır. Realm oxuma və yazmada SQLite-dan daha sürətlidir, reaktiv bildirişləri (Live Objects), anında şifrələmə və platformalararası (Android, iOS, Flutter, React Native) dəstəkləyir. Çatışmazlıqlar: artan APK/IPA ölçüsü və daha çox yaddaş istifadəsi.

Açar-dəyər anbarı və parametrlər

Kiçik həcmli məlumatları (parametrlər, tokenlər, keş) saxlamaq üçün sadə açar-dəyər anbarları istifadə olunur.

SharedPreferences (Android)

SharedPreferences Android-də köhnə açar-dəyər anbarıdır. Çatışmazlıqlar: sinxron giriş (oxuyarkən UI-ı bloklayır), tipləşdirmənin olmaması, böyük fayl yükləyərkən ANR riski. Yeni layihələr üçün TÖVSİYƏ EDİLMİR.

DataStore (Jetpack Android)

DataStore Google-dan SharedPreferences-ə müasir alternativdir. Kotlin Coroutines və Flow vasitəsilə asinxron işləyir, Preferences DataStore (açar-dəyər) və Proto DataStore (Protobuf vasitəsilə tipləşdirilmiş məlumat) dəstəkləyir. DataStore UI thread üçün təhlükəsizdir və əməliyyatları dəstəkləyir.

NSUserDefaults (iOS)

UserDefaults iOS-da kiçik parametrlər üçün standart anbardır. İbtidai tipləri, sətirləri, tarixləri, Data-nı dəstəkləyir. UserDefaults sinxrondur, buna görə böyük məlumat həcmləri üçün uyğun deyil. register(defaults:) vasitəsilə dəyərlərin qeydiyyatı default dəyərləri təyin edir.

Bulud verilənlər bazaları: Firebase Firestore və Realtime DB

Cihazlar arasında sinxronizasiya tələb edən tətbiqlərdə məlumat saxlamaq üçün Firebase bulud verilənlər bazaları istifadə olunur.

Cloud Firestore

Firebase Firestore real vaxt abunəlikləri, avtomatik miqyaslama, güclü sorğular və quraşdırılmış oflayn rejimi olan NoSQL sənəd verilənlər bazasıdır. Məlumatlar kolleksiyalar və sənədlər (JSON bənzər strukturlar) şəklində təşkil olunur. Firestore əməliyyatları və toplu əməliyyatları dəstəkləyir. Söhbətlər, lentlər və sosial tətbiqlər üçün idealdır.

Firebase Realtime Database

Firebase Realtime Database məlumatları tək JSON ağacı kimi saxlayan köhnə Firebase NoSQL verilənlər bazasıdır. Firestore-dan daha sadə, lakin sorğularda və miqyaslamada daha az çevikdir. Sadə real vaxt tətbiqləri (onlayn status, sadə söhbətlər) üçün tövsiyə olunur.

XüsusiyyətCloud FirestoreFirebase Realtime DB
Məlumat modeliKolleksiyalar → SənədlərJSON ağacı
SorğularMürəkkəb (filtrləmə, sıralama, limitlər)Sadə (açar üzrə)
MiqyaslamaAvtomatikƏl ilə şardinq
Oflayn rejimBəli (davamlı keş)Bəli
QiymətOxuma/yazma əməliyyatı üzrəTrafik + saxlama üzrə

Təhlükəsiz saxlama: Keystore, Keychain və EncryptedSharedPreferences

Tokenlərin, şifrələrin və şifrələmə açarlarının saxlanması xüsusi qorunan anbarlar tələb edir.

Android Keystore

Android Keystore kriptoqrafik açarlar üçün sistem anbarıdır. Açarlar aparat mühitində (TEE — Trusted Execution Environment) saxlanılır, tətbiqlər və OS üçün əlçatmazdır. Açar yaradılması, şifrələmə və imzalama dəstəkləyir. Android 9+ StrongBox Keymaster (xüsusi çip) daxildir.

iOS Keychain

Keychain Services şifrələr, açarlar və sertifikatlar üçün təhlükəsiz iOS anbarıdır. Məlumatlar aparat Secure Enclave istifadə edərək şifrələnir. Keychain əlçatanlıq səviyyələrini dəstəkləyir: Always, WhenUnlocked, WhenUnlockedThisDeviceOnly, AfterFirstUnlock.

EncryptedSharedPreferences (Android)

EncryptedSharedPreferences AES256-GCM və HKDF vasitəsilə açar və dəyər şifrələməsi ilə SharedPreferences üzərində sarğıdır. AndroidX Security kitabxanasında tətbiq edilmişdir. Tokenlərin və həssas parametrlərin saxlanması üçün tövsiyə olunur.

IT Sectr-də biz yeniləmə tokenləri və biometrik açarları saxlamaq üçün Android Keystore + EncryptedSharedPreferences istifadə edirik. iOS-da maksimum təhlükəsizlik üçün kSecAttrAccessibleWhenUnlockedThisDeviceOnly səviyyəsi ilə Keychain istifadə edirik.

Fayl saxlanması: Internal, External, Cache Directory

Fayl saxlama (şəkillər, videolar, sənədlər) üçün mobil platformalar bir neçə anbar növü təmin edir.

Android Storage

Android Internal Storage (/data/data/paket/ — şəxsi anbar) və External Storage (SD kart və ya emulyasiya edilmiş bölmə) arasında fərqləndirir. Cache Directory sistemin təmizləyə biləcəyi müvəqqəti anbardır. Scoped Storage (Android 10+) External Storage-a girişi məhdudlaşdırır — tətbiqlər yalnız öz fayllarını və ya MediaStore/SAF vasitəsilə faylları görür.

iOS Storage

iOS Documents Directory (iCloud ehtiyatı, davamlı məlumatlar), Library/Caches (müvəqqəti fayllar, ehtiyatı alınmır) və Tmp Directory (müvəqqəti, təmizlənə bilər) təmin edir. Fayl sistemi ilə işləmək üçün NSFileManager istifadə edin. iOS 11+ bulud faylları üçün File Provider dəstəkləyir.

Məlumat serializasiyası: JSON, Protobuf və kitabxanalar

Serializasiya obyektləri ötürmə və ya saxlama üçün formata çevirir. Deserializasiya tərs prosesdir.

Formatlar

JSON (JavaScript Object Notation) ən populyar formatdır: oxunaqlı, çevik, bütün platformalar tərəfindən dəstəklənir. XML daha sərtdir, köhnə sistemlərdə istifadə olunur. Protobuf (Protocol Buffers) Google-dan ikili formatdır: JSON-dan 3-10 dəfə daha yığcam, daha sürətli təhlil, sərt sxem. Yüksək yüklü sistemlər və mikroservislər üçün istifadə olunur.

Android kitabxanaları

  • Gson (Google) — sadə, çevik, lakin yavaş. Java/Kotlin obyektləri ilə avtomatik işləyir
  • Moshi (Square) — Gson-dan sürətli, daha yaxşı Kotlin dəstəyi (null olmayan xüsusiyyətlər, default dəyərlər, sealed siniflər)
  • kotlinx.serialization — JetBrains-dən yerli Kotlin serializasiyası, kompilyasiya vaxtında işləyir, JSON, Protobuf, CBOR dəstəkləyir

iOS kitabxanaları

JSONSerialization JSON ilə işləmək üçün quraşdırılmış API-dir. Codable (Encodable/Decodable) JSON, Property List və digər formatlara avtomatik serializasiya üçün müasir Swift protokoludur.

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)

Platformalararası həllər: Hive, ObjectBox, Drift

Flutter və React Native üçün öz səmərəli saxlama kitabxanaları mövcuddur.

Hive (Flutter)

Hive Flutter üçün yüngül, sürətli açar-dəyər anbarıdır. Yerli kod tələb etmir (təmiz Dart), TypeAdapter vasitəsilə tipləşdirməni dəstəkləyir və izolyatlarda işləyir. Keş, parametrlər və kiçik məlumat həcmləri üçün idealdır.

ObjectBox

ObjectBox Flutter, Android və iOS üçün yüksək performanslı yerləşdirilmiş verilənlər bazasıdır. SQLite-dan 10+ dəfə sürətlidir, minimum əlavə yük üçün düz fayl strukturundan istifadə edir. Əlaqələri, sorğuları və reaktiv abunəlikləri (ObjectBox Dart) dəstəkləyir.

Drift (keçmiş Moor)

Drift Flutter və Dart üçün reaktiv SQLite kitabxanasıdır. Tip təhlükəsiz sorğular, miqrasiyalar, DAO funksiyaları və Stream dəstəyi (reaktiv yeniləmələr) təmin edir. Drift SQLite tələb edən Flutter layihələri üçün əsas seçimdir.

Tez-tez verilən suallar

Yerli məlumat saxlama üçün hansı daha yaxşıdır: Room yoxsa Core Data?

Seçim platformadan asılıdır: Room (Android) kompilyasiya vaxtı sorğu yoxlaması ilə SQLite əsaslı rəsmi kitabxanadır. Core Data (iOS) obyekt qrafı ilə Apple freymvorkudur. Platformalararası layihələr üçün Realm və ya ORM vasitəsilə SQLite uyğundur.

SharedPreferences ilə DataStore arasında nə fərq var?

SharedPreferences sinxron giriş və ANR riski olan köhnə tətbiqdir. DataStore (Jetpack) Kotlin Coroutines və Flow əsaslı müasir alternativdir, asinxronluq, tipləşdirmə və səhv qorunmasını dəstəkləyir.

Mobil tətbiqdə tokenləri və şifrələri necə təhlükəsiz saxlamaq olar?

Android: EncryptedSharedPreferences və ya Android Keystore. iOS: WhenUnlockedThisDeviceOnly əlçatanlığı ilə Keychain Services. Kritik məlumatlar üçün biometriya ilə Secure Enclave (iOS) və aparat Keystore (Android) istifadə edin.

Firebase Firestore nədir və nə vaxt istifadə edilməlidir?

Cloud Firestore real vaxt sinxronizasiyası, oflayn rejim və avtomatik miqyaslama ilə Firebase NoSQL verilənlər bazasıdır. Söhbətlər, xəbər lentləri və cihazlar arasında sinxronizasiya tələb edən layihələr üçün uyğundur.

Flutter və React Native üçün hansı ORM-lər mövcuddur?

Flutter: Hive (sürətli açar-dəyər), Floor (SQLite ORM), Drift (Moor, reaktiv SQLite), ObjectBox (yüksək performanslı yerləşdirilmiş DB). React Native: Realm, WatermelonDB (tənbəl yükləmə) və AsyncStorage (SharedPreferences analoqu).

Xülasə

  • Room (Android) və Core Data (iOS) hər platformada relyasiyalı verilənlər bazaları üçün rəsmi həllərdir
  • DataStore parametrlərin asinxron saxlanması üçün SharedPreferences-i əvəz edir
  • Keystore / Keychain token və açarların təhlükəsiz saxlanması üçün məcburidir
  • Firebase Firestore cihazlar arasında real vaxt sinxronizasiyası üçün ən yaxşı seçimdir
  • Kotlinx.serialization (Android) və Codable (iOS) müasir serializasiya yanaşmalarıdır
  • Flutter üçün: Drift (SQLite), Hive (açar-dəyər), ObjectBox (yüksək performans)
  • Realm reaktiv bildirişlərlə SQLite-a platformalararası alternativdir

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