# Índex invers

* No s'ha de confondre amb Índex invertit.
Els sistemes de gestió de bases de dades proporcionen múltiples tipus d’ índexs per millorar el rendiment i la integritat de les dades en diverses aplicacions. Els tipus d’índex inclouen arbres b (b-trees), bitmaps, i arbres r (r-trees).
En els sistemes de gestió de bases de dades, una estratègia d’ índex de clau inversa inverteix el valor de la clau abans d’introduir-lo a l’ índex. Per exemple, el valor 24538 es converteix en 83542 a l'índex. La inversió del valor de la clau és particularment útil per indexar dades com ara els números de seqüència, on cada valor de clau nou és superior al valor anterior, és a dir, els valors augmenten de manera monòtona. Els índexs de claus inverses han adquirit una importància especial en sistemes de processament de transaccions de gran volum, ja que redueixen la contenció per blocs d’ índexs.

## Creació de dades

Els índexs de clau inversa utilitzen estructures d’arbre b, però preprocessen els valors de les claus abans d’inserir-los. Simplificant, els arbres b situen valors similars en un bloc d'índex únic, per exemple, emmagatzemant 24538 al mateix bloc que 24539. Això els fa eficients tant per buscar un valor específic com per trobar valors dins d’un interval. Tanmateix, si l'aplicació insereix valors seqüencialment, cada inserció ha de tenir accés al bloc més nou de l'índex per afegir el nou valor. Si molts usuaris intenten inserir-los al mateix temps, tots han d’escriure en aquest bloc i han de posar-se en línia, frenant l’aplicació. Això és particularment un problema a les bases de dades agrupades, que poden requerir que es copiï el bloc de la memòria d’un ordinador a un altre per permetre al següent usuari realitzar la seva inserció.
Si s'inverteix la clau, es distribueixen nous valors similars a tot l’índex en lloc de concentrar-los en un bloc de fulles. Això significa que 24538 apareix al mateix bloc que 14538 mentre que 24539 passa a un bloc diferent, eliminant aquesta causa de contenció . (Com que el 14538 s'hauria creat molt abans del 24538, les seves insercions no interfereixen entre elles.)

## Consulta de dades

Els índexs inversos són tan eficients com els índexs invertits per trobar valors específics, tot i que no són útils per a consultes d’interval. Les consultes de rang són poc freqüents per a valors artificials com ara els números de seqüència. Quan es busca l’índex, el processador de consultes només inverteix l’objectiu de cerca abans de buscar-lo.

## Supressió de dades

Normalment, les aplicacions suprimeixen les dades més antigues de mitjana abans de suprimir les dades més recents. Per tant, les dades amb nombres de seqüència més baixos solen anar abans que aquells amb valors més alts. A mesura que passa el temps, en els arbres b estàndard, els blocs d'índex per a valors inferiors acaben contenint pocs valors, amb un augment proporcional de l'espai no utilitzat, denominat "podridura". La podridura no només malgasta l'espai, sinó que disminueix la velocitat de la consulta, perquè una fracció més petita dels blocs d'un índex podrit s'adapten a la memòria alhora. En un arbre b, si se suprimeix 14538, el seu espai d'índex roman buit. En un índex invers, si 14538 va abans que arribi 24538, 24538 pot reutilitzar l'espai de 14538.

## Vegeu també

* Índex invertit
* Diccionari invers

## Referències

* ↑ «Introduction To Reverse Key Indexes: Part I» (en anglès). Richard Foote's Oracle Blog, 14-01-2008. [Consulta: 13 abril 2019].

## Enllaços externs

* «Database Design Techniques». docs.oracle.com. [Consulta: 13 abril 2019].