Cette page décrit les lectures dirigées dans Spanner et comment les utiliser.
Les lectures dirigées dans Spanner offrent la possibilité de router les transactions en lecture seule et les lectures uniques vers un type d'instance dupliquée ou une région spécifique dans une configuration d'instance birégionale ou multirégionale, ou une configuration régionale personnalisée avec une ou plusieurs régions en lecture seule facultatives.
Avantages
Les lectures dirigées offrent les avantages suivants :
- Elles offrent un meilleur contrôle sur l'équilibrage de charge des charges de travail sur plusieurs régions afin d'obtenir une utilisation plus uniforme du processeur et d'éviter le surprovisionnement des instances Spanner.
- Elles permettent d'isoler les charges de travail. Vous pouvez diriger vos charges de travail d'analyse et les lectures de flux de modifications vers des instances répliquées Spanner spécifiques afin de minimiser l'impact sur les charges de travail transactionnelles exécutées sur la même base de données Spanner.
Opérations de requête compatibles
| Opérations de requête | Les lectures dirigées sont-elles compatibles ? |
|---|---|
| Lecture non actualisée | Oui |
| Lecture forte | Oui |
| Transaction en lecture-écriture | Non |
Les lectures dirigées ne sont pas compatibles avec les transactions en lecture-écriture
ni avec les types de LMD partitionnés pour les mises à jour groupées. En effet, les transactions en lecture-écriture doivent être traitées dans la région principale. Si des lectures dirigées sont utilisées dans une transaction en lecture-écriture, la transaction échoue avec une erreur BAD_REQUEST.
Limites
Les lectures dirigées dans Spanner présentent les limites suivantes :
- Vous ne pouvez utiliser les lectures dirigées que dans une instance Spanner qui se trouve dans une configuration d'instance birégionale ou une configuration d'instance multirégionale ou une configuration régionale personnalisée avec une ou plusieurs régions en lecture seule facultatives.
- Vous ne pouvez pas utiliser les lectures dirigées avec des requêtes en lecture-écriture, car les requêtes en écriture sont toujours traitées par la région principale.
- Vous ne pouvez pas utiliser les lectures dirigées dans la Google Cloud console ni dans Google Cloud CLI. Elles sont disponibles à l'aide des API REST et RPC, ainsi que des bibliothèques clientes Spanner.
- Vous pouvez spécifier un maximum de 10 instances dupliquées dans une seule lecture dirigée.
Avant de commencer
Tenez compte des points suivants avant d'utiliser les lectures dirigées :
- L'application peut entraîner une latence supplémentaire si vous routez les lectures vers une instance dupliquée ou une région autre que celle la plus proche de l'application.
- Vous pouvez router le trafic en fonction des éléments suivants :
- Nom de la région (par exemple,
us-central1). - Type d'instance dupliquée (valeurs possibles :
READ_ONLYetREAD_WRITE).
- Nom de la région (par exemple,
- L'option de basculement automatique dans les lectures dirigées est activée par défaut. Lorsque l'option de basculement automatique est activée et que toutes les instances dupliquées spécifiées sont indisponibles ou défectueuses, Spanner route les requêtes vers une instance dupliquée en dehors de la liste
includeReplicas. Si vous désactivez l'option de basculement automatique et que toutes les instances dupliquées spécifiées sont indisponibles ou défectueuses, la requête de lectures dirigées échoue.
Paramètres des lectures dirigées
Si vous utilisez l'API REST ou RPC pour effectuer des lectures dirigées, vous devez définir ces champs dans le paramètre directedReadOptions. Vous ne pouvez inclure qu'un seul des paramètres includeReplicas ou excludeReplicas, et non les deux.
includeReplicas: contient un ensemble répété dereplicaSelections. Cette liste indique l'ordre dans lequel les lectures dirigées vers des régions ou des types d'instances dupliquées spécifiques doivent être prises en compte. Vous pouvez spécifier un maximum de 10includeReplicas.replicaSelections: se compose de l'locationou du type d'instance dupliquéetypequi traite la requête de lectures dirigées. Si vous utilisezincludeReplicas, vous devez fournir au moins l'un des champs suivants :location: emplacement qui traite la requête de lectures dirigées. L'emplacement doit être l'une des régions de la configuration birégionale ou multirégionale de votre base de données. Si l'emplacement ne fait pas partie des régions de la configuration birégionale ou multirégionale de votre base de données, les requêtes ne seront pas routées comme prévu. Elles seront traitées par la région la plus proche. Par exemple, vous pouvez diriger les lectures vers l'emplacementus-central1sur une base de données dans la configuration d'instance multirégionalenam6.Vous pouvez également spécifier le
locationparamètre avec unleaderounon-leaderlittéral de chaîne. Si vous saisissez la valeurleader, Spanner dirige vos requêtes vers l' instance dupliquée principale de la base de données. À l'inverse, si vous saisissez la valeurnon-leader, Spanner traite la requête dans l'instance dupliquée non principale la plus proche.type: type d'instance dupliquée qui traite la requête de lectures dirigées. Les types possibles incluentREAD_WRITEetREAD_ONLY.
autoFailoverDisabled: par défaut, la valeur est définie surFalse, ce qui signifie que le basculement automatique est activé. Lorsque l'option de basculement automatique est activée et que toutes les instances dupliquées spécifiées sont indisponibles ou défectueuses, Spanner route les requêtes vers une instance dupliquée en dehors de la listeincludeReplicas. Si vous désactivez l'option de basculement automatique et que toutes les instances dupliquées spécifiées sont indisponibles ou défectueuses, la requête de lectures dirigées échoue. Les valeurs possibles sontTRUEpour désactivé etFALSEpour activé.
excludeReplicas: contient un ensemble répété dereplicaSelectionsqui est exclu du traitement des requêtes. Spanner ne route pas les requêtes vers les instances dupliquées de cette liste.replicaSelections: emplacement ou type d'instance dupliquée exclu du traitement de la requête de lectures dirigées. Si vous utilisezexcludeReplicas, vous devez fournir au moins l'un des champs suivants :location: emplacement exclu du traitement de la requête de lectures dirigées.type: type d'instance dupliquée exclu du traitement de la requête de lectures dirigées. Les types possibles incluentREAD_WRITEetREAD_ONLY.
Pour voir un exemple de corps de requête REST, cliquez sur l'onglet REST dans la section Utiliser les lectures dirigées.
Utiliser les lectures dirigées
Vous pouvez utiliser les bibliothèques clientes Spanner, ainsi que les API REST et RPC pour effectuer des lectures dirigées.
Bibliothèques clientes
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
REST
Vous pouvez utiliser les API REST suivantes pour effectuer des lectures dirigées :
Par exemple, pour effectuer des lectures dirigées dans us-central1 à l'aide de executeSQL :
Cliquez sur
projects.instances.databases.sessions.executeSql.Pour session, saisissez la valeur suivante :
projects/<VAR>PROJECT-ID</VAR>/instances/<VAR>INSTANCE-ID</VAR>/databases/<VAR>DATABASE-ID</VAR>/sessions/<VAR>SESSION-ID</VAR>Remplacez les éléments suivants :
- PROJECT-ID : ID du projet.
- INSTANCE-ID : ID de l'instance.
- DATABASE-ID : ID de la base de données.
- SESSION-ID : ID de la session.
Vous recevez la
SESSION-IDvaleur lorsque vous créez une session.
Pour le champ Request body (Corps de la requête), utilisez les lignes suivantes :
{ "directedReadOptions": { "includeReplicas": { "replicaSelections": [ { "location": "us-central1", } ] } }, "sql": "SELECT SingerId, AlbumId, AlbumTitle FROM Albums" }Cliquez sur Exécuter. La réponse affiche les résultats de la requête.
RPC
Vous pouvez utiliser les API RPC suivantes pour effectuer des lectures dirigées :
Surveillance
Spanner fournit une métrique de latence pour vous aider à surveiller les activités de lectures dirigées dans vos instances. Cette métrique est disponible dans Cloud Monitoring.
spanner.googleapis.com/api/read_request_latencies_by_serving_location
Vous pouvez filtrer cette métrique à l'aide des champs /serving_location ou /is_directed_read. Le champ /serving location indique l'emplacement du serveur Spanner à partir duquel la requête est traitée. Le champ /is_directed_read indique si l'option de lectures dirigées est activée.
Pour obtenir la liste complète des métriques disponibles, consultez la section Liste des métriques Spanner.
Étape suivante
- Découvrez comment effectuer des lectures en dehors des transactions.