Seite 1 von 2

Datenbank oder nicht?

Verfasst: 20.05.2005 13:46
von Stonedar
Hi Leute!

Ich programmiere gerade ein Prog, in das man Kochrezepte eintragen kann, um diese dann zu verwalten, und zu suchen. (damit ist es alles überschaubarer, wenn man solche Kochheftchen sammelt...)

Nun habe ich eine Frage, ich mache es im Moment so, dass ich die Rezepte in eine .txt schreibe, in etwa so:

Gericht=
Heft=
HeftNummer=
usw.

Getrennt werden die einzelnen Rezepte nur durch eine leer Zeile.
So funktioniert alles ohne Probleme, und bin eigentlich recht zufrieden damit (als Anfänger ;) ), aber ich habe nun bedenken, dass es zulangsam werden könnte, wenn im Programm mal mehr Rezepte gespeichert werden. (kommen schnell mal 500 zusammen)

Wäre es hier nicht besser, wenn ich eine Datenbank, denke an SQlite, benutze? Damit ist der zugriff auf die Daten, so wie ich das bisher gesehen habe, auch viel leichter, als so wie ich es bisher mache...

Wenn es besser wäre iene Datenbank zubenutzen, läuft SQlite auch auf Win98 wenn man die .dll mitgibt?

Viele Fragen, ich weiß, deswegen schonmal Danke für die Antworten...

Gruß,
Stonedar

Verfasst: 20.05.2005 14:47
von zigapeda
ich würde dir auf jeden fall zu einer Datenbank raten weil textdatei ist garnicht gut, wenn man jetzt 5 strings in der textdatei speichert ist das noch ok aber bei 500 Rezepten ist das nicht gut.

Verfasst: 20.05.2005 14:54
von ts-soft
Kannst Dir ja mal meine RFile Lib im PureArea.net ansehen, die Verwaltet RandomAccess-Dateien (Dateien mit wahlfreiem Zugrifft).

Verfasst: 20.05.2005 15:47
von NicTheQuick
Für solch einfache Sachen ist eine SQL-Datenbank viel zu überladen.

Du musst dir nur ein besseres Dateiformat ausdenken.

In etwa so:

Code: Alles auswählen

4 Bytes - Kennung
4 Bytes - Anzahl Datensätze
{ for a = 1 to Anzahl_Datensätze
4 Bytes - Offset zu Gericht
}
{ for a = 1 to Anzahl_Datensätze
4 Bytes - Länge "Gericht"-String
n Bytes - Gericht-String
4 Bytes - Länge "Heft"-String
n Bytes - Heft-String
4 Bytes - Länge "HeftNummer"-String
n Bytes - Heftnummer-String
}
Das ist so ungefähr meine Art wie ich meine Datenbanken aufbaue. Da sind 10 MB mal schnell in 10 bis 100 ms eingelesen. Speichern geht genauso schnell.
Die Offsets am Anfang sind nicht zwingend notwendig, beschleunigen die Suchzeiten aber ungemein, wenn man nur die Datensatznummer weiß, erfordern natürlich aber auch einen komplizierteren Speicher-Algorithmus.

Verfasst: 20.05.2005 15:53
von Stonedar
@NicTheQuick:

Also du meinst das eine SQLite Datenbank für meine Zwecke nicht nötig ist, oder nicht ausreichend?

Und könntest du wenn es möglich ist, näher beschreiben was du mit deinem Code Schnippsel meinst? (hey bin Anfänger ;) )

Gruß,
Stonedar

Verfasst: 20.05.2005 17:34
von zigapeda
SQL datenbank ist zu überladen d.h. sie bietet viel zu viele funktionen die du nicht brauchst also auf deine Frage zu deinen Zwecken nicht nötig.

Das ist kein codeschnipsel das ist wie du die Textdatei aufbauen sollst

Code: Alles auswählen

4 Bytes - Kennung                              ;??? keine ahnung
4 Bytes - Anzahl Datensätze                    ;anzahl der gerichte in der datei
{ for a = 1 to Anzahl_Datensätze               ;??? wahrscheinlich die position der einzelnen gerichte
4 Bytes - Offset zu Gericht
}
{ for a = 1 to Anzahl_Datensätze               ;die daten für jedes gericht
4 Bytes - Länge "Gericht"-String               ;in den 4B wird gespeichert wie lange der Gericht-String ist
n Bytes - Gericht-String                       ;Das Gericht (wahrscheinlich rezept oder?)
4 Bytes - Länge "Heft"-String                  ;länge von dem heft-String
n Bytes - Heft-String                          ;Heft-string
4 Bytes - Länge "HeftNummer"-String            ;länge der heftnummer
n Bytes - Heftnummer-String                    ;heftnummer
}
die längenangaben werden benötigt um die richtigen strings auszulesen und die längenangaben haben eine feste länge.

Verfasst: 20.05.2005 17:39
von ts-soft
genau auf dieser Basis arbeitet die RFile Lib, Sie nimmt einem nur einen großteil der Verwaltung ab.

Verfasst: 23.05.2005 13:38
von Stonedar
Also, danke für die Antworten, weiß jetzt was ich wissen wollte!

Danke...

Verfasst: 23.05.2005 14:43
von freedimension
Hier generell von einer Datenbank wie SQLite abzuraten halte ich für falsch. Der Einsatz solch einer Datenbank ermöglicht später, falls das Programm noch weiter wachsen sollte, auch kompliziertere Abfragen und Suchen über den Datenbestand. Zudem dürfte aufgrund der optimierteren Algorithmen der Datenzugriff auch schneller und zudem auch vom Hauptspeicher unabhängiger sein.

Verfasst: 23.05.2005 15:13
von Kukulkan
Hallo,
Hier generell von einer Datenbank wie SQLite abzuraten halte ich für falsch. Der Einsatz solch einer Datenbank ermöglicht später, falls das Programm noch weiter wachsen sollte, auch kompliziertere Abfragen und Suchen über den Datenbestand. Zudem dürfte aufgrund der optimierteren Algorithmen der Datenzugriff auch schneller und zudem auch vom Hauptspeicher unabhängiger sein.
Sehe ich 100% genauso. Würde auch SQLite benutzen/empfehlen!

Grüsse,

Volker