Questa pagina descrive le richieste di scrittura batch di Spanner e come utilizzarle per modificare i dati di Spanner.
Puoi utilizzare la scrittura collettiva di Spanner per inserire, aggiornare o eliminare più righe nelle tabelle Spanner. La scrittura batch di Spanner supporta le scritture a bassa latenza senza un'operazione di lettura e restituisce le risposte man mano che le mutazioni vengono applicate in batch. Per utilizzare la scrittura batch, raggruppa insieme le mutazioni correlate e tutte le mutazioni di un gruppo vengono committate 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ù scrittura collettiva 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 hai bisogno di una transazione atomica per tutte le mutazioni.
Se vuoi raggruppare le richieste DML, utilizza la 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 singole mutazioni, 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 la libreria client Java di Spanner.
La protezione da replay non è supportata con 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 viene riprodotta una mutazione di inserimento, potrebbe essere generato un errore di esistenza o, se nella mutazione utilizzi chiavi basate su timestamp generate o di commit, potrebbero essere aggiunte altre righe alla tabella. Per evitare questo problema, ti consigliamo di strutturare le scritture in modo che siano idempotenti.
Non puoi eseguire il rollback di una richiesta di scrittura batch completata. Puoi annullare una richiesta di scrittura collettiva in corso. Se annulli una scrittura batch in corso, le mutazioni nei gruppi incompleti vengono annullate. Le mutazioni nei gruppi completati vengono applicate al 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 eseguire mutazioni collettive
non atomiche in una singola chiamata utilizzando una chiamata di richiesta REST o API RPC.
Quando utilizzi la scrittura batch, devi raggruppare i seguenti tipi di mutazioni:
- Inserire 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 di applicazione.
Puoi anche eseguire scrittura collettiva utilizzando la libreria client Java di Spanner.
Il seguente esempio di codice aggiorna la tabella Singers
con nuove righe.
Java
Passaggi successivi
- Scopri di più sulle transazioni Spanner.