sql >> Database teknologi >  >> RDS >> Oracle

Er primære nøgler og indekser i Hive-forespørgselssprog mulig eller ej?

Hive-indeksering blev introduceret i Hive 0.7.0 (HIVE-417) og fjernet i Hive 3.0 (HIVE-18448). Læs venligst kommentarer i denne Jira. Funktionen var fuldstændig ubrugelig i Hive. Disse indekser var for dyre til big data, RIP.

Fra Hive 2.1.0 (HIVE-13290) Hive inkluderer understøttelse af ikke-validerede primære og fremmede nøglebegrænsninger . Disse begrænsninger er ikke validerede, et upstream-system skal sikre dataintegritet, før det indlæses i Hive. Disse begrænsninger er nyttige til værktøjer, der genererer ER-diagrammer og forespørgsler. Sådanne ikke-validerede begrænsninger er også nyttige som selvdokumentation. Du kan nemt finde ud af, hvad der formodes at være en PK, hvis tabellen har en sådan begrænsning.

I Oracle-databasen Unique er PK- og FK-begrænsninger understøttet af indekser, så de kan arbejde hurtigt og er virkelig nyttige. Men det er ikke sådan Hive fungerer, og hvad det er designet til.

Helt normalt scenarie er, når du indlæste en meget stor fil med semi-strukturerede data i HDFS. At bygge et indeks på det er for dyrt og uden indeks for at kontrollere PK-overtrædelse er det kun muligt at scanne alle data. Og normalt kan du ikke håndhæve begrænsninger i BigData. Upstream-processen kan tage sig af dataintegritet og konsistens, men dette garanterer ikke, at du endelig ikke vil have PK-overtrædelse i Hive i en eller anden stor tabel indlæst fra forskellige kilder.

Nogle fillagringsformater som ORC har interne letvægts-"indekser" for at fremskynde filtrering og aktivere prædikat-push-down (PPD), ingen PK- og FK-begrænsninger er implementeret ved hjælp af sådanne indekser. Dette kan ikke lade sig gøre, fordi du normalt kan have mange sådanne filer, der hører til den samme tabel i Hive, og filer kan endda have forskellige skemaer. Hive oprettet til petabytes, og du kan behandle petabytes i en enkelt kørsel, data kan være semi-struktureret, filer kan have forskellige skemaer. Hadoop understøtter ikke tilfældige skrivninger, og dette tilføjer flere komplikationer og omkostninger, hvis du vil genopbygge indekser.




  1. Sådan undslipper du spørgsmålstegn (?) med Spring JpaRepository

  2. Har du lov til at bruge tal som tabelnavne i MySQL?

  3. MySQL ATAN() Funktion – Returner buetangensen for en værdi (eller værdier)

  4. MariaDB JSON_OBJECTAGG() Forklaret