Database SQL per dati Cloud

Questa esercitazione può comportare degli addebiti. Utilizza lo stimatore costi per generare una stima dei costi basata sul tuo utilizzo previsto.

Questa esercitazione mostra come eseguire il provisioning di un servizio database SQL (relazionale). Come amministratore, creare una tabella e caricare un dataset di grandi dimensioni (informazioni sulla città) nel database. Quindi, distribuisci una web app "worldcities" a IBM Cloud® Code Engine. L'app consente agli utenti regolari di cercare record dal database cloud. L'applicazione è scritta in Python utilizzando il framework Flask.

dell'architettura*Schema dell'architettura del

Obiettivi

  • Eseguire il provisioning di un database SQL
  • Creare lo schema del database (tabella) e caricare i dati
  • Distribuisci un'applicazione inserita in un contenitore preintegrata in Code Engine
  • Connettere l'applicazione e il servizio database (condividere le credenziali)
  • Monitorare, proteggere, eseguire il backup e il ripristino di database cloud

Prima di iniziare

Questa esercitazione richiede:

  • La CLI IBM Cloud con il plugin Code Engine,
  • git per clonare il repository del codice sorgente.

Per evitare l'installazione di questi strumenti si può usare la Cloud Shell dalla console IBM Cloud.

Troverai le istruzioni per scaricare e installare questi strumenti per il tuo ambiente operativo nella guida Introduzione alle esercitazioni.

  1. Clona il repository Github per questa esercitazione e passa alla sua cartella. In un terminale, esegui le seguenti righe:
    git clone https://github.com/IBM-Cloud/cloud-sql-database.git
    cd cloud-sql-database
    
  2. Passare a GeoNames e scaricare ed estrarre il file cities1000.zip. Contiene le informazioni sulle città che hanno una popolazione superiore ai 1000 abitanti. Lo utilizzerai come serie di dati.

Esegui il provisioning del database SQL

Iniziare creando un'istanza del servizio IBM Db2 Warehouse SaaS.

  1. Visitare la console IBM Cloud®. Fai clic su Catalog nella barra di navigazione in alto.
  2. Fare clic su Database nel riquadro sinistro e selezionare Db2 Warehouse.
  3. Seleziona il piano Flex One e modifica il nome servizio suggerito in sqldatabase (utilizzerai tale nome in seguito). Scegliere un gruppo di risorse e un'ubicazione per la distribuzione del database.
  4. Fai clic su Create. Viene avviato il provisioning.
  5. Nell'Elenco risorse, individuare la nuova istanza in Database e attendere che sia disponibile (a volte potrebbe essere necessario aggiornare la pagina). Fai clic sulla voce del tuo servizio IBM Db2 Warehouse SaaS.
  6. Fai clic su Open Console per avviare la console del database.

Crea una tabella

Hai bisogno di una tabella per conservare i dati di esempio. Creala utilizzando la console.

  1. Nella console per IBM Db2 Warehouse SaaS fare clic sull'icona del menu in alto a sinistra, quindi su Esegui SQL nella barra di navigazione.
  2. Fare clic sul simbolo + (Aggiungi un nuovo script) accanto alla scheda Senza titolo - 1.
  3. Fai clic su Da file e seleziona il file cityschema.txt dal repository GitHub che è stato precedentemente clonato nella tua directory locale e aprirlo.
  4. Fai clic su Run all per eseguire l'istruzione. Dovrebbe mostrare un messaggio di esito positivo.

Caricare i dati

