Daten mit Serverless-Anwendung in ein Data Warehouse laden

Oracle Functions ist eine serverlose, hoch skalierbare, vollständig verwaltete Functions-as-a-Service-Plattform, die auf Oracle Cloud Infrastructure basiert und von der Open-Source-Fn-Projekt-Engine unterstützt wird. Entwickler können mit Oracle Functions Code schreiben und bereitstellen, der geschäftlichen Nutzen liefert, ohne sich um das Provisioning oder die Verwaltung der zugrunde liegenden Infrastruktur Gedanken zu machen. Oracle Functions ist containernativ und umfasst Funktionen, die als Docker-Container-Images verpackt sind.

Architektur

Diese Referenzarchitektur zeigt, wie Sie mit einer serverlosen Funktion das Extrahieren von Daten aus Dateien, die von verschiedenen Datenbanken oder Anwendungen generiert wurden, automatisieren und die Daten zur Analyse in ein Data Warehouse laden können.

Das Architekturdiagramm zeigt den Datenfluss. Wenn ZIP-Dateien in einen bestimmten Bucket in Oracle Cloud Infrastructure Object Storage hochgeladen werden, wird der Events-Service ausgelöst. Das ausgegebene Ereignis ruft eine Funktion auf, welche die Daten aus den hochgeladenen Dateien extrahiert und in eine Oracle Autonomous Data Warehouse-Instanz lädt. Nachdem die Daten in das Data Warehouse geladen wurden, werden die verarbeiteten CSV-Dateien in einen anderen Bucket in Oracle Cloud Infrastructure Object Storage verschoben.

Beschreibung von autoload-adw.png folgt
Beschreibung der Abbildung autoload-adw.png

autoloadw-oracle.zip

Die Architektur umfasst folgende Komponenten:

  • Region

    Eine Oracle Cloud Infrastructure-Region ist ein lokalisierter geografischer Bereich, der mindestens ein Data Center, sogenannte Availability-Domains, enthält. Regionen sind unabhängig von anderen Regionen, und große Entfernungen können sie (über Länder oder sogar Kontinente) trennen.

  • Availability-Domains

    Availability-Domains sind eigenständige, unabhängige Data Center in einer Region. Die physischen Ressourcen in jeder Availability-Domain sind von den Ressourcen in den anderen Availability-Domains isoliert, was eine Fehlertoleranz bietet. Availability-Domains haben keine gemeinsame Infrastruktur wie Stromversorgung oder Kühlung oder das interne Availability-Domainnetzwerk. Daher ist es wahrscheinlich, dass sich ein Fehler in einer Availability-Domain auf die anderen Availability-Domains in der Region auswirkt.

  • Virtuelles Cloud-Netzwerk (VCN) und Subnetze

    Ein VCN ist ein anpassbares, softwaredefiniertes Netzwerk, das Sie in einer Oracle Cloud Infrastructure-Region einrichten. Wie bei herkömmlichen Data Center-Netzwerken erhalten VCNs vollständige Kontrolle über Ihre Netzwerkumgebung. Ein VCN kann mehrere nicht überlappende CIDR-Blöcke haben, die Sie nach dem Erstellen des VCN ändern können. Sie können ein VCN in Subnetze segmentieren, die für eine Region oder eine Availability-Domain gelten können. Jedes Subnetz besteht aus einem fortlaufenden Adressbereich, der sich nicht mit den anderen Subnetzen im VCN überschneidet. Sie können die Größe eines Subnetzes nach der Erstellung ändern. Ein Subnetz kann öffentlich oder privat sein.

    In dieser Referenzarchitektur wird die Funktion in einem privaten regionalen Subnetz bereitgestellt.

  • Ereignisse und Funktionen

    Oracle Cloud Infrastructure-Services geben Ereignisse aus, die strukturierte Nachrichten sind, die die Änderungen an Ressourcen beschreiben. Ereignisse werden für Erstellungs-, Lese-, Aktualisierungs- oder Löschvorgänge (CRUD)-Vorgänge, Änderungen des Ressourcenlebenszyklusstatus und Systemereignisse mit Auswirkungen auf Cloud-Ressourcen ausgegeben.

    Mit Oracle Functions können Sie Ihren Code bereitstellen, direkt aufrufen oder als Reaktion auf Ereignisse auslösen. Oracle Functions verwendet Docker-Container, die in Oracle Cloud Infrastructure Registry gehostet werden.

    Wenn eine Datei in einen Bucket in Oracle Cloud Infrastructure Object Storage hochgeladen wird, wird in dieser Architektur ein Ereignis ausgegeben. Das Ereignis ruft eine Python-basierte Funktion auf, die Daten aus der Datei extrahiert und in Oracle Autonomous Data Warehouse lädt. Die verarbeitete Datei wird dann in einen anderen Bucket verschoben.

  • Objektspeicher

    Object Storage bietet schnellen Zugriff auf große Mengen strukturierter und unstrukturierter Daten eines beliebigen Inhaltstyps, einschließlich Datenbankbackups, Analysedaten und umfangreicher Inhalte wie Bilder und Videos. Sie können Daten sicher speichern und dann direkt aus dem Internet oder aus der Cloud-Plattform abrufen. Sie können den Speicher nahtlos skalieren, ohne dass es zu einer Beeinträchtigung der Performance oder Servicezuverlässigkeit kommt. Verwenden Sie den Standardspeicher für "heiße" Speicher, auf den Sie schnell, sofort und häufig zugreifen müssen. Verwenden Sie Archivspeicher für "kalten" Speicher, den Sie über lange Zeiträume beibehalten und selten oder nur selten zugreifen.

  • Autonomous Data Warehouse

    Oracle Autonomous Data Warehouse ist ein selbststeuernder, selbstsichernder und selbstreparierender Datenbankservice, der für Data Warehousing-Workloads optimiert ist. Sie müssen keine Hardware konfigurieren oder verwalten und keine Software installieren. Oracle Cloud Infrastructure behandelt das Erstellen der Datenbank sowie das Backup, Patching, Upgrade und Tuning der Datenbank.

