Share via


Cohérence des requêtes

La cohérence des requêtes fait référence à la façon dont les requêtes et les mises à jour sont synchronisées. Il existe deux modes de cohérence de requête pris en charge :

  • Cohérence forte : une cohérence forte garantit un accès immédiat aux mises à jour les plus récentes, telles que les ajouts de données, les suppressions et les modifications de schéma. La cohérence forte est le mode de cohérence par défaut. En raison de la synchronisation, ce mode de cohérence fonctionne légèrement moins bien que le mode de cohérence faible en termes d’accès concurrentiel.

  • Cohérence faible : avec une cohérence faible, il peut y avoir un délai avant que les résultats de la requête reflètent les dernières mises à jour de la base de données. En règle générale, ce délai varie de 1 à 2 minutes. Une cohérence faible peut prendre en charge des taux d’accès concurrentiel aux requêtes plus élevés que la cohérence forte.

Par exemple, si 1 000 enregistrements sont ingérés chaque minute dans une table de la base de données, les requêtes sur cette table exécutée avec une cohérence forte ont accès aux enregistrements les plus récemment ingérés, tandis que les requêtes sur cette table s’exécutant avec une cohérence faible peuvent ne pas avoir accès à certains enregistrements des dernières minutes.

Notes

Par défaut, les requêtes s’exécutent avec une cohérence forte. Nous vous recommandons de ne basculer vers une cohérence faible que si nécessaire pour prendre en charge la concurrence des requêtes plus élevée.

Cas d’usage pour une cohérence forte

Si vous avez une forte dépendance vis-à-vis des mises à jour qui se sont produites dans la base de données au cours des dernières minutes, utilisez une cohérence forte.

Par exemple, la requête suivante compte le nombre d’enregistrements d’erreur dans les 5 minutes et déclenche une alerte dont le nombre est supérieur à 0. Ce cas d’usage est mieux géré avec une cohérence forte, car vos insights peuvent être modifiés, vous n’avez pas accès aux enregistrements ingérés au cours des dernières minutes, comme cela peut être le cas avec une cohérence faible.

my_table
| where timestamp between(ago(5m)..now())
| where level == "error"
| count

En outre, une cohérence forte doit être utilisée lorsque les métadonnées de base de données sont volumineuses. Par instance. il existe des millions d’étendues de données dans la base de données, l’utilisation d’une cohérence faible entraînerait le téléchargement et la désérialisation des artefacts de métadonnées étendus à partir d’un stockage persistant, ce qui peut augmenter la probabilité d’échecs temporaires dans les téléchargements et les opérations associées.

Cas d’usage pour une cohérence faible

Si vous n’avez pas de forte dépendance vis-à-vis des mises à jour qui se sont produites dans la base de données au cours des dernières minutes et que vous avez besoin d’une concurrence de requête élevée, utilisez une cohérence faible.

Par exemple, la requête suivante compte le nombre d’enregistrements d’erreurs par semaine au cours des 90 derniers jours. Une cohérence faible est appropriée dans ce cas, car il est peu probable que vos insights soient affectés les enregistrements ingérés au cours des dernières minutes sont omis.

my_table
| where timestamp between(ago(90d) .. now())
| where level == "error"
| summarize count() by level, startofweek(Timestamp)

Modes de cohérence faible

Le tableau suivant récapitule les quatre modes de cohérence de requête faible.

Mode Description
Aléatoire Les requêtes sont acheminées de manière aléatoire vers l’un des nœuds du cluster qui peut servir de tête de requête faiblement cohérente.
Affinité par base de données Les requêtes au sein de la même base de données sont routées vers la même tête de requête faiblement cohérente, ce qui garantit une exécution cohérente pour cette base de données.
Affinité par texte de requête Les requêtes avec le même hachage de texte de requête sont routées vers la même tête de requête faiblement cohérente, ce qui est bénéfique pour tirer parti de la mise en cache des requêtes.
Affinité par ID de session Les requêtes avec le même hachage d’ID de session sont routées vers la même tête de requête faiblement cohérente, ce qui garantit une exécution cohérente au sein d’une session.

Affinité par base de données

L’affinité par mode de base de données garantit que les requêtes s’exécutant sur la même base de données sont exécutées sur la même version de la base de données, mais pas nécessairement la version la plus récente de la base de données. Ce mode est utile quand il est important de garantir une exécution cohérente au sein d’une base de données spécifique. Toutefois, le nombre de requêtes entre les bases de données présente un déséquilibre. Ce mode peut entraîner une répartition inégale de la charge.

Affinité par texte de requête

L’affinité par mode texte de requête est utile lorsque les requêtes tirent parti du cache des résultats de la requête. Ce mode achemine les requêtes répétées fréquemment exécutées par la même identité vers la même tête de requête, ce qui leur permet de tirer parti des résultats mis en cache et de réduire la charge sur le cluster.

Affinité par ID de session

L’affinité par mode ID de session garantit que les requêtes appartenant à la même activité utilisateur ou à la même session sont exécutées sur la même version de la base de données, bien que pas nécessairement la plus récente. Pour utiliser ce mode, l’ID de session doit être spécifié explicitement dans les propriétés de la requête cliente de chaque requête. Ce mode est utile dans les scénarios où une exécution cohérente au sein d’une session est essentielle.

Comment spécifier la cohérence des requêtes

Vous pouvez spécifier le mode de cohérence des requêtes par le client qui envoie la requête ou à l’aide d’une stratégie côté serveur. S’il n’est pas spécifié par l’un ou l’autre, le mode par défaut de cohérence forte s’applique.

  • Client qui envoie la demande : utilisez la queryconsistencypropriété de demande du client. Cette méthode définit le mode de cohérence de requête pour une requête spécifique et n’affecte pas le mode de cohérence effectif global, qui est déterminé par la stratégie par défaut ou côté serveur. Pour plus d’informations, consultez Propriétés de la demande cliente.

  • Stratégie côté serveur : utilisez la QueryConsistency propriété de la stratégie de cohérence des requêtes. Cette méthode définit le mode de cohérence des requêtes au niveau du groupe de charge de travail, ce qui évite aux utilisateurs de spécifier le mode de cohérence dans leurs propriétés de requête client et permet d’appliquer les modes de cohérence souhaités. Pour plus d’informations, consultez Stratégie de cohérence des requêtes.

Notes

Si vous utilisez le Kit de développement logiciel (SDK) .NET Kusto, vous pouvez définir la cohérence de la requête via le chaîne de connexion. Ce paramètre s’applique à toutes les requêtes envoyées via ce chaîne de connexion particulier. Pour plus d’informations, consultez Propriétés de chaîne de connexion.