Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zur Registrierung für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte nach Abschluss der Übung durch Werte, die für Ihre Cloud-Umgebung spezifisch sind.
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:
- Dieses Tutorial ist ausschließlich für Bildungs- und Studienzwecke konzipiert. Es bietet eine Umgebung für Lernende, um zu experimentieren und praktische Erfahrung in einem kontrollierten Umfeld zu sammeln. Es ist wichtig zu beachten, dass die in diesem Tutorial verwendeten Sicherheitskonfigurationen und -praktiken möglicherweise nicht für reale Szenarien geeignet sind.
- Sicherheitsaspekte für reale Anwendungen sind oft viel komplexer und dynamischer. Daher ist es vor der Implementierung einer der hier demonstrierten Techniken oder Konfigurationen in einer Produktionsumgebung unerlässlich, eine umfassende Sicherheitsbewertung und -überprüfung durchzuführen. Diese Überprüfung sollte alle Aspekte der Sicherheit umfassen, einschließlich Zugriffskontrolle, Verschlüsselung, Überwachung und Compliance, um sicherzustellen, dass das System mit den Sicherheitsrichtlinien und -standards des Unternehmens übereinstimmt.
- Sicherheit sollte beim Übergang von einer Laborumgebung zu einem realen Deployment immer oberste Priorität haben.
Ziele
- Erstellen Sie eine nahtlose Daten-Streaming-Pipeline, die Nachrichten in Echtzeit verarbeitet. Wenn eine neue Nachricht in einem OCI-Stream veröffentlicht wird, wird sie automatisch von OCI Functions weitergeleitet und verarbeitet. Anschließend werden die Daten in die Oracle Autonomous Transaction Processing-(ATP-)Datenbank geladen. Diese End-to-End-Lösung bietet eine effiziente Datenaufnahme und -transformation mit OCI-Services und stellt eine sichere und skalierbare Integration zwischen Streaming- und Datenbanksystemen sicher.
Voraussetzungen
-
Oracle Cloud Infrastructure:
-
Oracle-Account mit Zugriffsberechtigungen auf Admin-Ebene.
-
Ein Compartment zum Erstellen Ihrer Ressourcen.
Hinweis: Beachten Sie den Compartment-Namen und die Compartment-ID.
-
VCN mit einem privaten Subnetz. Weitere Informationen finden Sie unter Virtuelles Cloud-Netzwerk erstellen.
Hinweis: Beachten Sie die VCN-OCID und den Subnetznamen. Sie benötigen sie für den Streampool und die Funktionen.
-
Erstellen Sie einen Streampool im privaten Subnetz aus Ihrem VCN. Weitere Informationen finden Sie unter Creating a Stream Pool.
-
Erstellen Sie den Stream mit dem Namen
myfirststream
in demselben zuvor erstellten Streampool. Weitere Informationen finden Sie unter Stream erstellen. -
Eine Oracle Autonomous Database. Weitere Informationen finden Sie unter Oracle Autonomous Database.
-
Ein OCI Vault zum Speichern von Secrets. Weitere Informationen finden Sie unter Vault erstellen.
-
Ein OCI-Authentifizierungstoken zur Aktivierung der Anmeldung bei OCI Container Registry. Weitere Informationen finden Sie unter Authentifizierungstoken für die Anmeldung bei Oracle Cloud Infrastructure Registry generieren.
-
-
OCI Cloud Shell-Umgebung:
- Für das Deployment der Funktion in OCI ist eine OCI Cloud Shell erforderlich. Wenn Sie keine OCI Cloud Shell haben, können Sie stattdessen einen Bastionhost verwenden. Weitere Informationen finden Sie unter Bastionüberblick.
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.
-
Gruppenname: Geben Sie
MyFunctions
ein.ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}
Aufgabe 2: Policys erstellen
Gehen Sie zur OCI-Konsole, navigieren Sie zu Policys, und erstellen Sie die Policys mit den folgenden Informationen.
-
Policy-Name: Geben Sie
FunctionsPolicies
ein.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
Aufgabe 3: OCI Container Registry erstellen
-
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.
-
-
Prüfen Sie die Repositorys, und notieren Sie sich den Namespace.
-
Ö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
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.
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.
-
Gehen Sie zur OCI-Konsole, navigieren Sie zu Oracle Database, klicken Sie auf Autonomous Database, und wählen Sie Ihren ATP aus.
-
Klicken Sie auf Datenbankverbindung.
-
Geben Sie Ihr Wallet-Kennwort ein, und notieren Sie sich. Sie benötigen dieses Kennwort in der Anwendung.
-
Gehen Sie zu dem in Aufgabe 4 erstellten OCI Object Storage-Bucket, und klicken Sie auf Hochladen, um die heruntergeladene Wallet-ZIP-Datei hochzuladen.
Aufgabe 6: Datenbankzugangsdaten und Wallet-Kennwort sicher in Ihrem Vault speichern
Hinweis: Stellen Sie als Voraussetzung sicher, dass Sie bereits einen Vault erstellt haben.
-
Gehen Sie zur OCI-Konsole, navigieren Sie zu Identität und Sicherheit, Vault, und wählen Sie Ihren Vault aus.
-
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 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.
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.
-
Gehen Sie zur OCI-Konsole, navigieren Sie zu Entwicklerservices, Funktionen, Anwendungen, und klicken Sie auf Anwendung erstellen.
-
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.
-
Prüfen Sie den aktuellen Kontext. Da Sie OCI Cloud Shell verwenden, muss er bereits im aktuellen Kontext eingerichtet sein.
fn list context
-
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
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.
-
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
-
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.
-
Klicken Sie auf das obere rechte Radmenü, und wählen Sie Hochladen aus, um die Datei hochzuladen.
-
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
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.
-
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
-
Gehen Sie zur OCI-Konsole, navigieren Sie zu Entwicklerservices, Funktionen, Anwendungen, wählen Sie Ihre Anwendung aus (
Myapp
), und klicken Sie auf Ihre Funktion.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.
-
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.
-
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.
-
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) ) ;
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.
-
Gehen Sie zur OCI-Konsole, navigieren Sie zu Analysen und KI, Messaging, und klicken Sie auf Connector-Hub.
-
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. - Connector-Name: Geben Sie
-
Wählen Sie unter Quelle konfigurieren den Streampool und den Stream aus.
-
Wählen Sie unter Ziel konfigurieren als Funktionsanwendung MyApp und als Funktion fn-java-event-to-atp aus.
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:
-
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. -
Geben Sie unter Daten die JSON-Beispielnachricht ein, und klicken Sie auf Produzieren.
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
-
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.
-
Führen Sie folgende Abfrage aus.
select * from admin.my_table;
Fehlerbehebung und Tipps
-
Aktivieren Sie Logs für Ihre Funktion, und prüfen Sie auf Fehler. Weitere Informationen zum Logging finden Sie unter Funktionslogs speichern und anzeigen.
-
Überprüfen Sie, ob alle Policys vorhanden sind, wie im Abschnitt "Voraussetzungen" beschrieben.
-
Aktivieren Sie Logs für den OCI Connector-Hub. Weitere Informationen finden Sie unter Logs für Connector Hub.
Verwandte Links
Danksagungen
- Autor - Joao Tarla (Oracle LAD A-Team Solution Engineer)
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.
Stream Data to Oracle Autonomous Transaction Processing Database using OCI Functions
G25950-01
February 2025
Copyright ©2025, Oracle and/or its affiliates.