Hallo, ich bin ein Bauingenieur mit etwas Erfahrung in der Programmierung, aber ich bin nicht mit der großen Auswahl an Optionen vertraut, die heute verfügbar sind. Ich hoffe, Sie konnten mir Hinweise geben, wie ich am besten vorgehen kann.
Ich möchte eine Datenbank mit Messungen der Bodenvermessung in einem Rasterformat erstellen und abfragen. Während des Erdbewegungsvorgangs werden für jeden Gitterstandort zu verschiedenen Zeiten viele Messungen durchgeführt, sodass eine vierte Zeitdimension vorliegt.
Die Beobachtungen werden höchstwahrscheinlich aus einer Textdatei eingelesen. In jedem Datensatz gibt es eine (2 x Ganzzahl) Gitterposition (Zeile und Spalte), eine (Gleitkomma-) Bodenebene und verschiedene Zeichenfolgeninformationscodes (möglicherweise bis zu 30 Zeichen insgesamt).
Die Gitter können ungefähr 10000 Zeilen x 10000 Spalten sein. Nicht jeder Ort im Raster würde in jeder Umfrage einen Datensatz haben, aber normalerweise würden sie bis zu hundert Datensätze haben. Viele der Rasterstandorte hätten überhaupt keine Datensätze (der Standort ist nicht perfekt rechteckig).
Ich möchte die Datensätze durchsuchen, Daten extrahieren und Berechnungen durchführen, z. B. das niedrigste oder höchste Bodenniveau für jeden Gitterstandort berechnen. Ich bin ziemlich sicher, dass ich dies ziemlich einfach in einer Sprache wie FORTRAN, BASIC oder C mithilfe von Arrays programmieren kann. Viele der Array-Elemente wären jedoch leer, und ich vermute, dass dies nicht der richtige Weg ist, und große Datenbanken wie diese benötigen spezielle Tools, die ich lernen muss, wie man sie verwendet.
Ich denke über mögliche Optionen für die Plattform nach -
Verwenden Sie ein Datenbankprogramm. Ich weiß nicht, wie leistungsfähig diese sein können, aber ich kann mir vorstellen, dass sie mit der grafischen Benutzeroberfläche viel Aufwand verursachen würden.
SQL verwenden? Ich weiß nicht viel darüber, aber es scheint die Sprache für Datenbanken zu sein. Ich habe immer imperative Sprachen anstatt deklarativ verwendet und da ich aus Wikipedia verstehe, dass SQL deklarativ ist, bin ich etwas nervös wegen der Änderung. Ich verstehe den Prozess für die Verwendung nicht vollständig. Gibt es einen Compiler, der Konsolenprogramme erstellt? Ist die Datenbank auf der Festplatte gespeichert? Entschuldigung für solche dummen Fragen.
Verwenden Sie eine API wie c-treeACE? Ich denke, dies könnte der richtige Weg sein, um mir die Vertrautheit einer "Mach das, dann mach das" -Sprache anzubieten (leider denke ich als Ingenieur so!). Ich hoffe jedoch, dass das von der API angebotene Speicher- und Verarbeitungsmanagement hinter den Kulissen dem überlegen ist, was ich mit riesigen Arrays erreichen kann.
Oder könnte ich es mit einer objektorientierten Sprache machen und den Computer über die Speicheranforderungen nachdenken lassen? zB wenn ich die Datensätze als Objekte mit Methoden und Eigenschaften speichern würde, die mir helfen würden, die Ergebnisse zu erzielen, die ich aus jedem Datensatz benötige - wäre es ein riesiges aufgeblähtes Programm im Vergleich zu 3)
Es gibt wahrscheinlich Hunderte Millionen Datensätze, und ich möchte sie in Minuten und nicht Stunden (vorzugsweise Sekunden!) Auf einem modernen PC mit Windows abfragen und verarbeiten können. Genauer gesagt handelt es sich bei mir um einen i7-Prozessor mit 6 GB RAM und 120 GB SSD unter Windows 7 64-Bit.
Hoffe, jemand hat Zeit, ein paar Worte der Weisheit mit einem Neuling zu teilen.