Nota

Trasferisci i dati in Oracle Autonomous Transaction Processing Database utilizzando OCI Functions

Introduzione

In questa esercitazione verrà descritto come creare e distribuire una pipeline di streaming dei dati in tempo reale utilizzando i servizi Oracle Cloud Infrastructure (OCI). La pipeline esegue lo streaming dei dati da un flusso OCI a un Oracle Autonomous Database sfruttando OCI Connector Hub e OCI Functions. La funzione viene scritta in Java, utilizzando il metodo di autenticazione del principal delle risorse per l'accesso sicuro ai servizi OCI e un wallet del database per stabilire una connessione con Oracle Autonomous Database.

OCI Streaming: OCI dispone di una vasta gamma di strumenti per la gestione dei dati nel cloud, con OCI Streaming uno di questi servizi su misura per flussi di dati in tempo reale con throughput elevato. Sfruttando lo streaming OCI, gli sviluppatori possono creare pipeline di dati scalabili e affidabili che incorporano, elaborano e distribuiscono in modo efficiente i flussi di dati.

OCI Functions: OCI Functions è una piattaforma completamente gestita, multi-tenant, altamente scalabile, on-demand e Functions-as-a-Service. Si basa su OCI di livello aziendale e si basa sul motore open source Fn Project. Utilizza OCI Functions quando vuoi concentrarti sulla scrittura di codice per soddisfare le esigenze aziendali.

Autenticazione principal risorsa: è possibile utilizzare un principal risorsa per autenticare e accedere alle risorse OCI. Il principal risorsa è costituito da un token di sessione temporaneo e da credenziali sicure che consentono alle funzioni OCI di autenticarsi in altri servizi OCI, come lo streaming OCI.

OCI Connector Hub: OCI Connector Hub è una piattaforma di bus di messaggi cloud che offre un unico pannello di controllo per descrivere, eseguire e monitorare le interazioni quando si spostano i dati tra i servizi OCI.

Nota:

Obiettivi

Prerequisiti

Task 1: Impostazione dei gruppi dinamici

Eseguire il login a OCI Console, accedere al dominio, fare clic su Gruppi dinamici e creare un gruppo con le informazioni riportate di seguito.

Task 2: Creare criteri

Andare a OCI Console, andare a Criteri e creare i criteri con le informazioni riportate di seguito.

Task 3: Creare un OCI Container Registry

  1. Andare alla console OCI, andare a Servizi sviluppatore, Container e artifact, selezionare Container di registro e fare clic su Crea repository per creare un repository privato per l'immagine della funzione.

    • Nome repository: immettere lab/fn-java-event-to-atp.

      T3_1

  2. Controllare i repository e prendere nota dello spazio di nomi.

    T3_1

  3. Aprire OCI Cloud Shell in cui installare l'interfaccia CLI OCI e Docker e procedere con il login al registro. Controlla qual è l'URL corretto per la tua regione. In questa esercitazione viene utilizzato Brasile orientale (San Paolo) dove l'URL del registro è gru.ocir.io.

    Nota: sarà necessario creare il token di autenticazione utente nella sezione Prerequisiti.

    docker login gru.ocir.io
    Username: <your container namespace>/youruser
    Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
    

    T3_3

Task 4: creare un bucket di storage degli oggetti OCI per memorizzare il wallet del database

Andare alla console OCI, andare a Storage, Storage degli oggetti e storage di archivio, Bucket e fare clic su Crea bucket per creare un nuovo bucket denominato Wallet per memorizzare il file zip del wallet del database.

T4_1

Task 5: scaricare il wallet del database e memorizzarlo nel bucket di storage degli oggetti OCI

Nota: in questo esempio di codice viene illustrato come connettersi in modo sicuro a un Oracle Autonomous Database utilizzando il wallet. Per continuare, sarà necessario configurare le credenziali del wallet e stabilire una password da utilizzare in questa esercitazione.

  1. Andare alla console OCI, andare a Oracle Database, fare clic su Autonomous Database e selezionare la disponibilità su promessa.

    T4_1

  2. Fare clic su Connessione al database.

    T4_1

  3. Immettere la password del wallet e notare che questa password sarà necessaria nell'applicazione.

    T4_1

  4. Andare al bucket di storage degli oggetti OCI creato nel task 4 e fare clic su Carica per caricare il file zip del wallet scaricato.

    T4_1