Empfehlungen

Ihre Anforderungen können sich von der hier beschriebenen Architektur unterscheiden. Verwenden Sie die folgenden Empfehlungen als Ausgangspunkt.

  • VCN

    Bestimmen Sie beim Erstellen eines VCN die Anzahl der erforderlichen CIDR-Blöcke und die Größe jedes Blocks basierend auf der Anzahl der Ressourcen, die Sie an Subnetze im VCN anhängen möchten. Verwenden Sie CIDR-Blöcke, die sich im standardmäßigen privaten IP-Adressbereich befinden.

    Wählen Sie CIDR-Blöcke, die sich nicht mit einem anderen Netzwerk überschneiden (in Oracle Cloud Infrastructure, Ihrem On-Premise-Data Center oder einem anderen Cloud-Provider), in dem Sie private Verbindungen einrichten möchten.

  • Funktionen

    Die in dieser Referenzarchitektur verwendete Funktion wird mit Python codiert. Oracle Functions unterstützt auch Java, Node, Go und Ruby. Verwenden Sie eine Programmiersprache Ihrer Wahl.

  • Oracle Autonomous Data Warehouse

    In der Referenzarchitektur greift die Funktion mithilfe von Simple Oracle Document Access (SODA) auf das Data Warehouse zu. Sie können andere Zugriffsmethoden wie SQL mit cx_oracle- und Oracle-Clientbibliotheken implementieren, indem Sie die Funktion ändern.

    In der Referenzarchitektur befinden sich die Funktion und das Data Warehouse im selben Subnetz. Sie können sie bei Bedarf in separaten Subnetzen bereitstellen.

