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 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 in batch, devi raggruppare le mutazioni correlate e tutte le mutazioni di un gruppo vengono eseguite a livello atomico. Le mutazioni nei vari gruppi vengono applicate in un ordine non specificato e sono indipendenti l'una dall'altra (non atomica). 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 alla volta. Per ulteriori informazioni, consulta Come utilizzare la scrittura in batch.
Casi d'uso
La scrittura batch di Spanner è particolarmente utile se vuoi eseguire il commit di un numero elevato di scritture senza un'operazione di lettura, ma non è necessaria una transazione atomica per tutte le mutazioni.
Se vuoi raggruppare le richieste DML, utilizza DML in batch per modificare i dati Spanner. Per ulteriori informazioni sulle differenze tra DML e mutazioni, consulta Confronto tra DML e mutazioni.
Per le richieste di mutazione singola, consigliamo di utilizzare una transazione di lettura e scrittura di blocco.
Limitazioni
La scrittura batch di Spanner ha le seguenti limitazioni:
La scrittura batch di Spanner non è disponibile utilizzando la console Google Cloud o Google Cloud CLI. È disponibile solo usando API REST e RPC e la libreria client Java di Spanner.
La protezione dalla riproduzione 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 comportare un errore. Ad esempio, se la mutazione di un inserimento viene riprodotta, potrebbe produrre un errore già esistente oppure, se nella mutazione utilizzi chiavi generate o di commit basate sul timestamp, potresti aggiungere altre righe alla tabella. Per evitare questo problema, ti consigliamo di strutturare le scritture in modo idempotente.
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, viene eseguito il rollback delle mutazioni nei gruppi non completati. Le mutazioni nei gruppi completati sono memorizzate nel database.
La dimensione massima per una richiesta di scrittura batch corrisponde a quella per una richiesta di commit. Per ulteriori informazioni, consulta Limiti per la creazione, la lettura, l'aggiornamento e l'eliminazione dei dati.
Come utilizzare la scrittura in batch
Per utilizzare la scrittura batch, devi disporre dell'autorizzazione spanner.databases.write
per
il database che vuoi modificare. Puoi scrivere mutazioni in batch
in modo non atomico in una singola chiamata utilizzando una chiamata di richiesta
REST
o API RPC.
Quando utilizzi la scrittura in batch, devi raggruppare i seguenti tipi di mutazione:
- Inserire righe con lo stesso prefisso di chiave primaria in entrambe le tabelle padre e figlio.
- 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 la libreria client Java di Spanner.
Il codice di esempio seguente aggiorna la tabella Singers
con nuove righe.
Java
Passaggi successivi
- Scopri di più sulle transazioni di Spanner.