Sto implementando il mio semplice database con l'archiviazione su disco e non sono sicuro di come modificare e eliminare le voci.
Il problema è che quando si elimina un record dalla posizione arbitraria all'interno di un file, viene lasciato un "buco". Quando inserisci una nuova voce, puoi o meno essere in grado di collegarlo alla buca. La modifica di una voce sul posto può essere possibile se il nuovo valore è più piccolo, lasciando un altro buco. Oppure il nuovo potrebbe essere più grande, quindi è necessario inserirlo altrove e cancellare quello vecchio. Un altro buco.
Se implementato in questo modo, il file di database inizia a sembrare un formaggio svizzero dopo un po '. La soluzione ovvia è di eseguire l'ottimizzazione di tanto in tanto per compattare il file, ma è un compito noioso e non banale da implementare. Ad esempio, se il file è molto più grande della quantità di RAM, e devi attentamente manipolare i record nel file.
La mia domanda è: ci sono altri approcci alla gestione dei file di archiviazione del database? E in che modo i grandi sistemi di gestione dei database memorizzano i dati sullo storage persistente? Come affrontano questi problemi?
Ho provato su Google ma non ho ricevuto molte informazioni, probabilmente perché non conosco nemmeno le parole chiave giuste.