Laden...

datenbank oder files???

Erstellt von torti vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.969 Views
T
torti Themenstarter:in
193 Beiträge seit 2006
vor 13 Jahren
datenbank oder files???

hallo leute,

ich überlege gerade mit welcher art ich meine daten speicher sollte. zur zeit speichere ich tausende zahlen (zeilenweise in files) ab und dabei entsteht eine größe von 1,5gb. würde ich das ganze binär abspeichern, würde mit sicherheit die größe sinken. das ganze entstand historisch bedingt und damals war die größe ca. 50mb. aber jetzt muss eine andere lösung her und ich überlege eine datenbank zu nehmen. ich dachte dabei an die sql compact edition, da ich keinen server laufen lassen kann und ich so immer eine datei habe, welche meine daten speichert. haltet ihr das für sinnvoll?? gibt es alternativen??? wenn ich jetzt 1,5gb habe, die db relational gut aufbaue, mit welcher größe muss ich da ca. rechnen??? wie sieht die performance dabei aus??? vorher hatte ich tw. 10000 files, welche ich immer einzeln auslesen musste, dann müsste dies bei einer db doch viel schneller gehen!

danke für jeden tipp,

torti

J
3.331 Beiträge seit 2006
vor 13 Jahren

So pauschal lässt sich das nicht beantworten. Es hängt von Art, Umfang und Zusammenhang der Daten ab. 1,5 GB nur mit Zahlen? Gibt es keine Zusammenhänge der Werte? Wie soll das in DB-Tabellen abgebildet werden? Dann kann die DB zwar schnellere Zugriffe liefern, aber es kann kaum Speicherplatz eingespart werden.

Außerdem kommt so eine Frage immer wieder vor. Benutze die Forumssuche mit vielen verschiedenen Suchbegriffen (Datenbank, Textdatei, Einstellungen, speichern usw.).

Gruß Jürgen

PS. Die deutsche Rechtschreibung kennt Groß- und Kleinschreibung. Dies ist keine Quälerei für Schüler, sondern dient dem Leser zum besseren Verständnis.

T
torti Themenstarter:in
193 Beiträge seit 2006
vor 13 Jahren

hallo,

danke für die antwort!

torti

M
17 Beiträge seit 2010
vor 13 Jahren

Hallo Torti,
was genau machst du denn mit den Daten? Generell kann man sagen, dass, wenn du sie archivieren willst, dann ist eine Klartextdatei sinnvoller. Sollen die Daten allerdings weiterverwendet, bspw. um Anfragen darauf zu fahren, dann ist natürlich eine DB die richtige Wahl. Das ist aber nur ein allgemeiner Hinweis...bei bestimmten Anwendungsszenarien kann das natürlich anders sein.

MFG

T
torti Themenstarter:in
193 Beiträge seit 2006
vor 13 Jahren

hallo,

ich möchte nochmal grob umreißen was die aufgabe ist:

ich generiere aus berechnungen daten im umfang von z. bsp. 15 millionen double zahlen. diese 15 mio. sind in mehreren tausend files gespeichert, quasi getrennt nach berechnungsschritten und bereichen. mir ist bewusst das dies ein chaos ist, ist aber historisch von meinem vorgänger so gelöst worden. das große problem dabei ist das eine große speicherkapazität benötigt wird und es echt umständlich ist. von den tausenden files mal abgesehen. und wie es eben so ist, sollte die performance und die speicherkapazität vermindert werden. alles auf einmal wird schwierig. jetzt stellt sich die frage was ich machen soll. ich denke daran eine binäre datei zu schreiben oder auf eine datenbank zu gehen. klarere vorteil der datei ist die größe und die geschwindigkeit. vorteil der db sollten klar sein. als restriktion bei der db ist noch zu erwähnen das ich nur file db nehmen kann, also sqlite, sql compact edition, usw.

