Junior
Projelerinde hangi veritabanını kullanıyorsunuz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Projeye göre çeşitli seçenekler kullandım:
- Room Kalıcı Kütüphanesi: En yaygın olanı. SQLite üzerinde kullanışlı bir soyutlama katmanı sağlar, tekrarlayan kod miktarını önemli ölçüde azaltır ve sorguların derleme zamanında doğrulanmasını sağlar. Çoğu tipik Android uygulaması senaryosu için idealdir.
- Doğrudan SQLite: Eski projelerde veya çok düşük seviyeli erişim ve şemalar ile sorgular üzerinde tam kontrol gerektiğinde kullanılır. Daha fazla manuel çalışma gerektirir.
- Realm: Büyük veri hacimleri ve karmaşık nesnelerle çalışırken performans önemli olan birkaç projede kullanıldı. Realm, nesne odaklı bir veritabanıdır ve veri modelleriyle çalışırken kullanışlıdır.
- Firebase Realtime Database / Cloud Firestore: Cihazlar arasında gerçek zamanlı veri senkronizasyonu ve bulut depolama gerektiren projeler için. Aralarındaki seçim, veri yapısı ve sorgu ihtiyaçlarına bağlıydı. Realtime Database, JSON ağacı şeklinde veriler için uygundur, Cloud Firestore ise belge koleksiyonları için.
Belirli bir veritabanı seçimi, şu faktörlere göre belirlenir:
- Veri hacmi ve tipi.
- Sorgu karmaşıklığı.
- Performans gereksinimleri.
- Veri senkronizasyon ihtiyacı.
- Ekibin uzmanlık seviyesi.
- Mevcut çözümler ve kütüphanelerin varlığı.
Örneğin, Room ile tipik bir uygulama şu şekilde olur:
// varlık
@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)
}
// veritabanı
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}