![]() |
Datenbank: ? • Version: ? • Zugriff über: ?
Schnelle Datenbank ohne Server und ohne BDE
Hallo,
unser Programm hat als log eine formatierte Textdatei verwendet. Jetzt möchten wir das ganze auf eine DB umstellen da das suchen demnächst über eine GUI erfolgen soll. Die Daten müssen also nicht mehr lesbar sein. Pro Sekunde müssen ca. 2-4 Datensätze gespeichert werden. Es darf kein Server verwendet werden und keine zusätzliche Software. Mein Test mit xml ergab das das ganze viel zulangsam ist. Fürs laden und speichern über 5 Minuten bei 3MB. Kennt jemand eventuell noch ein anderes Format? gruß |
AW: Schnelle Datenbank ohne Server und ohne BDE
Auf Anhieb fallen mir da SQLite, FB Embedded und Absolute Database ein.
|
AW: Schnelle Datenbank ohne Server und ohne BDE
XML ist ja eher ein Austauschformat (zwischen zwei Datenbanken) Wie wäre es ein "File of myRecord" zu verwenden, wenn Du schon keine "zusätzliche" Software benutzen darfst. Fällt embedded Firebird bzw. Interbase auch unter zusätzlich?
Gruß K-H |
AW: Schnelle Datenbank ohne Server und ohne BDE
Zitat:
|
AW: Schnelle Datenbank ohne Server und ohne BDE
Ich persönlich würde ja auch Firebird bevorzugen, aber bevor man mir Voreingenommenheit vorwerfen kann, nenne ich halt auch Alternativen ;) Mit SQLite habe ich persönlich überhaupt keine Erfahrungen, ABS habe ich nur vor Jahren einmal ausprobiert und bin da schnell auf Probleme gestoßen. Allerdings weiß ich nicht, wie das mittlerweile aussieht.
|
AW: Schnelle Datenbank ohne Server und ohne BDE
"XML" ist ein Dateiformat, keine Implementierung, und kann daher an sich gar nicht zu langsam sein. Allerdings kann ich mir schon vorstellen, daß die meisten Implementierungen langsam sind. Aber natürlich ist XML tatsächlich nicht gerade für realtime geeignet, selbst mit schnelleren Implementierungen geht es sicher immer besser, und wenn dann noch die Suchfunktion dazukommt...
Die typisierte Datei ist für ein einfaches Format sicherlich super. Sobald aber Felder in unterschiedlicher Größe vorkommen oder die Datenmengen so groß werden, daß ein Index bei der Suche von Vorteil ist, würde ich auch zu einer Datenbank raten. SQLite würde mir da auch als erstes einfallen. Und das Argument Geschwindigkeit ist da extrem relativ. Zum einen lernt man mit Datenbanken nie aus, und mindestens 90% der Geschwindigkeitsprobleme, mit denen ich bisher zu kämpfen hatte, lagen an ungünstigen Tabellen, Indizes und Queries und der Platte. Geschwindigkeit bei Dir ist in erster Linie bei INSERTs relevant, bei anderen kann das etwas ganz anderes sein. Das einzige unpraktische an SQLite: wenn Du während des Loggens suchen willst, und die Suche komplex wird (etwa nach Teilstrings, das lässt sich nur schlecht per Index optimieren), läuft das nicht parallel ab, da wäre ein Cache für's Logging notwendig (paralleler Thread mit Pool an zu schreibenden Log-Einträgen, mMn sowieso zu empfehlen, damit das Logging nicht aufhält). |
AW: Schnelle Datenbank ohne Server und ohne BDE
Voteil von FireBird embedded wäre zudem die zusätzlichen Features des DBMS und die Skalierbarkeit ( ohne Programmänderungen läuft das Programm auch mit der Serverversion)
|
AW: Schnelle Datenbank ohne Server und ohne BDE
Um die Liste der Kollegen hier zu erweitern:
Es gibt auch noch MSSQL Compact Edition. >Es darf kein Server verwendet werden und keine zusätzliche Software. Das ist wohl eine Anforderung die *alle* übersehen haben. Für die die meisten genannten Produkte wird du zumindest die Engine (Treiber-Dlls etc.) nutzen müssen. Mit Delphi Bordmitteln würde mir nur die Client-Datasets einfallen bzw. via ADO Client-Datasets erstellen. |
AW: Schnelle Datenbank ohne Server und ohne BDE
Ich denke nicht, dass wir das übersehen haben. Allerdings ist der Begriff "zusätzliche Software" nur unzureichend definiert. Sind schon DLLs gemeint, oder geht es um Installation zusätzlicher Programme/Dienste, wie sie für einen DB-Server notwendig wären?
|
AW: Schnelle Datenbank ohne Server und ohne BDE
Bei SQLite und Firebird embedded muss keine weitere Software installiert sein, es handelt sich ja nur um Dlls, die man auch ins Programmverzeichnis ablegen kann.
Zudem gibt es Lösungen, welche die Dll in die Exe einlagern. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz