clros ha scritto:Mi interesserebbe sapere come vengono gestiti gli archivi da dbms tipo DB2 o altri.
In particolare vorrei capire se i vari dbms esistenti memorizzano tutto il db in un unico file (come -mi pare- fa Access), se esistono delle soluzioni alternative (che so, un file per ogni "tabella") e qual'è la migliore soluzione (anche teorica) che permetta un accesso veloce ad un DB anche contenente moltissimi dati.
Scusate le eventuali imprecisioni, ma sono alquanto ignorante in materia

Mi accorgo ora di questa richiesta (e ikir mi aveva pure messo in mezzo!

) ma come giustamente ha già detto lui durante le vacanze è tutto un po' rallentato!
Dunque se ho capito bene la domanda cerchi un approfondimento teorico su come sono fatti in generale i database...
A parte cercare un libro sulle basi di dati (vedi un po' tu quello che ti ispira di più con un paio di ricerche su internet) ti suggerisco di dare un'occhiata al manuale di mysql (lo trovi online su
http://www.mysql.com) dove c'è un capitolo sui vari engine di stoccaggio delle tabelle su disco.
In generale non è importante di per se per l'efficienza se si usa un unico file o più files per tenere i dati, ma come essi sono organizzati.
Se si tiene i dati in un unico file ci sono solo altri tipi di problemi che dipendono dalle peculiarità del filesystem sottostante (ovvero grandezza massima del file gestibile dal filesystem!) e il rischio che se il file si rompe si perde tutto in una botta sola (ma anche questa ultima affermazione dipende da come de facto sono archiviati i dati nel file stesso).
Solitamente i DB più semplici usano un file per una tabella dove allocano i vari record in ordine di inserimento marcando via via i record cancellati per poterli sovrascrivere in seguito (ricompattare il file tutte le volte che si fa una cancellazione è molto oneroso in termini di efficienza), a part eviene tenuto l'indice (o gli indici) che la tabella ha.
Per recuperare i dati si scorre lungo l'indice e si calcolano gli offset dei vari record della tabella per estrarli dal file che li contiene.
L'indice ovviamente sarà una struttura dati che consente un facile recupero/inserimento di informazioni a seconda delle caratteristiche che si richiedono (così a naso mi vengono in mente BTREE o HASH TABLES o comunque una qualche struttura arborea organizzata).
Thats it!
Questo è lo spunto di partenza, buona ricerca e buono studio!
