La pagina descrive le letture indirizzate a Spanner e come utilizzarle.
Le letture dirette in Spanner offrono la flessibilità di routing transazioni di sola lettura e letture singole a una specifica un tipo di replica o una regione all'interno di una configurazione di istanza multiregionale o configurazione regionale con regioni facoltative di sola lettura.
Casi d'uso comuni
Alcuni casi d'uso comuni per le letture dirette includono:
- Il bilanciamento del carico dei carichi di lavoro in più regioni per ottenere una maggiore uniformità di utilizzo della CPU.
- Isolare l'analisi nella tua applicazione riducendo al minimo l'impatto sulle transazioni carichi di lavoro con scale out impegnativi.
- Fornire l'isolamento parziale per le letture dei flussi di modifiche. Se utilizzi l'API Spanner per eseguire lo streaming modifiche ai dati di Spanner, puoi contribuire a ridurre al minimo l'impatto sulle per carichi di lavoro transazionali usando letture dirette.
Operazioni di query supportate
Operazioni di query | Le letture dirette sono supportate? |
---|---|
Lettura inattiva | Sì |
Lettura forte | Sì |
Transazione di lettura/scrittura | No |
Le letture dirette non sono supportate per le transazioni di lettura/scrittura
e i tipi DML partizionati di aggiornamenti collettivi. Questo
perché le transazioni di lettura/scrittura devono essere elaborate nella regione leader. Se
le letture dirette vengono utilizzate in una transazione di lettura/scrittura, la transazione non va a buon fine con
un errore BAD_REQUEST
.
Limitazioni
Le letture dirette di Spanner hanno le seguenti limitazioni:
- Puoi utilizzare letture dirette solo in un'istanza Spanner che è in una configurazione di istanze multiregionali o una configurazione regionale personalizzata con regioni facoltative di sola lettura.
- Non puoi utilizzare letture dirette con richieste di lettura/scrittura perché le operazioni di scrittura vengono sempre gestite dalla regione leader.
- Non puoi utilizzare letture dirette nella console Google Cloud o in Google Cloud CLI. È disponibili tramite REST e API RPC e Spanner librerie client.
- Puoi specificare un massimo di 10 repliche in un'unica lettura diretta.
- Se utilizzi la dashboard degli approfondimenti sul sistema o Metrics Explorer, nella Operazioni al secondo, Operazioni al secondo per database e Operazioni al secondo in base ai grafici dei metodi API, potresti vedere la richiesta di lettura diretta in una posizione diversa da quella da te designata. In questo caso, le informazioni dai grafici potrebbero non essere corretti. Puoi verificare che le tue richieste di lettura vengono instradate alle regioni che hai scelto tramite le metriche di utilizzo della CPU. Queste metriche mostrano le informazioni più accurate sulle letture dirette instradamento del traffico.
Prima di iniziare
Prima di utilizzare le letture dirette, tieni presente quanto segue:
- L'applicazione potrebbe incorrere in latenza aggiuntiva se esegui il routing delle letture a un una replica o una regione diversa da quella più vicina all'applicazione.
- Puoi indirizzare il traffico in base a:
- Nome della regione (ad esempio:
us-central1
). - Tipo di replica (valori possibili:
READ_ONLY
eREAD_WRITE
).
- Nome della regione (ad esempio:
- L'opzione di failover automatico nelle letture dirette è abilitata per impostazione predefinita. Quando automatico
l'opzione di failover è abilitata e tutte le repliche specificate non sono disponibili
o non integro, Spanner instrada le richieste a una replica all'esterno
Elenco
includeReplicas
. Se disabiliti l'opzione di failover automatico le repliche specificate non sono disponibili o sono in stato non integro, le letture indirizzate non va a buon fine.
Parametri di lettura diretta
Se utilizzi l'API REST o RPC per eseguire letture dirette, devi definire
questi campi nel parametro directedReadOptions
. Puoi includere solo uno dei seguenti elementi:
includeReplicas
o excludeReplicas
, non entrambi.
includeReplicas
: contiene un insieme ripetuto direplicaSelections
. Questo elenco indica l'ordine in cui le letture indirizzate a regioni o repliche specifiche devono essere presi in considerazione. Puoi specificare un massimo di 10includeReplicas
.replicaSelections
: è costituito dalla pubblicazione dilocation
otype
richiesta di lettura diretta. Se utilizziincludeReplicas
, devi fornire almeno uno dei seguenti campi:location
: la località che gestisce la richiesta di lettura diretta. La la località deve essere una delle regioni all'interno di più regioni configurazione del database. Se la località non è una delle regioni all'interno della configurazione multiregionale del tuo database, le richieste non verranno indirizzate come previsto. Vengono invece pubblicati regione più vicina. Ad esempio, puoi indirizzare le letture alla localitàus-central1
su un database nella configurazione dell'istanza multiregionalenam6
.type
: il tipo di replica che gestisce la richiesta di lettura diretta. Possibile i tipi includonoREAD_WRITE
eREAD_ONLY
.
autoFailoverDisabled
: l'impostazione predefinita èFalse
, che indica la modalità automatica. il failover sia abilitato. Quando l'opzione di failover automatico è abilitata e le repliche specificate non sono disponibili o sono in stato non integro, Spanner instrada le richieste a una replica esterna all'elencoincludeReplicas
. Se disabilita l'opzione di failover automatico e tutte le repliche specificate non disponibile o in stato non integro, la richiesta di lettura diretta non va a buon fine. Valori possibili includiTRUE
per disattivato eFALSE
per attivato.
excludeReplicas
: contiene un insieme ripetuto direplicaSelections
che dalla pubblicazione delle richieste. Spanner non esegue il routing alle repliche in questo elenco.replicaSelections
: la località o il tipo di replica esclusa di gestire la richiesta di lettura diretta. Se usiexcludeReplicas
, devi fornire almeno uno dei seguenti campi:location
: la località esclusa dalla pubblicazione di richiesta di lettura diretta.type
: il tipo di replica escluso dalla pubblicazione dell'oggetto diretto legge la richiesta. I tipi possibili sonoREAD_WRITE
eREAD_ONLY
.
Per vedere un esempio del corpo di una richiesta REST, fai clic sulla Scheda REST nella sezione Utilizza letture dirette.
Utilizza letture dirette
Puoi utilizzare le librerie client di Spanner e le API REST e RPC per eseguire letture dirette.
Librerie client
C++
C#
Vai
Java
Node.js
PHP
Python
Ruby
REST
Puoi utilizzare le seguenti API REST per eseguire letture dirette:
Ad esempio, per eseguire letture dirette in us-central1
utilizzando executeSQL
:
Fai clic su
projects.instances.databases.sessions.executeSql
.Per sessione, inserisci:
projects/<VAR>PROJECT-ID</VAR>/instances/<VAR>INSTANCE-ID</VAR>/databases/<VAR>DATABASE-ID</VAR>/sessions/<VAR>SESSION-ID</VAR>
Sostituisci quanto segue:
- PROJECT-ID: l'ID progetto.
- INSTANCE-ID: l'ID istanza.
- DATABASE-ID: l'ID del database.
- SESSION-ID: l'ID sessione.
Ricevi il valore
SESSION-ID
quando crei una sessione.
In Corpo della richiesta, utilizza quanto segue:
{ "directedReadOptions": { "includeReplicas": { "replicaSelections": [ { "location": "us-central1", } ] } }, "sql": "SELECT SingerId, AlbumId, AlbumTitle FROM Albums" }
Fai clic su Execute (Esegui). La risposta mostra i risultati della query.
RPC
Puoi utilizzare le seguenti API RPC per eseguire letture dirette:
Passaggi successivi
- Scopri come eseguire letture al di fuori delle transazioni.