Sobes.tech
Junior

Milyen adatbázist használsz a projektjeidben?

sobes.tech MI

Válasz az MI-től

A projekt követelményeitől függően több lehetőséget is használtam:

  • Room Állandó Könyvtár: Leggyakrabban használt. Kényelmes absztrakciós réteget nyújt a SQLite fölött, jelentősen csökkentve a boilerplate kód mennyiségét, és biztosítva a lekérdezések fordítási időben történő ellenőrzését. Ideális a legtöbb tipikus Android alkalmazási forgatókönyvhöz.
  • SQLite közvetlenül: Régebbi projektekben vagy amikor nagyon alacsony szintű hozzáférés és teljes kontroll volt szükséges a sémák és lekérdezések felett. Több kézi munkát igényel.
  • Realm: Néhány projektben, ahol a nagy adatmennyiség és összetett objektumok kezelésének teljesítménye volt fontos. A Realm egy objektumorientált adatbázis, ami kényelmes az adatmódelljekkel való munkában.
  • Firebase Realtime Database / Cloud Firestore: Olyan projektekhez, ahol valós idejű adat-szinkronizációra és felhőalapú tárolásra volt szükség. A közöttük választás az adatszerkezet és a lekérdezési igények függvénye volt. A Realtime Database JSON-fának megfelelő adatokhoz, míg a Cloud Firestore dokumentumgyűjteményekhez.

Egy adott adatbázis kiválasztása olyan tényezőktől függ, mint:

  • Az adatok mennyisége és típusa.
  • A lekérdezések összetettsége.
  • A teljesítményigények.
  • Az adatok szinkronizálásának szükségessége.
  • A csapat szakértelmi szintje.
  • A meglévő megoldások és könyvtárak elérhetősége.

Például, egy tipikus Room-alapú megvalósítás így néz ki:

// entitás
@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)
}

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