Sobes.tech
Junior

Millist andmebaasi kasutate oma projektides?

sobes.tech AI

Vastus AI-lt

Kasutati mitmeid valikuid, sõltuvalt projekti nõuetest:

  • Room Persistent Library: kõige sagedamini. Pakub mugavat abstraktsiooni kihti SQLite'i kohal, vähendades oluliselt boilerplate-koodi ja tagades päringute kontrolli kompileerimise ajal. Ideaalne enamikule tüüpilistele Android rakenduste stsenaariumidele.
  • SQLite otse: vanemates projektides või kui oli vaja väga madala taseme juurdepääsu ja täielikku kontrolli skeemide ja päringute üle. Nõuab rohkem käsitsi tööd.
  • Realm: mitmes projektis, kus oluline oli jõudlus suurte andmemahtude ja keerukate objektide töötlemisel. Realm on objekt-orienteeritud andmebaas, mis on mugav andmemudelitega töötamisel.
  • Firebase Realtime Database / Cloud Firestore: projektidele, millele on vajalik andmete sünkroniseerimine reaalajas ja pilvesalvestus. Nende valik sõltus andmestruktuurist ja päringute vajadustest. Realtime Database sobib hästi JSON-puu andmetele, Cloud Firestore aga dokumentide kogumitele.

Määravad konkreetse andmebaasi valiku sellised tegurid nagu:

  • Andmete maht ja tüüp.
  • Päringute keerukus.
  • Jõudluse nõuded.
  • Andmete sünkroniseerimise vajadus.
  • Meeskonna ekspertiisi tase.
  • Valmis lahenduste ja raamatukogude olemasolu.

Näiteks hõlmab tüüpiline Room-i rakendus:

// 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
}