Introduzione a Cloud Spanner con REST

Obiettivi

Questo tutorial illustra i seguenti passaggi utilizzando l'API Cloud Spanner con REST:

  • Creare un'istanza e un database Cloud Spanner.
  • Scrivere, leggere ed eseguire query SQL sui dati nel database.
  • Aggiorna lo schema del database.
  • Aggiungi un indice secondario al database.
  • Utilizza l'indice per leggere ed eseguire query SQL sui dati.
  • Recupera i dati utilizzando una transazione di sola lettura.

Se vuoi utilizzare le librerie client di Cloud Spanner anziché l'API REST, consulta i tutorial.

Costi

Questo tutorial utilizza Cloud Spanner, un componente fatturabile di Google Cloud. Per informazioni sul costo dell'utilizzo di Cloud Spanner, consulta la sezione Prezzi.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.

  4. Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  5. Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.

Metodi per effettuare chiamate REST

Puoi effettuare chiamate REST di Cloud Spanner utilizzando:

Convenzioni utilizzate su questa pagina

  • Gli esempi utilizzano [PROJECT_ID] come ID progetto Google Cloud. Sostituisci l'ID progetto Google Cloud con [PROJECT_ID]. Non includere [ e ] nell'ID progetto.

  • Gli esempi creano e utilizzano un ID istanza di test-instance. Sostituisci l'ID istanza se non utilizzi test-instance.

  • Gli esempi creano e utilizzano un ID database di example-db. Sostituisci l'ID database se non utilizzi example-db.

  • Gli esempi utilizzano [SESSION] come parte del nome di una sessione. Sostituisci il valore che ricevi quando crei una sessione per [SESSION]. (Non includere [ e ] nel nome della sessione).

  • Gli esempi utilizzano un ID transazione di [TRANSACTION_ID]. Sostituisci il valore che ricevi quando crei una transazione per [TRANSACTION_ID]. Non includere [ e ] nell'ID transazione.

  • La funzionalità Try-It! supporta l'aggiunta interattiva dei singoli campi di richiesta HTTP. La maggior parte degli esempi in questo argomento fornisce l'intera richiesta anziché descrivere come aggiungere interattivamente i singoli campi alla richiesta.

Istanze

Quando usi Cloud Spanner per la prima volta, devi creare un'istanza, ovvero un'allocazione delle risorse utilizzate dai database Cloud Spanner. Quando crei un'istanza, scegli dove archiviare i tuoi dati e la funzionalità di calcolo dell'istanza.

Elencare le configurazioni delle istanze

Quando crei un'istanza, devi specificare una configurazione istanza che definisce il posizionamento geografico e la replica dei tuoi database in tale istanza. Puoi scegliere una configurazione a livello di area geografica, che archivia i dati in un'area geografica, o una configurazione a più aree geografiche, che distribuisce i dati tra più aree geografiche. Scopri di più in Istanze.

Usa projects.instanceConfigs.list per determinare quali configurazioni sono disponibili per il tuo progetto Google Cloud.

  1. Fai clic su projects.instanceConfigs.list.
  2. Per genitore, inserisci:

    projects/[PROJECT_ID]
    
  3. Fai clic su Execute (Esegui). Le configurazioni delle istanze disponibili sono mostrate nella risposta. Di seguito è riportata una risposta di esempio (il tuo progetto potrebbe avere configurazioni di istanze diverse):

    {
      "instanceConfigs": [
        {
          "name": "projects/[PROJECT_ID]/instanceConfigs/regional-asia-south1",
          "displayName": "asia-south1"
        },
        {
          "name": "projects/[PROJECT_ID]/instanceConfigs/regional-asia-east1",
          "displayName": "asia-east1"
        },
        {
          "name": "projects/[PROJECT_ID]/instanceConfigs/regional-asia-northeast1",
          "displayName": "asia-northeast1"
        },
        {
          "name": "projects/[PROJECT_ID]/instanceConfigs/regional-europe-west1",
          "displayName": "europe-west1"
        },
        {
          "name": "projects/[PROJECT_ID]/instanceConfigs/regional-us-east4",
          "displayName": "us-east4"
        },
        {
          "name": "projects/[PROJECT_ID]/instanceConfigs/regional-us-central1",
          "displayName": "us-central1"
        }
      ]
    }
    

