Automazione del caricamento dei dati in un data warehouse mediante un'applicazione serverless

Oracle Functions è una piattaforma serverless, altamente scalabile, completamente gestita, Functions-as-a-Service creata su Oracle Cloud Infrastructure e basata sul motore open source Fn Project. Gli sviluppatori possono utilizzare Oracle Functions per scrivere e distribuire codice che garantisce valore aziendale senza preoccuparsi del provisioning o della gestione dell'infrastruttura di base. Oracle Functions è container nativo, con funzioni raggruppate sotto forma di immagini di container Docker.

Architettura

Questa architettura di riferimento mostra come è possibile utilizzare una funzione serverless per automatizzare il processo di estrazione dei dati da file generati da diversi database o applicazioni e il caricamento dei dati in un data warehouse per l'analisi.

Il diagramma dell'architettura mostra il flusso dei dati. Quando i file CSV compressi vengono caricati in un bucket specifico in Oracle Cloud Infrastructure Object Storage, il servizio Eventi viene attivato. L'evento emesso richiama una funzione che estrae i dati dai file caricati e carica i dati in un'istanza di Oracle Autonomous Data Warehouse. Dopo il caricamento dei dati nel data warehouse, i file CSV elaborati vengono spostati in un bucket diverso in Oracle Cloud Infrastructure Object Storage.

Segue la descrizione di autoload-adw.png
Descrizione dell'illustrazione autoload-adw.png

autoload-adw-oracle.zip

L'architettura prevede i componenti elencati di seguito.

  • Area

    Un'area Oracle Cloud Infrastructure è un'area geografica localizzata contenente uno o più data center, denominati domini di disponibilità. Le regioni sono indipendenti da altre regioni e le grandi distanze possono separarle (tra paesi o addirittura continenti).

  • Domini di disponibilità

    I domini di disponibilità sono data center indipendenti e standalone all'interno di un'area geografica. Le risorse fisiche presenti in ciascun dominio di disponibilità sono isolate dalle risorse presenti negli altri domini di disponibilità, il che garantisce la tolleranza agli errori. I domini di disponibilità non condividono l'infrastruttura, ad esempio l'alimentazione o il raffreddamento, né la rete interna del dominio di disponibilità. Pertanto, è improbabile che un errore di un dominio di disponibilità influisca sugli altri domini di disponibilità nell'area.

  • Rete cloud virtuale (VCN) e subnet

    Una VCN è una rete personalizzabile e definita dal software impostata dall'utente in un'area Oracle Cloud Infrastructure. Come le reti di data center tradizionali, le VCN offrono il controllo completo sull'ambiente di rete. Una VCN può avere più blocchi CIDR non sovrapposti che è possibile modificare dopo aver creato la VCN. È possibile segmentare una VCN in subnet, che può essere definita in un'area o in un dominio di disponibilità. Ogni subnet è costituita da un intervallo contiguo di indirizzi che non si sovrappongono con le altre subnet nella VCN. Puoi modificare la dimensione di una subnet dopo la creazione. Una subnet può essere pubblica o privata.

    In questa architettura di riferimento, la funzione viene distribuita in una subnet regionale privata.

  • Eventi e funzioni

    I servizi Oracle Cloud Infrastructure emettono eventi, ovvero messaggi strutturati che descrivono le modifiche delle risorse. Gli eventi vengono emessi per le operazioni di creazione, lettura, aggiornamento o eliminazione (CRUD), le modifiche dello stato del ciclo di vita delle risorse e gli eventi di sistema che interessano le risorse cloud.

    Oracle Functions ti consente di distribuire il tuo codice, chiamarlo direttamente o di attivarlo in risposta agli eventi. Oracle Functions utilizza i container Docker ospitati in Oracle Cloud Infrastructure Registry.

    In questa architettura, quando un file viene caricato su un bucket in Oracle Cloud Infrastructure Object Storage, viene emesso un evento. L'evento richiama una funzione basata su Python, che estrae i dati dal file e li carica in Oracle Autonomous Data Warehouse. Il file elaborato viene quindi spostato in un altro bucket.

  • Storage degli oggetti

    Lo storage degli oggetti consente un accesso rapido a grandi quantità di dati strutturati e non strutturati di qualsiasi tipo di contenuto, inclusi backup del database, dati analitici e contenuti avanzati quali immagini e video. Puoi memorizzare e quindi recuperare i dati direttamente da Internet o dall'interno della piattaforma cloud. È possibile scalare perfettamente lo storage senza compromettere le prestazioni o l'affidabilità dei servizi. Utilizzare lo storage standard per lo storage "hot" necessario per accedere rapidamente, immediatamente e di frequente. Utilizzare lo storage di archivio per lo storage "freddo" che si conserva per lunghi periodi di tempo e raramente o raramente si accede.

  • Autonomous Data Warehouse

    Oracle Autonomous Data Warehouse è un servizio di database a gestione autonoma, protezione automatica e funzionalità di autoriparazione che viene ottimizzato per i carichi di lavoro di data warehousing. Non è necessario configurare né gestire alcun hardware o installare software. Oracle Cloud Infrastructure gestisce la creazione del database e il backup, l'applicazione di patch, l'aggiornamento e il tuning del database.