Ora che la tabella "cities" è stata creata, caricherai i dati al suo interno. Questo può essere fatto in diversi modi, ad esempio dalla macchina locale o dal cloud object storage (COS) o dall'interfaccia Amazon S3. Per questa esercitazione, caricherai i dati dalla tua macchina. Durante questo processo, adatterai la struttura della tabella e il formato dei dati in modo che soddisfino perfettamente il contenuto del file.

  1. Nella console per IBM Db2 Warehouse SaaS fai clic sull'icona del menu in alto a sinistra, quindi su Dati nella barra di navigazione.

  2. Come Origine, mantenere la selezione su Risorse del computer.

  3. In Selezione file, fare clic su Trascina un file qui o Sfoglia file per individuare e selezionare il file cities1000.txt " scaricato nella prima sezione di questa guida.

  4. Fare clic su Avanti per passare alla panoramica Destinazione con una selezione Schema. Scegliere lo schema BLUADMIN, quindi la tabella CITIES. Fai di nuovo clic su Next.

    Poiché la tabella è vuota, non fa differenza se esegui un'aggiunta ai dati esistenti oppure se li sovrascrivi.

  5. Ora personalizza in che modo i dati provenienti del file "cities1000.txt" vengono interpretati durante il processo di caricamento. Innanzitutto, disabilita Header in first row perché il file contiene solo dati.

  6. Poi, immetti 0x09 come separatore. Ciò significa che i valori all'interno del file vengono delimitati da una tabulazione.

  7. Infine, seleziona "YYYY-MM-DD" come formato data. A questo punto, l'aspetto dovrebbe essere simile a quello mostrato in questa schermata.

    Immagine che mostra i dati campionati
    Immagine che mostra i dati campionati

  8. Fai clic su Next e ti verrà offerto di esaminare le impostazioni di caricamento. Accetta e fai clic su Begin Load per iniziare a caricare i dati nella tabella CITIES. Viene visualizzato l'avanzamento. Una volta caricati i dati, dovrebbero trascorrere solo pochi secondi fino al completamento del caricamento e alla presentazione di alcune statistiche.

  9. Fai clic su View Table per sfogliare i dati. Puoi scorrere verso il basso o fare clic sui nomi di colonna per modificare il criterio di ordinamento.

Verifica i dati caricati utilizzando SQL

I dati sono stati caricati nel database relazionale. Non si sono verificati errori, ma devi eseguire comunque alcuni rapidi test. Utilizza l'editor SQL integrato per immettere ed eseguire alcune istruzioni SQL.

  1. Nella navigazione a sinistra, fare clic su Esegui SQL per tornare all'editor SQL. Fare clic sul simbolo +****(Aggiungi nuovo script ) e su Crea nuovo per creare una nuova scheda dell'editor.

    Al posto dell'editor SQL integrato, puoi utilizzare gli strumenti basati su cloud e quelli SQL tradizionali presenti sul tuo desktop o sulla tua macchina server con IBM Db2 Warehouse SaaS. Le informazioni sulla connessione sono disponibili nel menu Amministrazione nella parte sinistra di navigazione.

  2. Nel tipo di editor, immetti o copia la seguente query:

    select count(*) from cities;
    

    Selezionare il testo della query, quindi, nell'elenco a discesa accanto a Esegui tutto, scegliere Esegui selezionato. Nella sezione con i risultati, deve essere mostrato lo stesso numero di righe riportato dal processo di caricamento.

  3. Nell'editor SQL, immetti la seguente istruzione su una nuova riga:

    select countrycode, count(name) from cities
    group by countrycode
    order by 2 desc;
    

    Contrassegnare il testo dell'istruzione precedente e fare clic su Esegui selezionati. Viene eseguita solo questa istruzione, che restituisce alcune statistiche per paese nella sezione dei risultati.

  4. Infine, eseguire la seguente istruzione in modo simile per recuperare i dettagli su San Francisco in California:

    select * from cities
    where name='San Francisco'
    and countrycode='US';
    

Distribuisci il codice dell'applicazione