Quando crei l'istanza, utilizzi il valore name per una delle configurazioni dell'istanza.

Crea un'istanza

  1. Fai clic su projects.instances.create.
  2. Per genitore, inserisci:

    projects/[PROJECT_ID]
    
  3. Fai clic su Aggiungi i parametri del corpo della richiesta e seleziona instance.

  4. Fai clic sul fumetto di suggerimento instance per visualizzare i campi possibili. Aggiungi valori per i seguenti campi:

    1. nodeCount: inserisci 1.
    2. config: inserisci il valore name di una delle configurazioni di istanze a livello di area geografica restituite quando elenchi le configurazioni delle istanze.
    3. displayName: inserisci Test Instance.
  5. Fai clic sul fumetto di suggerimento che segue la parentesi di chiusura per instance e seleziona instanceId.

  6. Per instanceId, inserisci test-instance.
    La pagina di creazione dell'istanza Provala dovrebbe avere il seguente aspetto:

    Screenshot della creazione dell'istanza

  7. Fai clic su Execute (Esegui). La risposta restituisce un'operazione a lunga esecuzione su cui puoi eseguire una query per controllarne lo stato.

Puoi elencare le tue istanze utilizzando projects.instances.list.

Crea un database

Crea un database denominato example-db.

  1. Fai clic su projects.instances.databases.create.
  2. Per genitore, inserisci:

    projects/[PROJECT_ID]/instances/test-instance
    
  3. Fai clic su Aggiungi i parametri del corpo della richiesta e seleziona createStatement.

  4. Per createStatement, inserisci:

    CREATE DATABASE `example-db`
    

    (Il nome del database, example-db, contiene un trattino, quindi deve essere racchiuso tra punti (`).

  5. Fai clic su Execute (Esegui). La risposta restituisce un'operazione a lunga esecuzione su cui puoi eseguire una query per controllarne lo stato.

Puoi elencare i tuoi database utilizzando projects.instances.databases.list.

Crea uno schema

Utilizza Data Definition Language (DDL) di Cloud Spanner per creare, modificare o eliminare le tabelle e per creare o eliminare gli indici.

  1. Fai clic su projects.instances.databases.updateDdl.
  2. Per database, inserisci:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db
    
  3. Per Corpo della richiesta, utilizza quanto segue:

    {
      "statements": [
        "CREATE TABLE Singers ( SingerId INT64 NOT NULL, FirstName STRING(1024), LastName STRING(1024), SingerInfo BYTES(MAX) ) PRIMARY KEY (SingerId)",
        "CREATE TABLE Albums ( SingerId INT64 NOT NULL, AlbumId INT64 NOT NULL, AlbumTitle STRING(MAX)) PRIMARY KEY (SingerId, AlbumId), INTERLEAVE IN PARENT Singers ON DELETE CASCADE"
      ]
    }
    

    L'array statements contiene le istruzioni DDL che definiscono lo schema.

  4. Fai clic su Execute (Esegui). La risposta restituisce un'operazione a lunga esecuzione su cui puoi eseguire una query per controllarne lo stato.

Lo schema definisce due tabelle, Singers e Albums, per un'applicazione musicale di base. Queste tabelle sono utilizzate in questa pagina. Se non l'hai ancora fatto, dai un'occhiata allo schema di esempio.

Puoi recuperare lo schema utilizzando projects.instances.databases.getDdl.

Crea una sessione

Prima di poter aggiungere, aggiornare, eliminare o eseguire query sui dati, devi creare una sessione che rappresenta un canale di comunicazione con il servizio di database Cloud Spanner. (Non utilizzi direttamente una sessione se utilizzi una libreria client di Cloud Spanner, perché è la libreria client a gestire le sessioni per tuo conto.)

  1. Fai clic su projects.instances.databases.sessions.create.
  2. Per database, inserisci:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db
    
  3. Fai clic su Execute (Esegui).

  4. La risposta mostra la sessione che hai creato, nel modulo

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/sessions/[SESSION]
    

    Utilizzerai questa sessione quando leggi o scrivi nel database.

Le sessioni sono pensate per durare a lungo. Il servizio di database Cloud Spanner può eliminare una sessione quando è inattiva per più di un'ora. I tentativi di utilizzare un risultato di sessione eliminato in NOT_FOUND. Se si verifica questo errore, crea e utilizza una nuova sessione. Puoi vedere se una sessione è ancora attiva utilizzando projects.instances.databases.sessions.get. Per informazioni correlate, vedi Mantenere attiva una sessione di inattività.

Il passaggio successivo consiste nel scrivere i dati nel database.

Scrittura di dati

Per scrivere i dati, utilizza il tipo Mutation. Mutation è un container per le operazioni di mutazione. Un elemento Mutation rappresenta una sequenza di inserimenti, aggiornamenti, eliminazioni e altre azioni che possono essere applicate in modo atomico a diverse righe e tabelle in un database Cloud Spanner.

  1. Fai clic su projects.instances.databases.sessions.commit.
  2. Per sessione, inserisci:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/sessions/[SESSION]
    

    Questo valore viene visualizzato quando crei una sessione.

  3. Per Corpo della richiesta, utilizza quanto segue:

    {
      "singleUseTransaction": {
        "readWrite": {}
      },
      "mutations": [
        {
          "insertOrUpdate": {
            "table": "Singers",
            "columns": [
              "SingerId",
              "FirstName",
              "LastName"
            ],
            "values": [
              [
                "1",
                "Marc",
                "Richards"
              ],
              [
                "2",
                "Catalina",
                "Smith"
              ],
              [
                "3",
                "Alice",
                "Trentor"
              ],
              [
                "4",
                "Lea",
                "Martin"
              ],
              [
                "5",
                "David",
                "Lomond"
              ]
            ]
          }
        },
        {
          "insertOrUpdate": {
            "table": "Albums",
            "columns": [
              "SingerId",
              "AlbumId",
              "AlbumTitle"
            ],
            "values": [
              [
                "1",
                "1",
                "Total Junk"
              ],
              [
                "1",
                "2",
                "Go, Go, Go"
              ],
              [
                "2",
                "1",
                "Green"
              ],
              [
                "2",
                "2",
                "Forever Hold Your Peace"
              ],
              [
                "2",
                "3",
                "Terrified"
              ]
            ]
          }
        }
      ]
    }
    
  4. Fai clic su Execute (Esegui). La risposta mostra il timestamp di commit.

In questo esempio è stato utilizzato insertOrUpdate. Altre operazioni per Mutations sono insert, update, replace e delete.

Per informazioni su come codificare i tipi di dati, consulta TypeCode.

Query sui dati con SQL

  1. Fai clic su projects.instances.databases.sessions.executeSql.
  2. Per sessione, inserisci:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/sessions/[SESSION]
    

    Questo valore viene visualizzato quando crei una sessione.

  3. Per Corpo della richiesta, utilizza quanto segue:

    {
      "sql": "SELECT SingerId, AlbumId, AlbumTitle FROM Albums"
    }
    
  4. Fai clic su Execute (Esegui). La risposta mostra i risultati della query.

Lettura di dati con l'API di lettura

  1. Fai clic su projects.instances.databases.sessions.read.
  2. Per sessione, inserisci:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/sessions/[SESSION]
    

    Questo valore viene visualizzato quando crei una sessione.

  3. Per Corpo della richiesta, utilizza quanto segue:

    {
      "table": "Albums",
      "columns": [
        "SingerId",
        "AlbumId",
        "AlbumTitle"
      ],
      "keySet": {
        "all": true
      }
    }
    
  4. Fai clic su Execute (Esegui). La risposta mostra i risultati letti.

Aggiorna lo schema del database

Supponiamo che tu debba aggiungere una nuova colonna denominata MarketingBudget alla tabella Albums, che richiede un aggiornamento allo schema del tuo database. Cloud Spanner supporta gli aggiornamenti dello schema di un database mentre il database continua a gestire il traffico. Gli aggiornamenti dello schema non richiedono lo spostamento del database offline e non bloccano intere tabelle o colonne; puoi continuare a scrivere dati nel database durante l'aggiornamento dello schema.

Aggiungi una colonna

  1. Fai clic su projects.instances.databases.updateDdl.
  2. Per database, inserisci:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db
    
  3. Per Corpo della richiesta, utilizza quanto segue:

    {
      "statements": [
        "ALTER TABLE Albums ADD COLUMN MarketingBudget INT64"
      ]
    }
    

    L'array statements contiene le istruzioni DDL che definiscono lo schema.

  4. Fai clic su Execute (Esegui). L'operazione potrebbe richiedere alcuni minuti, anche dopo che la chiamata REST restituisce una risposta. La risposta restituisce un'operazione a lunga esecuzione su cui puoi eseguire una query per controllarne lo stato.

Scrivere i dati nella nuova colonna

Il codice seguente scrive i dati nella nuova colonna. Imposta MarketingBudget su 100000 per la riga con chiave Albums(1, 1) e su 500000 per la riga con chiave per Albums(2, 2).

  1. Fai clic su projects.instances.databases.sessions.commit.
  2. Per sessione, inserisci:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/sessions/[SESSION]
    

    Questo valore viene visualizzato quando crei una sessione.

  3. Per Corpo della richiesta, utilizza quanto segue:

    {
      "singleUseTransaction": {
        "readWrite": {}
      },
      "mutations": [
        {
          "update": {
            "table": "Albums",
            "columns": [
              "SingerId",
              "AlbumId",
              "MarketingBudget"
            ],
            "values": [
              [
                "1",
                "1",
                "100000"
              ],
              [
                "2",
                "2",
                "500000"
              ]
            ]
          }
        }
      ]
    }
    
  4. Fai clic su Execute (Esegui). La risposta mostra il timestamp di commit.

Puoi anche eseguire una query SQL o una chiamata di lettura per recuperare i valori che hai appena scritto.

Per eseguire la query, procedi nel seguente modo:

  1. Fai clic su projects.instances.databases.sessions.executeSql.
  2. Per sessione, inserisci:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/sessions/[SESSION]
    

    Questo valore viene visualizzato quando crei una sessione.

  3. Per Corpo della richiesta, utilizza quanto segue:

    {
      "sql": "SELECT SingerId, AlbumId, MarketingBudget FROM Albums"
    }
    
  4. Fai clic su Execute (Esegui). Come risposta, dovresti vedere due righe contenenti i valori MarketingBudget aggiornati:

    "rows": [
      [
        "1",
        "1",
        "100000"
      ],
      [
        "1",
        "2",
        null
      ],
      [
        "2",
        "1",
        null
      ],
      [
        "2",
        "2",
        "500000"
      ],
      [
        "2",
        "3",
        null
      ]
    ]
    

Utilizzare un indice secondario

Supponi di voler recuperare tutte le righe di Albums che hanno valori AlbumTitle in un determinato intervallo. Puoi leggere tutti i valori della colonna AlbumTitle utilizzando un'istruzione SQL o una chiamata di lettura, quindi ignorare le righe che non soddisfano i criteri, ma questa operazione completa è costosa, soprattutto per le tabelle con molte righe. È invece possibile velocizzare il recupero di righe durante le ricerche in base a colonne di chiave non principali creando un indice secondario nella tabella.

L'aggiunta di un indice secondario a una tabella esistente richiede un aggiornamento dello schema. Come altri aggiornamenti dello schema, Cloud Spanner supporta l'aggiunta di un indice mentre il database continua a gestire il traffico. Cloud Spanner esegue automaticamente il backfill dell'indice con i dati esistenti. Il backfill può richiedere alcuni minuti, ma non devi mettere il database offline o evitare di scrivere in determinate tabelle o colonne durante questo processo. Per maggiori dettagli, consulta il backfill dell'indice.

Dopo aver aggiunto un indice secondario, Cloud Spanner lo utilizza automaticamente per le query SQL che probabilmente verranno eseguite più velocemente con l'indice. Se utilizzi l'interfaccia di lettura, devi specificare l'indice che vuoi utilizzare.

Aggiungi un indice secondario

Puoi aggiungere un indice utilizzando updateDdl.

  1. Fai clic su projects.instances.databases.updateDdl.
  2. Per database, inserisci:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db
    
  3. Per Corpo della richiesta, utilizza quanto segue:

    {
      "statements": [
        "CREATE INDEX AlbumsByAlbumTitle ON Albums(AlbumTitle)"
      ]
    }
    
  4. Fai clic su Execute (Esegui). L'operazione potrebbe richiedere alcuni minuti, anche dopo che la chiamata REST restituisce una risposta. La risposta restituisce un'operazione a lunga esecuzione su cui puoi eseguire una query per controllarne lo stato.

Query che utilizza l'indice

  1. Fai clic su projects.instances.databases.sessions.executeSql.
  2. Per sessione, inserisci:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/sessions/[SESSION]
    

    Questo valore viene visualizzato quando crei una sessione.

  3. Per Corpo della richiesta, utilizza quanto segue:

    {
      "sql": "SELECT AlbumId, AlbumTitle, MarketingBudget FROM Albums WHERE AlbumTitle >= 'Aardvark' AND AlbumTitle < 'Goo'"
    }
    
  4. Fai clic su Execute (Esegui). Come risposta, dovresti vedere le seguenti righe:

    "rows": [
      [
        "2",
        "Go, Go, Go",
        null
      ],
      [
        "2",
        "Forever Hold Your Peace",
        "500000"
      ]
    ]
    

Lettura tramite l'indice

  1. Fai clic su projects.instances.databases.sessions.read.
  2. Per sessione, inserisci:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/sessions/[SESSION]
    

    Questo valore viene visualizzato quando crei una sessione.

  3. Per Corpo della richiesta, utilizza quanto segue:

    {
      "table": "Albums",
      "columns": [
        "AlbumId",
        "AlbumTitle"
      ],
      "keySet": {
        "all": true
      },
      "index": "AlbumsByAlbumTitle"
    }
    
  4. Fai clic su Execute (Esegui). Come risposta, dovresti vedere le seguenti righe:

    "rows": [
      [
        "2",
        "Forever Hold Your Peace"
      ],
      [
        "2",
        "Go, Go, Go"
      ],
      [
        "1",
        "Green"
      ],
      [
        "3",
        "Terrified"
      ],
      [
        "1",
        "Total Junk"
      ]
    ]
    

Aggiungi un indice con la clausola STORING

Potresti aver notato che l'esempio di lettura riportato sopra non includeva la lettura della colonna MarketingBudget. Questo perché l'interfaccia di lettura di Cloud Spanner non supporta la possibilità di unire un indice con una tabella di dati per cercare valori non archiviati nell'indice.

Crea una definizione alternativa di AlbumsByAlbumTitle che memorizzi una copia di MarketingBudget nell'indice.

Puoi aggiungere un indice di STORING utilizzando updateDdl.

  1. Fai clic su projects.instances.databases.updateDdl.
  2. Per database, inserisci:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db
    
  3. Per Corpo della richiesta, utilizza quanto segue:

    {
      "statements": [
        "CREATE INDEX AlbumsByAlbumTitle2 ON Albums(AlbumTitle) STORING (MarketingBudget)"
      ]
    }
    
  4. Fai clic su Execute (Esegui). L'operazione potrebbe richiedere alcuni minuti, anche dopo che la chiamata REST restituisce una risposta. La risposta restituisce un'operazione a lunga esecuzione su cui puoi eseguire una query per controllarne lo stato.

Ora puoi eseguire una lettura che recupera tutte le colonne AlbumId, AlbumTitle e MarketingBudget dall'indice di AlbumsByAlbumTitle2:

  1. Fai clic su projects.instances.databases.sessions.read.
  2. Per sessione, inserisci:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/sessions/[SESSION]
    

    Questo valore viene visualizzato quando crei una sessione.

  3. Per Corpo della richiesta, utilizza quanto segue:

    {
      "table": "Albums",
      "columns": [
        "AlbumId",
        "AlbumTitle",
        "MarketingBudget"
      ],
      "keySet": {
        "all": true
      },
      "index": "AlbumsByAlbumTitle2"
    }
    
  4. Fai clic su Execute (Esegui). Come risposta, dovresti vedere le seguenti righe:

    "rows": [
      [
        "2",
        "Forever Hold Your Peace",
        "500000"
      ],
      [
        "2",
        "Go, Go, Go",
        null
      ],
      [
        "1",
        "Green",
        null
      ],
      [
        "3",
        "Terrified",
        null
      ],
      [
        "1",
        "Total Junk",
        "100000"
      ]
    ]
    

Recuperare i dati utilizzando le transazioni di sola lettura

Supponi di voler eseguire più di una lettura con lo stesso timestamp. Le transazioni di sola lettura osservano un prefisso coerente della cronologia di commit della transazione, quindi l'applicazione riceve sempre dati coerenti.

Creare una transazione di sola lettura

  1. Fai clic su projects.instances.databases.sessions.beginTransaction.
  2. Per sessione, inserisci:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/sessions/[SESSION]
    
  3. Per Corpo della richiesta, utilizza quanto segue:

    {
      "options": {
        "readOnly": {}
      }
    }
    
  4. Fai clic su Execute (Esegui).

  5. La risposta mostra l'ID della transazione che hai creato.

Ora puoi utilizzare la transazione di sola lettura per recuperare i dati con un timestamp coerente, anche se i dati sono cambiati rispetto alla creazione della transazione di sola lettura.

Eseguire una query utilizzando la transazione di sola lettura

  1. Fai clic su projects.instances.databases.sessions.executeSql.
  2. Per sessione, inserisci:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/sessions/[SESSION]
    

    Questo valore viene visualizzato quando crei una sessione.

  3. Per Corpo della richiesta, utilizza quanto segue:

    {
      "sql": "SELECT SingerId, AlbumId, AlbumTitle FROM Albums",
      "transaction": {
        "id": "[TRANSACTION_ID]"
      }
    }
    
  4. Fai clic su Execute (Esegui). Nella risposta dovresti vedere righe simili alle seguenti:

    "rows": [
      [
        "2",
        "2",
        "Forever Hold Your Peace"
      ],
      [
        "1",
        "2",
        "Go, Go, Go"
      ],
      [
        "2",
        "1",
        "Green"
      ],
      [
        "2",
        "3",
        "Terrified"
      ],
      [
        "1",
        "1",
        "Total Junk"
      ]
    ]
    

Lettura con transazione di sola lettura

  1. Fai clic su projects.instances.databases.sessions.read.
  2. Per sessione, inserisci:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/sessions/[SESSION]
    

    Questo valore viene visualizzato quando crei una sessione.

  3. Per Corpo della richiesta, utilizza quanto segue:

    {
      "table": "Albums",
      "columns": [
        "SingerId",
        "AlbumId",
        "AlbumTitle"
      ],
      "keySet": {
        "all": true
      },
      "transaction": {
        "id": "[TRANSACTION_ID]"
      }
    }
    
  4. Fai clic su Execute (Esegui). Nella risposta dovresti vedere righe simili alle seguenti:

    "rows": [
      [
        "1",
        "1",
        "Total Junk"
      ],
      [
        "1",
        "2",
        "Go, Go, Go"
      ],
      [
        "2",
        "1",
        "Green"
      ],
      [
        "2",
        "2",
        "Forever Hold Your Peace"
      ],
      [
        "2",
        "3",
        "Terrified"
      ]
    ]
    

Cloud Spanner supporta anche le transazioni di lettura-scrittura, che eseguono un set di letture e scritture atomiche in un singolo momento logico. Per ulteriori informazioni, consulta la sezione Transazioni di lettura/scrittura. La funzionalità Try-It! non è adatta alla dimostrazione di una transazione di lettura-scrittura.

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi aggiuntivi per le risorse utilizzate in questo tutorial, elimina il database ed elimina l'istanza che hai creato.

Eliminazione di un database

  1. Fai clic su projects.instances.databases.dropDatabase.
  2. Per nome, inserisci:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db
    
  3. Fai clic su Execute (Esegui).

Elimina un'istanza

  1. Fai clic su projects.instances.delete.
  2. Per nome, inserisci:

    projects/[PROJECT_ID]/instances/test-instance
    
  3. Fai clic su Execute (Esegui).

Passaggi successivi