Task 6: memorizzare in modo sicuro le credenziali del database e la password del wallet nel vault

Nota: come prerequisito, assicurarsi di aver già creato un vault.

  1. Andare alla console OCI, andare a Identità e sicurezza, Vault e selezionare il vault.

  2. Fare clic su Segreti, Crea segreto e creare segreti con le informazioni riportate di seguito.

    Nome segreto Valore
    MYRDBMS_WALLET_PASSWORD La password del wallet in testo normale
    MYRDBMS_DB_PASSWORD La password del database in chiaro

    T5_1

    Nota: assicurarsi di selezionare Testo normale per Modello tipo segreto.

Ripetere questo processo anche per MYRDBMS_DB_PASSWORD e prendere nota di entrambi gli OCID che verranno utilizzati per la configurazione della funzione.

T5_1

Task 7: creare le funzioni Java OCI per ricevere il messaggio dell'evento e inserirlo nel database ATP

Nota Assicurarsi di selezionare la subnet privata, la stessa subnet del pool di flussi.

  1. Andare a OCI Console, andare a Servizi per sviluppatori, Funzioni, Applicazioni e fare clic su Crea applicazione.

    T6_1

  2. Andare a OCI Cloud Shell in cui sono installati Docker, CLI OCI, CLI Fn Project ed eseguire il comando riportato di seguito per inizializzare la funzione.

    Nota: se sono stati eseguiti i task, il comando di login Docker è già stato eseguito, in caso contrario, procedere con i passi di log Docker nel task 3.

  3. Controllare il contesto corrente, poiché si sta utilizzando OCI Cloud Shell, che deve essere già impostato nel contesto corrente.

    fn list context 
    

    T6_2

  4. Eseguire il comando seguente per aggiornare le impostazioni della funzione in modo da poter estrarre le immagini dal registro container creato nel task 3.

    fn update context oracle.compartment-id PASTE_YOUR_COMPARTMENT_OCID
    fn update context registry gru.ocir.io/PASTE_YOUR_REGISTRY_NAMESPACE/lab
    fn list context
    

    T6_2

    Nota: in questa esercitazione viene utilizzata l'area Est del Brasile (San Paolo). Se si utilizza un'area diversa, è necessario modificare le posizioni URL API e REGISTRY.

  5. Eseguire il comando riportato di seguito per verificare se l'applicazione creata è elencata in OCI Cloud Shell.

    Nota: assicurarsi che OCI Cloud Shell stia utilizzando la rete: pubblica

    fn list apps
    

    T6_2

  6. Ottenere il codice di esempio della funzione Java da qui: fn-java-event-to-atp.zip, caricarlo in OCI Cloud Shell e quindi estrarre il file.

  7. Fare clic sul menu in alto a destra e selezionare Carica per caricare il file.

    T6_2

    T6_2

  8. Eseguire il comando seguente per decomprimere il file.

    # check your file is there
    ls -lrt
    # unzip the file
    unzip fn-java-event-to-atp.zip
    # check again
    ls -lrt
    

    T9_1

    Nota: questo progetto Java conciso recupera l'input di dati JSON dall'hub connettore OCI, lo analizza in base a un formato predefinito e inserisce senza problemi le informazioni estratte nel database ATP. Per garantire il corretto inserimento dei dati, consultare i passi riportati di seguito per indicazioni sul formato di messaggio richiesto e sulla tabella corrispondente all'interno del database ATP.

  9. In OCI Cloud Shell, eseguire il comando riportato di seguito per creare il codice e distribuire la funzione.

    fn deploy --app MyApp
    # After deploy complete, check the function is there:
    fn list functions MyApp |grep fn-java-event-to-atp
    

    T9_1

    T9_1

  10. Andare a OCI Console, andare a Servizi per sviluppatori, Funzioni, Applicazioni, selezionare l'applicazione (Myapp) e fare clic sulla funzione.

    T9_1

    T9_1

    Nota Il codice di esempio Java di questa esercitazione utilizza le variabili di configurazione per stabilire una connessione al database. Assicurati di fornire i valori appropriati dal tuo ambiente per garantire una corretta esecuzione.

  11. Creare tutte le configurazioni seguenti.

