Amazon Athena Oracle Konnektor - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Amazon Athena Oracle Konnektor

Der Amazon Athena-Connector für Oracle ermöglicht es Amazon Athena, SQL Abfragen von Daten auszuführen, die in Oracle gespeichert sind und lokal oder auf Amazon oder Amazon EC2 laufen. RDS Sie können den Konnektor auch verwenden, um Daten auf Oracle Exadata abzufragen.

Voraussetzungen

Einschränkungen

  • DDLSchreibvorgänge werden nicht unterstützt.

  • In einem Multiplexer-Setup werden der Überlauf-Bucket und das Präfix von allen Datenbank-Instances gemeinsam genutzt.

  • Alle relevanten Lambda-Grenzwerte. Weitere Informationen finden Sie unter Lambda quotas (Lambda-Kontingente) im AWS Lambda -Entwicklerhandbuch.

  • Nur Oracle-Datenbanken der Version 12.1.0.2 werden unterstützt.

Bedingungen

Die folgenden Begriffe beziehen sich auf den Oracle-Konnektor.

  • Datenbank-Instance — Jede Instanz einer Datenbank, die vor Ort, bei Amazon EC2 oder bei Amazon bereitgestellt wirdRDS.

  • Handler – Ein Lambda-Handler, der auf Ihre Datenbank-Instance zugreift. Ein Handler kann für Metadaten oder für Datensätze verwendet werden.

  • Metadaten-Handler – Ein Lambda-Handler, der Metadaten von Ihrer Datenbank-Instance abruft.

  • Record Handler – Ein Lambda-Handler, der Datensätze aus Ihrer Datenbank-Instance abruft.

  • Composite Handler – Ein Lambda-Handler, der sowohl Metadaten als auch Datensätze aus Ihrer Datenbank-Instance abruft.

  • Eigenschaft oder Parameter – Eine Datenbankeigenschaft, die von Handlern zum Extrahieren von Datenbankinformationen verwendet wird. Sie konfigurieren diese Eigenschaften als Lambda-Umgebungsvariablen.

  • Verbindungszeichenfolge – Eine Textzeichenfolge, die verwendet wird, um eine Verbindung zu einer Datenbank-Instance herzustellen.

  • Katalog — Ein nicht bei Athena registrierter AWS Glue Katalog, der ein erforderliches Präfix für die connection_string Immobilie ist.

  • Multiplex-Handler – Ein Lambda-Handler, der mehrere Datenbankverbindungen akzeptieren und verwenden kann.

Parameter

Verwenden Sie die Lambda-Umgebungsvariablen in diesem Abschnitt, um den Oracle-Konnektor zu konfigurieren.

Verbindungszeichenfolge

Verwenden Sie eine JDBC Verbindungszeichenfolge im folgenden Format, um eine Verbindung zu einer Datenbankinstanz herzustellen.

oracle://${jdbc_connection_string}
Anmerkung

Wenn Ihr Passwort Sonderzeichen enthält (z. B. some.password), schließen Sie Ihr Passwort in doppelte Anführungszeichen ein, wenn Sie es an die Verbindungszeichenfolge übergeben (z. B. "some.password"). Wenn Sie dies nicht tun, kann dies zu einem von Oracle URL angegebenen Fehler „Ungültig“ führen.

Verwenden eines Multiplexing-Handlers

Sie können einen Multiplexer verwenden, um mit einer einzigen Lambda-Funktion eine Verbindung zu mehreren Datenbank-Instances herzustellen. Anfragen werden anhand des Katalognamens weitergeleitet. Verwenden Sie die folgenden Klassen in Lambda.

Handler Klasse
Composite Handler OracleMuxCompositeHandler
Metadaten-Handler OracleMuxMetadataHandler
Record Handler OracleMuxRecordHandler

Multiplex-Handler-Parameter

Parameter Beschreibung
$catalog_connection_string Erforderlich Eine Verbindungszeichenfolge einer Datenbank-Instance. Stellen Sie der Umgebungsvariablen den Namen des in Athena verwendeten Katalogs voran. Wenn zum Beispiel der bei Athena registrierte Katalog myoraclecatalog ist, dann lautet der Name der Umgebungsvariablen myoraclecatalog_connection_string.
default Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der Katalog lambda:${AWS_LAMBDA_FUNCTION_NAME}.

Die folgenden Beispieleigenschaften beziehen sich auf eine Oracle MUX Lambda-Funktion, die zwei Datenbankinstanzen unterstützt: oracle1 (Standard) undoracle2.

Eigenschaft Wert
default oracle://jdbc:oracle:thin:${Test/RDS/Oracle1}@//oracle1.hostname:port/servicename
oracle_catalog1_connection_string oracle://jdbc:oracle:thin:${Test/RDS/Oracle1}@//oracle1.hostname:port/servicename
oracle_catalog2_connection_string oracle://jdbc:oracle:thin:${Test/RDS/Oracle2}@//oracle2.hostname:port/servicename

