Ciao, sono un ingegnere civile con una certa esperienza di programmazione, ma non ho familiarità con la vasta gamma di opzioni disponibili oggi. Spero che tu possa darmi qualche suggerimento il modo migliore per procedere.
Voglio creare e interrogare un database di misure di rilevamento a livello del suolo in un formato a griglia. Ci saranno molte misurazioni per ogni posizione della griglia in vari momenti durante il lavoro di movimento terra, quindi c'è una quarta dimensione del tempo.
Molto probabilmente le osservazioni verranno lette da un file di testo. In ogni record ci sarà una posizione della griglia (2 x numeri interi) (riga e colonna) un livello del suolo (in virgola mobile) e vari codici di informazioni sulla stringa (forse fino a 30 caratteri in totale).
Le griglie potrebbero essere circa 10000 righe x 10000 colonne. Non tutte le posizioni sulla griglia avrebbero un record in ogni sondaggio, ma in genere avrebbero un massimo di cento record. Molte posizioni della griglia non avrebbero alcun record (il sito non sarà perfettamente rettangolare).
Voglio cercare i record, estrarre i dati ed eseguire calcoli, ad esempio calcolare il livello del suolo più basso o più alto per ogni posizione della griglia. Sono abbastanza sicuro che avrei la possibilità di programmarlo abbastanza semplicemente in una lingua come FORTRAN, BASIC o C usando array. Molti elementi dell'array sarebbero vuoti e suppongo che questo non sia il modo giusto per farlo e che grandi database come questo necessitano di strumenti speciali che dovrò imparare come usare.
Sto pensando a possibili opzioni per la piattaforma -
Utilizzare un programma di database. Non ho familiarità con quanto possono essere potenti, ma immagino che avrebbero un sacco di sovraccarico con la GUI.
Usa SQL? Questo non lo so molto ma sembra essere la lingua per i database. Ho sempre usato linguaggi imperativi piuttosto che dichiarativi e, come ho capito da Wikipedia, che SQL è dichiarativo, sono un po 'nervoso per il cambiamento. Non capisco perfettamente il processo per usarlo. Esiste un compilatore che crea programmi console? Il database è archiviato su disco? Ci scusiamo per domande così stupide.
Utilizzare un'API come c-treeACE? Penso che questo potrebbe essere il modo migliore per offrirmi la familiarità di un linguaggio "fai questo, poi fallo" (sfortunatamente questo è il modo in cui penso come ingegnere!). Ma spero che la memoria dietro le quinte e la gestione dell'elaborazione offerte dall'API siano superiori a ciò che potrei ottenere con enormi array.
O potrei farlo con un linguaggio orientato agli oggetti e lasciare che il computer si preoccupi dei requisiti di archiviazione. ad es. se memorizzassi i record come oggetti con metodi e proprietà che mi aiuterebbero a ottenere i risultati di cui ho bisogno da ogni record - sarebbe un enorme programma gonfio rispetto a 3)
Probabilmente ci saranno centinaia di milioni di record e voglio essere in grado di interrogarli ed elaborarli in pochi minuti, non ore (preferibilmente secondi!) Su un PC moderno con Windows. Per essere più specifici, il mio è un processore i7 con RAM da 6 GB e SSD da 120 GB con Windows 7 a 64 bit.
Spero che qualcuno abbia il tempo di condividere un paio di parole di saggezza con un principiante.