Datenbankzugriffe beschleunigen in Visual Basic

Seit ich bei E.ON den Programmcodeblock zum Update der Datenbank geschrieben habe, stört mich die irre lange Ausführungszeit. Es geht dabei darum, von ca 300.000 Datensätzen anhand zweier Felder zu prüfen, ob sie bereits in der Datenbank sind, und ggf. Ergänzungen vorzunehmen. Beide Felder enthalten numerische Werte.

Bisher habe ich dazu ein Recordset geladen, was alle Datensätze in der Tabelle enthält, und dann eine Schleife geschrieben die alle eventuell zu ergänzenden Datensätze durchläuft. Darin wurde dann jedesmal ein Filter auf das Recordset gesetzt, und entweder blieb dann genau ein Datensatz über oder keiner, wenn's keiner war, musste ich den ergänzen. Das hat natürlich immer ewig gedauert, so etwa 1,5h, denn je nachdem wie intelligent Access da arbeitet, waren das 300.000 Durchläufe - für jeden der 300.000 Datensätze.

Jetzt habe ich einfach mal, in der Hoffnung den Vorgang vielleicht wenigstens auf ein Drittel reduzieren zu können, eine ganz andere Methode gewählt: Ich erstelle ein zweidimensionales Boolean-Array (für jedes Feld eine Dimension) mit den minimalen und maximalen Werten der Fehler als Grenzen (... To ..., ... To ... mit ReDim, Dim lässt da nur konstante Werte zu, meine sind aber dynamisch, da es sich um IDs einer anderen Datenbanktabelle handelt). Dann durchlaufe ich das Recordset, bei dem ich vorher immer den Filter setzen musste, einmal komplett und setze dabei im Array alle Felder, die durch das Recordset angegeben werden, auf true (meinarray (rs("feld1"), rs("feld2")) = true). So erhalte ich ein Array, in dem die vorhandenen Felder markiert sind.

Das Recordset wird jetzt schon nicht mehr benötigt. Der nächste Schritt durchläuft alle möglichen Werte für die beiden Felder (verschachtelte Schleife) und prüft dabei, ob der Wert im Array an der gerade durch die Schleifen gegebenen Stelle false ist. Falls ja, wird das Wertepaar in der Datenbank ergänzt. Dadurch, dass das Array vom minimalen zum maximalen Wert der Felder dimensioniert ist, gibt es, wenn die Tabelle, der die IDs entstammen, nicht durchgehend ist (Datensätze gelöscht...), mehr Positionen im Array als abgefragt werden, die dann auch auf false stehen. Macht aber nix, da die Schleife, in der die Ergänzungen vorgenommen werden, mit den tatsächlich eingetragenen Werten arbeitet und so keine IDs eingetragen werden, die es gar nicht mehr gibt.

Ergebnis: Statt 1,5 Stunden dauert der Vorgang jetzt vielleicht noch 20 Sekunden... Hätte nicht gedacht, dass es SO ineffizient ist, mit einem Recordset zu arbeiten. Anscheinend wird doch keine Kopie im Programm angelegt, sondern immer direkt auf die Datenbank zugegriffen.

Was vielleicht noch anzumerken ist, wäre die Tatsache, dass ich beim Anlegen des Recordsets nebenbei den Zugriffsmodus auf "adLockBatchOptmistic" gesetzt habe, was sich vom Namen her passender anhört als "adLockReadOnly", welches ich zuvor verwendet hatte. Die Beschreibung sagte was anderes, deshalb hab ich das zuvor nicht benutzt. Was genau jetzt den größeren Geschwindigkeitsvorteil ausgemacht hat, weiß ich nicht, ist mir aber eigentlich auch egal :D



Ebay, die Technik und die deutsche Sprache

ebay-rechtschreibung-gespeicherte-suchen-small.png



Adobe Creative Suite 4

Das die demnächst rauskommt, konnte man ja schon lesen. Da auf meiner Dauerwunschliste noch die CS3 stand und ich grad bei der Suche nach dem Download einer Testversion von Photoshop mal wieder über CS4 gestolpert bin, hab ich mir mal die Angebote bei Amazon und den Editionsvergleich (Design, Web) bei Adobe angeschaut.

  1. Die Web-Ausgabe würde sich mehr für mich lohnen als die Design-Ausgabe, da billiger und trotzdem umfangreicher (kein InDesign, dafür Contribute und Soundbooth).
  2. Schüler sparen 87% beim Kauf einer CS4 Premium-Ausgabe.
  3. 87% sparen bedeutet momentan, dass ich CS4 Web Premium für 296,31€ bekomme. Versandfrei.

--> *Vorbestellen anklick*

Dazu gibt's die Tiefpreis-Garantie von Amazon, wenn ich als innerhalb 48h nach Versand irgendwo ein besseres Angebot finde, gibt's ne Gutschrift, und den Vorbesteller-Vorteil, da ich also jetzt schon bestellt habe, zahle ich den niedrigsten Preis, der bis zum 8. Dezember auftritt.

Photoshop Illustrator Acrobat Flash Dreamweaver Fireworks Contribute Soundbooth *gggg*



Facharbeit zum Thema Autoaggression

Nicht aus aktuellem Anlass oder weil ich sie grad geschrieben habe (das war im Februar 2008), aber weil ich sie gerade wieder ausgegraben habe hier meine Facharbeit zum Thema Autoaggression. Vielleicht hilft sie ja mal jemandem weiter, und wenn nur als Weiterbildung aus Interesse.

Thema: Autoaggressives Verhalten bei Jugendlichen - Auftreten, Ursachen und Therapieansätze

