Sobes.tech
Junior

Welche Datenbank verwendest du in deinen Projekten?

sobes.tech KI

Antwort von AI

Ich habe je nach Projektanforderungen verschiedene Optionen verwendet:

  • Room Persistent Library: Am häufigsten. Bietet eine bequeme abstrakte Schicht über SQLite, reduziert den Boilerplate-Code erheblich und stellt die Überprüfung von Abfragen zur Kompilierungszeit sicher. Ideal für die meisten typischen Szenarien von Android-Anwendungen.
  • Direktes SQLite: In älteren Projekten oder wenn ein sehr niedriger Zugriff und vollständige Kontrolle über Schemas und Abfragen erforderlich waren. Erfordert mehr manuelle Arbeit.
  • Realm: In mehreren Projekten, bei denen die Leistung bei der Arbeit mit großen Datenmengen und komplexen Objekten wichtig war. Realm ist eine objektorientierte Datenbank, was die Arbeit mit Datenmodellen erleichtert.
  • Firebase Realtime Database / Cloud Firestore: Für Projekte, die eine Synchronisierung der Daten in Echtzeit zwischen Geräten und Cloud-Speicherung benötigen. Die Wahl zwischen ihnen hing von der Datenstruktur und den Abfragebedürfnissen ab. Realtime Database eignet sich gut für Daten in Form eines JSON-Baums, während Cloud Firestore für Dokumentensammlungen geeignet ist.

Die Wahl einer bestimmten Datenbank hängt von Faktoren ab wie:

  • Datenvolumen und -typ.
  • Komplexität der Abfragen.
  • Leistungsanforderungen.
  • Bedarf an Datensynchronisation.
  • Erfahrung des Teams.
  • Verfügbarkeit von fertigen Lösungen und Bibliotheken.

Beispielsweise umfasst eine typische Implementierung mit Room:

// Entität
@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)
}

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