Amazon Athena IBM Db2 AS/400 (Db2 iSeries)-Connector
Der Amazon-Athena-Konnektor für Db2 AS/400 ermöglicht es Amazon Athena, SQL-Abfragen auf Ihren IBM Db2 AS/400 (Db2 iSeries)-Datenbanken mit JDBC auszuführen.
Dieser Connector kann bei Glue-Datenkatalog als Verbundkatalog registriert werden. Er unterstützt in Lake Formation definierte Datenzugriffskontrollen auf Katalog-, Datenbank-, Tabellen-, Spalten-, Zeilen- und Tagebene. Dieser Konnektor verwendet Glue Connections, um die Konfigurationseigenschaften in Glue zu zentralisieren.
Voraussetzungen
Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Weitere Informationen finden Sie unter Eine Datenquellenverbindung erstellen oder Verwenden Sie AWS Serverless Application Repository, um einen Datenquellen-Konnektor bereitzustellen.
Richten Sie eine VPC und eine Sicherheitsgruppe ein, bevor Sie diesen Konnektor verwenden. Weitere Informationen finden Sie unter Erstellen einer VPC für einen Datenquellen-Connector oder eine AWS Glue-Verbindung.
Einschränkungen
-
Schreiboperationen wie DDL 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.
-
Datums- und Zeitstempeldatentypen in Filterbedingungen müssen in geeignete Datentypen umgewandelt werden.
Bedingungen
Die folgenden Begriffe beziehen sich auf den Db2-AS/400-Konnektor.
-
Datenbank-Instance – Jede Instance einer Datenbank, die On-Premises, in Amazon EC2 oder auf Amazon RDS bereitgestellt wird.
-
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-AWS Glue-Katalog, der bei Athena registriert ist und ein erforderliches Präfix für die
connection_string-Eigenschaft darstellt. -
Multiplex-Handler – Ein Lambda-Handler, der mehrere Datenbankverbindungen akzeptieren und verwenden kann.
Parameter
Verwenden Sie die Parameter in diesem Abschnitt, um den Db2-AS/400-Konnektor zu konfigurieren.
Anmerkung
Athena-Datenquellenkonnektoren, die am 3. Dezember 2024 und später erstellt wurden, verwenden AWS Glue-Verbindungen.
Die unten aufgeführten Parameternamen und Definitionen beziehen sich auf Athena-Datenquellen-Connectors, die vor dem 3. Dezember 2024 erstellt wurden. Diese können von ihren entsprechenden AWS Glue-Verbindungseigenschaften abweichen. Verwenden Sie ab dem 3. Dezember 2024 die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellen-Connectors manuell bereitstellen.
Wir empfehlen, dass Sie einen DB2-AS/400-Connector mithilfe eines Glue-Connections-Objekts konfigurieren. Setzen Sie dazu die glue_connection-Umgebungsvariable des Db2-AS/400-Konnektors Lambda auf den Namen der zu verwendenden Glue-Connection.
Eigenschaften von Glue Connections
Verwenden Sie den folgenden Befehl, um das Schema für ein Glue-Connection-Objekt zu erhalten. Dieses Schema enthält alle Parameter, mit denen Sie Ihre Verbindung steuern können.
aws glue describe-connection-type --connection-type DB2AS400
Lambda-Umgebungseigenschaften
-
glue_connection – Gibt den Namen der Glue-Connection an, die dem Verbund-Connector zugeordnet ist.
-
casing_mode – (Optional) Gibt an, wie bei Schema- und Tabellennamen die Groß- und Kleinschreibung behandelt werden soll. Der
casing_mode-Parameter verwendt die folgenden Werte, um das Verhalten der Groß-/Kleinschreibung festzulegen:-
none – Ändern Sie die Groß- und Kleinschreibung der angegebenen Schema- und Tabellennamen nicht. Dies ist die Standardeinstellung für Konnektoren, denen eine Glue-Connection zugeordnet ist.
-
upper – Großschreibung aller angegebenen Schema- und Tabellennamen.
-
lower – Kleinschreibung aller angegebenen Schema- und Tabellennamen.
-
Anmerkung
-
Alle Konnektoren, die Glue Connections verwenden, müssen AWS Secrets Manager zum Speichern von Anmeldeinformationen verwenden.
-
Der mit Glue-Connection erstellte Db2-AS/400-Connector unterstützt die Verwendung eines Multiplexing-Handlers nicht.
-
Der mit Glue-Connection erstellte Db2-AS/400--Connector unterstützt nur
ConnectionSchemaVersion2.
Verbindungszeichenfolge
Verwenden Sie eine JDBC-Verbindungszeichenfolge im folgenden Format, um eine Verbindung zu einer Datenbank-Instance herzustellen.
db2as400://${jdbc_connection_string}
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 | Db2MuxCompositeHandler |
| Metadaten-Handler | Db2MuxMetadataHandler |
| Record Handler | Db2MuxRecordHandler |
Multiplex-Handler-Parameter
| Parameter | Beschreibung |
|---|---|
$ |
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 mydb2as400catalog ist, dann lautet der Name der Umgebungsvariablen mydb2as400catalog_connection_string. |
default |
Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der Katalog lambda:${AWS_LAMBDA_FUNCTION_NAME} ist. |
Die folgenden Beispieleigenschaften gelten für eine Db2-MUX-Lambda-Funktion, die zwei Datenbank-Instances unterstützt: db2as4001 (die Standardeinstellung) und db2as4002.
| Eigenschaft | Wert |
|---|---|
default |
db2as400://jdbc:as400:// |
db2as400_catalog1_connection_string |
db2as400://jdbc:as400://db2as4001. |
db2as400_catalog2_connection_string |
db2as400://jdbc:as400://db2as4002. |
db2as400_catalog3_connection_string |
db2as400://jdbc:as400:// |
Bereitstellen von Anmeldeinformationen
Um einen Benutzernamen und ein Kennwort für Ihre Datenbank in Ihrer JDBC-Verbindungszeichenfolge anzugeben, können Sie Eigenschaften von Verbindungszeichenfolgen oder AWS Secrets Manager verwenden.
-
Verbindungszeichenfolge – Ein Benutzername und ein Kennwort 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 fest codierten Secrets nach AWS Secrets Manager finden Sie unter Verschieben von fest codierten Secrets nach AWS Secrets Manager im AWS Secrets Manager-Benutzerhandbuch.
-
AWS Secrets Manager – Um das Athena-Federated-Query-Feature mit AWS Secrets Manager zu verwenden, sollte die mit Ihrer Lambda-Funktion verbundene VPC über einen Internetzugang
oder einen VPC-Endpunkt verfügen, um eine Verbindung zu Secrets Manager herzustellen. Sie können den Namen eines Secrets in AWS Secrets Manager in Ihrer JDBC-Verbindungszeichenfolge eingeben. Der Konnektor ersetzt den geheimen Namen durch
username- undpassword-Werte von Secrets Manager.Für Amazon RDS-Datenbank-Instances ist diese Unterstützung eng integriert. Wenn Sie Amazon RDS verwenden, empfehlen wir dringend die Verwendung von AWS Secrets Manager und Wechsel der Anmeldeinformationen. Wenn Ihre Datenbank Amazon RDS nicht verwendet, speichern Sie die Anmeldeinformationen als JSON im folgenden Format:
{"username": "${username}", "password": "${password}"}
Beispiel einer Verbindungszeichenfolge mit einem geheimen Namen
Die folgende Zeichenfolge hat den geheimen Namen ${secret_name}.
db2as400://jdbc:as400://<ip_address>;<properties>;:${<secret_name>};
Der Konnektor verwendet den geheimen Namen, um Secrets abzurufen und den Benutzernamen und das Kennwort bereitzustellen, wie im folgenden Beispiel gezeigt.
db2as400://jdbc:as400://<ip_address>;user=<username>;password=<password>;<properties>;
Verwenden eines einzelnen Verbindungs-Handlers
Sie können die folgenden Einzelverbindungs-Metadaten und Datensatz-Handler verwenden, um eine Verbindung zu einer einzelnen Db2-AS/400-Instance herzustellen.
| Handler-Typ | Klasse |
|---|---|
| Composite Handler | Db2CompositeHandler |
| Metadaten-Handler | Db2MetadataHandler |
| Record Handler | Db2RecordHandler |
Parameter für Einzelverbindungs-Handler
| Parameter | Beschreibung |
|---|---|
default |
Erforderlich Die standardmäßige Verbindungszeichenfolge. |
Die Einzelverbindungs-Handler unterstützen eine Datenbank-Instance und müssen einen default-Verbindungszeichenfolgenparameter bereitstellen. Alle anderen Verbindungszeichenfolgen werden ignoriert.
Die folgende Beispieleigenschaft gilt für eine einzelne Db2-AS/400-Instance, die von einer Lambda-Funktion unterstützt wird.
| Eigenschaft | Wert |
|---|---|
default |
db2as400://jdbc:as400:// |
Überlauf-Parameter
Das Lambda-SDK kann Daten an Amazon S3 übertragen. 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-codierte Zuordnung von Anforderungsheadern und Werten für die Amazon-S3-putObject-Anforderung, die für den Überlauf verwendet wird (z. B. {"x-amz-server-side-encryption" :
"AES256"}). Andere mögliche Header finden Sie unter PutObject in der API-Referenz zu Amazon Simple Storage Service. |
Datentypunterstützung
Die folgende Tabelle zeigt die entsprechenden Datentypen für JDBC und Apache Arrow.
| Db2 AS/400 | Arrow |
|---|---|
| CHAR | VARCHAR |
| VARCHAR | VARCHAR |
| DATUM | DATEDAY |
| TIME | VARCHAR |
| TIMESTAMP (ZEITSTEMPEL) | DATEMILLI |
| DATETIME | DATEMILLI |
| BOOLEAN | BOOL |
| SMALLINT | SMALLINT |
| INTEGER | INT |
| BIGINT | BIGINT |
| DECIMAL | DECIMAL |
| REAL | FLOAT8 |
| DOUBLE | FLOAT8 |
| DECFLOAT | FLOAT8 |
Partitionen und Splits
Eine Partition wird durch eine oder mehrere Partitionsspalte(n) vom Typ varchar dargestellt. Der Db2-AS/400-Konnektor erstellt Partitionen mithilfe der folgenden Organisationsschemas.
-
Nach Hash verteilen
-
Nach Bereich partitionieren
-
Nach Dimensionen organisieren
Der Konnektor ruft Partitionsdetails wie die Anzahl der Partitionen und den Spaltennamen aus einer oder mehreren Db2-AS/400-Metadatentabellen ab. Splits werden basierend auf der Anzahl der identifizierten Partitionen erstellt.
Leistung
Verwenden Sie zur Verbesserung der Leistung das Prädikat-Pushdown für Abfrage von Athena, wie in den folgenden Beispielen.
SELECT * FROM "lambda:<LAMBDA_NAME>"."<SCHEMA_NAME>"."<TABLE_NAME>" WHERE integercol = 2147483647
SELECT * FROM "lambda:<LAMBDA_NAME>"."<SCHEMA_NAME>"."<TABLE_NAME>" WHERE timestampcol >= TIMESTAMP '2018-03-25 07:30:58.878'
Pass-Through-Abfragen
Der Db2-AS/400-Connector unterstützt Pass-Through-Abfragen. Pass-Through-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.
Um Pass-Through-Abfragen mit Db2 AS/400 zu verwenden, können Sie die folgende Syntax verwenden:
SELECT * FROM TABLE( system.query( query => 'query string' ))
Die folgende Beispielabfrage gibt eine Abfrage an eine Datenquelle in Db2 AS/400 weiter. Die Abfrage wählt alle Spalten in der customer-Tabelle aus und begrenzt die Ergebnisse auf 10.
SELECT * FROM TABLE( system.query( query => 'SELECT * FROM customer LIMIT 10' ))
Lizenzinformationen
Durch die Verwendung dieses Konnektors erkennen Sie die Aufnahme von Komponenten von Drittanbietern an. Eine Liste dieser Komponenten finden Sie in der pom.xml
Weitere Ressourcen
Aktuelle Informationen zur JDBC-Treiberversion finden Sie in der pom.xml
Weitere Informationen zu diesem Konnektor finden Sie unter der entsprechenden Seite