Ich habe die Redshift-Datenbank von Amazon als möglichen zukünftigen Ersatz für unser Data Warehouse untersucht. Meine Erfahrung war immer in der Verwendung von Dimensionsmodellierung und Ralph Kimballs Methoden, daher war es etwas seltsam zu sehen, dass Redshift keine Funktionen wie den seriellen Datentyp für das automatische Inkrementieren von Spalten unterstützt.
Es gibt jedoch diesen aktuellen Blog-Beitrag aus dem AWS Big Data-Blog über die Optimierung von Redshift für ein Sternschema: https://blogs.aws.amazon.com/bigdata/post/Tx1WZP38ERPGK5K/Optimizing-for-Star-Schemas -und-Interleaved-Sorting-on-Amazon-Redshift
Die Frage, die ich habe, ist, was die beste Vorgehensweise zum Laden eines Sternschemas in Redshift ist. Ich kann diese Antwort in keiner Redshift-Dokumentation finden.
Ich neige dazu, meine Dateien aus S3 in Staging-Tabellen zu importieren und dann SQL zu verwenden, um Transformationen wie Suchvorgänge durchzuführen und Ersatzschlüssel zu generieren, bevor sie in die Zieltabellen eingefügt werden.
Tun andere das gerade? Gibt es ein ETL-Tool, das das Geld wert ist, um dies zu vereinfachen?
quelle
Für ETL gibt es AWS Glue. Es ist ein verwalteter, serverloser ETL-Dienst, der unter anderem in Redshift geladen wird.
https://aws.amazon.com/glue/
quelle
Ich beschäftige mich derzeit mit einer ähnlichen Aufgabe. Es soll ein ETL-Prozessmodell erstellen und ein dimensionales Modell entwerfen. Ich habe viel recherchiert, um den besten Weg zu finden, und eine erstaunlich hilfreiche Quelle für Techniken gefunden, die wir bei der Arbeit mit MPP unbedingt anwenden sollten.
Um die Frage zu beantworten
Schauen Sie sich unbedingt diese Ressource an . Ich wette, Sie werden es unglaublich hilfreich finden. Es handelt sich um ein ~ 35-seitiges Dokument mit leistungsstarken Techniken, um die Verwendung von MPP-Spaltenspeichern optimal zu nutzen. Es unterstützt die Kommentare, die Sie mögen
Kommentar von Jon Scott
Ich hoffe, Sie finden es genauso nützlich wie ich
quelle
Ich denke, das Laden aus S3 ist ein gängiges Muster.
Wir mussten Eindeutigkeitsbeschränkungen durchsetzen, also haben wir uns entschieden, in Postgres zu schreiben und dann alle 10 Minuten neue Daten zu replizieren, um sie zu verschieben.
Wir verwenden https://github.com/uswitch/blueshift , um in Redshift zu laden.
quelle
Da Redshift eine Säulendatenbank ist, unterscheidet sich die Speicher- und Abfrageleistung von RDBMS-Modellen. Die Optimierung für eine Säulendatenbank ist ebenfalls unterschiedlich. Da normalerweise weniger Festplatten-E / A und weniger Daten von der Festplatte geladen werden, sind Abfragen schneller.
In Bezug auf den AWS-Blog-Beitrag, auf den Sie verweisen, haben Sie sich diese Empfehlungen angesehen und überlegt, welche Optionen für Ihre Daten für Verteilung, Schlüssel, Cursor, Workload-Management usw. am besten geeignet sind, und haben zumindest eine gute Vorstellung von dem Ansatz du würdest verwenden. Ich finde es einfacher, mit einer visuellen Darstellung zu arbeiten. Sie könnten ein schnelles und schmutziges DB-Diagramm in Betracht ziehen, das zeigt, wie Ihre vorhandenen Tabellen zu Redshift migrieren würden. Behandeln Sie die wichtigsten, um ein Gefühl dafür zu bekommen, wie viele Daten wohin gehen. Und ich würde auf jeden Fall die ODBC / JDBC-Treiber von Amazon verwenden. Das Laden großer Datenmengen kann in jedem Fall problematisch sein, geschweige denn das Wechseln zu einem anderen DB-Typ.
Was ETL / ELT betrifft, gibt es AWS Glue, wie andere Poster erwähnt haben. Und ja, es gibt eine Reihe von Tools, von denen einige kostenlos sind. Amazon verfügt über einen DB Best Practices Guide , der Ihnen ebenfalls helfen kann. Ein Tipp, den ich in anderen Foren gesehen habe, ist, Ihre Daten so roh wie möglich zu laden und die Transformationen in Redshift durchzuführen. Das würde Sie zu einem ELT-Prozess führen. Bei so vielen Optionen wäre es vielleicht hilfreich, einen Vergleich der beiden Methoden zu betrachten. Hier ist ein Blog-Artikel von Panopoly, in dem die Unterschiede erläutert werden. Er kann Ihnen bei der Entscheidung für einen Pfad helfen.
quelle
Amazon hat kürzlich einige Best Practices für ETL in Redshift veröffentlicht
https://aws.amazon.com/blogs/big-data/top-8-best-practices-for-high-performance-etl-processing-using-amazon-redshift/
In einer Präsentation zu diesem Thema, Tony Gibbs, empfiehlt AWS Solution Architect das folgende Muster für das Laden im UPSERT-Stil:
Daten von der Bühne einfügen
Wenn möglich, ziehen Sie DROP TABLE oder TRUNCATE DELETE vor, um Geisterzeilen zu vermeiden
Sehen Sie sich ein Video seines Vortrags und der Folien an .
In unserem Team laden wir normalerweise Daten direkt aus S3 mithilfe der SQL COPY- Anweisung in Redshift .
Und verwalten Sie alle unsere ETL die hervorragende Verwendung von Apache Airflow - Tool.
Wir verwenden auch Integrationsdienste wie Stich, die direkt in Redshift schreiben, und verwenden dann CREATE TABLE LIKE und SELECT INTO , um die Daten in ein anderes Schema zu verschieben.
quelle