La specifica GiST
Generalized search tree (GiST) e una struttura generalizzata per l’implementazione di indici, che se opportunamente istanziata può comportarsi da diverse tipologie di albero (b+tree, r-tree)
La specifica GiST modella le query come predicati e la risoluzione di una query come la ricerca nell’albero del predicato che la soddisfa
Internamente un GiST e composto da una lista linkata di entries composte come <p,ptr> dove p e un predicato e ptr un puntatore a un altra entry che soddisfa il suddetto predicato
Le api della specifica si dividono in funzioni di chiave e funzioni d’albero, le seconde richiamano le prime per implementare le operazioni di manipolazione del indice
Funzioni di chiave
Consistent(e,q)controlla se un data entry e consistent con un dato predicatounion(P)restituisce il predicato che include le entry della listaPcompress(E)/decompress(E)comprimono/decomprimono una entrypenalty(E1,E2)restituisce il costo di inserimento della entryE1nella entryE2, usata come metrica per determinare la politica di inserimentopickSplitimplementa il processo decisionale per determinare dove l’albero viene splittato pages/
Funzioni d’albero
searchimplementa la ricerca dato un predicato, utilizza la funzioneconsistent, nel caso di un b+tree la ricerca termina con il raggiungimento della prima foglia e lo scorrimento della lista (il dominio di un B+tree e totalmente ordinato)insertinserisce un nodo nell’albero (entra in gioco anche quando ci sono entry orfane)chooseSubtreesceglie il sottoalbero piu adatto per l’inserimento di una entrysplitdivide l’albero a seguito di un bilanciamentodeleteelimina una entry dall’alberoadjustKeysaggiusta il valore delle chiavi dei nodi intermedi e controlla che il predicato dei figli corrisponda a quello del padre per mezzo diunioncondenseTreeeffettua il reinserimento di entry orfane nell’albero