wenn ich nur archivieren würde, dann ist es klar, files! da es sich um berechnungsergebnisse handelt und diese später dann ausgewertet und für andere dinge benötigt werden, muss ich diese mehrmals auslesen bzw. muss ich nach diversen dingen suchen. man kann es sich so vorstellen das ich quasi blöcke in das file schreibe und immer solche blöcke auslese um mit diesen weiterzuarbeiten. in db ist das absolut kein problem, die suche.

nochmal die wichtigsten punkte

  • große datenmenge (> 1gb)
  • schneller datenzugriff (schreiben & lesen)
  • schnelle suche und auslesen

binäre files oder db (welche db wäre geeignet))?? bei den db konnte ich schnell ein paar tests durchführen und da kam ich zu folgenden resultaten:
sqlite: datengröße akzeptabel, geschw. absolut schlecht
sql ce: datengröße groß, geschw. akzeptabel
access: datengröße groß, geschw. schlecht

es wurde noch nichts optimiert bzw. mit div. einstellungen gespielt, lass mich gerne inspirieren was die db's angeht 😃

naja ich hoffe ich konnte das problem grob erklären und würde mich über jede antwort freuen,

danke,
torti

J
1.114 Beiträge seit 2007
vor 13 Jahren

Wenn du also nach diversen Kriterien suchen musst, ist eine DB sicherlich die geeignetere Lösung. Eine schnelle DB wäre z.B. MySql. Würde aber persönlich trotzdem zu MSSQL Express tendieren. Persönlich finde ich die DB von MS wesentlich ausgereiften, und mit dem Management Studio steht auch eine wirklich gute Administrationsoberfläche zur Verfügung.

Du redest von Blöcken auslesen... Mach dir also auf jeden Fall Gedanken, wie du die DB relational aufbaust, und schreib nicht einfach wild Daten in eine einzige Tabelle rein.

T
torti Themenstarter:in
193 Beiträge seit 2006
vor 13 Jahren

Wenn du also nach diversen Kriterien suchen musst, ist eine DB sicherlich die geeignetere Lösung. Eine schnelle DB wäre z.B. MySql. Würde aber persönlich trotzdem zu MSSQL Express tendieren. Persönlich finde ich die DB von MS wesentlich ausgereiften, und mit dem Management Studio steht auch eine wirklich gute Administrationsoberfläche zur Verfügung.

Du redest von Blöcken auslesen... Mach dir also auf jeden Fall Gedanken, wie du die DB relational aufbaust, und schreib nicht einfach wild Daten in eine einzige Tabelle rein.

danke,

zu den db's: du meinst mysql, aber diese kann ich doch ohne server nicht nutzen, zu mindestens wäre mir das neu!

das mit den blöcken gilt natürlich nur für die files. in der db habe ich ja alles relational über mehrere tabellen und somit eine saubere struktur.

torti

F
10.010 Beiträge seit 2004
vor 13 Jahren

Wenn SQLite bei dir langsamer als SQLCe ist, hast du aber etwas falsch gemacht.

M
17 Beiträge seit 2010
vor 13 Jahren

Hallo Torti,
erstmal wieder mehr Fragen von mir...aus welchem Grund kannst du denn keinen DB Server laufen lassen? Was ist da die Restriktion??? Warum soll die Größe unbedingt verringert werden...ist Speicherplatz bei dir knapp, oder ist das nur reiner "Perfektionismus"???

Kleine Anmerkung noch...mein Prof hat immer gesagt:"Access ist keine DB"...und meine Erfahrung zeigt mir persönlich...er hatte recht.
Der MS SQL Server ist wirklich eine gute DB und in der Express Version auch noch kostenlos, allerdings mit der Restriktion auf 4GB(???) Größe. Ansonsten kann ich als Open Source Variante noch PostgreSQL wärmstens empfehlen. Das ist eine vollwertige, sehr performante DB.

Welcher Art sind denn deine Abfragen??? Evtl. würde sich bei dir auch ein Column Store anbieten...wenn du also viel über Spalten aggregieren musst z.B. Kannst dich ja mal oberflächlich in die Thematik einlesen.

F
10.010 Beiträge seit 2004
vor 13 Jahren

SqlServer Express 2008 R2 hat 10 GB begrenzung.