Hinweis:

Daten mit OCI Functions in die Oracle Autonomous Transaction Processing-Datenbank streamen

Einführung

In diesem Tutorial erfahren Sie, wie Sie eine Echtzeit-Datenstreaming-Pipeline mit Oracle Cloud Infrastructure-(OCI-)Services erstellen und bereitstellen. Die Pipeline streamt Daten aus einem OCI-Stream in eine Oracle Autonomous Database, indem OCI Connector Hub und OCI Functions genutzt werden. Die Funktion wird in Java geschrieben und verwendet die Resource Principal-Authentifizierungsmethode für den sicheren Zugriff auf OCI-Services und ein Datenbank-Wallet zum Herstellen einer Verbindung mit Oracle Autonomous Database.

OCI Streaming: OCI verfügt über eine Reihe von Tools für die Verarbeitung von Daten in der Cloud, wobei OCI Streaming ein solcher Service ist, der auf Echtzeit-Datenstreams mit hohem Durchsatz zugeschnitten ist. Durch die Nutzung von OCI Streaming können Entwickler skalierbare und zuverlässige Datenpipelines erstellen, die Datenstreams effizient erfassen, verarbeiten und verteilen.

OCI Functions: OCI Functions ist eine vollständig verwaltete, mehrmandantenfähige, hoch skalierbare, bedarfsgesteuerte Functions-as-a-Service-Plattform. Sie basiert auf OCI für Unternehmen und wird von der Open-Source-Engine Fn-Projekt unterstützt. Verwenden Sie OCI Functions, wenn Sie sich auf das Schreiben von Code konzentrieren möchten, um die Geschäftsanforderungen zu erfüllen.

Resource Principal-Authentifizierung: Sie können einen Resource Principal verwenden, um OCI-Ressourcen zu authentifizieren und darauf zuzugreifen. Der Resource Principal besteht aus einem temporären Sessiontoken und sicheren Zugangsdaten, mit denen sich OCI Functions bei anderen OCI-Services wie OCI Streaming authentifizieren kann.

OCI Connector Hub: OCI Connector Hub ist eine Cloud-Nachrichtenbusplattform, die beim Verschieben von Daten zwischen OCI-Services einen einzigen Einblick zum Beschreiben, Ausführen und Überwachen von Interaktionen bietet.

Hinweis:

Ziele

Voraussetzungen

Aufgabe 1: Dynamische Gruppen einrichten

Melden Sie sich bei der OCI-Konsole an, navigieren Sie zu Ihrer Domain, klicken Sie auf Dynamische Gruppen, und erstellen Sie eine Gruppe mit den folgenden Informationen.

Aufgabe 2: Policys erstellen

Gehen Sie zur OCI-Konsole, navigieren Sie zu Policys, und erstellen Sie die Policys mit den folgenden Informationen.

Aufgabe 3: OCI Container Registry erstellen

  1. Gehen Sie zur OCI-Konsole, navigieren Sie zu Entwicklerservices, Container und Artefakte, wählen Sie Container-Registry aus, und klicken Sie auf Repository erstellen, um ein privates Repository für das Funktionsimage zu erstellen.

    • Repository-Name: Geben Sie lab/fn-java-event-to-atp ein.

      T3_1

  2. Prüfen Sie die Repositorys, und notieren Sie sich den Namespace.

    T3_1

  3. Öffnen Sie die OCI Cloud Shell, in der OCI-CLI und Docker installiert sein sollen, und fahren Sie mit der Anmeldung in der Registry fort. Prüfen Sie, welche URL für Ihre Region korrekt ist. In diesem Tutorial verwenden wir Brazil East (Sao Paulo) mit der Registry-URL gru.ocir.io.

    Hinweis: Sie müssen das Benutzerauthentifizierungstoken im Abschnitt "Voraussetzungen" erstellen.

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

    T3_3

Aufgabe 4: OCI Object Storage-Bucket zum Speichern des Datenbank-Wallets erstellen

Navigieren Sie zur OCI-Konsole, navigieren Sie zu Speicher, Object Storage und Archive Storage, Buckets, und klicken Sie auf Bucket erstellen, um einen neuen Bucket mit dem Namen Wallet zum Speichern der ZIP-Datei des Datenbank-Wallets zu erstellen.

T4_1

Aufgabe 5: Datenbank-Wallet herunterladen und im OCI Object Storage-Bucket speichern

Hinweis: Dieses Codebeispiel zeigt, wie Sie mit einem Wallet eine sichere Verbindung zu einer Oracle Autonomous Database herstellen. Um fortzufahren, müssen Sie Ihre Wallet-Zugangsdaten konfigurieren und ein Kennwort zur Verwendung in diesem Tutorial einrichten.

  1. Gehen Sie zur OCI-Konsole, navigieren Sie zu Oracle Database, klicken Sie auf Autonomous Database, und wählen Sie Ihren ATP aus.

    T4_1

  2. Klicken Sie auf Datenbankverbindung.

    T4_1

  3. Geben Sie Ihr Wallet-Kennwort ein, und notieren Sie sich. Sie benötigen dieses Kennwort in der Anwendung.

    T4_1

  4. Gehen Sie zu dem in Aufgabe 4 erstellten OCI Object Storage-Bucket, und klicken Sie auf Hochladen, um die heruntergeladene Wallet-ZIP-Datei hochzuladen.

    T4_1

