Senior
Kuidas te kirjutasite andmeid andmebaasi — üksikult või partii kaupa? Kas ühe Kafka sõnumiga võis tulla 500 kirjet?
sobes.tech AI
Vastus AI-lt
En la mayoría de los casos, para aumentar el rendimiento y reducir la carga en la base de datos, los datos se escriben en lotes, no uno por uno. Si en un mensaje Kafka llegan 500 registros, es lógico procesarlos como un solo lote y realizar una sola transacción o inserción en lote.
Ejemplo en Go usando una base de datos y una inserción en lote:
records := getRecordsFromKafkaMessage(msg) // []Record
// Preparación del lote
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, ",")
// Ejecución de la consulta
_, err := db.Exec(query, values...)
if err != nil {
log.Fatal(err)
}
Este enfoque reduce la cantidad de consultas a la base de datos y aumenta la capacidad total del sistema.