Sobes.tech
Junior

Ի՞նչ տվյալների բազա եք օգտագործում ձեր նախագծերում:

sobes.tech AI

Պատասխան AI-ից

Նախագծի պահանջների վրա հիմնված տարբեր տարբերակներ եմ օգտագործել.

  • Room կայուն գրադարան: Ամենատարածվածը: ապահովում է հարմարավետ ամփոփական շերտ SQLite-ի վրա, զգալիորեն նվազեցնելով boilerplate կոդի քանակը և ապահովելով հարցումների ստուգում կոմպիլյացիայի ժամանակ: Իդեալական է Android հավելվածների մեծ մասի համար:
  • SQLite ուղղակի: Հին նախագծերում կամ երբ անհրաժեշտ էր շատ ցածր մակարդակի մուտք և ամբողջական վերահսկողություն սիմվոլների և հարցումների վրա: Ավելի շատ ձեռքով աշխատանք պահանջում է:
  • Realm: Մի քանի նախագծերում, որտեղ կարևոր էր մեծ տվյալների ծավալների և բարդ օբյեկտների աշխատանքի արդյունավետությունը: Realm-ը օբյեկտ-կենտրոնացված տվյալների բազա է, որը հարմար է տվյալների մոդելների հետ աշխատելու համար:
  • Firebase Realtime Database / Cloud Firestore: Նախագծերի համար, որոնք պահանջում էին տվյալների սինխրոնիզացիա իրական ժամանակում սարքերի միջև և ամպային պահեստում: Ընտրությունը կախված էր տվյալների կառուցվածքից և հարցումների կարիքներից: Realtime Database-ը լավ է JSON ծառի տեսքով տվյալների համար, իսկ Cloud Firestore-ը՝ փաստաթղթերի հավաքածուի համար:

Ընտրությունը որոշվում է հետևյալ գործոններով:

  • Տվյալների ծավալը և տեսակները:
  • Հարցումների բարդությունը:
  • Արդյունավետության պահանջները:
  • Տվյալների սինխրոնիզացիայի կարիք:
  • Թիմի փորձառության մակարդակը:
  • Գործող լուծումների և գրադարանների առկայությունը:

Օրինակ, սովորական իրականացման օրինակ՝

// օբյեկտ
@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(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}