Hi Leute,
ich bin ein Anfänger was Datenbanken angeht. Für mein erstes Projekt brauchte ich eine Datenbank die ohne Server oder Zusatz-Komponenten läuft. Alles soll in einer Exe mitgeliefert werden.
Für diesen Zweck hat sich aus meiner Sicht die Absolute Database angebotenn.
www.componentace.com...bsolute_database.htm
Ich habe mehere Tage gebraucht um alles zu integrieren. Zuvor hatte ich eine eigene Struktur mit Pointern gebasteltet die sehr effektiv gearbeitet hat. Da ich jedoch Angst vor kollidierenden Zugriffen, also Synchronisationsproblemen, hatte kam die Entscheidung zu einer Datenbank, die diese Probleme regeln sollte.
Nun kam ein herber Rückschlag. Die Absolute Database ist Fast um den Faktor 10 langsamer (9.6

, als meine Pointerstruktur. Ich kann mir nicht vorstelle, dass Datenbanken die normalerweise viel größere Datenmengen bearbeiten so langsam sind.
Ich denke der Fehler liegt an mir. Dies ist der Code mit dem ich die Datenbank anspreche. Habe ich evtl einen Fehler oder etwas unnötiges eingebaut?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| log.Visible := False;
for i := 0 to 4000 do begin AddLog(inttostr(i) + ': ' + DB.GetItemName(i)); end;
log.Visible := True; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| Function TTDatabase.GetItemName(ItemID:Word):String; begin Result := 'UnkownItem';
FindQuery.SQL.Text := 'SELECT * FROM ItemName WHERE (ID = ' + IntToStr(ItemID) + ')'; FindQuery.Open;
if FindQuery.RecordCount <> 1 then exit;
Result := FindQuery.FieldByName('Text').AsString; end; |
Liegt das Problem an meinem Code?
Ist die Absolute Database einfach nur langsam?
Welche alternativen habe ich?
Bin für jeden Kommentar dankbar
Mit freundlichen Grüßen
Tobi