Aufgabe 6: Datenbankzugangsdaten und Wallet-Kennwort sicher in Ihrem Vault speichern

Hinweis: Stellen Sie als Voraussetzung sicher, dass Sie bereits einen Vault erstellt haben.

  1. Gehen Sie zur OCI-Konsole, navigieren Sie zu Identität und Sicherheit, Vault, und wählen Sie Ihren Vault aus.

  2. Klicken Sie auf Secrets, Secret erstellen, und erstellen Sie Secrets mit den folgenden Informationen.

    Secret-Name Datum
    MYRDBMS_WALLET_PASSWORD Ihr Wallet-Kennwort im Klartext
    MYRDBMS_DB_PASSWORD Ihr Datenbankpasswort in Klartext

    T5_1

    Hinweis: Stellen Sie sicher, dass Sie unter Secret-Typvorlage die Option Nur Text auswählen.

Wiederholen Sie diesen Prozess auch für die MYRDBMS_DB_PASSWORD, und beachten Sie beide OCIDs, die für die Funktionskonfiguration verwendet werden.

T5_1

Aufgabe 7: Java OCI Functions erstellen, um die Ereignisnachricht zu empfangen und in die ATP-Datenbank einzufügen

Hinweis Stellen Sie sicher, dass Sie das private Subnetz, dasselbe Subnetz Ihres Streampools, auswählen.

  1. Gehen Sie zur OCI-Konsole, navigieren Sie zu Entwicklerservices, Funktionen, Anwendungen, und klicken Sie auf Anwendung erstellen.

    T6_1

  2. Gehen Sie zur OCI Cloud Shell, in der Sie Docker, OCI-CLI und Fn-Projekt-CLI installiert haben, und führen Sie den folgenden Befehl aus, um die Funktion zu initialisieren.

    Hinweis: Wenn Sie die Aufgaben befolgt haben, wurde der Docker-Anmeldebefehl bereits ausgeführt. Falls nicht, fahren Sie mit den Docker-Logschritten in Aufgabe 3 fort.

  3. Prüfen Sie den aktuellen Kontext. Da Sie OCI Cloud Shell verwenden, muss er bereits im aktuellen Kontext eingerichtet sein.

    fn list context 
    

    T6_2

  4. Führen Sie den folgenden Befehl aus, um Ihre Funktionseinstellungen zu aktualisieren und Bilder aus Ihrer in Aufgabe 3 erstellten Containerregistrierung abrufen zu können.

    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

    Hinweis: In diesem Tutorial verwenden wir die Region Brazil East(Sao Paulo). Wenn Sie eine andere Region verwenden, müssen Sie die Standorte API-URL und REGISTRY ändern.

  5. Führen Sie den folgenden Befehl aus, um zu prüfen, ob die von Ihnen erstellte Anwendung in Ihrer OCI Cloud Shell aufgeführt ist.

    Hinweis: Stellen Sie sicher, dass OCI Cloud Shell Netzwerk: Öffentlich verwendet

    fn list apps
    

    T6_2

  6. Rufen Sie den Beispielcode für die Java-Funktion hier ab: fn-java-event-to-atp.zip, laden Sie ihn in Ihre OCI Cloud Shell hoch, und dekomprimieren Sie dann die Datei.

  7. Klicken Sie auf das obere rechte Radmenü, und wählen Sie Hochladen aus, um die Datei hochzuladen.

    T6_2

    T6_2

  8. Führen Sie den folgenden Befehl aus, um die Datei zu entpacken.

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

    T9_1

    Hinweis: Dieses präzise Java-Projekt ruft die JSON-Dateneingabe aus dem OCI Connector Hub ab, parst sie nach einem vordefinierten Format und fügt die extrahierten Informationen nahtlos in die ATP-Datenbank ein. Um sicherzustellen, dass die Daten ordnungsgemäß eingefügt werden, führen Sie die folgenden Schritte aus, um das erforderliche Nachrichtenformat und die entsprechende Tabelle in Ihrer ATP-Datenbank zu erläutern.

  9. Führen Sie in OCI Cloud Shell den folgenden Befehl aus, um den Code zu erstellen und die Funktion bereitzustellen.

    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. Gehen Sie zur OCI-Konsole, navigieren Sie zu Entwicklerservices, Funktionen, Anwendungen, wählen Sie Ihre Anwendung aus (Myapp), und klicken Sie auf Ihre Funktion.

    T9_1

    T9_1

    Hinweis Der Java-Beispielcode dieses Tutorials verwendet Konfigurationsvariablen, um eine Datenbankverbindung herzustellen. Stellen Sie sicher, dass Sie die entsprechenden Werte aus Ihrer Umgebung angeben, um eine erfolgreiche Ausführung zu gewährleisten.

  11. Erstellen Sie alle folgenden Konfigurationen.

