Senior
Comment écriviez-vous les données dans la base — un par un ou par lots ? Un seul message Kafka pouvait-il contenir 500 enregistrements ?
sobes.tech IA
Réponse de l'IA
Dans la plupart des cas, pour améliorer les performances et réduire la charge sur la base de données, les données sont écrites par lots, et non une par une. Si un message Kafka contient 500 enregistrements, il est logique de les traiter comme un seul lot et d’effectuer une seule transaction ou insertion par lot.
Exemple en Go utilisant une base de données et une insertion par lot :
records := getRecordsFromKafkaMessage(msg) // []Record
// Préparation du lot
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, ",")
// Exécution de la requête
_, err := db.Exec(query, values...)
if err != nil {
log.Fatal(err)
}
Cette approche réduit le nombre de requêtes à la base de données et augmente la capacité globale du système.