2015-06-13 12 views
5

Ich entwerfe ein neues Hadoop-basiertes Data Warehouse mit Hive und ich frage mich, ob die klassischen Star/Snowflake-Schemas in diesem Kontext noch ein "Standard" waren.Ist für ein Big-Data-Warehouse noch ein Sternschema notwendig?

Big Data-Systeme umfassen Redundanz, so dass voll normalisierte Schemas normalerweise schlechte Leistung haben (zum Beispiel in NoSQL-Datenbanken wie HBase oder Cassandra).

Ist noch eine Best Practice, die Star-Schema Data Warehouses mit Bienenstock machen?

Ist es besser, reihenweite (reduktive) Tabellen zu entwerfen, indem neue Spaltenformate verwendet werden?

+0

Warum nicht verwenden Amazon Redshift, wenn wir sprechen über einen modernen Big Data DWH diskutiert? – Guy

+0

sollten Sie die Lautstärke Ihres Fakts schreiben und abblenden – jangorecki

Antwort

3

Beim Entwickeln für NoSQL-Datenbanken neigen Sie dazu, für eine bestimmte Abfrage zu optimieren, indem Sie Teile der Abfrage vorverarbeiten und so eine denormalisierte Kopie der Daten speichern (wenn auch abomessiert auf abfragebasierte Weise).

Das Sternschema hingegen ist eine Allzweck-Denormalisierung, die normalerweise angemessen ist.

Wenn Sie planen, mit Hive zu arbeiten, verwenden Sie es wirklich nicht für die Optimierung, sondern für die allgemeine Zweckmäßigkeit (?) Von SQL und als solches würde ich mir vorstellen, dass das Sternschema immer noch angemessen ist. Für eine NoSQL-Datenbank mit einer Nicht-SQL-Schnittstelle würde ich jedoch vorschlagen, dass Sie ein abfragebedingteres Design verwenden.

1

Joins sind böse. Insbesondere auf Hadoop, wo wir die Datenkoordination nicht garantieren können, insbesondere wenn wir zwei große Tabellen verbinden müssen. Dies ist einer der Unterschiede zwischen Hadoop und einem traditionellen MPP wie Teradata, Greenplum usw. In einem MPP verteile ich meine Daten basierend auf einem Hash-Schlüssel gleichmäßig auf alle Knoten in meinem Cluster. Die relevanten Zeilen für die Tabelle "order_item" und "order_item" würden auf den gleichen Knoten in meinem Cluster landen, was zumindest den Datentransfer über das Netzwerk eliminieren würde. In Hadoop würden Sie die order_item-Daten in der Auftragstabelle verschachteln, wodurch Joins überflüssig werden.

Wenn Sie auf der anderen Seite eine kleine Nachschlage-/Dimensionstabelle und eine große Faktentabelle haben, können Sie die kleine Tabelle über alle Knoten in Ihrem Cluster übertragen, wodurch die Notwendigkeit einer Netzwerkübertragung entfällt.

Zusammenfassend sind Sternschemata immer noch relevant, aber hauptsächlich aus Sicht der logischen Modellierung. Physikalisch ist es vielleicht besser, die Denormalisierung noch weiter zu verbessern, um eine große, säulenförmige komprimierte und verschachtelte Faktentabelle zu erstellen.

Ich habe eine volle Blog-Post geschrieben, der den Zweck und den Nutzen von dimensional models on Hadoop and Big Data technologies

Verwandte Themen