Cette page décrit les lectures dirigées Spanner et leur utilisation.
Les lectures dirigées dans Spanner offrent la possibilité de router les transactions en lecture seule et les lectures uniques vers un type de réplica ou une région spécifiques 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 :
- Vous pouvez mieux contrôler les charges de travail d'équilibrage de charge sur plusieurs régions pour obtenir une utilisation plus uniforme du processeur et éviter le surprovisionnement des instances Spanner.
- Activez l'isolation de la charge de travail. Vous pouvez diriger vos charges de travail d'analyse et vos lectures de flux de modifications vers des répliques 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 acceptées
Opérations de requête | Les lectures dirigées sont-elles prises en charge ? |
---|---|
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 et écriture ni avec les mises à jour groupées de type LMD partitionné. 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 et génère une erreur BAD_REQUEST
.
Limites
Les lectures dirigées Spanner sont soumises aux 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, 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 de lectures dirigées avec des requêtes de lecture et d'écriture, car les requêtes d'écriture sont toujours traitées par la région principale.
- Vous ne pouvez pas utiliser les lectures dirigées dans la console Google Cloud ni dans Google Cloud CLI. Il est disponible à l'aide des API REST et RPC, ainsi que des bibliothèques clientes Spanner.
- Vous pouvez spécifier jusqu'à 10 répliques dans une même 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 acheminez les lectures vers une instance dupliquée ou une région autre que celle la plus proche de l'application.
- Vous pouvez acheminer le trafic en fonction des éléments suivants :
- Nom de la région (par exemple,
us-central1
). - Type de réplica (valeurs possibles :
READ_ONLY
etREAD_WRITE
).
- Nom de la région (par exemple,
- L'option de basculement automatique en cas d'échec est activée par défaut dans les lectures dirigées. Lorsque l'option de basculement automatique est activée et que toutes les répliques spécifiées sont indisponibles ou non opérationnelles, Spanner achemine les requêtes vers une réplique en dehors de la liste
includeReplicas
. Si vous désactivez l'option de basculement automatique et que toutes les répliques spécifiées sont indisponibles ou défectueuses, la requête de lecture dirigée échoue.
Paramètres de lecture dirigée
Si vous utilisez l'API REST ou RPC pour effectuer des lectures ciblées, vous devez définir ces champs dans le paramètre directedReadOptions
. Vous ne pouvez inclure qu'une seule des valeurs 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 de répliques spécifiques doivent être prises en compte. Vous pouvez spécifier jusqu'à 10includeReplicas
.replicaSelections
: se compose de l'instance principalelocation
ou de l'instance répliquéetype
qui traite la requête de lecture dirigée. Si vous utilisezincludeReplicas
, vous devez fournir au moins l'un des champs suivants :location
: emplacement qui traite la demande de lecture dirigée. 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 acheminées comme prévu. Elles sont diffusées par la région la plus proche. Par exemple, vous pouvez diriger les lectures vers l'emplacementus-central1
d'une base de données dans la configuration d'instance multirégionalenam6
.Vous pouvez également spécifier le paramètre
location
avec un littéral de chaîneleader
ounon-leader
. Si vous saisissez la valeurleader
, Spanner redirige vos requêtes vers le réplica principal de la base de données. À l'inverse, si vous saisissez la valeurnon-leader
, Spanner traite la requête dans la réplique non leader la plus proche.type
: type d'instance répliquée traitant la demande de lecture ciblée. Les types possibles incluentREAD_WRITE
etREAD_ONLY
.
autoFailoverDisabled
: par défaut, cette 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 répliques spécifiées sont indisponibles ou défectueuses, Spanner achemine les requêtes vers une réplique en dehors de la listeincludeReplicas
. Si vous désactivez l'option de basculement automatique et que toutes les répliques spécifiées sont indisponibles ou défectueuses, la requête de lecture dirigée échoue. Les valeurs possibles sontTRUE
pour désactivé etFALSE
pour activé.
excludeReplicas
: contient un ensemble répété dereplicaSelections
qui sont exclus des requêtes de diffusion. Spanner n'achemine pas les requêtes vers les répliques de cette liste.replicaSelections
: emplacement ou type de réplica exclus du traitement de la requête de lecture dirigée. Si vous utilisezexcludeReplicas
, vous devez fournir au moins l'un des champs suivants :location
: emplacement exclu de la diffusion de la requête de lecture ciblée.type
: type de réplica exclu de la diffusion de la requête de lecture dirigée. Les types possibles incluentREAD_WRITE
etREAD_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 et 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 ciblé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 valeur
SESSION-ID
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 ciblées :
Surveillance
Spanner fournit une métrique de latence pour vous aider à surveiller les activités de lecture dirigée 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 lecture dirigée est activée.
Pour obtenir la liste complète des métriques disponibles, consultez la liste des métriques Spanner.
Étapes suivantes
- Découvrez comment effectuer des lectures en dehors des transactions.