Eine schon länger andauernde, stetig wieder aufflammende Diskussion darüber, was die besten Methoden sind, um schnell Ergebnisse aus einer großen Datenhaltung zu bekommen hat mich dazu verleitet, die Kollegen mit einen Programmierwettrennen herauszufordern.
(Groß heißt hier: Ein Verzeichnisdienst mit über 30.000 Personendaten. Der gesamte Inhalt kann neben den Zugriff aufs LDAP auch über ein SQL von einen Firebird-DB erhalten werden, in der alle Daten gespiegelt sind)
Es müssen 4 Skripte erstellt werden, die spezielle einfache, aber auch komplexe Anfragen leisten. Dabei ist egal wie sie es machen, wichtig ist nur die Geschwindigkeit und die Richtigkeit der Ergebnisse:
Skript 1:
skript1, Argument: loginkennung
Liefert die Attribute mit einer "print Dumper();"-Ausgabe
zu der PERSON zurück, die die Loginkennung hat
Skript 2:
./skript2, Argument: KundenNummer
Liefert die Attribute mit einer "print Dumper();"-Ausgabe
zu der KuNu zurück
Skript 3:
./skript3, Argument: Nachname
Printed eine Liste aus Index und Freeformname aller Personen
in der Datenhaltung, bei denen der Nachname matcht.
Skript 4:
./skript4, Argument: loginkennung
Bei Eingabe der Loginkennung eines DV-Betreuers
wird eine Liste aus Index, Loginname, Freeformname
aller Personen ausgegeben, für die der DV-Betreuer
zuständig ist.
Um das ganze nicht nicht als reine Diskussion zwischen den Codern einer Programmiersprache und dann allenfalls zwischen den Lagern der SQL-oder LDAP-Fans zu belassen, hab ich das
Wettrennen ausgeweitet auf die Nebenbedingungen:
- Alle Beispielskripten müssen auf verfügbare Module in dem
Lib-Verzeichnis zugreifen oder/und auf CPAN/PEAR/OpenSource-Module. - Die maximal zulässige Ausführzeit für jedes Skript einzelnt ist *maximal 1 Sekunde*.
- Nur echte Datenhaltungsabfragen – keine Tricks ;)
- Der Programmierstil ist schnurzpiepegal!
Das Programm muss nur unter selben Bedingungen von anderen Benutzern mit denselben Ergebnissen reproduzierbar sein. (Kein: „Bei mir gehts“!) - Alle Möglichkeiten, welche serverseitig die Datenbank oder das LDAP ermöglichen, diese Antworten schneller zurückzuliefern (z.B. Indizierung oder Caching) sind explizit erlaubt.
- Die Programmiersprache ist erstmal egal. Perl wird aber bevorzugt.
- Natürlich werden wir auf die echten Datenhaltungen zugreifen!
- Das Wettrennen startet morgen, also am 2.Juni um 12 Uhr und endet am 30. Juni 2006, 12 Uhr.
Derjenige, der als erster alle Skripten fertig hat, welcher alle Bedingungen erfüllen, kriegt von mir eine Maß ausgegeben. Und darf sich für die Dauer eines Jahres offiziell die
„Erste Primadonna der RRZE-Coder“ nennen :)
Ich hab unsere PHP-Leute explizit dazu eingeladen, mitzumachen.
Denn was wäre eine größere Peinlichkeit für einen Perlcoder, wenn ein PHP-Skript es besser oder schneller könnte?
Dito natürlich andere Sprachen.
