Sobes.tech
Junior

Koju bazu podataka koristite u svojim projektima?

sobes.tech АИ

Одговор од АИ

Koristio sam različite opcije, u zavisnosti od zahteva projekta:

  • Room Persistent Library: Najčešće korišćena. Pruža zgodan apstraktni sloj iznad SQLite, znatno smanjujući količinu boilerplate koda i obezbeđujući proveru upita tokom kompilacije. Idealan za većinu tipičnih scenarija Android aplikacija.
  • SQLite direktno: U starijim projektima ili kada je bio potreban vrlo niskorazinski pristup i potpuna kontrola nad šemama i upitima. Zahteva više ručnog rada.
  • Realm: U nekoliko projekata gde je bila važna performansa pri radu sa velikim količinama podataka i složenim objektima. Realm je objektno-orijentisana baza podataka, što je zgodno pri radu sa modelima podataka.
  • Firebase Realtime Database / Cloud Firestore: Za projekte koji zahtevaju sinhronizaciju podataka u realnom vremenu između uređaja i cloud skladišta. Izbor između njih zavisio je od strukture podataka i potreba za upitima. Realtime Database je pogodan za podatke u obliku JSON stabla, dok je Cloud Firestore za kolekcije dokumenata.

Izbor konkretne baze podataka određuje se faktorima kao što su:

  • Obim i tip podataka.
  • Složenost upita.
  • Zahtevi za performanse.
  • Potreba za sinhronizacijom podataka.
  • Nivo stručnosti tima.
  • Dostupnost gotovih rešenja i biblioteka.

Na primer, tipična implementacija sa Room uključuje:

// entitet
@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)
}

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