Überlegungen

  • Skalierbarkeit
    • Datenbank

      Sie können die Anzahl der CPU-Cores der Datenbank jederzeit manuell vertikal oder horizontal skalieren. Mit der Autoscaling-Funktion autonomer Datenbanken kann Ihre Datenbank jederzeit die bis zu dreifache aktuelle Basisanzahl von CPU-Cores verwenden. Wenn der Bedarf steigt, erhöht die Autoscaling die Anzahl der verwendeten Cores automatisch. Mit autonomen Datenbanken können Sie die Speicherkapazität jederzeit skalieren, ohne die Verfügbarkeit oder Performance zu beeinträchtigen.

    • Funktionen

      Oracle Functions erstellt und entfernt Funktionscontainer automatisch basierend auf der Anforderungslast. Sie zahlen nur, wenn die Funktionen aufgerufen werden und für die Dauer ihrer Ausführung.

  • Sicherheit
    • Mit Oracle Cloud Infrastructure Identity and Access Management-(IAM-)Policys können Sie kontrollieren, wer auf Ihre Cloud-Ressourcen zugreifen und welche Vorgänge ausgeführt werden können.

      Sie können bestimmten Gruppen entweder nur Berechtigungen für den Funktionsaufruf oder beide Berechtigungen für die Funktionsverwaltung und den Funktionsaufruf zuweisen.

      Mit IAM-Policys können Sie auch den Zugriff von Oracle Functions auf Oracle Cloud Infrastructure Object Storage kontrollieren.

    • In Oracle Cloud Infrastructure Object Storage ist die Verschlüsselung standardmäßig aktiviert und kann nicht deaktiviert werden.
    • Diese Referenzarchitektur zeigt das Data Warehouse und die Funktion im selben Subnetz an. Für eine verbesserte Isolation können Sie ein separates Subnetz für das Data Warehouse verwenden.
    • Um die Datenbankkennwörter oder andere Secrets zu schützen, sollten Sie den Oracle Cloud Infrastructure Vault-Service verwenden.

Bereitstellen

Der Terraform-Code für diese Referenzarchitektur ist in GitHub verfügbar. Sie können den Code mit einem einzigen Klick in Oracle Cloud Infrastructure Resource Manager abrufen, den Stack erstellen und bereitstellen. Alternativ laden Sie den Code von GitHub auf Ihren Computer herunter, passen den Code an und stellen die Architektur mit der Terraform-Befehlszeilenschnittstelle (CLI) bereit.

  • Mit Oracle Cloud Infrastructure Resource Manager bereitstellen:
    1. Klicken Sie auf In Oracle Cloud bereitstellen

      Wenn Sie noch nicht angemeldet sind, geben Sie den Mandanten und die Benutzerzugangsdaten ein.

    2. Prüfen und akzeptieren Sie die Vertragsbedingungen.
    3. Wählen Sie die Region aus, in der der Stack bereitgestellt werden soll.
    4. Befolgen Sie die Prompts und Anweisungen zum Erstellen des Stacks auf dem Bildschirm.
    5. Nachdem Sie den Stack erstellt haben, klicken Sie auf Terraform-Aktionen, und wählen Sie Planen aus.
    6. Warten Sie, bis der Job abgeschlossen ist, und prüfen Sie den Plan.

      Um Änderungen vorzunehmen, kehren Sie zur Seite "Stackdetails" zurück, klicken Sie auf Stack bearbeiten, und nehmen Sie die erforderlichen Änderungen vor. Führen Sie anschließend die Aktion Planen erneut aus.

    7. Wenn keine weiteren Änderungen erforderlich sind, kehren Sie zur Seite "Stackdetails" zurück, klicken Sie auf Terraform-Aktionen, und wählen Sie Anwenden.
  • Mit der Terraform-CLI bereitstellen:
    1. Gehen Sie zu GitHub.
    2. Laden Sie den Code auf Ihren lokalen Computer herunter, oder klonen Sie ihn.
    3. Folgen Sie den Anweisungen in der README.

Änderungslog

In diesem Log werden nur die wesentlichen Änderungen aufgeführt: