Jeje, Marcial. Cuando yo estudié informática franco aún era corneta. Efectivamente, entendí perfectamente a qué te referías. Aunque siendo tiquismiquis, el acceso aleatorio/secuencial no se refiere a cómo se trabaja con una base de datos, sino cómo se puede leer o escribir en un archivo; si puedes acceder a leer o escribir cualquier parte directamente o tienes que comerte la vaca entera... ¿te acuerdas de las cintas del zx81 o spectrum?. Por supuesto que sin acceso aleatorio una base de datos sería una pesadilla, pero con índices, sin índices, archivos de imagen o de cualquier tipo, todos los archivos en disco o SD se pueden acceder aleatoriamente.
Mañana te envío un esquema de cómo va organizado el archivo, aunque si miras la cabecera de la librería verás la estructura header que te puede dar alguna pista (agrego comentarios):
struct FDB_Header
{
unsigned int rec_size; // Posición 0-1, indica qué tamaño va a tener nuestro registro.
IdReg filledRecords; // Posición 2-5, número de índices a registros no borrados (a continuación del header)
IdReg deletedRecords; // Posición 6-9, número de índices a registros borrados (tras los índices no borrados)
FilePointer dataStart; // Posición 10-13, dirección a partir de donde se encuentran los datos
};
Continuando con el archivo:
- Pos 14 hasta 14+4*filledRecords Índices ordenados de dirección(unsigned long). Cada index apunta a la posición en la que está el dato que indexa.
- Pos 14+4*filledRecords hasta 14+4*(filledRecords+deletedRecords), Índices borrados. El dato sigue en su posición, pero los índices "saltan" a esta zona. Un nuevo registro reutilizará en primer lugar estos índices y su espacio de datos si existen, en lugar de ampliar tamaño de archivo. También cabría la posibilidad de devolver el index a su sitio y deshacer borrados.
- Pos dataStart hasta final de archivo: bloques de datos. Aquí están los registros propiamente dichos. No están ordenados (los índices dicen qué registro va en qué posición). También encontraremos los datos de los registros eliminados, salvo que la escritura de otros los hayan machacado.
El proceso para obtener un registro en posición ordenada n, sería mover la "cabeza lectora" primero a la dirección 14+4*n, leer dirección (unsigned long), mover a la dirección leída, y cargar la estructura.
No sé si te he aclarado algo o te he liado más, pero cualquier cosa que te pueda aclarar, no dudes en consultar.