• primi-passi-google-cloud-spanner

    Primi passi con Google Cloud Spanner

    Un articolo pratico sul primo utilizzo di Google Cloud Spanner, il servizio DBMS cloud di Google.


    In un precedente articolo su questo blog dal titolo Introduzione a Google Cloud Spanner abbiamo effettuato una prima panoramica sul Spanner. In questo articolo vedremo come muovere i primi passi sul prodotto. Il prerequisito è avere già un account Google Cloud Platform. Su questo blog ho scritto un articolo su GCP dal titolo Introduzione a Google Cloud Platform in cui trovi anche un paragrafo con le istruzioni per impostare un account su GCP (occorre un indirizzo di posta elettronica Gmail e una carta di credito).

     

    Creazione di un progetto

    In Google Cloud Console, il livello più alto per quanto riguarda il contenitore dei servizi cloud è quello che viene chiamato un progetto. All’interno di un progetto puoi abilitare i servizi che intendi utilizzare.

    Apri la pagina https://cloud.google.com/ e accedi alla Console di GCP con il tuo account Gmail. Apri la console cliccando sul pulsante Accedi alla console. Io ho già dei progetti, quello attivo è GCP-Demo.

    gcp-console-progetto-corrente

    Per creare un nuovo progetto è sufficiente selezionare il menu a tendina accanto al progetto corrente (nel menu orizzontale in blu in alto), cliccare sul pulsante + (in alto a destra) nella finestra che compare, inserire il nome del progetto e cliccare sul pulsante Crea.

    gcp-nuovo-progetto

     

     

    Gli oggetti di Google Cloud Spanner

    L’architettura di Google Cloud Spanner (vedi l’articolo su questo blog dal titolo Introduzione a Google Cloud Spanner) comprende le istanze (un concetto che assomiglia ad un server di un DBMS), dentro un’istanza ci sono uno o più database, che conterranno le tabelle. Le tabelle avranno le colonne, con nomi, tipi di dati, vincoli (come NOT NULL o PRIMARY KEY). In un successivo articolo vedremo che definire la chiave primaria in modo corretto è fondamentale per consentire a Spanner di essere in grado di scalare in modo appropriato. C’è la possibilità di creare indici (secondari). È possibile creare altri oggetti, come permessi IAM.

    È possibile avere più di un’istanza per account (prima era possibile averne solo una). Occorrerà imposterai la posizione del datacenter e il numero di nodi (che comunque è possibile modificare dopo aver creato l’istanza): questo influirà sui costi e sulle prestazioni.

     

     

    Creazione di un’istanza su Spanner da Console

    Apri il menu di sinistra, sotto la voce Storage, cliccando su Spanner

    gcp-menu-storage-spanner

    E poi sul pulsante Crea istanza.

    spanner-crea-istanza

    Viene mostrata la schermata per la configurazione dell’istanza. Occorre inserire il nome e l’ID dell’istanza. Io ho inserito HR-DM per il nome (serve solo per la visualizzazione) e hr-databasemaster per l’ID dell’istanza.

    spanner-creazione-istanza

    Per quanto riguarda l’area geografica inserisco europe-west1 (l’unica voce per l’Europa) e imposto a 1 il numero di nodi (in fase di apprendimento è più che sufficiente). Ciascun nodo è di 2 TB. Infine viene mostrato il pricing: hai un costo dei nodo e un costo di archiviazione. In realtà c’è anche un costo per il traffico di rete, come puoi vedere alla pagina https://cloud.google.com/spanner/pricing.

    Se anziché indicare un solo nodo (e avere un costo 0,90 $ all’ora) specifico 3 nodi, il costo dei nodi sarà moltiplicato per tre (2,70 $ all’ora).

    Clicca sul pulsante Crea.

    spanner-dettagli-istanza

     

     

    Creazione di una tabella su Spanner da Console

    L’istanza è in parole povere un contenitore per i database. Dentro l’istanza possiamo fare clic su Crea database.

    spanner-crea-database

    Assegno il nome hr e clicco su Continua. Posso inserire delle tabelle e degli indici dall’interfaccia, oppure come istruzione DDL (selezionando Modifica come testo). Scegliamo la prima opzione cliccando sul pulsante Aggiungi tabella.

    spanner-creazione-tabella

    Assegno il nome employees alla tabella e clicco su Continua. A questo punto posso aggiungere le colonne. Clicco su Aggiungi colonna, scelgo employee_id come nome della colonna e INT 64 come tipo di dato.

    spanner-aggiunta-colonna

    Come puoi vedere dal menu a tendina relativo al tipo di dato, Spanner supporta i seguenti: ARRAY, BOOL, BYTE, DATE, FLOAT 64, INT 64, STRING e TIMESTAMP. Posso indicare se la colonna deve avere il vincolo NOT NULL oppure no. In questo caso dico di no, perché poi imposterò la colonna come chiave primaria. Clicco su continua e aggiungo le altre colonne:

    • first_name: di tipo STRING, dimensione massima 50 caratteri e con vincolo NOT NULL;
    • last_name: di tipo STRING, dimensione massima 50 caratteri e con vincolo NOT NULL;
    • email: di tipo STRING, dimensione massima 50 caratteri;
    • phone_number: di tipo STRING, dimensione massima 20 caratteri;
    • hire_date: di tipo DATE e con vincolo NOT NULL;
    • job_id: di tipo STRING, dimensione massima 10 caratteri e con vincolo NOT NULL;
    • salary: di tipo INT 64.

    spanner-aggiunta-colonne

    Possiamo utilizzare un tipo di dato non particolarmente noto nei database relazionali: ARRAY. Ad esempio aggiungendo una colonna “note” di tipo array di stringhe. Ma in questa fase ne facciamo a meno. Imposto la chiave primaria sulla colonna singola employee_id e clicco su Crea.

    La tabella viene creata e non ci sono ancora dati, ovviamente. Cliccando sulla voce Query del menu laterale di sinistra, e inserendo la query SELECT * FROM employees non trova nessun risultato.

    spanner-esecuzione-query

    Cliccando sulla voce employees del menu laterale di sinistra, vediamo la struttura della tabella, ed è possibile vederne anche gli indici, i dati e lo script DDL equivalente.

    spanner-struttura-tabella

    Ad esempio, lo script generato per la creazione della tabella è il seguente:

     

    Inserimento di dati su una tabella di Spanner da Console

    Al momento della stesura di questo articolo (gennaio 2018) Google Cloud Spanner non ha ancora abilitato l’esecuzione di istruzioni DML (INSERT, UPDATE e DELETE) da Console e da GCloud. Provando ad esempio ad inserire un record con la seguente istruzione

    da Console si ottiene un errore:

    spanner-insert-non-permesse-da-console

    Per poter inserire dei record sulle tabelle occorre cliccare sulla voce employees del menu laterale di sinistra, e poi sulla voce Dati. Vediamo i dati che contiene la tabella (inizialmente vuota).

    spanner-inserimento-dati

    Cliccando sul pulsante INS è possibile usare l’interfaccia web per l’inserimento dei dati.

    spanner-interfaccia-inserimento-dati

    Cliccando sul pulsante Salva, viene memorizzato il record sulla tabella.

     

    L’esecuzione della query precedente di interrogazione sulla tabella stavolta produrrà il seguente risultato:

    spanner-risultato-query

    Cancellazione di database e istanza per evitare addebiti

     

    Se stai seguendo questo articoli per scopi didattici, per evitare addebiti al credito assegnato, occorre cancellare il database e l’istanza da Spanner.

    spanner-cancellazione-istanza

     

     

    Giulio Cantali – IT Consultant

    Creatore di Database Master, il primo percorso per diventare esperti di database

Lascia un commento

Se vuoi condividere la tua opinione, lascia un commento

Puoi usare questi tag e attributi: HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">