Datenbank oder nicht?

Anfängerfragen zum Programmieren mit PureBasic.
Stonedar
Beiträge: 18
Registriert: 20.05.2005 13:39

Datenbank oder nicht?

Beitrag 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
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag 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.
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Kannst Dir ja mal meine RFile Lib im PureArea.net ansehen, die Verwaltet RandomAccess-Dateien (Dateien mit wahlfreiem Zugrifft).
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag 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.
Stonedar
Beiträge: 18
Registriert: 20.05.2005 13:39

Beitrag 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
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag 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.
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

genau auf dieser Basis arbeitet die RFile Lib, Sie nimmt einem nur einen großteil der Verwaltung ab.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Stonedar
Beiträge: 18
Registriert: 20.05.2005 13:39

Beitrag von Stonedar »

Also, danke für die Antworten, weiß jetzt was ich wissen wollte!

Danke...
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag 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.
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

Beitrag 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
Antworten