Suggerimenti

I requisiti potrebbero essere diversi dall'architettura descritta in questa sezione. Utilizzare i seguenti suggerimenti come punto di partenza.

  • VCN

    Quando crei una VCN, determina il numero di blocchi CIDR necessari e la dimensione di ogni blocco in base al numero di risorse che intendi collegare alle subnet nella VCN. Utilizzare i blocchi CIDR che si trovano all'interno dello spazio di indirizzi IP privati standard.

    Selezionare i blocchi CIDR che non si sovrappongono a qualsiasi altra rete (in Oracle Cloud Infrastructure, il data center on premise o un altro provider cloud) a cui si intende impostare connessioni private.

  • Funzioni

    La funzione utilizzata in questa architettura di riferimento è codificata utilizzando Python. Oracle Functions supporta anche Java, Node, Go e Ruby. Utilizza un linguaggio di programmazione di tua scelta.

  • Oracle Autonomous Data Warehouse

    Nell'architettura di riferimento, la funzione accede al data warehouse utilizzando Simple Oracle Document Access (SODA). È possibile implementare altri metodi di accesso, ad esempio SQL con le librerie cx_oracle e Oracle Client, modificando la funzione.

    Nell'architettura di riferimento, la funzione e il data warehouse si trovano nella stessa sottorete. È possibile distribuirli in subnet separate, se necessario.

Considerazioni

  • Scalabilità
    • Database

      È possibile ridimensionare manualmente il numero di memorie centrali CPU del database in modo attivo o inattivo in qualsiasi momento. La funzione di ridimensionamento automatico dei database autonomi consente al database di utilizzare fino a tre volte il numero di memorie centrali CPU corrente in qualsiasi momento. Con l'aumento della domanda, il ridimensionamento automatico aumenta automaticamente il numero di memorie centrali in uso. I database autonomi ti consentono di ridimensionare la capacità di storage in qualsiasi momento, senza incidere sulla disponibilità o sulle prestazioni.

    • Funzioni

      Oracle Functions crea e rimuove automaticamente i contenitori delle funzioni in base al caricamento delle richieste. Si paga solo quando le funzioni vengono richiamate e per la durata di esecuzione.

  • Sicurezza
    • Utilizza i criteri di Oracle Cloud Infrastructure Identity and Access Management (IAM) per controllare chi può accedere alle tue risorse cloud e quali operazioni possono essere eseguite.

      È possibile assegnare solo le autorizzazioni di richiamo delle funzioni o entrambe le autorizzazioni di gestione delle funzioni e di richiamo delle funzioni a gruppi specifici.

      Puoi usare i criteri IAM per controllare l'accesso anche da Oracle Functions a Oracle Cloud Infrastructure Object Storage.

    • In Oracle Cloud Infrastructure Object Storage la cifratura è abilitata per impostazione predefinita e non può essere disattivata.
    • Questa architettura di riferimento mostra il data warehouse e la funzione nella stessa subnet. Per un isolamento avanzato, è possibile utilizzare una subnet separata per il data warehouse.
    • Per proteggere le password del database o qualsiasi altro segreto, considerare la possibilità di utilizzare il servizio Oracle Cloud Infrastructure Vault.

Distribuzione

Il codice Terraform per questa architettura di riferimento è disponibile in GitHub. Puoi inserire il codice in Oracle Cloud Infrastructure Resource Manager con un solo clic, creare lo stack e distribuirlo. In alternativa, scaricare il codice da GitHub nel computer, personalizzare il codice e distribuire l'architettura utilizzando l'interfaccia della riga di comando (CLI, Command Line Interface) di Terraform.

  • Implementa utilizzando Oracle Cloud Infrastructure Resource Manager:
    1. Fare clic su Distribuire in Oracle Cloud

      Se non si è ancora collegati, immettere la tenancy e le credenziali utente.

    2. Rivedere e accettare i termini e le condizioni.
    3. Selezionare l'area in cui distribuire lo stack.
    4. Seguire i prompt visualizzati e le istruzioni per creare lo stack.
    5. Dopo aver creato lo stack, fare clic su Azioni Terraform e selezionare Piano.
    6. Attendere il completamento del processo e rivedere il piano.

      Per apportare modifiche, tornare alla pagina Dettagli stack, fare clic su Modifica stack e apportare le modifiche necessarie. Quindi eseguire di nuovo l'azione Piano.

    7. Se non sono necessarie ulteriori modifiche, tornare alla pagina Dettagli stack, fare clic su Azioni Terraform e selezionare Applica.
  • Distribuzione mediante l'interfaccia CLI Terraform:
    1. Andare a GitHub.
    2. Scaricare o clonare il codice nel computer locale.
    3. Seguire le istruzioni riportate in README.

Log modifiche

In questo log sono elencate solo le modifiche significative: