Erfassen und Abfragen von halbstrukturierten Daten in Amazon Redshift - Amazon Redshift

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.

Erfassen und Abfragen von halbstrukturierten Daten in Amazon Redshift

Durch die Unterstützung halbstrukturierter Daten in Amazon Redshift können Sie halbstrukturierte Daten in Ihren Amazon-Redshift-Data-Warehouses erfassen und speichern. Mithilfe des SUPER-Datentyps und der PartiQL-Sprache erweitert Amazon Redshift die Data-Warehouse-Funktion, um sowohl SQL- als auch NoSQL-Datenquellen zu integrieren. Auf diese Weise ermöglicht Amazon Redshift effiziente Analysen von relationalen und halbstrukturierten gespeicherten Daten wie JSON.

Amazon Redshift unterstützt halbstrukturierte Daten auf zwei Weisen: den SUPER-Datentyp und Amazon Redshift Spectrum.

Verwenden Sie den SUPER-Datentyp, wenn Sie kleine Batches von JSON-Daten mit geringer Latenz einfügen oder aktualisieren müssen. Verwenden Sie auch SUPER, wenn Ihre Abfrage starke Konsistenz, vorhersehbare Abfrageleistung, komplexe Abfrageunterstützung und Benutzerfreundlichkeit mit sich entwickelnden Schemata und schemalosen Daten erfordert.

Verwenden Sie Amazon Redshift Spectrum dagegen mit einem offenen Dateiformat, wenn Ihre Datenabfrage die Integration mit anderen AWS Diensten und mit Daten erfordert, die hauptsächlich zu Archivierungszwecken in Amazon S3 gespeichert werden.

Anwendungsfälle für den SUPER-Datentyp

Die Unterstützung halbstrukturierter Daten mithilfe des SUPER-Datentyps in Amazon Redshift bietet überlegene Leistung, Flexibilität und Benutzerfreundlichkeit. Anhand der folgenden Anwendungsfälle soll demonstriert werden, wie Sie die Unterstützung für halbstrukturierte Daten mit SUPER nutzen können.

Schnelles und flexibles Einfügen von JSON-Daten – Amazon Redshift unterstützt schnelle Transaktionen, die JSON parsen und als SUPER-Wert speichern können. Die Insert-Transaktionen können bis zu fünf Mal schneller ausgeführt werden als die gleichen Einfügungen in Tabellen, bei denen die Attribute von SUPER in herkömmliche Spalten aufgeteilt sind. Angenommen, die eingehenden JSON-Daten haben die Form “a”:.., “b”:.., “c”“..., ...}. Sie können das Einfügen um ein Vielfaches beschleunigen, indem Sie die eingehenden JSON-Daten in einer Tabelle TJ mit einer einzigen SUPER-Spalte S speichern, anstatt sie in einer herkömmlichen Tabelle TR mit den Spalten ”a’, ‘b’, “c’ usw. zu speichern. Wenn die JSON-Daten Hunderte von Attributen enthalten, wird der Leistungsvorteil des SUPER-Datentyps beträchtlich.

Außerdem benötigt der SUPER-Datentyp kein reguläres Schema. Sie müssen die eingehenden JSON-Daten vor dem Speichern nicht analysieren und bereinigen. Angenommen, eingehende JSON-Daten haben ein Zeichenfolgeattribut „c“ und andere ein Integerattribut „c“, ohne den SUPER-Datentyp. In diesem Fall müssen Sie entweder die Spalten c_string und c_int trennen oder die Daten bereinigen. Im Gegensatz dazu werden beim SUPER-Datentyp alle JSON-Daten während der Aufnahme ohne Informationsverlust gespeichert. Später können Sie die PartiQL-Erweiterung von SQL verwenden, um die Informationen zu analysieren.

Flexible Abfragen für die Erkennung – Nachdem Sie Ihre halbstrukturierten Daten (z. B. JSON) in einem SUPER-Datenwert gespeichert haben, können Sie sie abfragen, ohne ein Schema vorschreiben zu müssen. Sie können die dynamische Typisierung von PartiQL und Lax-Semantik verwenden, um Ihre Abfragen auszuführen und die tief verschachtelten Daten zu ermitteln, die Sie benötigen, ohne dass Sie vor der Abfrage ein Schema vorschreiben müssen.

Flexible Abfragen ETL-Operationen (Extract, Transform, Load) in konventionelle materialisierte Ansichten – Nachdem Sie Ihre schemalosen und halbstrukturierten Daten in SUPER gespeichert haben, können Sie materialisierte PartiQL-Ansichten verwenden, um die Daten zu analysieren und in materialisierte Ansichten aufzuteilen.

Die materialisierten Ansichten mit den aufgeteilten Daten sind ein gutes Beispiel für Leistungs- und Nutzbarkeitsvorteile für klassische Analysefälle. Wenn Sie Analysen für die aufgeteilten Daten durchführen, bietet die spaltenförmige Organisation der materialisierten Ansichten von Amazon Redshift eine bessere Leistung. Darüber hinaus können Benutzer und Business Intelligence (BI)-Tools, die ein konventionelles Schema für aufgenommene Daten erfordern, Ansichten (entweder materialisiert oder virtuell) als konventionelle Schemadarstellung der Daten verwenden.

Nachdem Ihre mit PartiQL materialisierten Ansichten die in JSON oder SUPER gefundenen Daten in konventionelle spaltenförmige materialisierte Ansichten extrahiert haben, können Sie die materialisierten Ansichten abfragen. Weitere Informationen über die Funktionsweise des SUPER-Datentyps mit materialisierten Ansichten finden Sie unter Verwenden des SUPER-Datentyps mit materialisierten Ansichten.

Sie können dynamische Datenmaskierungsrichtlinien auf scalar-Werte in den Pfaden von Spalten des Typs SUPER anwenden. Weitere Informationen zur dynamischen Datenmaskierung finden Sie unter Dynamische Datenmaskierung. Informationen zur Verwendung der dynamischen Datenmaskierung mit dem SUPER-Datentyp finden Sie unter Verwendung dynamischer Datenmaskierung mit Pfaden des Datentyps SUPER. (Vorschau)

Informationen zum SUPER-Datentyp finden Sie unter Typ SUPER.

Weitere Informationen zu der Verwendung des SUPER-Datentyps finden Sie in den Unterabschnitten zu diesem Thema, beginnend mit SUPER-Beispieldatensatz.

Konzepte zur Verwendung des SUPER-Datentyps

Im Folgenden finden Sie einige Konzepte zum SUPER-Datentyp in Amazon Redshift.

Verstehen des SUPER-Datentyps in Amazon Redshift – Der SUPER-Datentyp ist ein Amazon-Redshift-Datentyp, der die Speicherung von schemalosen Arrays und Strukturen ermöglicht, die Amazon-Redshift-Skalare und möglicherweise verschachtelte Arrays und Strukturen enthalten. Der SUPER-Datentyp kann nativ verschiedene Formate von halbstrukturierten Daten speichern, z. B. JSON oder Daten, die aus dokumentorientierten Quellen stammen. Sie können eine neue SUPER-Spalte hinzufügen, um halbstrukturierte Daten zu speichern und Abfragen zu schreiben, die auf die SUPER-Spalte zugreifen, zusammen mit den üblichen skalaren Spalten. Weitere Informationen zum SUPER-Datentyp finden Sie unter Typ SUPER.

JSON ohne Schema in SUPER aufnehmen – Mit dem flexiblen halbstrukturierten SUPER-Datentyp kann Amazon Redshift JSON ohne Schema in einen SUPER–Wert aufnehmen. Amazon Redshift kann beispielsweise den JSON-Wert [10.5, "first"] in einen SUPER-Wert [10.5, ‘first’] aufnehmen, d. h. ein Array, das die Amazon-Redshift-Dezimalzahl 10.5 und varchar ‘first’ enthält. Amazon Redshift kann JSON mithilfe des Befehls COPY oder der JSON-Parse-Funktion wie json_parse('[10.5, "first"]') in einen SUPER-Wert umwandeln. Sowohl COPY als auch json_parse erfassen JSON standardmäßig mit strikter Parsing-Semantik. Sie können auch SUPER-Werte einschließlich Arrays und Strukturen erstellen, indem Sie die Datenbankdaten selbst verwenden.

Die SUPER-Spalte erfordert keine Schemaänderungen, während die unregelmäßigen Strukturen von schemalosem JSON aufgenommen werden. Wenn Sie beispielsweise einen Clickstream analysieren, speichern Sie zunächst in der SUPER-Spalte „Click“-Strukturen mit den Attributen „IP“ und „Zeit“. Sie können ein Attribut „Kunden-ID“ hinzufügen, ohne Ihr Schema zu ändern, um solche Änderungen aufzunehmen.

Das native Format, das für den SUPER-Datentyp verwendet wird, ist ein Binärformat, das weniger Platz benötigt als der JSON-Wert in seiner Textform. Dies ermöglicht eine schnellere Erfassung und Laufzeitverarbeitung von SUPER-Werten bei der Abfrage.

SUPER-Daten mit PartiQL abfragen — PartiQL ist eine abwärtskompatible Erweiterung von SQL-92, die derzeit von vielen Diensten verwendet wird. AWS Mit der Verwendung von PartiQL verbinden vertraute SQL-Konstrukte nahtlos den Zugriff auf die klassischen, tabellarischen SQL-Daten und die halbstrukturierten Daten von SUPER. Sie können Objekt- und Array-Navigation und unnest-Arrays durchführen. PartiQL erweitert die SQL-Standardsprache, um verschachtelte und mehrwertige Daten deklarativ auszudrücken und zu verarbeiten.

PartiQL ist eine Erweiterung von SQL, bei der verschachtelte und schemalose Daten aus SUPER-Spalten als First-Class-Objekte gelten. PartiQL erfordert nicht, dass alle Abfrageausdrücke bei der Abfragekompilierung typgeprüft werden. Mit diesem Ansatz können Abfrageausdrücke, die den SUPER-Datentyp enthalten, während der Abfrageausführung dynamisch typisiert werden, wenn auf die tatsächlichen Datentypen innerhalb der SUPER-Spalten zugegriffen wird. Außerdem arbeitet PartiQL in einem Lax-Modus, in dem Typ-Inkonsistenzen keine Fehler verursachen, sondern Nullwerte zurückgeben. Die Kombination aus schemaloser und Lax-Abfrageverarbeitung macht PartiQL ideal für ELT-Anwendungen (Extract, Load, Transfer), bei denen Ihre SQL-Abfrage die JSON-Daten auswertet, die in den SUPER-Spalten aufgenommen werden.

Integration mit Redshift Spectrum – Amazon Redshift unterstützt mehrere Aspekte von PartiQL beim Ausführen von Redshift-Spectrum-Abfragen über JSON, Parquet und andere Formate, die verschachtelte Daten aufweisen. Redshift Spectrum unterstützt nur verschachtelte Daten mit Schemata. Mit Redshift Spectrum können Sie beispielsweise deklarieren, dass Ihre JSON-Daten ein Attributnested_schemaful_example in einem Schema ARRAY<STRUCT<a:INTEGER, b:DECIMAL(5,2)>> haben. Das Schema dieses Attributs bestimmt, dass die Daten immer ein Array enthalten, das eine Struktur mit Integer a und Dezimalwert b enthält. Wenn sich die Daten so ändern, dass sie weitere Attribute enthalten, ändert sich auch der Typ. Im Gegensatz dazu benötigt der SUPER-Datentyp kein Schema. Sie können Arrays mit Strukturelementen speichern, die unterschiedliche Attribute oder Typen haben. Außerdem können einige Werte außerhalb von Arrays gespeichert werden.

Weitere Informationen zu Funktionen, die den SUPER-Datentyp unterstützen, finden Sie im Folgenden:

Überlegungen für SUPER-Daten

Bei der Arbeit mit SUPER-Daten sollten Sie Folgendes berücksichtigen:

  • Verwenden Sie Version 1.2.50 des JDBC-Treibers, eine Version des ODBC-Treibers ab 1.4.17 und eine Version des Amazon-Redshift-Python-Treibers ab 2.0.872.

    Informationen zu JDBC-Treibern finden Sie unter Konfigurieren einer JDBC-Verbindung.

    Informationen zu ODBC-Treibern finden Sie unter Konfigurieren einer ODBC-Verbindung.

  • Die in den folgenden Themen verwendeten Schemabeispiele finden Sie unter SUPER-Beispieldatensatz.

  • Alle SQL-Codebeispiele, die in den folgenden Themen verwendet werden, sind mit demselben S3-Präfix zum Download enthalten. Dazu gehören die Datendefinitionssprache (Data Definition Language, DDL) und COPY-Anweisungen sowie bestimmte geänderte TPC-H-Abfragen, die mit SUPER funktionieren.

    Führen Sie einen der folgenden Schritte aus, um die SQL-Dateien anzuzeigen oder herunterzuladen:

    • Laden Sie die SQL-Datei für das SUPER-Tutorial und die TPC-H-Datei herunter.

    • Führen Sie mit der Amazon S3 CLI den folgenden Befehl aus. Sie können Ihren eigenen Zielpfad verwenden.

      aws s3 cp s3://redshift-downloads/semistructured/tutorialscripts/semistructured-tutorial.sql /target/path aws s3 cp s3://redshift-downloads/semistructured/tutorialscripts/super_tpch_queries.sql /target/path

Weitere Informationen zu SUPER-Konfigurationen finden Sie unter SUPER-Konfigurationen.