Hola, soy un ingeniero civil con algo de experiencia en programación, pero no estoy familiarizado con la amplia gama de opciones disponibles en la actualidad. Espero que me puedan dar algunos consejos sobre la mejor manera de proceder.
Quiero hacer y consultar una base de datos de mediciones topográficas a nivel del suelo en un formato de cuadrícula. Habrá muchas mediciones para cada ubicación de cuadrícula en varios momentos a través del trabajo de movimiento de tierra, por lo que hay una cuarta dimensión de tiempo.
Lo más probable es que las observaciones se lean desde un archivo de texto. En cada registro habrá una posición de cuadrícula (2 x entero) (fila y columna) a nivel del suelo (punto flotante) y varios códigos de información de cadena (quizás hasta 30 caracteres en total).
Las cuadrículas pueden ser de aproximadamente 10000 filas x 10000 columnas. No todas las ubicaciones en la cuadrícula tendrían un registro en cada encuesta, pero normalmente tendrían hasta un centenar de registros. Muchas de las ubicaciones de la cuadrícula no tendrían ningún registro (el sitio no será perfectamente rectangular).
Quiero buscar en los registros, extraer datos y hacer cálculos, por ejemplo, calcular el nivel del suelo más bajo o más alto para cada ubicación de la cuadrícula. Estoy bastante seguro de que tendría la capacidad de programar esto de manera bastante simple en un lenguaje como FORTRAN, BASIC o C usando matrices. Sin embargo, muchos de los elementos de la matriz estarían vacíos y supongo que esta no es la forma correcta de hacerlo, y las grandes bases de datos como esta necesitan herramientas especiales que tendré que aprender a usar.
Estoy pensando en posibles opciones para la plataforma:
Use un programa de base de datos. No estoy familiarizado con lo poderosos que pueden ser, pero imagino que tendrían una gran sobrecarga con la GUI.
¿Usar SQL? No sé mucho sobre esto, pero parece ser el lenguaje para las bases de datos. Siempre he usado lenguajes imperativos en lugar de declarativos y, según entiendo de Wikipedia, que SQL es declarativo, estoy un poco nervioso por el cambio. No entiendo completamente el proceso para usarlo. ¿Hay un compilador que hace programas de consola? ¿La base de datos está almacenada en el disco? Perdón por esas estúpidas preguntas.
¿Usar una API como c-treeACE? Creo que este puede ser el camino a seguir ofreciéndome la familiaridad de un lenguaje de "haz esto, luego haz eso" (¡desafortunadamente esta es la forma en que pienso como ingeniero!). Pero espero que la gestión de memoria y procesamiento detrás de escena ofrecida por la API sea superior a lo que podría lograr con grandes matrices.
¿O podría hacerlo con un lenguaje orientado a objetos y dejar que la computadora se preocupe por los requisitos de almacenamiento? por ejemplo, si almacenara los registros como objetos con métodos y propiedades que me ayudarían a obtener los resultados que necesito de cada registro, ¿sería un gran programa inflado en comparación con 3)
Es probable que haya cientos de millones de registros y quiero poder consultarlos y procesarlos en minutos, no horas (¡preferiblemente segundos!) En una PC moderna con Windows. Para ser más específicos, el mío es un procesador i7 con 6 Gb de ram y SSD de 120 Gb con Windows 7 de 64 bits.
Espero que alguien tenga tiempo para compartir un par de palabras de sabiduría con un novato.