Tornare al terminale. Ora si sta per distribuire il codice dell'applicazione, utilizzando un'immagine del contenitore preintegrata. È possibile modificare il codice dell'applicazione e creare l'immagine del contenitore da soli. Per i dettagli, consulta le istruzioni nel repository GitHub.

  1. Se non si è connessi, utilizzare ibmcloud login o ibmcloud login --sso per accedere in modo interattivo. Impostare la regione e il gruppo di risorse su cui è stato eseguito il provisioning del database. Sostituire RESOURCE_GROUP e REGION di conseguenza.

    ibmcloud target -g RESOURCE_GROUP -r REGION
    
  2. Crea un nuovo progetto Code Engine denominato sqldatabase:

    ibmcloud ce project create --name sqldatabase
    

    Selezionare il nuovo progetto come attivo:

    ibmcloud ce project select --name sqldatabase
    
  3. Quindi, distribuisci l'applicazione denominandola worldcities.

    ibmcloud ce app create --name worldcities --image icr.io/solution-tutorials/tutorial-cloud-sql-database:latest --min-scale 1
    
  4. Infine, crea un bind del servizio tra il database IBM Db2 Warehouse SaaS esistente e l'applicazione:

    ibmcloud ce application bind --name worldcities --service-instance sqldatabase
    

    Una volta creato il bind, viene avviata una nuova revisione dell'app.

  5. Ora è possibile controllare i dettagli dell'applicazione per verificarne lo stato e recuperarne l' URL:

    ibmcloud ce app get --name worldcities
    

    Nell'output, cercate la riga che inizia con URL. L' URL mostrato dovrebbe avere uno schema come https://worldcities.unique-subdomain.region.codeengine.appdomain.cloud. Clicca sul collegamento per accedere all'app. Un'altra opzione per recuperare i dettagli dell'applicazione è visitare la console Code Engine.

Sicurezza, backup e ripristino, monitoraggio

IBM Db2 Warehouse SaaS è un servizio gestito. IBM si occupa della sicurezza dell'ambiente dei backup giornalieri e del monitoraggio del sistema. Quando utilizzi uno dei piani enterprise, ci sono diverse opzioni per gestire l'accesso e per configurare la crittografia dei dati avanzata.

Oltre alle tradizionali opzioni di gestione, Il servizio IBM Db2 Warehouse SaaS offre anche un'API REST per il monitoraggio, la gestione degli utenti, i programmi di utilità, il caricamento, l'accesso allo storage e altro ancora.

Verifica l'applicazione

L'applicazione per visualizzare le informazioni sulla città basate sulla serie di dati caricata è ridotta al minimo. Offre un modulo di ricerca per specificare il nome di una città - i nomi sono sensibili alle maiuscole - e poche città preconfigurate. Vengono tradotti in /search?name=cityname (formato di ricerca) o in /city/cityname (vengono specificate direttamente le città). Entrambe le richieste vengono servite dalle stesse righe di codice in background. Il sito cityname viene passato come valore a un'istruzione SQL preparata utilizzando un marcatore di parametro per motivi di sicurezza. Le righe vengono recuperate dal database e passate a un template HTML per il rendering.

Ripulitura

Per ripulire le risorse utilizzate dall'esercitazione, segui questi passi:

  1. Visita l'elenco di risorse IBM Cloud®.
  2. Nella sezione Code Engine individuare il progetto sqldatabase. Fare clic sui tre punti e selezionare Elimina per eliminare il progetto e la relativa app.
  3. Individuare il database sqldatabase in Database. Di nuovo, fare clic sui tre punti e selezionare Elimina per eliminare il database.

A seconda della risorsa potrebbe non essere eliminata immediatamente, ma conservata (per impostazione predefinita per 7 giorni). È possibile recuperare la risorsa eliminandola in modo permanente o ripristinarla entro il periodo di conservazione. Consultare questo documento su come utilizzare il recupero delle risorse.

Espandi l'esercitazione

Vuoi estendere questa applicazione? Ecco alcune idee:

  1. Offri una ricerca con caratteri jolly su nomi alternativi.
  2. Ricerca le città di uno specifico paese e solo all'interno di determinati valori di popolazione.
  3. Modifica il layout della pagina sostituendo gli stili CSS ed estendendo i template.
  4. Consentire la creazione di nuove informazioni sulla città o l'aggiornamento di dati esistenti, ad esempio sulla popolazione.

Contenuto correlato