Secret-Name/Schlüssel Datum
WALLET_BUCKET Wallet
WALLET_OBJECT Name der ZIP-Datei
BUCKET_NAMESPACE Ihr Bucket-Namespace
DB_USER Ihr Datenbankbenutzername
DB_SERVICE_NAME den Datenbankservicenamen, den Sie in den Datenbankverbindungsdetails finden
DB_PASSWORD_OCID_VAULT Secret-OCID einfügen
DB_WALLET_PASSWORD_OCID_VAULT Secret-OCID einfügen

Aufgabe 8: Neue Tabelle in der ATP-Datenbank erstellen

Erstellen Sie eine neue Tabelle mit dem Namen MY_TABLE in der ATP-Datenbank, um Daten aus dem Streaming zu empfangen.

  1. Wählen Sie die Oracle Autonomous Database aus, auf die Sie das Wallet heruntergeladen haben, klicken Sie auf das Dropdown-Menü Datenbankaktionen, und klicken Sie auf SQL.

    T9_1

  2. Führen Sie den folgenden DDL-Befehl zur Tabellenerstellung aus.

    Hinweis In dieser Übung wird der ADMIN-Benutzer für Datenbankverbindungen verwendet. Ersetzen Sie Ihren eigenen Benutzernamen, wenn er sich unterscheidet.

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

    T9_1

Aufgabe 9: OCI Connector Hub so einrichten, dass die Funktion aufgerufen wird, wenn eine neue Nachricht im Stream eingeht

Nachdem Sie die Funktion und die neue Tabelle zum Speichern der Daten erstellt haben, ist es an der Zeit, alles miteinander zu verbinden! Dazu richten wir eine Pipeline ein, die von OCI Streaming, über OCI Connector Hub und schließlich zu Ihren OCI Functions fließt.

  1. Gehen Sie zur OCI-Konsole, navigieren Sie zu Analysen und KI, Messaging, und klicken Sie auf Connector-Hub.

  2. Klicken Sie auf Connector erstellen, und geben Sie die folgenden Informationen ein.

    • Connector-Name: Geben Sie StreamingToFN ein.
    • Quelle: Wählen Sie Streaming aus.
    • Ziel: Wählen Sie Funktionen aus.

    Hinweis Stellen Sie als Voraussetzung sicher, dass Sie den Streampool und Stream mit dem Namen myfirststream bereits erstellt haben.

    T9_1

  3. Wählen Sie unter Quelle konfigurieren den Streampool und den Stream aus.

    T9_1

  4. Wählen Sie unter Ziel konfigurieren als Funktionsanwendung MyApp und als Funktion fn-java-event-to-atp aus.

    T9_1

Hinweis Möglicherweise müssen Sie zusätzliche Policys erstellen, wie auf der Seite Connector erstellen vorgeschlagen.

Aufgabe 10: Nachricht in OCI Streaming erstellen und Pipeline prüfen, die funktioniert

Hinweis Das bereitgestellte Java-Codebeispiel dient zur Verarbeitung von Nachrichten in einer bestimmten JSON-Struktur. Der Code parst diese JSON, um die erforderlichen Daten zu extrahieren, und fügt sie dann in die Tabelle MY_TABLE ein. Jede Abweichung vom erwarteten JSON-Format führt zu Parsingfehlern und verhindert eine erfolgreiche Datenbankeinfügung.

JSON-Beispielnachricht:

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

Führen Sie die Schritte aus:

  1. Gehen Sie zur OCI-Konsole, navigieren Sie zu Analysen und KI, Messaging, Streaming, wählen Sie den Stream aus (myfirststream), und klicken Sie auf Testnachricht erstellen.

  2. Geben Sie unter Daten die JSON-Beispielnachricht ein, und klicken Sie auf Produzieren.

    T9_1

    Hinweis Bei der ersten Ausführung der Stream-Pipeline kann es zu einem kalten Start kommen, was zu einer spürbaren Verzögerung führt. Dies ist eine Folge der Funktionsinitialisierung, die beim ersten Versuch des Connector-Hubs auftritt, eine Nachricht zu senden.

Aufgabe 11: In der Datenbank angekommene Daten validieren

  1. Wählen Sie die Oracle Autonomous Database aus, auf die Sie das Wallet heruntergeladen haben, klicken Sie auf das Dropdown-Menü Datenbankaktionen, und klicken Sie auf SQL.

    T9_1

  2. Führen Sie folgende Abfrage aus.

    select * from admin.my_table;
    

    T9_1

Fehlerbehebung und Tipps

Danksagungen

Weitere Lernressourcen

Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Die Produktdokumentation finden Sie im Oracle Help Center.