He estado un tanto alejado. Ya no me es tan fácil sentarme y darle el tiempo para pasarme por aquí.
No es un tema urgente, de hecho, no es para ahora... no tiene fecha ni urgencias. He estado debatiendo en mi tiempo libre sobre algunas maneras de como almacenar información que debe ser representada y abstraída en un array tridimensional en un archivo (no se requiere de base de datos).
Bien sabido es que para un array-1 lo directo es tener una lista así:
elemento1 elemento2 ... elementoN
En un array-2 las cosas se ponen un poquito más complicadas, pero igualmente el principio sigue siendo válido:
elemento11 elemento12 ... elemento1N elemento21 elemento22 ... elemento2N ... elementoM1 elementoM2 ... elementoMN
Naturalmente que deben hacerse los debidos controles que aseguren una correcta lectura de cada elemento y poder posicionarse en el lugar correcto. Este ejemplo es lo más breve y elemental. Se pueden dotar de ciertos mecanismos que permitan controlar el fin e inicio de item, como hasta incluso se puede preveer el inicio/fin de fila.
La pregunta es, como puede entenderse del título, ¿Y para un array-3?
¿Que propuestas considerarían?
He estado pensando en repetir el esquema array-2. Si entendemos por [coord1 >> P, coord2 >> M, coord3 >> N] entonces:
//Coord1 = 1 elemento111 ... elemento11N ... elemento1M1 ... elemento1MN //Coord1 = 2 elemento211 ... elemento21N ... elemento2M1 ... elemento2MN //Coord1 = P elementoP11 ... elementoP1N ... elementoPM1 ... elementoPMN
Aunque también he llegado a pensar que también podría ser válido disponer de tantos archivos como P tenga de modo que en cada archivo se tenga separada la información para cada coordenada.
El asunto es que lo que me preocupa son las reiteradas lecturas/escrituras al disco que se requerirán. Los valores P, M y N no serán muy chicos que digamos

¿Que enfoques podrían concebir?
Otra posibilidad que estuve deliberando es, pensando en lo que es el rendimiento sobre I/O en disco, emplear otra estructura de datos (como intermedia quizá) que al parecer, y que supuestamente en teoría está pensada para trabajar de forma más amigable con el disco: árboles balanceados... concretamente BTree. Lo malo es que ahora me complicaría las cosas para ir de un enfoque árbol a un enfoque array-3.
Estoy aquí para escuchar sus alternativas y propuestas.
Saludos,