Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Primärschlüssel und Indizes in der Hive-Abfragesprache sind möglich oder nicht?

Die Hive-Indizierung wurde in Hive 0.7.0 (HIVE-417) eingeführt und in Hive 3.0 (HIVE-18448) entfernt. Bitte lesen Sie die Kommentare in diesem Jira. Die Funktion war in Hive völlig nutzlos. Diese Indizes waren zu teuer für Big Data, RIP.

Ab Hive 2.1.0 (HIVE-13290) Hive bietet Unterstützung für nicht validierte Primär- und Fremdschlüsseleinschränkungen . Diese Einschränkungen werden nicht validiert, ein Upstream-System muss die Datenintegrität sicherstellen, bevor sie in Hive geladen werden. Diese Einschränkungen sind nützlich für Tools, die ER-Diagramme und Abfragen generieren. Auch solche nicht validierten Einschränkungen sind als Selbstdokumentation nützlich. Sie können leicht herausfinden, was ein PK sein soll, wenn die Tabelle eine solche Einschränkung hat.

In der Oracle-Datenbank Unique werden PK- und FK-Einschränkungen durch Indizes unterstützt, sodass sie schnell arbeiten können und wirklich nützlich sind. Aber so funktioniert Hive nicht und dafür wurde es nicht entwickelt.

Ein ganz normales Szenario ist, wenn Sie eine sehr große Datei mit halbstrukturierten Daten in HDFS geladen haben. Das Erstellen eines Index darauf ist zu teuer und ohne Index zur Überprüfung der PK-Verletzung ist es nur möglich, alle Daten zu scannen. Und normalerweise können Sie in BigData keine Einschränkungen erzwingen. Upstream-Prozesse können sich um die Datenintegrität und -konsistenz kümmern, aber dies garantiert nicht, dass Sie in Hive in einigen großen Tabellen, die aus verschiedenen Quellen geladen werden, letztendlich keine PK-Verletzung haben.

Einige Dateispeicherformate wie ORC verfügen über interne leichte „Indizes“, um die Filterung zu beschleunigen und Prädikat-Push-Down (PPD) zu ermöglichen. Mit solchen Indizes werden keine PK- und FK-Einschränkungen implementiert. Dies ist nicht möglich, da Sie normalerweise viele solcher Dateien haben können, die zu derselben Tabelle in Hive gehören, und Dateien sogar unterschiedliche Schemas haben können. Hive wurde für Petabytes erstellt und Sie können Petabytes in einem einzigen Lauf verarbeiten, Daten können halbstrukturiert sein, Dateien können unterschiedliche Schemata haben. Hadoop unterstützt keine zufälligen Schreibvorgänge, was zu weiteren Komplikationen und Kosten führt, wenn Sie Indizes neu erstellen möchten.