Sobes.tech
Junior

Kokią duomenų bazę naudojate savo projektuose?

sobes.tech AI

Atsakymas iš AI

Naudota keli variantai, priklausomai nuo projekto reikalavimų:

  • Room Persistent Library: dažniausiai. Suteikia patogų abstrakcijos sluoksnį virš SQLite, labai sumažindamas boilerplate kodą ir užtikrindamas užklausų patikrinimą kompiliacijos metu. Idealiai tinka daugumai tipinių Android programėlių scenarijų.
  • SQLite tiesiogiai: senesniuose projektuose arba kai reikėjo labai žemo lygio prieigos ir pilno kontrolės schemoms ir užklausoms. Reikalauja daugiau rankinio darbo.
  • Realm: keliuose projektuose, kur svarbi našumas dirbant su dideliais duomenų kiekiais ir sudėtingais objektais. Realm yra objektų orientuota duomenų bazė, patogi dirbant su duomenų modeliais.
  • Firebase Realtime Database / Cloud Firestore: projektams, kuriems reikalinga duomenų sinchronizacija tarp įrenginių realiu laiku ir debesų saugykla. Pasirinkimas tarp jų priklausė nuo duomenų struktūros ir užklausų poreikių. Realtime Database gerai tinka JSON medžio duomenims, o Cloud Firestore - dokumentų kolekcijoms.

Konkrečios duomenų bazės pasirinkimą lemia tokie veiksniai:

  • Duomenų kiekis ir tipas.
  • Užklausų sudėtingumas.
  • našumo reikalavimai.
  • Duomenų sinchronizacijos poreikis.
  • Komandos ekspertizės lygis.
  • Paruoštų sprendimų ir bibliotekų prieinamumas.

Pavyzdžiui, tipinė realizacija su Room apima:

// entity
@Entity(tableName = "users")
data class User(
    @PrimaryKey val id: Int,
    val name: String
)

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

    @Insert(onConflict = OnConflictStrategy.IGNORE)
    suspend fun insert(user: User)
}

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