Seite 1 von 1

Datenbank-Scanner "DB-Scanner"

Verfasst: 13.12.2007 22:12
von Kurzer
Hallo,

mein aktuelles Projekt wurde jetzt erstmals in einer Demoversion der Öffentlichkeit zugänglich gemacht.
Es ist zwar eine recht spezielle Anwendung, aber ich würde mich trotzdem freuen, wenn ich vom ein oder anderen feedback bekäme.

Aktualisiert am 23.12.2007
Link zur Webseite: DB-Scanner-Seite auf meiner Website
Direktdownload: DB-Scanner.zip
Changelog: Changelog.txt


DB-Scanner
DB-Scanner ist ein Programm, um verschiedene Datenbankabfragen in wiederkehrenden Intervallen auszuführen und das vom Datenbankserver gelieferte Ergebnis in einem Fenster anzuzeigen. Die auszuführenden Datenbankabfragen sind vom Benutzer zu erstellen, was einerseits größtmögliche Flexibilität bietet, dem Benutzer aber auch Kenntnisse in der SQL-Syntax des Datenbankservers abverlangt.

Nach dem Start meldet sich das Programm an der Datenbank an und führt in individuellen Abständen ein oder mehrere SQL-Abfragen aus.
Liefert die SQL-Abfrage eine Ergebnismenge zurück, dann wird diese in einem Meldungsfenster dargestellt.

Die dort angezeigten Datensätze können mit einigen Eigenschaften versehen werden, die sich indirekt auf die folgende Ausführung der Abfrage auswirkt. So kann z.B. ein Datensatz so markiert werden, daß er nur bis zu einem bestimmten Datum im Meldungsfenster angezeigt wird. Diese Eigenschaften werden lokal in einer Datei gespeichert, das Programm führt keine schreibenden Vorgänge auf der Datenbank aus.

Wozu braucht man sowas?

DB-Scanner kommt überall dort zum Einsatz, wo eine Datenbanktabelle permanent auf bestimmte Veränderungen kontrolliert werden muß.
Zum Beispiel wäre es denkbar, daß die Einsatzberichte von Außendienstmitarbeitern einer großen Firma bei einem automatisierten Abgleich in die Datenbank der Firma fließen. Um nun möglichst zeitnah von den neuen Berichten zu erfahren, kann man mit einer geeigneten DB-Scanner-Abfrage auf der Datenbank permanent nach neu eingetroffenen Berichten scannen lassen.

Eine andere Möglichkeit wäre, nach ungewöhnlichen oder dringenden Kundenreklamationen zu scannen, die in Echtzeit in eine Datenbank fließen.
Die Möglichkeit einzelne, bereits angezeigte Datensätze von der nächstfolgenden Abfrage auszuklammern verhindert, daß der selbe Datensatz bei jeder Abfrage erneut angezeigt wird.

Denkbar wäre auch eine permanente Langzeitüberwachung einer Datenbank, in der nur sehr selten oder sporadisch eine (Daten-)Fehlersituation auftaucht, auf die aber schnell reagiert werden muß. Durch die flexible Gestaltung der einzelnen Abfragen sind vielfältige Einsatzmöglichkeiten denkbar.


Gruß Markus

Screenshots:
Bild

Bild Bild

Bild

Bild

Verfasst: 14.12.2007 14:23
von bobobo
nett :D

geht :mrgreen:

nun zur
--meckerabteilung

wenn umfangreichere daten zurückgeliefert werden sollen wird's recht
lahm .. liegt's an dem ausgabefenster ? das sieht eh nicht sooo super-
gut aus. ein listicongadget wäre vermutlich eher geeignet.

die speicherauslastung bei komplexen anfragen ist suboptimal und
eigentlich zu hoch

--wunschabteilung

die überwachung von mehreren datenbanken gleichzeitig im programm
wäre nett

die ausgabe weiter beschränken

direkter aufruf externer programm mit übergabe von einstellbaren parametern (auch aus dem ergebnis) als commandline-parameter
bei eintreffen bestimmter werte in bestimmten spalten.

