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
Warum nicht verwenden Amazon Redshift, wenn wir sprechen über einen modernen Big Data DWH diskutiert? – Guy
sollten Sie die Lautstärke Ihres Fakts schreiben und abblenden – jangorecki