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
}