Questa pagina descrive le richieste di scrittura batch di Spanner e come puoi utilizzarle per modificare i dati di Spanner.
Puoi utilizzare la scrittura batch di Spanner per inserire, aggiornare o eliminare più righe nelle tabelle Spanner. La scrittura batch di Spanner supporta scritture a bassa latenza senza un'operazione di lettura e restituisce risposte man mano che le mutazioni vengono applicate in batch. Per utilizzare la scrittura batch, raggruppa le mutazioni correlate e tutte le mutazioni di un gruppo vengono eseguite in modo atomico. Le mutazioni nei gruppi vengono applicate in un ordine non specificato e sono indipendenti l'una dall'altra (non atomiche). Spanner non deve attendere l'applicazione di tutte le mutazioni prima di inviare una risposta, il che significa che la scrittura batch consente un errore parziale. Puoi anche eseguire più scritture batch contemporaneamente. Per ulteriori informazioni, consulta la sezione Come utilizzare la scrittura batch.
Casi d'uso
La scrittura batch di Spanner è particolarmente utile se vuoi eseguire il commit di un gran numero di scritture senza un'operazione di lettura, ma non richiedi una transazione atomica per tutte le mutazioni.
Se vuoi raggruppare le richieste DML, utilizza DML batch per modificare i dati di Spanner. Per saperne di più sulle differenze tra DML e mutazioni, consulta Confronto tra DML e mutazioni.
Per le richieste di singola mutazione, ti consigliamo di utilizzare una transazione di lettura/scrittura con blocco.
Limitazioni
La scrittura batch di Spanner presenta le seguenti limitazioni:
La scrittura batch di Spanner non è disponibile utilizzando la consoleGoogle Cloud o Google Cloud CLI. È disponibile solo utilizzando le API REST e RPC e le librerie client Spanner.
La protezione dal replay non è supportata utilizzando la scrittura batch. È possibile che le mutazioni vengano applicate più di una volta e una mutazione applicata più di una volta potrebbe causare un errore. Ad esempio, se una mutazione di inserimento viene riprodotta, potrebbe generare un errore di esistenza o, se utilizzi chiavi basate su timestamp generati o di commit nella mutazione, potrebbero essere aggiunte altre righe alla tabella. Ti consigliamo di strutturare le scritture in modo che siano idempotenti per evitare questo problema.
Non puoi eseguire il rollback di una richiesta di scrittura batch completata. Puoi annullare una richiesta di scrittura batch in corso. Se annulli una scrittura batch in corso, le mutazioni nei gruppi non completati vengono ripristinate. Le mutazioni nei gruppi completati vengono eseguite nel database.
La dimensione massima per una richiesta di scrittura batch è uguale al limite per una richiesta di commit. Per ulteriori informazioni, consulta Limiti per la creazione, la lettura, l'aggiornamento e l'eliminazione di dati.
Come utilizzare la scrittura batch
Per utilizzare la scrittura batch, devi disporre dell'autorizzazione spanner.databases.write
sul database che vuoi modificare. Puoi scrivere mutazioni batch
in modo non atomico in una singola chiamata utilizzando una chiamata di richiesta API REST
o RPC.
Quando utilizzi la scrittura batch, devi raggruppare i seguenti tipi di mutazione:
- Inserimento di righe con lo stesso prefisso della chiave primaria sia nella tabella principale sia in quella secondaria.
- Inserimento di righe nelle tabelle con una relazione di chiave esterna tra le tabelle.
- Altri tipi di mutazioni correlate a seconda dello schema del database e della logica dell'applicazione.
Puoi anche scrivere in batch utilizzando le librerie client Spanner.
Il seguente esempio di codice aggiorna la tabella Singers
con nuove righe.
Librerie client
Java
Go
Nodo
Python
C++
Passaggi successivi
- Scopri di più sulle transazioni Spanner.