Bereitstellen von Anmeldeinformationen

Um einen Benutzernamen und ein Passwort für Ihre Datenbank in Ihrer JDBC Verbindungszeichenfolge anzugeben, können Sie die Eigenschaften der Verbindungszeichenfolge oder AWS Secrets Manager verwenden.

  • Verbindungszeichenfolge — Ein Benutzername und ein Passwort können als Eigenschaften in der JDBC Verbindungszeichenfolge angegeben werden.

    Wichtig

    Als bewährte Sicherheitsmethode sollten Sie keine fest kodierten Anmeldeinformationen in Ihren Umgebungsvariablen oder Verbindungszeichenfolgen verwenden. Informationen zum Verschieben von hartcodierten Geheimnissen nach AWS Secrets Manager finden Sie AWS Secrets Manager im AWS Secrets Manager Benutzerhandbuch unter Verschieben von hartcodierten Geheimnissen nach.

  • AWS Secrets Manager— Um die Athena Federated Query-Funktion verwenden zu können AWS Secrets Manager, muss die mit Ihrem Lambda VPC verbundene Funktion über einen Internetzugang oder einen VPCEndpunkt verfügen, über den Sie sich mit Secrets Manager verbinden können.

    Sie können den Namen eines Geheimnisses AWS Secrets Manager in Ihre JDBC Verbindungszeichenfolge eingeben. Der Konnektor ersetzt den geheimen Namen durch username- und password-Werte von Secrets Manager.

    Für RDS Amazon-Datenbank-Instances ist diese Unterstützung eng integriert. Wenn Sie Amazon verwendenRDS, empfehlen wir dringend, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . Wenn Ihre Datenbank Amazon nicht verwendetRDS, speichern Sie die Anmeldeinformationen JSON im folgenden Format:

    {"username": "${username}", "password": "${password}"}
Anmerkung

Wenn Ihr Passwort Sonderzeichen enthält (z. B. some.password), setzen Sie Ihr Passwort in doppelte Anführungszeichen, wenn Sie es in Secrets Manager speichern (z. B. "some.password"). Wenn Sie dies nicht tun, kann dies zu einem von Oracle URL angegebenen Fehler „Ungültig“ führen.

Beispiel einer Verbindungszeichenfolge mit einem geheimen Namen

Die folgende Zeichenfolge hat den geheimen Namen ${Test/RDS/Oracle}.

oracle://jdbc:oracle:thin:${Test/RDS/Oracle}@//hostname:port/servicename

Der Konnektor verwendet den geheimen Namen, um Secrets abzurufen und den Benutzernamen und das Kennwort bereitzustellen, wie im folgenden Beispiel gezeigt.

oracle://jdbc:oracle:thin:username/password@//hostname:port/servicename

Derzeit erkennt der Oracle-Konnektor die PWD JDBC Eigenschaften UID und.

Verwenden eines einzelnen Verbindungs-Handlers

Sie können die folgenden Einzelverbindungsmetadaten und Record Handler verwenden, um eine Verbindung zu einer einzelnen Oracle-Instance herzustellen.

Handler-Typ Klasse
Composite Handler OracleCompositeHandler
Metadaten-Handler OracleMetadataHandler
Record Handler OracleRecordHandler

Parameter für Einzelverbindungs-Handler

Parameter Beschreibung
default Erforderlich Die standardmäßige Verbindungszeichenfolge.
IsFIPSEnabled Optional. Legt fest, true wenn der FIPS Modus aktiviert ist. Der Standardwert ist false.

Die Einzelverbindungs-Handler unterstützen eine Datenbank-Instance und müssen einen default-Verbindungszeichenfolgenparameter bereitstellen. Alle anderen Verbindungszeichenfolgen werden ignoriert.

Der Connector unterstützt SSL basierte Verbindungen zu RDS Amazon-Instances. Die Support ist auf das Transport Layer Security (TLS) -Protokoll und auf die Authentifizierung des Servers durch den Client beschränkt. Gegenseitige Authentifizierung wird in Amazon nicht unterstütztRDS. Die zweite Zeile der Tabelle unten zeigt die Syntax für die VerwendungSSL.

Die folgende Beispieleigenschaft gilt für eine einzelne Oracle-Instance, die von einer Lambda-Funktion unterstützt wird.

Eigenschaft Wert
default oracle://jdbc:oracle:thin:${Test/RDS/Oracle}@//hostname:port/servicename
oracle://jdbc:oracle:thin:${Test/RDS/Oracle}@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS) (HOST=<HOST_NAME>)(PORT=))(CONNECT_DATA=(SID=))(SECURITY=(SSL_SERVER_CERT_DN=)))

Überlauf-Parameter

Das Lambda SDK kann Daten an Amazon S3 weitergeben. Alle Datenbank-Instances, auf die mit derselben Lambda-Funktion zugegriffen wird, werden an denselben Speicherort verschoben.