Download / Ansehen (PDF)



Digitaler Notizblock mit Handschrifterkennung

Nach der Evolution vom Heft zum Collegeblock hat mich nun die nächste Stufe erreicht: Der digitale Notizblock. Seit heute besitze ich einen DigiMemo A4 hahahah

Das Gerät funktioniert erstaunlich simpel, ich hab's nur ausgepackt und Papier eingespannt und konnte dann mit dem Stift direkt drauflos schreiben und anschließend auch einwandfrei meinen Test-Blödsinn auf den PC übertragen, ansehen, bei Bedarf korrigieren und in eine PDF-Datei speichern.

Ebenfalls begeistert hat mich die Handschrifterkennung, die als Testversion beigefügt war - zumindest bei normalem Text funktioniert die wunderbar und erkennt wirklich nahezu alles Buchstabe für Buchstabe. Diese Anschaffung werde ich sicher nicht bereuen, zumal ich längst nicht die 149€ von Amazon gezahlt habe. Als "kleines Gimmick" fungiert der DigiMemo als Tablett für den PC, so dass ich quasi direkt auf dem Bildschirm malen kann. Ist allerdings sehr gewöhnungsbedürftig, finde ich. Alternativ bietet die Software die Möglichkeit, direkt am PC zu schreiben, sprich wieder wie normal auf Papier, nur dass die Übertragung live erfolgt und in der Software dargestellt wird. Zu diesen Zwecken steht auch eine Plastikmine zur Verfügung, damit man sein Gekritzel nicht mit Tinte festhalten muss.

testseite-small.png



Jubiläum

Juchhe, das hier ist der hundertste tatsächlich veröffentlichte Post in meinem Blog. Der erste kam am 28. Juli 2008, zwei Tage später die ersten mit Inhalt. Seitdem hab ich einiges angepasst und bin inzwischen ziemlich zufrieden mit dem was dabei rausgekommen ist hahahah

Der Blog verfügt aktuell übrigens über 13 Kategorien und 464 Tags sowie 47 Kommentare.

Eine Neuerung dieser Woche sind die Titeltags, wie auch bei diesem Post. Sie kennzeichnen Serien zu einem bestimmten Thema innerhalb einer dazu passenden Kategorie, die zu klein sind, um eine eigene Kategorie zu werden. Zum Beispiel eben die Posts zum Blog, die allgemein mit Technik / Programmierung zu tun haben. Dazu gibt es auch eine Seite mit einer Liste der Titeltags, so dass man bei Bedarf direkt alle Posts mit diesem Tag anzeigen lassen kann - oben unter Artikelserien.

Außerdem kann man endlich im Blog suchen. Funktioniert besser, als ich erwartet hatte, und so wurden mit der Suche auch die Links auf der Seite Artikelserien erstellt - einfach eine Suche nach dem jeweiligen Titeltag.



Artikelserien

Artikel gelöscht.



Gedanken zum Ticketsystem beim VRR

Eigentlich hatte ich bloß eine Verbindung rausgesucht, bin dann aber zufällig über die Infoseiten zu den neuen Preisstufen gestolpert. Bisher haben die mich nie interessiert, da ich ja mit meinem Aboticket nicht betroffen bin. (Nebenbei fällt mir auf, dass sogar bei der Verbindung schon ein Fehler ist, das System denkt nämlich nicht daran dass die Züge, die über Essen Hbf / Oberhausen fahren, momentan durch einen Bus ersetzt werden, wodurch es zu massiven Verspätungen kommt...)

Aus Neugier hatte ich dann rausfinden wollen, wie sich die Preise der Tickets verändert haben durch die Einführung der neuen Preisstufe, denn wenn C einfach eingeschränkt wurde und eine noch teurere Preisstufe D draufgeknallt, wär das ja reichlich dreist. Das hab ich nicht rausfinden können, dafür hab ich ein paar andere unverschämte wie dumme Forderungen gefunden:

  • Nicht vergessen: Vor der Fahrt das Ticket abstempeln! Na, kein Wunder, dass die Fahrer die Kunden immer wieder darauf hinweisen, dass die Tickets schon gestempelt sind...
  • Einmal abgestempelte Tickets sind übrigens nicht übertragbar. Wieso das denn? Tickets weitergeben an jemanden der vielleicht keins hat oder eins kaufen müsste, wenn es noch ausreichend gültig ist, kann doch nicht verboten sein. Außerdem kann das eh keiner kontrollieren.
  • Ausnahme: Mit dem Kurzstrecken-Ticket ist ein Umstieg zwischen Zügen der DB und Straßenbahnen, Bussen oder U-Bahnen nicht möglich. Von wo nach wo darf man denn jetzt nicht umsteigen? Und wieso überhaupt irgendwo nicht? Schlimm genug, dass die Kurzstrecke inzwischen 1,30€ kostet... außerdem auch hier: Der VRR verbreitet andere Informationen als seine Schilder. An quasi jeder Haltestelle sind die Haltestellen aufgeführt, die im Kurzstreckenbereich liegen. Teilweise mit dem Hinweis: Umsteigen erforderlich.
  • 4erTickets gibts an Automaten und in den Vertriebsstellen. Und beim Fahrer.

Schade, dass ich keine alten Tarifinformationen mehr da habe, sonst könnte ich jetzt auch noch Preise vergleuchen. Da der VRR ja damit wirbt, dass die Kunden jetzt flexibler wählen können, könnten sie das mit den angepassten Preisen im Vergleich zu vorher ja eigentlich direkt belegen...