Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
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:
- Questo tutorial è progettato esclusivamente per scopi educativi e di studio. Fornisce un ambiente per gli studenti di sperimentare e acquisire esperienza pratica in un ambiente controllato. È fondamentale notare che le configurazioni e le pratiche di sicurezza utilizzate in questo tutorial potrebbero non essere adatte per scenari reali.
- Le considerazioni sulla sicurezza per le applicazioni del mondo reale sono spesso molto più complesse e dinamiche. Pertanto, prima di implementare una delle tecniche o configurazioni qui dimostrate in un ambiente di produzione, è essenziale condurre una valutazione e un riesame completi della sicurezza. Questa revisione dovrebbe comprendere tutti gli aspetti della sicurezza, tra cui il controllo dell'accesso, la crittografia, il monitoraggio e la conformità, per garantire che il sistema sia allineato alle politiche e agli standard di sicurezza dell'organizzazione.
- La sicurezza dovrebbe sempre essere una priorità assoluta quando si passa da un ambiente di laboratorio a un'implementazione reale.
Obiettivi
- Crea una pipeline di streaming dei dati trasparente che elabora i messaggi in tempo reale. Quando un nuovo messaggio viene pubblicato in un flusso OCI, viene inoltrato ed elaborato automaticamente da OCI Functions, che quindi carica i dati nel database Oracle Autonomous Transaction Processing (ATP). Questa soluzione end-to-end mostra un'integrazione e una trasformazione dei dati efficienti utilizzando i servizi OCI, garantendo un'integrazione sicura e scalabile tra streaming e sistemi di database.
Prerequisiti
-
Infrastruttura Oracle Cloud:
-
Account Oracle con autorizzazioni di accesso a livello di amministratore.
-
Compartimento per creare le risorse.
Nota: prendere nota del nome e dell'ID compartimento del compartimento.
-
VCN con una subnet privata. Per ulteriori informazioni, vedere Creazione di una rete cloud virtuale.
Nota: prendere nota dell'OCID VCN e del nome della subnet, che sarà necessario per il pool di flussi e le funzioni.
-
Crea un pool di flussi nella subnet privata dalla VCN. Per ulteriori informazioni, vedere Creazione di un pool di flussi.
-
Creare il flusso denominato
myfirststream
nello stesso pool di flussi creato in precedenza. Per ulteriori informazioni, vedere Creazione di un flusso. -
Un Oracle Autonomous Database. Per ulteriori informazioni, consulta Oracle Autonomous Database.
-
Vault OCI per memorizzare i segreti. Per ulteriori informazioni, vedere Creazione di un vault.
-
Token di autenticazione OCI per abilitare il login a OCI Container Registry. Per ulteriori informazioni, vedere Generazione di un token di autenticazione per abilitare il login a Oracle Cloud Infrastructure Registry.
-
-
Ambiente OCI Cloud Shell:
- Per distribuire la funzione in OCI è necessaria una Cloud Shell. Se non si dispone di una Cloud Shell OCI, è possibile utilizzare un host Bastion. Per ulteriori informazioni, vedere Panoramica di Bastion.
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.
-
Nome gruppo: immettere
MyFunctions
.ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}
Task 2: Creare criteri
Andare a OCI Console, andare a Criteri e creare i criteri con le informazioni riportate di seguito.
-
Nome criterio: immettere
FunctionsPolicies
.Allow dynamic-group MyFunctions to {STREAM_INSPECT, STREAM_READ, STREAM_CONSUME, STREAM_PRODUCE} in compartment YOUR-COMPARTMENT-NAME Allow dynamic-group MyFunctions to read repos in compartment YOUR-COMPARTMENT-NAME Allow dynamic-group MyFunctions to read objects in compartment YOUR-COMPARTMENT-NAME Allow dynamic-group MyFunctions to read secret-bundles in compartment YOUR-COMPARTMENT-NAME
Task 3: Creare un OCI Container Registry
-
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
.
-
-
Controllare i repository e prendere nota dello spazio di nomi.
-
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
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.
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.
-
Andare alla console OCI, andare a Oracle Database, fare clic su Autonomous Database e selezionare la disponibilità su promessa.
-
Fare clic su Connessione al database.
-
Immettere la password del wallet e notare che questa password sarà necessaria nell'applicazione.
-
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.
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.
-
Andare alla console OCI, andare a Identità e sicurezza, Vault e selezionare il vault.
-
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 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.
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.
-
Andare a OCI Console, andare a Servizi per sviluppatori, Funzioni, Applicazioni e fare clic su Crea applicazione.
-
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.
-
Controllare il contesto corrente, poiché si sta utilizzando OCI Cloud Shell, che deve essere già impostato nel contesto corrente.
fn list context
-
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
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.
-
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
-
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.
-
Fare clic sul menu in alto a destra e selezionare Carica per caricare il file.
-
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
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.
-
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
-
Andare a OCI Console, andare a Servizi per sviluppatori, Funzioni, Applicazioni, selezionare l'applicazione (
Myapp
) e fare clic sulla funzione.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.
-
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.
-
Selezionare Oracle Autonomous Database su cui è stato scaricato il wallet, fare clic sul menu a discesa Azioni database, quindi fare clic su SQL.
-
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) ) ;
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.
-
Andare alla console OCI, andare ad Analytics e AI, Messaggistica e fare clic su Hub connettore.
-
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
. - Nome connettore: immettere
-
In Configura origine selezionare il pool Stream e l'opzione Stream.
-
In Configura destinazione, selezionare MyApp come Applicazione funzione e fn-java-event-to-atp come Funzione.
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:
-
Andare alla console OCI, andare a Analytics e AI, Messaggistica, Streaming, selezionare il flusso (
myfirststream
) e fare clic su Produci messaggio di test. -
In Dati, immettere il messaggio JSON di esempio e fare clic su Produci.
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
-
Selezionare Oracle Autonomous Database su cui è stato scaricato il wallet, fare clic sul menu a discesa Azioni database e fare clic su SQL.
-
Eseguire la seguente query.
select * from admin.my_table;
Risoluzione dei problemi e suggerimenti
-
Abilita i log per la funzione e controlla eventuali errori. Per ulteriori informazioni sulla registrazione, vedere Memorizzazione e visualizzazione dei log delle funzioni.
-
Verificare che tutti i criteri siano in vigore come descritto in dettaglio nella sezione Prerequisiti.
-
Abilita i log per l'hub del connettore OCI. Per ulteriori informazioni, vedere Log per hub connettore.
Collegamenti correlati
Conferme
- Autore - Joao Tarla (Solution Engineer Oracle LAD A-Team)
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.
Stream Data to Oracle Autonomous Transaction Processing Database using OCI Functions
G25948-01
February 2025
Copyright ©2025, Oracle and/or its affiliates.