Questa pagina descrive le richieste di scrittura batch di Spanner e come puoi utilizzare per modificare i tuoi dati Spanner.
Puoi utilizzare la scrittura batch di Spanner per inserire, aggiornare o eliminare più righe nelle tabelle Spanner. Spanner la scrittura batch supporta le scritture a bassa latenza senza un'operazione di lettura e restituisce e risposte così come le mutazioni vengono applicate in batch. Per utilizzare la scrittura in batch, raggruppa mutazioni correlate e tutte le mutazioni di un gruppo vengono a livello atomico. Le mutazioni nei vari gruppi vengono applicate in un ordine non specificato e sono indipendenti l'uno dall'altro (non atomici). Spanner non ha bisogno attendere che tutte le mutazioni vengano applicate prima di inviare una risposta, il che significa la scrittura batch consente un errore parziale. Puoi anche eseguire più batch scrive 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 numero elevato di scritture senza un'operazione di lettura, ma non richiedono una transazione per tutte le tue mutazioni.
Se vuoi raggruppare le richieste DML, utilizza DML in batch per modificare i tuoi dati Spanner. Per ulteriori informazioni sul differenze tra DML e mutazioni, consulta Confrontare DML e mutazioni.
Per le richieste di mutazione singola, consigliamo di utilizzare una funzione di blocco transazione.
Limitazioni
La scrittura batch di Spanner ha le seguenti limitazioni:
La scrittura batch di Spanner non è disponibile utilizzando Console Google Cloud o Google Cloud CLI. È disponibile solo utilizzando REST e RPC API e la libreria client Java di Spanner.
Protezione dai giochi non è supportata tramite la scrittura in batch. Le mutazioni possono essere applicata più di una volta e una mutazione applicata più di una volta potrebbe causare un errore. Ad esempio, se una mutazione di tipo insert viene riprodotta, potrebbe produrre un errore già esistente, oppure se si utilizza l'oggetto generato o di commit chiavi basate su timestamp nella mutazione, ciò potrebbe comportare la generazione di righe aggiuntive aggiunti alla tabella. Ti consigliamo di strutturare le tue scritture in modo idempotente per evitare questo problema.
Non puoi eseguire il rollback di una richiesta di scrittura batch completata. Puoi annullare un richiesta di scrittura batch in corso. Se annulli la scrittura batch in corso, viene eseguito il rollback delle mutazioni nei gruppi non completati. Mutazioni nei gruppi completati nel database.
La dimensione massima di una richiesta di scrittura batch corrisponde a quella del limite per una di una richiesta di commit. Per ulteriori informazioni, vedi Limiti per la creazione, la lettura, l'aggiornamento e l'eliminazione dei dati.
Come utilizzare la scrittura in batch
Per utilizzare la scrittura in batch, devi disporre dell'autorizzazione spanner.databases.write
su
al database che vuoi modificare. Puoi scrivere in batch le mutazioni
a livello non atomico in una singola chiamata utilizzando un comando REST
o API RPC
richiedi una chiamata.
Quando utilizzi la scrittura in batch, devi raggruppare i seguenti tipi di mutazione:
- Inserire righe con lo stesso prefisso di chiave primaria sia nella rete principale che in quella secondaria tabelle.
- 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.