Nel descrivere l’organizzazione fisica nelle basi di dati, ricordiamo innanzitutto alcune caratteristiche generali della memoria secondaria, per poi soffermarci sulle tecniche per la memorizzazione delle relazioni e sugli indici.
<aside> 💡 La memoria secondaria non è direttamente utilizzabile dai programmi: i dati prima di essere utilizzati devono essere trasferiti nella memoria principale.
</aside>
La necessità di gestire i dati nella memoria secondaria dipende da due motivi:
I dati sui dischi sono organizzati in blocchi di dimensione di solito fissa nell’ambito di ciascun sistema. Le uniche operazioni relative alla memoria secondaria sono la lettura o la scrittura di un intero blocco: questo comporta che l’accesso a un singolo bit ha il costo dell’accesso ad un intero blocco.
L'accesso a un blocco richiede prima l'eventuale spostamento della testina sulla traccia di interesse, poi l'attesa che, nel corso della rotazione, il blocco di interesse passi sotto la testina e, infine, la vera e propria lettura o scrittura.
Le prime due fasi richiedono un tempo anche cento volte maggiore della terza. Di conseguenza, se successive operazioni di accesso coinvolgono blocchi consecutivi sulla stessa traccia, il tempo necessario si riduce significativamente, perché le prime due fasi sono necessarie una sola volta. Per questo motivo, risulta in molti casi utile mantenere organizzazioni contigue, cioè che utilizzano blocchi consecutivi.
La memoria secondaria è organizzata in:
Gli indici sono le strutture fondamentali e caratteristiche dell’organizzazione fisica delle basi di dati relazionali. Ogni indice fa riferimento a uno o più attributi di una relazione, detto campo chiave dell’indice, o pseudochiave. L’indice rende efficienti quelle interrogazioni che utilizzano la chiave dell’indice nei loro predicati di selezione oppure di join, consentendo sia accessi puntuali, sia accessi corrispondenti a intervalli di valori.
<aside> 💡 Un indice è una struttura che contiene infromazioni sulla posizione di memorizzazione dei record(tuple) di un file sulla base del valore del campo chiave.
</aside>
Usa come input i valori di un’attributo detti chiave dell’indice.
Le principali strutture per indici sono basate su:
tabelle di hash
