La page décrit les lectures dirigées par Spanner et explique comment les utiliser.
Les lectures dirigées dans Spanner offrent la possibilité d'acheminer des transactions en lecture seule et des lectures uniques vers un type d'instance répliquée ou une région spécifique au sein d'une configuration d'instance multirégionale, ou vers une configuration régionale personnalisée avec une ou plusieurs régions facultatives en lecture seule.
Cas d'utilisation courants
Voici quelques cas d'utilisation courants des lectures dirigées:
- Équilibrage de charge des charges de travail dans plusieurs régions pour une utilisation du processeur plus uniforme
- Isolez les analyses dans votre application en minimisant l'impact sur les charges de travail transactionnelles.
- Assurer une isolation partielle pour les lectures de flux de modifications. Si vous utilisez l'API Spanner pour diffuser les modifications de données Spanner, vous pouvez utiliser des lectures dirigées pour minimiser l'impact sur les charges de travail transactionnelles.
Opérations de requête compatibles
Opérations de requête | Les lectures dirigées sont-elles acceptées ? |
---|---|
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 et les types de mises à jour groupées 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 avec une erreur BAD_REQUEST
.
Limites
Les lectures dirigées par 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 multirégionale ou dans une configuration régionale personnalisée avec une ou plusieurs régions facultatives en lecture seule.
- Vous ne pouvez pas utiliser de lectures dirigées avec des requêtes en lecture/écriture, car les requêtes d'écriture sont toujours diffusées par la région principale.
- Vous ne pouvez pas utiliser les lectures dirigées dans la console Google Cloud ou la Google Cloud CLI. Il est disponible avec les API REST et RPC, ainsi que les bibliothèques clientes Spanner.
- Vous pouvez spécifier un maximum de 10 instances répliquées par lecture dirigée.
- Si vous utilisez le tableau de bord des insights système ou l'explorateur de métriques, dans les graphiques "Opérations par seconde", "Opérations par seconde par base de données" et "Opérations par seconde par méthode d'API", votre requête de lecture dirigée peut s'afficher dans un emplacement autre que celui que vous avez désigné. Dans ce cas, les informations des graphiques peuvent être incorrectes. Vous pouvez vérifier que vos requêtes de lecture sont acheminées vers la ou les régions que vous avez choisies à l'aide des métriques d'utilisation du processeur. Ces métriques fournissent les informations les plus précises sur la destination du trafic de 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 répliqué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 d'instance répliquée (valeurs possibles:
READ_ONLY
etREAD_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 non opérationnelles, Spanner achemine 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 répliquées spécifiées sont indisponibles ou non opérationnelles, la requête de lecture dirigée é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'une propriété includeReplicas
ou excludeReplicas
, mais pas 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'instancelocation
ou de l'instance dupliquéetype
qui diffuse la requête de lecture dirigée. Si vous utilisezincludeReplicas
, vous devez fournir au moins l'un des champs suivants :location
: emplacement diffusant la requête de lecture dirigée. L'emplacement doit correspondre à l'une des régions de la configuration multirégionale de votre base de données. Si l'emplacement ne fait pas partie des régions de la configuration multirégionale de votre base de données, les requêtes ne seront pas acheminées comme prévu. mais 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
.type
: type d'instance répliquée diffusant la requête de lecture dirigée. Les types possibles sontREAD_WRITE
etREAD_ONLY
.
autoFailoverDisabled
: par défaut, la valeur estFalse
, 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 non opérationnelles, Spanner achemine les requêtes vers une instance dupliquée qui ne figure pas dans la listeincludeReplicas
. Si vous désactivez l'option de basculement automatique et que toutes les instances dupliquées spécifiées sont indisponibles ou non opérationnelles, 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 de la diffusion des requêtes. Spanner n'achemine pas les requêtes vers les instances répliquées de cette liste.replicaSelections
: emplacement ou type d'instance répliquée exclu de la diffusion 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 lectures dirigées.type
: type d'instance répliquée exclu de la diffusion de la requête de lecture dirigée. Les types possibles sontREAD_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 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 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 dirigées:
Étapes suivantes
- Découvrez comment effectuer des lectures en dehors des transactions.