Sobes.tech
Middle — Middle+

Qaysi replika katta hajmdagi ma'lumotlarni o'qish mumkin?

sobes.tech AI

AIdan javob

Go'da katta ma'lumotlarni o'qish odatda read replica sifatida sozlangan replikada amalga oshiriladi. Bu asosiy ma'lumotlar bazasini (master) yukni kamaytirishga va og'ir o'qish so'rovlarini bajarishda samaradorlikni oshirishga imkon beradi.

Masalan, PostgreSQL yoki MySQL ma'lumotlar bazalari arxitekturasida, asosiy replik (master) yozish va o'qish uchun javobgardir, qo'shimcha replikalar esa faqat o'qish uchun ishlatiladi. Go kodida, o'qish so'rovlarini aynan read replica'ga yo'naltirish orqali katta hajmdagi ma'lumotlarni samarali tarzda qayta ishlash mumkin.

Go'da database/sql kutubxonasi va maxsus so'rov routingi bilan read replica misoli:

// dbMaster - masterga ulanish
// dbReplica - replikaga ulanish

func queryLargeData(readOnly bool) ([]Data, error) {
    var db *sql.DB
    if readOnly {
        db = dbReplica
    } else {
        db = dbMaster
    }
    rows, err := db.Query("SELECT * FROM large_table")
    if err != nil {
        return nil, err
    }
    defer rows.Close()

    var results []Data
    for rows.Next() {
        var d Data
        if err := rows.Scan(&d.Field1, &d.Field2); err != nil {
            return nil, err
        }
        results = append(results, d)
    }
    return results, nil
}

Shu tarzda, katta hajmdagi ma'lumotlar replika orqali o'qiladi, bu esa asosiy ma'lumotlar bazasiga yukni kamaytiradi.