Sobes.tech
Middle — Middle+

V které replika je možné číst velké objemy dat?

sobes.tech AI

Odpověď od AI

Čtení velkých objemů dat v Go se obvykle provádí na replikě nakonfigurované jako read replica (replika pouze pro čtení). To umožňuje odlehčit hlavní databázi (master) a zvýšit výkon při provádění náročných čtecích dotazů.

Například v architektuře s databázemi PostgreSQL nebo MySQL hlavní replika (master) zodpovídá za zápis a čtení, zatímco další repliky jsou určeny pouze pro čtení. V kódu Go lze směrovat čtecí dotazy právě na read replica, aby bylo možné efektivně zpracovat velké objemy dat.

Příklad použití read replica v Go s knihovnou database/sql a vlastním routováním dotazů:

// dbMaster - připojení k masteru
// dbReplica - připojení k replikě

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
}

Tímto způsobem jsou velké objemy dat čteny z repliky, což snižuje zátěž hlavní databáze.