Verfasst: 14.12.2007 16:12
von Kurzer
Danke fürs testen bobobo, werde die Erweiterungsvorschläge überdenken. Abfragen auf mehreren DBs auszuführen, daran hatte ich letztens auch schon gedacht, allerdings war das Konzept ehemals auf nur eine DB ausgelegt. Mal gucken, was man da machen kann ohne zu viel umwerfen zu müssen.
bobobo hat geschrieben: wenn umfangreichere daten zurückgeliefert werden sollen wird's recht
lahm .. liegt's an dem ausgabefenster ? das sieht eh nicht sooo super-
gut aus. ein listicongadget wäre vermutlich eher geeignet.

die speicherauslastung bei komplexen anfragen ist suboptimal und
eigentlich zu hoch
Über wieviel Datensätze und Sekunden reden wir hier?
Wie hoch ist die Speicherauslastung bei Dir?
Ist die gleiche Abfrage in dem "Meldungsfenster" schneller?

Da ich das Tool bei uns in der Firma selbst nutze und dort nicht mehr als max. 20 Sätze pro Scan kommen, ist mir das noch nicht aufgefallen.
Allerdings ist die Abfragefunktionalität im Hauptfenster nur rudimentär eingebaut. Das gesamte Result wird in *einem* String gehalten, evtl. liegts daran - könnte mit einem Array oder LinkedList schneller werden. Die Abfragen im Automatikmodus werden in einer LinkedList gehalten - wenn das Meldungsfenster also schneller anzeigt, dann liegt es def. daran.
Ich müsste mir hier erstmal ein paar Daten für ne große Abfrage generieren, von daher die Frage ab wieviel wirds bei Dir langsam.

Markus

Edit: Jo, die lahme Reaktionszeit bei großen Resultsets liegt am String. Werde ich umbauen auf LinkedList. Der geht ja schon bei 1000 Zeilen voll in die Knie. :o

Verfasst: 14.12.2007 18:27
von bobobo
50 Proz aufm DoppelProz (entspricht 100 Proz beim MonoProz denk ich)

wg.Ausgabe
ich hab grade ein ähnliches projekt am start..

wenn du in der Ausgabe in einem String sammelst und den an ein stringgadget schickst ist das leistungstechnisch nich so der bringer.

mittlerweile sammel ich in einer tempdatei, die ich am Ende dann wierrum einlesen
Vorteil .. Speicherplatz ist kein Problem. Performanz wuppt.

ich hatte ab ca 300 Rückgabesätze einbrüche

Verfasst: 24.12.2007 01:06
von Kurzer
Bobobos Anmerkungen zu Herzen genommen und die Datenselektion umgebaut.

Performance und Speicherverbrauch sind nun viel besser. Leider noch keine Multidatenbankunterstützung in dieser Version. Nächste große Änderung (für mich) wird erstmal sein, die GUI vom Visual Designer auf PureFORM von gnozal zu portieren. :freak:

Changelog: [23.12.2007 V 0.93.04 build 120]

chg - Allgemein: Für zukünftige Erweiterungen wird das Ergebnis einer Abfrage temporär auf Festplatte zwischengelagert und zur Anzeige von dort gelesen (Datei DB-Scanner.tmp im TEMP Verzeichnis). Die Datei wird beim Beenden von DB-Scanner wieder gelöscht.

chg - Allgemein: "Schönere" Programm- und Trayicons erstellt. ;-)

add - Hauptfenster: Aus Performancegründen wurde der Anzeigebereich für die Ergebnismenge von "RichEdit" auf "ListIcon" umgestellt.

add - Hauptfenster: STOP-Button zugefügt, mit dem man das Einlesen von großen Datenmengen stoppen kann.

add - Einstellungen: Neue Option im Bereich Datenbank "Datensatzlimit: xx Zeilen". Hier kann eine Limitierung für die ausgeführten Abfragen angegeben werden, um das "Platzen" des Programms bei sehr großen Datenmengen zu verhindern.

add - Einstellungen: Zwei neue Option in der Ini-Datei im Bereich [NoGUIsettings] zugefügt. "UseOwnClearList" und "FeedbackFromRowxOn", siehe hierzu die Hilfedatei, Bereich Einstellungen, ganz unten.


PS: Ursprungspost geupdated.

Verfasst: 05.08.2008 22:13
von PBFetischist
Lebt das Projekt noch ?

Die Idee ist gut, Delta Ermittlungen sind auch bei Webshop Exports etc unheimlich gut einzusetzen. Machst du da noch was ?

Würde gerne mitmachen, da ich sowas ähnliches in unserer Firma einsetze.