Parameter Beschreibung
spill_bucket Erforderlich Überlauf-Bucket-Name.
spill_prefix Erforderlich Schlüssel-Prefix für den Überlauf-Bucket.
spill_put_request_headers (Optional) Eine JSON kodierte Zuordnung von Anforderungsheadern und Werten für die Amazon S3 putObject S3-Anfrage, die zum Verschicken verwendet wird (z. B.). {"x-amz-server-side-encryption" : "AES256"} Weitere mögliche Header finden Sie PutObjectin der Amazon Simple Storage Service API Reference.

Datentypunterstützung

Die folgende Tabelle zeigt die entsprechenden Datentypen für JDBC Oracle und Arrow.

JDBC Oracle Arrow
Boolesch boolesch Bit
Ganzzahl N/A Tiny
Short smallint Smallint
Ganzzahl Ganzzahl Int
Long bigint Bigint
float float4 Float4
Double float8 Float8
Datum date DateDay
Zeitstempel Zeitstempel DateMilli
String Text Varchar
Bytes bytes Varbinary
BigDecimal numeric(p,s) Dezimal
ARRAY N.z. (siehe Hinweis) Auflisten

Partitionen und Splits

Partitionen werden verwendet, um zu bestimmen, wie Splits für den Konnektor generiert werden. Athena konstruiert eine synthetische Säule vom Typ varchar, die das Partitionierungsschema für die Tabelle darstellt, das dem Konnektor beim Generieren von Splits hilft. Der Konnektor ändert nicht die eigentliche Tabellendefinition.

Leistung

Oracle unterstützt native Partitionen. Der Athena-Oracle-Konnektor kann Daten von diesen Partitionen parallel abrufen. Wenn Sie sehr große Datenmengen mit einheitlicher Partitionsverteilung abfragen möchten, wird eine native Partitionierung dringend empfohlen. Die Auswahl einer Teilmenge von Spalten beschleunigt die Abfragelaufzeit erheblich und reduziert die gescannten Daten. Der Oracle-Konnektor ist aufgrund der Gleichzeitigkeit widerstandsfähig gegenüber Drosselung. Allerdings sind die Abfragelaufzeiten in der Regel lang.

Der Athena-Oracle-Konnektor führt einen Prädikat-Pushdown durch, um die von der Abfrage durchsuchten Daten zu reduzieren. Einfache Prädikate und komplexe Ausdrücke werden an den Konnektor übertragen, um die Menge der gescannten Daten zu reduzieren und die Laufzeit der Abfrageausführung zu verkürzen.

Prädikate

Ein Prädikat ist ein Ausdruck in der WHERE Klausel einer SQL Abfrage, der einen booleschen Wert ergibt und Zeilen auf der Grundlage mehrerer Bedingungen filtert. Der Athena-Oracle-Konnektor kann diese Ausdrücke kombinieren und sie direkt an Oracle weiterleiten, um die Funktionalität zu erweitern und die Menge der gescannten Daten zu reduzieren.

Die folgenden Athena-Oracle-Konnektor-Operatoren unterstützen Prädikat-Pushdown:

  • Boolean:, ODER AND NOT

  • Gleichheit:EQUAL, NOT _, _EQUAL, LESS _ LESS _OR_THAN, _EQUAL, THAN _ GREATER _OR_THAN, GREATER IS_ THAN EQUAL NULL

  • Arithmetik:,,,, ADD SUBTRACT MULTIPLY DIVIDE NEGATE

  • Andere: LIKE _PATTERN, IN

Beispiel für einen kombinierten Pushdown

Kombinieren Sie für erweiterte Abfragefunktionen die Pushdown-Typen wie im folgenden Beispiel:

SELECT * FROM my_table WHERE col_a > 10 AND ((col_a + col_b) > (col_c % col_d)) AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%');

Passthrough-Abfragen

Der Oracle-Connector unterstützt Passthrough-Abfragen. Passthrough-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.

Um Passthrough-Abfragen mit Oracle zu verwenden, können Sie die folgende Syntax verwenden:

SELECT * FROM TABLE( system.query( query => 'query string' ))

Mit der folgenden Beispielabfrage wird eine Abfrage an eine Datenquelle in Oracle weitergeleitet. Die Abfrage wählt alle Spalten in der customer Tabelle aus.

SELECT * FROM TABLE( system.query( query => 'SELECT * FROM customer' ))

Lizenzinformationen

Durch die Verwendung dieses Connectors erklären Sie sich mit der Einbindung von Komponenten von Drittanbietern einverstanden. Eine Liste dieser Komponenten finden Sie in der Datei pom.xml für diesen Connector, und Sie stimmen den Bedingungen der jeweiligen Drittanbieterlizenzen zu, die in der LICENSE.txt-Datei auf GitHub .com enthalten sind.

Weitere Ressourcen

Die neuesten Informationen zur JDBC Treiberversion finden Sie in der Datei pom.xml für den Oracle-Connector auf GitHub .com.

Weitere Informationen zu diesem Connector finden Sie auf der entsprechenden Website unter GitHub .com.