Sobes.tech
Junior

Jakou databázi používáte ve svých projektech?

sobes.tech AI

Odpověď od AI

Použil jsem různé možnosti v závislosti na požadavcích projektu:

  • Room Persistent Library: Nejčastěji používaná. Poskytuje pohodlnou vrstvu abstrakce nad SQLite, výrazně snižuje množství boilerplate kódu a zajišťuje kontrolu dotazů při kompilaci. Ideální pro většinu typických scénářů Android aplikací.
  • Přímo SQLite: Ve starších projektech nebo když bylo potřeba velmi nízké úrovně přístupu a úplné kontroly nad schématy a dotazy. Vyžaduje více manuální práce.
  • Realm: V několika projektech, kde byla důležitá výkonnost při práci s velkými objemy dat a složitými objekty. Realm je objektově orientovaná databáze, což je pohodlné při práci s datovými modely.
  • Firebase Realtime Database / Cloud Firestore: Pro projekty, které vyžadovaly synchronizaci dat v reálném čase mezi zařízeními a cloudové úložiště. Výběr mezi nimi závisel na struktuře dat a potřebách dotazů. Realtime Database je vhodná pro data ve formě JSON stromu, zatímco Cloud Firestore pro kolekce dokumentů.

Výběr konkrétní databáze je určen faktory jako:

  • Objem a typ dat.
  • Složitost dotazů.
  • Požadavky na výkon.
  • Potřeba synchronizace dat.
  • Úroveň odbornosti týmu.
  • Dostupnost hotových řešení a knihoven.

Například, typická implementace s Room zahrnuje:

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

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