kraft shdl

Viele Wege führen nach Rom – wer kennt dieses Sprichwort nicht. Und natürlich gibt es auch in der Informatik viele Wege ein Problem zu lösen. Aber man sollte sich bei der Umsetzung schon an anerkannte Standards und Verfahren halten.

Dabei helfen zum Beispiel die Entwurfsmuster oder auch Design Patterns von Erich Gamma (http://de.wikipedia.org/wiki/Entwurfsmuster). Dann gibt es Grundsätze, die jeder kennen sollte. Und um einen solchen Grundsatz soll es hier genauer gehen. Aktuell haben wir hier Werkstudenten, die ein Werkzeug zur grafischen Anzeige von Messwerten programmieren. Dieses liest eine Vielzahl von in der Datenbank gespeicherten Messwerten aus einer Datenbank und stellt sie grafisch aufbereitet dar. Um die Laufzeit zu optimieren, werden zunächst nur so viele Reihen gelesen, wie in der Oberfläche auf einer Tabellenseite angezeigt werden können. Unter der Tabelle gab es eine Schaltfläche mit der die nächsten 100/500 oder 1000 Reihen gelesen werden können. Bei einem ersten Test klicke ich darauf und wundere mich, dass ich nicht 500 mehr Reihen sehe sondern nur 13. Auf Nachfrage erfahre ich, dass die nächsten 500 Reihen aus der Datenbank gelesen werden und die gelesenen Daten dann nach den Messwerten gefiltert werden, die betrachtet werden sollen. Und diese kamen in den 500 gelesenen Reihen eben nur 13-mal vor.

Das verstößt gegen einen wichtigen Grundsatz bei der Arbeit mit Datenbanken: „Lese immer nur die Daten, die Du brauchst – filtere die Daten nicht im Nachhinein“. Darauf angesprochen stoße ich zunächst auf Unverständnis er sagt aber, dass er es ändere. Als er mir die neue Version zeigt klicke ich auf den Button und ich habe 523 mehr Reihen. Auf meine Nachfrage sagt er, dass er jetzt so lange alle Reihen einliest, bis er die gewünschte Messwertanzahl erreicht. Leider ist eine Punktlandung nicht möglich. Das kann doch nicht sein denke ich und weise ihn noch mal auf den Grundsatz hin. Er behauptet steif und fest seine Lösung sei performanter. Wir stellen dann allerdings fest, dass in der Datenbank ein Index fehlt. Nach dem Anlegen werden die Abfragen, die die Daten gleich filtern schnell ausgeführt. Aber er beharrt immer noch auf deinem Standpunkt, seine Lösung sei die bessere. Also versuche ich es ihm so klar zu machen: Ein Lagerarbeiter bringt auch nicht erstmal alle Schrauben an den Tresen um dann die auszusortieren, die er Kunde gar nicht haben wollte. Nein, er holt nur die, die er tatsächlich braucht.

Neben dem hier genauer betrachten Grundsatz gibt es noch zahlreiche weitere. Die sollte man kennen und in der praktischen Arbeit auch anwenden.

Zum Teil 4: Mit System
Zum Teil 6: Nenne es beim Namen