Sobes.tech
Senior

Ako ste zapisovali podatke v databáze — po jednom alebo v dávkach? Môže sa stať, že v jednom Kafka správe príde 500 záznamov?

sobes.tech AI

Odpoveď od AI

Vo väčšine prípadov, na zvýšenie výkonu a zníženie záťaže na databáze sa údaje zapisujú dávkami, nie jednotlivé. Ak do jednej Kafka správy príde 500 záznamov, je logické ich spracovať ako jeden batch a vykonať jednu transakciu alebo dávkovú vložku.

Príklad v Go s použitím databázy a dávkovej vložky:

records := getRecordsFromKafkaMessage(msg) // []Record

// Príprava batchu
var values []interface{}
query := "INSERT INTO table_name (col1, col2) VALUES "
placeholders := []string{}

for i, r := range records {
    placeholders = append(placeholders, fmt.Sprintf("($%d, $%d)", i*2+1, i*2+2))
    values = append(values, r.Field1, r.Field2)
}
query += strings.Join(placeholders, ",")

// Spustenie dotazu
_, err := db.Exec(query, values...)
if err != nil {
    log.Fatal(err)
}

Tento prístup znižuje počet dotazov na databázu a zvyšuje celkovú priepustnosť systému.