Oi Eu sou um engenheiro civil com alguma experiência em programação, mas não estou familiarizado com a vasta gama de opções disponíveis hoje. Espero que você possa me dar alguma indicação da melhor maneira de prosseguir.
Quero fazer e consultar um banco de dados de medições de pesquisa no nível do solo em um formato de grade. Haverá muitas medições para cada localização da grade em vários momentos através do trabalho de terraplenagem, para que haja uma quarta dimensão de tempo.
As observações provavelmente serão lidas em um arquivo de texto. Em cada registro, haverá uma posição de grade (2 x inteiro) (linha e coluna), um nível do solo (ponto flutuante) e vários códigos de informações de sequência (talvez até 30 caracteres no total).
As grades podem ter cerca de 10000 linhas x 10000 colunas. Nem todos os locais na grade teriam um registro em cada pesquisa, mas normalmente teriam até cem registros. Muitos locais da grade não teriam registros (o site não será perfeitamente retangular).
Quero pesquisar os registros, extrair dados e fazer cálculos, por exemplo, calcular o nível do solo mais baixo ou mais alto para cada local da grade. Estou bastante confiante de que teria a capacidade de programar isso de maneira bastante simples em uma linguagem como FORTRAN, BASIC ou C usando matrizes. Muitos dos elementos da matriz ficariam vazios e, no entanto, acho que essa não é a maneira correta de fazê-lo, e grandes bancos de dados como esse precisam de ferramentas especiais que precisarei aprender a usar.
Estou pensando em possíveis opções para a plataforma -
Use um programa de banco de dados. Não estou familiarizado com o quão poderoso eles podem ser, mas imagino que eles teriam muita sobrecarga com a GUI.
Usar SQL? Não sei muito sobre isso, mas parece ser o idioma para os bancos de dados. Eu sempre usei linguagens imperativas em vez de declarativas e, como eu entendo na wikipedia, que SQL é declarativo, estou um pouco nervoso com a mudança. Não entendo completamente o processo para usá-lo. Existe um compilador que cria programas de console? O banco de dados está armazenado em disco? Desculpe por perguntas tão estúpidas.
Use uma API como c-treeACE? Eu acho que esse pode ser o caminho a seguir, oferecendo-me a familiaridade de uma linguagem "faça isso, depois faça isso" (infelizmente, é assim que penso como engenheiro!). Mas espero que os bastidores de gerenciamento de memória e processamento oferecidos pela API sejam superiores ao que eu poderia obter com grandes matrizes.
Ou eu poderia fazê-lo com uma linguagem orientada a objetos e deixar o computador se preocupar com os requisitos de armazenamento. por exemplo, se eu armazenasse os registros como objetos com métodos e propriedades que me ajudariam a obter os resultados necessários para cada registro - seria um programa enorme e inchado em comparação com 3)
É provável que haja centenas de milhões de registros e eu quero poder consultá-los e processá-los em minutos, não em horas (de preferência em segundos!) Em um PC moderno executando o Windows. Para ser mais específico, o meu é um processador i7 com 6 GB de RAM e SSD de 120 GB executando o Windows 7 de 64 bits.
Espero que alguém tenha tempo para compartilhar algumas palavras de sabedoria com um novato.