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
}