Ich baue ein kleines C++ - Projekt, das statische Daten verwenden wird (es wird nicht auf der Benutzer-Seite geändert werden, nur aktualisiert, wenn Änderungen erforderlich sind). Die Daten selbst bestehen aus fünf verschiedenen Kategorien von Artikeln mit verschiedenen Feldern. Ein Beispiel für diese Elemente wären:In diesem Fall wäre es besser, Daten in einer Datenbank wie SQLite oder in einer flachen Textdatei zu speichern?
item1 {a=3, b=2, d=4}
item2 {c=4, d=2, m=3}
...
Jedes Element eine beliebige Anzahl von Feldern enthalten kann, (a-z für dieses Beispiel) mit einem zugeordneten Wert. Jede Kategorie enthält eine Liste der Elemente (denke an fünf verschiedene Dateien, die wie oben beschrieben Zeilen enthalten).
Das Ziel des Programms wird es sein, aus jeder dieser Kategorien ein Element zu finden, in dem die verschiedenen Felder die Summe der erforderlichen Eingaben ergeben (dh sum (d) == 10, sum (x) == 20). Die resultierenden fünf Elemente werden mindestens diese Anforderungen erfüllen. Ich ziele darauf ab, das kartesische Produkt der fünf verschiedenen Kategorien zu finden (nachdem ich es eingegrenzt habe, indem ich nur die Elemente gefunden habe, die mindestens ein Feld enthalten) und dann die Ergebnisse durchsuche, um die fünf Elemente zu finden das ist richtig.
Nun zu meiner Frage: Ich bin gespannt, ob es besser wäre, die Daten in einer Textdatei zu speichern (und bei jedem Start zu laden) oder SQLite zu verwenden. Die Verwendung von Textdateien wäre sicherlich besser für mich, zumindest für mich. Aber ich bin mir sicher, dass es nicht so effizient ist, alles zu laden und es bei jedem Programmstart in die richtigen Datenobjekte zu speichern.
Mit SQLite hätte ich sofort alles zur Verfügung und wäre in der Lage, die meisten meiner Aufgaben direkt mit Abfragen auszuführen. Ich bin ein wenig unsicher darüber, wie ich die Tabellen eingrenzen würde, bevor ich das kartesische Produkt finde, und dann die Ergebnisse für die Antworten weiter durchblättere. Ich bin sicher, dass ich das mit Zeit und Forschung herausfinden konnte.
Also, Experten von StackOverflow, was ist Ihr Beitrag dazu? Wenn es nicht die spezifischen Operationen wären, die ich für die Daten durchführen möchte, wähle ich SQLite. Aber damit bin ich etwas unsicher und möchte sicherstellen, dass die Einfachheit auf lange Sicht erhalten bleibt.
Ich würde geneigt sein, eine Textdatei mit einem Standard-Serialisierungsformat, wie XML oder JSON zu verwenden. Verwenden Sie eine Datenbank, wenn Sie gleichzeitige Lese- und Schreibvorgänge benötigen, die Ihnen nicht angezeigt werden. – Bathsheba
Wenn die Datenmenge vernünftig ist (was in Ihren RAM ohne Risiken passen kann), würde ich für Text und JSON gehen (wie Batsheba vorgeschlagen hat), heutzutage haben Sie viele vordefinierte Datenstrukturen und Sammlungen, um Daten zu manipulieren. – Marco
Vielleicht eine NoSQL-Lösung? Ihr Datenmodell hat mich über MongoDB nachdenken lassen ... –