Nome/chiave segreto Valore
WALLET_BUCKET Wallet
WALLET_OBJECT nome del file zip
BUCKET_NAMESPACE Spazio di nomi del bucket
DB_USER Nome utente del database
DB_SERVICE_NAME il nome del servizio di database trovato nei dettagli di connessione al database
DB_PASSWORD_OCID_VAULT incollare l'OCID segreto
DB_WALLET_PASSWORD_OCID_VAULT incollare l'OCID segreto

Task 8: Creare una nuova tabella nel database ATP

Creare una nuova tabella denominata MY_TABLE nel database ATP per ricevere i dati dallo streaming.

  1. Selezionare Oracle Autonomous Database su cui è stato scaricato il wallet, fare clic sul menu a discesa Azioni database, quindi fare clic su SQL.

    T9_1

  2. Eseguire il comando DDL di creazione della tabella seguente.

    Nota In questo laboratorio viene utilizzato l'utente ADMIN per le connessioni al database. Sostituisci il tuo nome utente se è diverso.

    CREATE TABLE "ADMIN"."MY_TABLE" 
    ( "CODE" VARCHAR2(50 BYTE), 
    	"NAME" VARCHAR2(500 BYTE)
    ) ;
    

    T9_1

Task 9: impostare OCI Connector Hub per richiamare la funzione quando arriva un nuovo messaggio nel flusso

Ora che avete creato la funzione e la nuova tabella per memorizzare i dati, è il momento di collegare tutto insieme! A tale scopo, imposteremo una pipeline che proviene dallo streaming OCI, tramite OCI Connector Hub e infine dalle funzioni OCI.

  1. Andare alla console OCI, andare ad Analytics e AI, Messaggistica e fare clic su Hub connettore.

  2. Fare clic su Crea connettore e immettere le informazioni riportate di seguito.

    • Nome connettore: immettere StreamingToFN.
    • Origine: selezionare Streaming.
    • Destinazione: selezionare Funzioni.

    Nota Come prerequisito, assicurarsi di aver già creato il pool di flussi e il flusso denominati myfirststream.

    T9_1

  3. In Configura origine selezionare il pool Stream e l'opzione Stream.

    T9_1

  4. In Configura destinazione, selezionare MyApp come Applicazione funzione e fn-java-event-to-atp come Funzione.

    T9_1

Nota Potrebbe essere necessario creare criteri aggiuntivi come suggerito nella pagina Crea connettore.

Task 10: creare un messaggio su OCI Streaming e verificare il funzionamento della pipeline

Nota L'esempio di codice Java fornito è progettato per elaborare i messaggi in una particolare struttura JSON. Il codice analizza questo JSON per estrarre i dati necessari e quindi inserirli nella tabella MY_TABLE. Qualsiasi deviazione dal formato JSON previsto comporterà errori di analisi e impedirà il corretto inserimento del database.

Messaggio di esempio JSON:

{"code": "001", "name":"Larry"}

Seguire i passi indicati:

  1. Andare alla console OCI, andare a Analytics e AI, Messaggistica, Streaming, selezionare il flusso (myfirststream) e fare clic su Produci messaggio di test.

  2. In Dati, immettere il messaggio JSON di esempio e fare clic su Produci.

    T9_1

    Nota Alla prima esecuzione della pipeline di flussi potrebbe verificarsi un avvio a freddo, con un conseguente ritardo notevole. Questa è una conseguenza dell'inizializzazione della funzione che si verifica al primo tentativo dell'hub del connettore di inviare un messaggio.

Task 11: Convalida dei dati arrivati nel database

  1. Selezionare Oracle Autonomous Database su cui è stato scaricato il wallet, fare clic sul menu a discesa Azioni database e fare clic su SQL.

    T9_1

  2. Eseguire la seguente query.

    select * from admin.my_table;
    

    T9_1

Risoluzione dei problemi e suggerimenti

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.

Per la documentazione del prodotto, visita l'Oracle Help Center.