So bitte nicht – Schnittstellen

Es ist an der Zeit die lose Reihe mal wieder etwas weiter zu führen, mit einem Thema das mich die letzten Tage wiederholt beschäftigt hat: Schnittstellen.

In der IT-Welt beschreiben Schnittstellen verschiedenste Dinge – den meisten vertraut sind die Begrifflichkeiten aus der Hardware – hier erkennt man auch noch recht klar die Eigenschaft einer Schnittstelle, sie bildet die Grenze zwischen zwei Geräten, verallgemeinert von Systemen. Welches System an einer Schnittstelle andockt ist im ersten Moment unerheblich – die meisten Schnittstellen sind universell gehalten: Ob man eine Tastatur oder eine Maus in eine USB-Buchse einstöpselt ist im ersten Moment unerheblich. Die Schnittstelle ist so ausgelegt, dass über verschiedene Ebene hinweg eine Kommunikation nach einem bestimmten Muster stattfinden kann. USB beispielsweise gibt verschiedene Operations-Modi für unterschiedliche Anwendungszwecke – von der Maus als Eingabegerät über den GPS-Sensor bis hin zum Speichermedium. Die häufig verwendeten Hadware-Schnittstellen sind durch verschiedene Normen und Vorschriften festgelegt. In der Industrie gibt es zudem verschiedene Eigenentwicklungen für spezielle Zwecke, diese sind nicht zwingend so universell wie USB, aber sie erlauben auch weiterhin den Austausch von Informationen von einem System zu einem anderen hin. Im Fahrzeug z.B. per CAN-Bus: Dort meldet die Klima-Regelung an die Klima-Anlage die gewünschte Temperatur und die aktuelle Temperatur, der Klima-Kompressor wird daraufhin entsprechend in der Leistung geregelt.

Soweit einmal der Sinn und Zweck von Schnittstellen an anschaulichen Beispielen, aber mit der Hardware ist ja noch lange nicht Schluss. Vielmehr ist das ja noch alles nachvollziehbar und man kann sich unter der Definition einer Schnittstelle sehr leicht etwas vorstellen. Aber auf etwas höherer Abstraktionsebene existieren weiter Schnittstellen. Diese sind nicht so leicht erkennbar, aber dennoch vorhanden.

Jeder Programmierer der nicht absolut blutiger Anfänger ist, kennt die Erzeugung von wieder verwendbarem Code – nahezu jede Programmiersprache (von einigen Exoten einmal abgesehen) kennt den Begriff einer Funktion oder Methode. Das Prinzip dieser Konstrukte lehnt sich an der Mathematik an: Meist gibt man eine bestimmte, wohldefinierte Menge von Werten in eine Funktion hinein, die daraus etwas errechnet, etwas auslöst etc. in aller Regel gibt es auch noch einen Rückgabe-Wert (je nach Programmiersprache gibt es auch Möglichkeiten mehrere Werte zurück zu geben, entweder über den Stack oder einen reservierten, gemeinsam genutzten Speicherbereich, oft als Heap bezeichnet – das hier zu erläutern würde allerdings zu weit führen …). Wenn man das Prinzip der Funktionen einmal verstanden hat, sind diese einfach praktisch zu verwenden. Wichtig ist hierbei immer die Parameter-Reihenfolge (wie in der Mathematik auch) und je nach Programmiersprache auch noch der Werte-Typ der Parameter (starke oder schwache Typisierung: In Skriptsprachen wie PHP und Perl ist der Typ egal, in Java oder C müssen auch die Typen übereinstimmen – für beide Standpunkte gibt es gute Argumente, ich tendiere mittlerweile eher zu starker Typisierung und würde sie mir auch in PHP wünschen … aber auch das würde diesen Artikel leider sprengen). In ganz ähnlicher Weise lässt sich das auf objektorientierte Programmierung ausweiten. Auch dort gelten die gleichen Grundsätze, zusätzlich gibt es noch ein paar nette Gimmiks on top.

Gehen wir noch eine Abstraktionsstufe höher, dann sind wir bei Abläufen und Prozessen und eigentlich nicht mehr zwingend in der Softwarewelt verhaftet. Jeder Austausch von Daten über Systemgrenzen hinweg benötigt eine Schnittstelle. Egal ob die beiden Systeme nun Rechner sind, Menschen, Unternehmen oder sogar jede beliebige Kombination aus den vorgenannten. Überlegen Sie einmal inwiefern ein Rechner ihnen bestimmte Schnittstellen eröffnet und wann sie diese nutzen. Etwas Hirnakrobatik, aber wenn man es mal gemacht hat, sind viele Dinge am Rechner mit einmal logisch verständlich.

Was leider immer wieder schief geht ist die Spezifikation entsprechender Schnittstellen in dieser Abstraktionsebene. Oftmals sind sich die beiden Kommunikationspartner nicht bewusst, dass eine klar definierte Sprache/Syntax/Form der Kommunikation notwendig ist um Missverständnisse und Fehler zu vermeiden. Das beginnt meist mit solchen Sprüchen „wir bekommen dann eine Datei, da steht alles drin was uns unser Partner mitteilen möchte und was wir wissen wollen…“. Wie diese Datei am Ende aussieht ist bei solchen Sachen meisten leider erst einmal egal – dank der Intelligenz vor dem Monitor ist es dem Betrachter auch egal ob ein Textdokument als reiner Text, Word-Datei, Vektorgrafik oder als pixelbasierte Bilddatei vorliegt. Lesen und verstehen kann der Mensch das alles. Problematisch wird es wenn es dann an die Automatisierung geht. Da sind nicht alle Formate wirklich gut geeignet – jeder der einmal versucht hat aus einem abfotografierten Text wieder einen editierbaren Text zu machen weiß wovon ich spreche: Ohne Optial Character Recognition (OCR – Texterkennung) geht da gar nichts und selbst die ist meist nicht sonderlich fehlerfrei, von der Semantik der einzelnen Texteile und dem Layout mal ganz zu schweigen. Besser sind dann schon Excel oder Word-Dateien wobei die auch nicht immer kompatibel untereinander sind. Es gilt auch hier das alte Mantra: Je einfacher, je simpler um so besser. In der IT hat man für diverse Datentypen gut erprobte Ablage-Möglichkeiten entwickelt. Tabellen kann man recht gut in SQL oder CSV ausdrücken, wenn es etwas weniger stark strukturiert ist, kommen XML-Varianten in Frage.

Was lernen wir aus diesen Sachen?

Erstens: Es geht nicht ohne Schnittstellen, selbst innerhalb eines Programms gibt es in der Regel verschiedene Module oder Funktionen die Daten untereinander austauschen und so zum Gesamtsystem beitragen. Diese Schnittstellen sind in der Regel durch die verwendete Programmiersprache und die Programmierweise vorgeben (funktionale, prozedural oder objektorientiert).

Zweitens: Schnittstellen nach außen hin (egal ob Mensch oder Maschine) müssen klar erkennbar und definiert sein. Man denke hierbei immer an die Zukunft und überlege ob es vielleicht sinnvoll ist, an einigen Stellen bereits die Option für eine externe Schnittstelle zu schaffen, später nachrüsten ist immer schwierig und bestehende Schnittstellen verändern ist wie beim Auto plötzlich Kupplungs- und Gas-Pedal zu vertauschen: Die Konsequenzen sind bestenfalls amüsant, schlimmstenfalls gefährlich und es kostet sehr viel Nerven…

Drittens: Bereits bei der Planung von Systemen berücksichtigen welche Daten mit externen Systemen automatisiert ausgetauscht werden sollen und wie. Einerseits muss klar definiert sein, welche Daten an externe Systeme bereit gestellt werden sollen. Evtl. ändert sich durch solche Anforderungen der Erfassungsbedarf in der eigenen Anwendung/dem eigenen System oder lässt einigen Sachverhalten eine neue Priorität zukommen. Auch wichtig ist das Format – dieses muss für den Anwendungsfall geeignet sein, Bilder in Word einzufügen um sie daraus wieder zu extrahieren ist ungeschickt – einfacher geht es wenn man Bilddateien direkt verschickt. Ist die Information tabellenförmig, so kommen Excel oder die simple Variante CSV (comma separated values) in Betracht. Für komplexere und ggf. nicht immer einheitliche Datenaustausche kann man sich mit XML behelfen. Wobei immer zu beachten ist: In aller Regel steht hinter jeder XML-Datei und jedem System auch wieder ein relationales Backend (aus Performance-Gründen) – es lohnt also, ggf. einmal auch die Betreuer und Entwickler des Partner-Systems über deren Struktur zu fragen.

 

 

Wallensteinlauf in Altdorf bei Nürnberg

Nach einigen stressigen Ereignissen der letzten Wochen war ich ja echt erholungsbedürftig – gut das ich schon seit dem Weltkulturerbelauf in Bamberg im Mai meinen Lauffreunden aus Nürnberg versprochen hatte am Wallenstein-Halbmarathon in Altdorf teilzunehmen. Die Veranstaltung an sich kannte ich ja bereits, allerdings vor zwei Jahren nur als Zuschauer, am Vortag war damals der Altmühlseelauf über die Bühne gegangen und an ein „doppeltes Lottchen“ (also aus 2x Halbmarathon in zwei Tagen ein Marathon-Wochenende zu machen) hatte ich damals keine Lust und war viel zu ausgepowert, daher damals nur Bilder vom Zieleinlauf.

Nun denn, einer der Stresspunkte beschäftigte mich erst mal doch noch: Eigentlich hatte ich ein gemeinsames Wochenende mit meiner Freundin geplant, aber da das mal wieder auf Eis liegt (welches mächtig Risse hat), war ich alleine unterwegs. In Stadtteil Kornburg, in dem meine vertraute Herberge liegt war Kerwe – nicht schlecht, dann kann  man gleich am Freitag Abend mit dem Carbo-Loading beginnen.

Den geplanten Besuch des Tierparks habe ich mir nicht nehmen lassen. Immerhin war ich jetzt schon so häufig in Nürnberg, und hatte sogar jeweils ein Semester im Sommer und Winter Zeit den Park zu besichtigen und hatte es nicht geschafft. Mit Helga und Heinreich als kompetente Führer war der Samstag sehr kurzweilig. Der Park ist sehr schön angelegt und man könnte darin wohl auch locker verschiedene Läufe mit reichlich Höhenmetern machen, ohne das es langweilig würde. So groß hatte ich ihn mir dann doch nicht vorgestellt. Aber ich weiß jetzt, dass ein Besuch definitiv auch ein weiteres Mal lohnt.

Abends ging es dann noch zur Startnummern-Ausgabe und Nudelparty. Ein zusätzliches Highlight waren die Kinder-Läufe über 400 und 1000m – einfach drollig anzuschauen und die Athleten von morgen zu bestaunen. Das kostenlose Nudelangebot wurde von allen Anwesenden Läufern und Begleitern mit viel Begeisterung angenommen – beinahe wären den Veranstaltern die Nudel und die Sauce ausgegangen. Zwischenzeitlich bildete sogar eine recht eindrucksvolle Schlange vor der Nudelausgabe. Klar, so einen Service gibt es eben nicht bei allen Läufen.

All zu lange sind wir denn auch nicht mehr geblieben, denn der Lauf startet sehr früh: Bereits um 8:00h in der Frühe ist der Start. Also nix wie morgens raus aus den Federn, Sachen packen und los gehts. Nachts hatte ich noch überlegt wie ich den Lauf angehen will – das Höhenprofil versprach einige Abwechslung – also nur nicht frühzeitig das Pulver verschießen. Außerdem wollte ich diesen Landschaftslauf ja bewusst zur Erholung machen, daher habe ich meine Ambitionen deutlich nach unten geschraubt und mir irgendetwas unter 2h vorgenommen, wenn es gut läuft sollten es unter 1:45 werden. Für mich sehr ungewohnt nicht mit einer neuen Bestzeit als Ziel in einen Lauf zu gehen. Ausgerechnet hatte ich mir Kilometerzeiten von 5:10 bis 5:30 min/km – irgendwo der Preisklasse, erfahrungsgemäß kann ich bei diesem Tempo entspannt laufen.

Fast schon überpünktlich krachte der Startschuss und die rund 300 Läufer setzten sich in Bewegung. In einigen Kurven und mit ersten Höhenmetern garniert geht es durch Altdorf. Bereits nach einem Kilometer merke ich, dass ich die Streckenbeschreibung wohl verkehrt herum interpretiert habe, zumindest was die Strecke nach einem kurzen gemeinsamen Stück auf das Stadttor betrifft. Aber halb so wild – wie rum man das nun läuft ist ja eigentlich egal und die Versorgungsstationen kommen eben dann etwas anders. Versorgung, ein gutes Stichwort: Es war schon beim Start angenehm warm – gut dass ich genügend Wasser am Mann mit mir herum trage. So konnte ich bereits lange vor der ersten Versorgung mal etwas „Schmiermittel“ nachtanken. Das war auch bitter nötig, denn die Kilometerzeiten waren alles andere als die geplanten „etwas mehr als 5 Minuten pro Kilometer“ … Der erste Kilometer flog an mir mit 4:06 Minuten vorbei … und auch die nächsten wurde es nur sehr allmählich besser. Andererseits bot sich die Strecke auch wirklich an: In Serpentinen ging es die ganze Zeit eigentlich stetig bergab, mal mehr mal weniger. Schmerzlich rief ich mir das Diagramm der Höhenmeter in den Kopf: Da war irgendwo ein großer Anstieg mit dabei und so viel wie wir bergab unterwegs waren würde der wohl richtig kräftig ausfallen. Irgendwo ziemlich in der Mitte wusste ich noch.

Mit Kilometer 5 klappte es dann auch mal endlich im Zielzeitfenster zu landen – ein wenig mehr als 5 Minuten bei ganz leicht ansteigendem Kurs. Insgesamt eine wirklich schöne Landschaft – mit der gefundenen Geschwindigkeit kann ich mich nun auch dieser ausführlicher widmen. Es geht durch Wälder und Auen, durch verschiedene Ortschaften und überall ist trotz der frühen Uhrzeit richtig Stimmung an der Strecke. In Schleifmühle biegt der 12km Lauf ab, für die Halbmarathonis geht gerade aus weiter durch die schöne Landschaft. Immer wieder gibt es kleiner Anstiege zu bewältigen und ich mahne mich zur Vorsicht, die nur nicht hochzuspurten.

Die Strecke quert die A3 unter einer Autobahnbrücke und danach geht es richtig kräftig bergauf, Kilometer 9 ist erreicht. Ich denke darüber nach ob das jetzt alles an Steigungen war oder nicht und bleibe weiter vorsichtig – insgemein stecke ich mir einen Marker bei Kilometer 15 – danach dürfte es nach meiner Erinnerung keine größeren Steigungen mehr geben. In Pühlheim steht wieder eine Versorgungsstation, genau richtig am Ende der Steigung – ich packe mir zwei Becher Wasser und kippe mir einen gleich mal über. Auf den sonnigen Abschnitten der Strecke ist es fast schon unangenehm heiß: Erinnerungen an die Strecke der Ulmer Laufnacht zwischen Kilometer 70 und 75 kommen hoch – dort ist es gefühlt auch immer unerträglich war (es sei denn es regnet). In sanftem Bogen geht es nun weiter gen Hegnenberg, ein kleines Waldstück beschattet die nächste Steigung zumindest zu Beginn, das macht sie erträglicher. Aus dem Wald heraus geht es den Berg hoch – der Name des Ortes ist Programm. Die Streckenführung erinnert mich unwillkürlich an den Kunzenbach am Kalten Herrgott, eine meiner häufigen Trainingsetappen im Odenwald.

Ab der Ortsmitte geht es dann langgezogen bergab, auch nicht ganz einfach zu laufen, länger Phasen bergab muss man auch ein wenig trainieren. Wieder unterqueren wir die Autobahn, der Wald drum herum spendet etwas Schatten bevor man in der Ferne schon Altdorf sehen kann. Nun geht es entlang der Landstraße durch die Sonne, ich schwitze fürchterlich, aber die Landschaft verliert dadurch keinenfalls ihren Reiz. Auch meine Kilometerzeiten sind jetzt absolut im Soll – in den Steigungsstrecken hatte ich zwischenzeitlich mal etwas mehr als 5:30, aber ein wenig Reserve habe ich mir ja heraus gearbeitet mit den Sprint-Kilometern zu Beginn.  Mittlerweile sind 15km geschafft – die Steigungen liegen also alle hinter mir. Nun liegt noch eine kleine Schleife durch den Wald vor mir, einige etwas in die Länge gezogene Anstiege gilt es noch zu bewältigen, aber mit Kilometer 16 verlasse ich den kühlen Wald und stehe schon direkt in Altdorf. Jetzt ist es ja auch nicht mehr weit bis ins Ziel.

Am Ortseingang stehen jede Menge Leute im Vorgarten – es gibt einen Kommentar zur Hitze und ich entgegne: „Wo ist der Gartenschlauch?“ – wie ich auf den Bildern der Veranstalter später sehen kann, wurde das doch prompt als Verbesserung umgesetzt. Die Dusche am Wegesrand ist eine tolle Sache, die ich aus Bamberg kenne und nicht mehr missen möchte wenn es mal wieder heiß wird. Nun liegt die Altstadt von Altdorf vor mir, wie für mittelalterliche Städte üblich liegt sie etwas erhöht. Die Kilometer bis zum unteren Stadttor ziehen sich etwas hin, denn es geht schnurgerade stetig aufwärts. Im Stadtkern wird es besser, dort ist das Altstadtfest und die ersten Buden rüsten sich für den Ansturm, dazu etwas Musik die mich die Steigung zum oberen Stadttor förmlich hinauf trägt.

Noch etwas mehr als zwei Kilometer – und noch immer geht es ein klein wenig bergauf – die Straßen in der Stadt sind schon gut aufgeheizt, das Laufen fällt langsam etwas schwerer bei der Hitze. Aber jetzt lasse ich nicht mehr locker. Auf die Uhr habe ich schon gar nicht mehr groß geschaut. Prompt verpasse ich auch irgendwie das Schild für den Kilometer 20, aber die Umgebung wird langsam vertraut, weit ist es nicht mehr bis zur Mittelschule. Dankenswerter Weise führt die Strecke dann zur Schule hin auch noch mal etwas bergab und ich kann nochmals Läufer einsammeln bevor es auf die Ehrenrunde ins Stadion geht. Ziel erreicht und das in 1:42 irgendwas – also ist doch alles ok.

Noch kurz etwas warten und sich an der reichlichen Verpflegung laben: Obst in jeder erdenklichen Form, Wasser, ISO – was das Herz begehrt. Dann zum Duschen und zur Massage, erstaunlicherweise habe ich nur in den Waden Probleme, nicht jedoch wie ich gedacht hätte in den Oberschenkeln. Zur Siegerehrung gibt es dann noch ein reichhaltiges Kuchenbuffet, dazu bavarian Iso-Drink in Form von alkoholfreiem Weizenbier.

Fazit: Ein sehr schöner Lauf, der kommt auf die Liste für nächstes Jahr 😉

Wie man keine 100km in Biel läuft … – Fluthelfereinsatz an der Elbe

Es hat dieses Jahr nicht sein sollen. Lange habe ich mich auf den 100km Lauf in Biel vorbereitet, Startgebühr überwiesen, Hütte mit den Kollegen gebucht und sogar schon alles gepackt gehabt.

Aber am Mittwoch (einen Tag vor der Abfahrt nach Biel) kam der Einsatzbefehl vom THW nach Dresden zur Hilfe in den überfluteten Gebieten. Die Entscheidung ist mir nicht leicht gefallen, aber da ich immer der Meinung bin, man sollte nicht nur an sich denken sondern auch der Gesellschaft etwas zurück geben, habe ich kurzerhand Biel gecancelt. Ärgerlich wegen der Gebühren, aber ich hätte auch krank werden können – dann wäre es auch Essig gewesen.

Daher gibt es jetzt auch keinen Bericht über den Lauf in Biel, allenfalls eine Absichtserklärung: Aufgeschoben ist nicht aufgehoben und der Lauf findet jedes Jahr statt. Je nachdem wie es ausgeht könnte ich mir ja sogar ein Doppel vorstellen: Ulm und Biel in einem Jahr. Mal sehen was sich so ergibt.

Der Einsatz in Dresden war um so ereignisreicher und eine Erfahrung die ich auf keinen Fall missen möchte. Die Freundlichkeit der Menschen wenn man kommt und helfen kann. Vor Ort war ich als Kraftfahrer und Maschinist für unsere Großpumpe mit 5000l/Minute. In 10 Tagen hatten wir drei Einsatzstellen in Dresden und dem Umland zu bewältigen. Aufgrund der großen Wassermassen haben wir an jedem Einsatzort mehrere Tage gepumpt.

Angefangen haben wir in Cossebaude am Pumpwerk. Dieses konnte die Wassermassen nicht mehr bewältigen und hatte sich abgeschaltet. Mit viel Mühe konnten wir den Pegel über Nacht halten, nachdem der Scheitel der Elbe durch war, gab es dann auch sichtbare Erfolge. Schon am nächsten Tag konnte das Pumpwerk wieder in Betrieb gehen, und den Pegel somit nochmals rapide senken. Ein Dank auch hier an alle freiwilligen Helfer und die Bevölkerung die mit uns gegen die Flut gekämpft haben. Eine derartig gute Verpflegung habe ich noch nicht erlebt. Von Salat bis Schnittchen war für jeden etwas dabei.

Der Abbau verlief denn auch recht zügig, auch wenn wir kurzzeitig dachten, wir könnten gerade wieder alles aufbauen, als ein sehr ergiebiger Platzregen niederging. Mitten in dem Gewirr sollte ich dann auch noch mit einem unbekannten Gespann rückwärts fahren – nachdem der Regen etwas nachgelassen hatte habe ich es immerhin geradeaus rückwärts hinbekommen. Aber um die Kurve muss ich wohl mal wieder üben.

Die nächste Einsatzstelle war schon ausgemacht: In Pillnitz war eine Senke im Ortskern vollgelaufen und damit natürlich auch die umliegenden Keller und Geschäfte. Ein Abpumpen in die Kanalisation war nicht möglich und der Weg bis an die Elbe mit fast 500m sehr weit. Daher haben wir den Schlosspark dort kurzerhand als natürliches Puffer-Becken genutzt und mit einer Hannibal-Pumpe und der Börger-Pumpe gearbeitet. Auch hier war die Versorgungslage wieder spitze. Von Spaghetti bis Broiler (Brathähnchen) – sehr lecker. Es war auch das erste Mal, dass ich den Unimog so richtig zu schätzen gelernt habe: Klein, wendig und unheimlich kraftvoll. Im Laufe des Einsatzes haben wir dann noch einen Pumpensumpf in der historischen Parkanlage ausgehoben, die Wiese wird es überleben … Zudem haben wir mehrere Goldfische gerettet und wieder an die Besitzer übergeben können.

Nun gab es erst einmal einen Tag Einsatzpause im OV Dresden, den wir ausgiebig genutzt haben um unser Material wieder auf Vordermann zu bringen, Betriebsstoffe aufzufüllen und den Helfern etwas Erholung zu gönnen. Naja für meinen Geschmack etwas viel der Erholung, aber ok muss auch mal sein.

Am Folgetag gab es einen neuen Einsatz, wieder in Cossebaude bzw. dem benachbarten Gohlis. Diesen Ort hat es wieder besonders schlimm erwischt, die Häuser standen teilweise bis ins 1. OG im Wasser. Erste Aufgabe war das Abpumpen eines Tümpels der sich in einer alten Schutthalde gebildet hatte und dessen Druckwasser in den umliegenden Kellern aus den Wänden quoll. Mit jedem Zentimeter den der Pegel sank nahm das Plätschern dort ab und auch die angrenzenden Gartenflächen wurden wieder sichtbar. Ein toller Erfolg, und ich wechselte als Spezialist in die Nachtschicht.

Die letzte Einsatzstelle bildete dann Gohlis selbst. Dort setzten wir alle Pumpen ein, die uns irgendwie zur Verfügung standen – durch eine Lücke im Deich war der Ort überflutet worden, nur stand das Wasser nun hinter dem Deich und musste da wieder raus. Insgesamt waren wir mit rund 70 Kubikmeter/Minute am Werk, mit der Unterstützung des schrittweise wieder anlaufenden Pumpwerke ging der Pegel auch hier schnell zurück. Abschließend kümmerten wir uns noch um eine relativ große Fläche die als tiefsten Punkt dankenswerter Weise eine Baugrube hatte. Leider war der Katastrophenalarm aufgehoben und wir mussten den Einsatz an die Feuerwehr übergeben. Sehr zum Unverständnis einiger Helfer und auch der Anwohner. Aber was will man machen.

Weitere Einsatzbefehle gab es dann leider nicht mehr, und so traten wir den Rückweg über Bad Hersfeld nach Lampertheim an. Nach 12 Tagen wieder nach Hause zu kommen ist schon ein tolles Gefühl (auch wenn mir die Ohren vom Unimogfahren doch immer noch klingelten).

 

Turnfest-Howto

Wie bereits angekündigt will ich hier etwas ausführlicher die Erfahrugen meinerseits bezüglich des Turnfests und der damit verbundenen Organisation der Übernachtungen in Schulen beschreiben. Ziel ist es, für andere Menschen – die z.B. das kommende Turnfest in Berlin 2017 oder eine ähnliche Veranstaltung betreuen wollen einige Fallstricke aufzuzeigen und die sogenannten best-practices weiter zu geben. Es reicht wenn Fehler einmal passieren, beim nächsten Mal bitte ein paar neue, damit es nicht langweilig wirde 😉

Lange vor dem Turnfest (ca. 1 Jahr vorher): Die ersten Anfragen gehen an die Vereine – bereits muss sich ein Verein entscheiden ob er eine Schulbetreuung übernehmen will und welche Schule es denn sein soll. Bei der Auswahl kommen verschiedene Kriterien in Frage: Nähe zum Verein, persönliche Beziehungen, Kontaktpersonen in der Schulleitung etc. Wichtig ist auch abzuschätzen: Kann der Verein die angepeilte Schule überhaupt alleine betreuen oder ist ggf. eine Kooperation mit anderen Vereinen notwendig? Die DJK-Feudenheim hat etwas mehr als 1000 Mitglieder, damit haben wir die Feudenheimschule mit rund 600 zu erwartenden Übernachtungsgästen stemmen können. Für kleinere Vereine empfiehlt es sich ggf. auch kleinere Schulen zu übernehmen – nichts ist frustrierender wenn am Ende zu wenige Helfer zu viele Schichten stemmen müssen.

ca. 9 Monate vor dem Turnfest wird es langsam ernster: Bereits jetzt sollten die Termine wie Anreisewellen, Abreisewellen und besondere Ereignisse feststehen. Anhand derer kann man einen Schichtplan aufstellen und den Personalbedarf ganz grob abschätzen. Wichtig ist hierbei: Es sollten pro Schicht mindestens 2, besser 3 Personen anwesend sein. Zu den Terminen mit hoher Fluktuation und den Frühschichten sollten jeweils mehr Personen eingeplant werden (pro 100 Übernachter sind ca. 3-4 Helfer alleine mit der Ausgabe des Frühstücks beschäftigt). Für die DJK hat es sich bewährt die Frühstücksschicht seperat neben der Aufsichtsschicht laufen zu lassen. Dies hatte jedoch auch den Hintergrund, dass eine Kooperation zweier benachbarter Schulen mit jeweils unzureichender Turnhallen-Kapazität realisiert werden konnte: Die Übernachtungsgäste wurden gemeinsam in der Kulturhalle Feudenheim (einem Veranstaltungszentrum) mit Frühstück versorgt. Diese Situation ist sicherlich seltenst gegeben, aber bei benachbarten Schulen ist eine Kooperation immer eine lohnende Überlegung.

Ebenfalls im gleichen Zeitraum haben wir begonnen einen Arbeitskreis (bei uns Organisations-Team, kurz OT genannt) zu bilden. In diesem Team sind die besonders engagierten Helfer vertreten. Aus diesem Team wird der Hauptverantwortliche/die Hauptverantwortliche/die Hauptverantwortlichen bestimmt. Beim Turnfest 2013 wurde hierbei von Quatier-Managern gesprochen. Angesichts der Größe des Projekts haben wir vier Hauptverantwortliche bestimmt: zwei für das Frühstück und zwei für die eigentliche Schulbetreuung. Unser Team bestand am Ende aus rund 10 engagierten Helfern. Wichtig hierbei ist, dass bestimmte Personen bestimmte Aufgabenbereiche vollständig übernehmen (z.B. Versorgung mit Abendverpflegung und Getränken, Sanitär, Aufbau/Abbau, IT). Ebenso darf es aber auch Universalisten geben, die den anderen Teammitgliedern je nach Bedarf zu Hand gehen. Natürlich sollten sich die Team-Mitglieder auch untereinander regelmäßig abstimmen. In den letzten 5 Monaten vor dem Turnfest gab es hierzu monatliche Treffen, zudem eine rege e-mail-Kommunikation.

Ein ganz entscheidender Schritt ist der erste Kontakt zu den Verantwortlichen der Schule im Schulbetrieb – hierbei gibt es dank Föderalismus in Deutschland gleich zwei grundlegende Parteien: Den Hausmeister (oder auch mehrere), diese werden vom Schulträger (also der Stadt Mannheim bezahlt) und auf die pädagogische Seite, diese wird vom Land (also Baden-Württemberg) bezahlt. Die beiden Parteien müssen schon im Alltag miteinander auskommen und kommunizieren was nicht immer leicht ist und immer wieder Zuständigkeits-Zündstoff birgt. Eine zusätzliche Nutzung der Schule in den Ferien ist daher besonders gut vorzubereiten und es gilt alle Beteiligten in ein Boot zu holen. In unserem Fall gab es eine zusätzliche Herausforderung: 3 Schulen, also drei Rektoren und ob der Schulgröße auch zwei Hausmeister. Aber die frühzeitige Kontaktaufnahme hat sich ausgezahlt. In enger Abstimmung und zur Zufriedenheit aller hatten wir recht flott einen Konsens welche Räume generell nutzbar sind und welche Zugänge zum Gebäude bestehen. Auch wichtig bei solchen Treffen: Gleich Notizen machen und im Team abstimmen welche Chancen man für bestimmte Ideen sieht. In unserem Fall war recht schnell klar: Der einzige nutzbare Klassenraum im Keller sollte nach Möglichkeit nicht genutzt werden. Ferner hatten wir einen Reserve-Raum im Obergeschoss eingeplant, der generell nutzbar wäre, aber in der Planung erst einmal unberücksichtigt blieb. Dieser sollte notfalls als Lager/Rückzugsraum für das Team vor Ort genutzt werden (man möchte doch evtl. mal 10 Minuten Ruhe haben um etwas zu essen oder kurz zu verschnaufen), außerdem bietet ein voller Raum Reserve immer die Möglichkeit auf unvorhergesehenes reagieren zu können.

Ein ganz kritischer Punkt ist die Lage der „Einsatzzentrale“ in der alle Fäden zusammen laufen. Beim Turnfest haben wir das weniger streng organisatorisch mit Info-Point oder Rezeption umschrieben. Je nach Bauart der Schule gibt es ggf. mehrere Möglichkeiten einen derartig zentralen Punkt aufzubauen. Wichtig ist, dass er möglichst in der Nähe des Eingangs ist, vorzugsweise direkt dahinter oder mindestens in Blickweite.  So sinkt der Personal- und Abstimmungsbedarf bei der Einlass-Kontrolle. Bewährt hat es sich eines der größeren Treppenhäuser im Erdgeschoss zu nutzen – hier muss man aber sicherlich von Schule zu Schule entscheiden was günstig ist. Als ungemein praktisch hat es sich ergeben, dass direkt hinter dem Tresen ein kleiner Raum vorhanden war, der normalerweise nicht als Klassenzimmer genutzt wird, diesen konnten wir dann für die weitere Technik und Logistik verwenden und hatten dennoch alles in kurzer Entfernung griffbereit.

Ebenso hilfreich ist es beim Rundgang mit dem Hausmeister diverse Fragen zur Infrastruktur zu klären: Lage der Notausgänge und Ausstattung mit Panikschlössern? Wasser-Versorgung mit Warmwasser (zum Spülen fürs Frühstück oder auch für sonstige Dinge mal eben schnell zu reinigen)? Hausanschluss und Notfall-Maßnahmen (Heizungsnotschalter, Gasanschluss, Elektroanschluss, Sicherungskästen)? Drehstromsteckdosen für etwas potentere Verbraucher (z.B. Kühlanhänger, Backofen, etc.) – vor allem: Dimensionierung (16A, 32A, 63A, 125A) – dementsprechend bedarf es ggf. Adaptern (bitte eine Elektrofachkraft fragen wenn man sich nicht sicher ist – es gibt die abenteuerlichsten Adapter und nicht jeder ist zulässig, je nach Bedarf kann es auch zweckmäßig sein einen Kleinverteiler für den Baustellenbetrieb zu leihen oder gar zu kaufen) – nicht erschrecken: Viele Schulen sind äußerst dürftig mit Drehstromdosen ausgestattet – wir hatten nur in einem Fachraum Zugriff auf einen derartigen Anschluss, dafür immerhin in der 32A-Ausführung. Auf im Privatbereich übliche Lösungen wie eine Drehstromdose in Nähe des Hausanschlusses sollte man nicht immer hoffen. Gut sind ggf. auch Werkräume mit Werkzeugmaschinen oder Brennöfen. Die IT-Infrastruktur darf man in aller Regel nicht nutzen, was zwar ärgerlich ist aber auch Sicherheitsgründen auch nachvollziehbar. Hier muss man sich ggf. vorab mit einem UMTS-Router versorgen. Ein Internet-Anschluss hat sich als sehr praktisch für die verschiedensten Anfragen erwiesen – vom ÖPNV angefangen bis hin zu örtlichen Sehenswürdigkeiten mit deren Öffnungszeiten.

Beim Turnfest in Mannheim war die Frühstücksversorgung durch die Veranstalter und das Unternehmen „Kommando Verpflegung“ organisiert. Über diese Konstellation musste man für die Ausgabe nur noch Helfer und Räumlichkeiten stellen. Kaffee-Maschinen, Ausgabe-Besteck und weitere Küchenausstattung wurde gestellt. Ein wenig Lager sollte man vorsehen, denn die haltbaren Lebensmittel wie H-Milch, Kaffeepulver, Müsli und einiges mehr werden bereits am Anreisetag angeliefert. Das sollte die ganze Woche reichen, also mit ein wenig Augenmaß ausgehen. Frische Ware wird in der Nacht angeliefert – in Kühlboxen mit Kühlakkus. Diese Lebensmittel müssen am gleichen Tag ausgegeben werden, wenn keine Kühlmöglichkeit vorhanden ist. Hier muss man schauen wie es anläuft. Ein Kühlschrank in der Hinterhand erspart das Wegwerfen von Lebensmitteln, ersetzt aber nicht die möglichst exakte Rückmeldung wie viel benötigt wird.

Die Abendverpflegung bzw. auch Tagesversorgung war den Vereinen offen gelassen worden. Wer möchte kann Angebote machen, es muss aber nicht gemacht werden. Wer knapp bei Helfern ist, sollte sich die Aktion daher gründlich überlegen. Anfänglich haben wir mit verschiedenen Aktionen jeweils am Abend geplant: Würstchen mit Brötchen, Wurstsalat mit Brot, Fleischkäse im Brötchen. Alles eher kleine Mahlzeiten, die aber auch sättigen können (ggf. muss man eben zwei Portionen essen). Dieses Konzept ist leider nicht so ganz aufgegangen wie wir im Nachhinein festhalten müssen. Besser ist es, wenn man eine kleine Auswahl über den gesamten Tag anbietet. Mit Fleischkäsebrötchen, Bockwurst und auch belegten Brötchen kann man das recht gut machen – einen kleinen Vorrat bereit halten, nicht alles auf einmal zubereiten. Erfahrungsgemäß ist auch keiner der Gäste ungehalten, wenn es mal eben 5 Minuten dauert bis die Wurst im Wasser warm ist. Die Brötchen haben wir immer on-the-fly frisch belegt. Hier kann man ggf. auch der Lebensmittelvernichtung vom Frühstück entgegen wirken. Es bleiben immer einige Brötchen und Belag übrig – natürlich nur wenn für die verderblichen Lebensmittel ein Kühlschrank vorhanden ist. Der Wurstsalat ist deutlich kritischer – hier muss man ggf. sehen ob man nur eine begrenzte Menge vorhält, wenn der verkauft ist, ist eben Schluss. Selbstverständlich bietet es sich auch an, den Tag über „Süßkram“ und „Snacks“ anzubieten: Riegelware wie Mars, Snickers, Bounty, Chips, Knoppers und Co sind kein Fehler und heben die Stimmung bei den Gästen.

Wo gegessen wird, darf auch die Getränkeversorgung nicht fehlen. Entgegen unserer Planung liegen bei den Sportlern nicht gerade die Softdrinks und Wasser hoch im Kurs, nein vielmehr steht vielen beim Turnfest der Sinn nach einem gekühlten Kulturgetränk des Abendlandes, auch bekannt als Hopfenkaltschale oder schlicht und einfach Bier. Alkoholfreies Bier kommt fast nicht an, einige Kästen bereit zu halten ist aber kein Fehler, auch Radler kam recht gut an. Bier an sich sollte man reichhaltig vorhalten, auch wenn das im ersten Moment komisch klingt. Mit Weinschorle oder einen Weißwein kann man verschiedenen Gästen auch eine Freude bereiten. Erstaunlicherweise sind wir fast zwei Kisten Wein losgeworden. Bei der Ausgabe aller Getränke kann man es sich auf dem Turnfest leicht machen: Es gibt alles nur in Flaschen, Ausschank ist mit Müll und deutlichem Mehraufwand verbunden. Die Teilnehmer haben ohnehin für das Frühstück eine Tasse oder einen Becher dabei, für alle Fälle hatten wir noch einen Schwung Plastikbecher zum Mitgeben. Nachmittags wurde auch das Angebot eines Kaffees (in die eigene Tasse des Teilnehmers)  recht gut angenommen – praktisch wenn man ihn ohnehin für die Mannschaft der Nachtschichten bereit hält. Sekt als Krönung oder zum Feiern am Ende des Festes ist auch eine Überlegung wert.

Die Essens und Getränkeversorgung stellt ihre ganz eigenen Anforderungen an die Infrastruktur: Kühlschränke sind unabdingbar, besonders für die Getränke sollte man ein ausreichendes Volumen vorsehen. Wir hatten einen Getränkelieferanten, der uns freundlicherweise auch eine Kühlanhänger zur Verfügung gestellt hat. Das macht die Logistik etwas leichter, aber für den direkten Zugriff eignet sich ein solcher Anhänger in der Regel nicht. Sofern das Wetter mitspielt sollte man ein Angebot auf dem Schulhof für die Abendstunden bereit halten – ggf. nur zu den Stoßzeiten mit Ausgabe, ansonsten Ausgabe am Info-Point. Bei uns hat leider das Wetter überhaupt nicht mitgespielt, daher haben wir fast alles über den Infopoint abgewickelt. Ein Aufenthaltsraum für die Gäste (möglichst etwas abgesetzt von den Übernachtungsräumen, z.B. im Untergeschoss) ist für solche Fälle sehr hilfreich.

Mit all diesen Vorbereitungen kann das Turnfest dann eigentlich kommen. Gerade für die Anreisewellen empfiehlt es sich etwas mehr Personal vorzusehen um Schlangen am Check-In zu vermeiden (jeder Teilnehmer wird einmalig registriert, dass er angekommen ist). Ich wünsche allen weiteren Ausrichtern bei den kommenden Turnfesten in diesem Sinne viel Erfolg!

 

 

Rückkehr zur Normalität – Ende des Turnfests

Zurück in die Normalität, das ist tatsächlich etwas ungewohnt nach mehr als einer Woche Turnfest mit viel Action und jeder Menge Nachtschichten für mich. Aber es ist noch nicht so schlimm, als dass ich einen Wiedereingliederungskurs bräuchte, wie er (scherzhalber) für die Teilnehmer des Bundesjugendlagers in Landshut angeboten wurde.

Nach der Hälfte der Woche war eine gewisse Routine eingefahren in das System, viele Probleme bekannt und zu vielen Fragen bereits Lösungen. So konnte ich ohne schlechtes Gewissen am Donnerstag Abend meine Schicht etwas später anzutreten und meinem Lauftraining nachzugehen. Das Wetter hat mich dort auch wieder eingeholt – so bekam ich einen realistischen Eindruck von dem was mir bisher nur berichtet wurde: Bei leichtem Niesel gestartet und im Platzregen die letzten vier Kilometer rund um den Geiersberg zurück gelegt: Absolut keine Freude, auch wenn ich sonst doch eher bei jedem Wetter laufe …

Bereits im Laufe des Tages hatten sich erste Anzeichen des Rückbaus bemerkbar gemacht: Ich habe den Anhänger für den Rücktransport abgeholt und nochmals im Großmarkt Sekt gekauft, damit wir für die Abschlussfeiern bestens gerüstet waren.

Gut das die Nachtschicht dann vergleichsweise ruhig verlief, auf den Ansturm in Sachen Getränke waren wir ja mittlerweile bestens eingestellt – kleinere Fitness-Übungen im Kistenschleppen inbegriffen. Ich bin heilfroh, dass ich mich bei der Menge der Kühlschränke durchgesetzt habe: die vier vorhandenen Kühlmöglichkeiten haben wir tatsächlich ständig alle benötigt und an einigen Stellen wäre etwas mehr hilfreich gewesen. Bis in die Nacht haben einige Vereine gefeiert, irgendwann um kurz vor vier sind die letzten am Info-Point von uns gegangen.

Freitag war auch unter den Gästen die Aufbruchstimmung zu spüren, erste Gruppen sind abgereist, in anderen wurde schon mal etwas zusammen gepackt. Für den letzten Abend habe ich noch die Stereo-Anlage unserer Fußball-Abteilung ausgeliehen. In dem Zusammenhang habe ich bereits zwei Stunden darauf investiert nicht mehr benötigtes Material von mir abzuziehen (Büro-Material, verschiedenes Werkzeug), am Abend wurde dann auch noch das Multifunktionsgerät wieder abgeholt – es gab sichtbar Platz und Luft im Info-Point. Die Feier am Abend und in der Nacht hat nochmal richtig Nerven gekostet, war aber sehr schön – bis nachts um drei haben wir ganz ordentlich Musik gemacht, danach blieb noch ein harter Kern übrig. Mit dem haben wir uns dann vor den Info-Point zurück gezogen. Die Jungs und Mädels aus Seligenstadt sind richtig gut dabei. Kurz vor fünf feiere ich dann mit meinem Vorstand und den Seligenstädtern eine gelungene Turnfest-Unterbringung – inklusive mehrerer Flaschen Sekt. Die spüre ich dann dummerweise auch in den kommenden Stunden beim Rückbau. Schlafen kann ich ohnehin nicht mehr, also wird schonmal abgebaut was jetzt schon weg kann. Laptop, Kleinserver, WLAN-Router etc. verschwinden im Auto, ebenso werden die Kühlschränke geleert und verladefertig gemacht. Das große Gewusel dauert bis kurz vor elf an, Zimmerbesichtigung, Getränke und Leergut kommen in den Kühlhänger zurück, das Lager wird aufgelöst. Was schon weg kann wird auf den Anhänger verladen.

Kurz nach elf ziehe ich mit einem kleinen Team los – einiges Material der DJK, sowie angefallenes Leergut bringen wir dorthin wo es hingehört. Abschließend schaffe ich noch Drucker und weiteres Material zu mir nach Hause. Unter anderem auch eine kleine Menge überschüssiger Lebensmittel vom Frühstück – so erspare ich mir das Einkaufen vor Montag – die Wurst und der Käse bilden zumindest einmal wieder die Grundausstattung meines Kühlschrankes (ich komme mir fast vor wie beim Einzug vor einigen Jahren …). Nebenbei fische ich die Unterlagen für das kommende sportliche Großevent aus dem Briefkasten – meine Startberechtigung für Biel über die 100km. Nachts wach zu sein habe ich ja schon mal geübt …

Vom restlichen Wochenende bekomme ich nicht mehr all zu viel mit – Abends gehe ich zur Entspannung noch einen kurzen Tauchgang machen, Nachts schlafe ich wie ein Stein. So fest, dass ich erst morgens gegen elf Uhr wieder wach werde – Lauftraining ist da schon vorbei – aber egal: Regeneration muss auch mal sein. Abends steht noch die Abstimmung mit den Leuten für nach Biel an.

In den kommenden Tagen werde ich mal noch einen Blog-Eintrag über die Erfahrungen schreiben, auf das es in Berlin in 4 Jahren ähnlich gut läuft – wir werden wohl mit der DJK erstmals am Turnfest teilnehmen, so zumindest die Idee. Genauso wie wir wohl einen Ausflug nach Seligenstadt machen werden – mal sehen was aus dieser Kooperation wird – ich freue mich auf alle Fälle drauf.

Zwischenbericht aus der Einsatzzentrale

Wow, die Woche ist schon zu mehr als der Hälfte rum und die Lei(d/t)stelle in der Feudenheimschule ist voll im Einsatz.

Nach anfänglichen Anlaufschwierigkeiten im Bereich der Getränkeversorgung (Fehleinschätzung des Getränkebedarf und der statistischen Verbrauchsverteilung) läuft nunmehr alles stabil.

Die Teams der einzelnen Schichten sind mittlerweile sehr gut eingespielt, der Informationsfluss zwischen den Gästen läuft reibungslos. Bisher sehr wenig Einsätze im Bereich erste Hilfe, für die Belegung mit zwischenzeitlich mehr als 500 Personen in der Nacht.

Die Stimmung im gesamten Haus ist einwandfrei, der Service des DJK wird von allen Gästen in den höchsten Tönen gelobt. Das tröstet viele Teilnehmer des Turnfests über die mangelhafte Performance der RNV hinweg. Beschilderung im Haus 1a, an den Haltestellen und den wichtigen Umsteigepunkten nach mehreren übereinstimmenden Berichten nicht immer …  Von den Fahrtzeiten ab Feudenheim mal ganz abgesehen – das Turnfest der kurzen Wege ist definitiv eine Illusion – Fahrzeiten von mehr einer Stunde sind keine Seltenheit, noch dazu Glanzleistungen vor und nach Veranstaltungen – Abendverkehr gemäß Bedarf? „Für was?“ bzw. „Kann man das essen?“

Noch sind es etwas mehr als 2 Tage bis zum Ende des Turnfests, noch macht die Arbeit Freude, auch wenn sie an einigen Stellen an die Substanz geht.

Natürlich kommt auch der Sport nicht zu kurz, trotz fast ständiger Anwesenheit in der Schule mache ich weiterhin mein Training zur Vorbereitung auf die 100km in Biel (noch etwas mehr als eine Woche …).

Immerhin habe ich jetzt auch einen universellen Internet-Anschluss – die letzte lange Nachtschicht brachte den Durchbruch um mein Handy mit dem Server zu verknüppeln. Wenn ich noch etwas mehr Muße habe, werde ich mal mein vorhandenes UMTS-Modem und die Zweit-Sim permanent an den Server anflanschen, dann habe ich eine universelle Lösung für diverse Einsätze. Denn ständig das Smartphone an den Server angeschlossen haben zu müssen ist etwas unpraktisch (immerhin wird es dabei geladen …).

 

Final Countdown to Turnfest

Wow ist das jetzt schnell gegangen – es kommt mir fast vor als wären nur wenige Tage anstelle Monate vergangen, seit wir das erste Mal über das Turnfest 2013 in Mannheim gesprochen hatten. Morgen gehts für die Besucher los – für die Vereine in Mannheim schon heute …

Mein Verein, die DJK Feudenheim hat die Betreuung der Feudenheimschule als Übernachtungsstätte übernommen. Es erwarten uns in der Spitze etwas mehr als 600 übernachtende Sportler in den Räumlichkeiten. Bereits im Vorfeld gab es vieles zu klären: Wie viele, wo, welche Auflagen und Anforderungen gibt es?

Von der Einteilung der Räume bis hin zur Versorgung mit Frühstück und ggf. Abendessen (das ist im Gegensatz zum Frühstück voll und ganz in der Verantwortung der Vereine) gab es eine Reihe von Dingen zu organisieren. Aber mit unserem Team sind wir gut voran gekommen und so gab es heute wenig wirkliche Überraschungen.

Seit heute Mittag haben wir die Feudenheimschule übernommen – von Getränken über Kühlschränke und Beschilderung war einiges zu erledigen. Die wichtigen Sachen hatte ich ja bereits vor einer Woche bereit gelegt – einfach ein Brainstorming über das was ich beim Bundesjugendlager erlebt und erfahren hatte. Es mag zwar etwas komisch klingen, aber ich habe eine nahezu vollständige Leitstelle eingerichtet – von Kommunikation bis Müllentsorgung. Macht dann am Ende 4 Kisten mit Material fürs Büro und Organisation, ein Sackkaren, jede Menge bedrucktes Papier für Beschilderungen.

Die Vorbereitung hat sich aber voll ausgezahlt – bis auf ein kleineres Problem mit der Drehstromversorgung sind wir sehr gut durchgekommen und alles läuft derzeit nach Plan. Bin mal gespannt wie es morgen an der Anreise wird. Auf alle Fälle mal etwas hektisch denke ich, aber nichts was nicht in den Griff zu bekommen wäre. Jetzt packe ich noch ein paar vergessene Dinge ein, aber dann kann der Ansturm morgen kommen – ich freue mich auf eine spannende Woche.

 

Weltkulturerbelauf Bamberg 2013

Alle zwei Jahre nur findet der Weltkulturerbelauf in Bamberg statt – immer in den ungeraden. Seit ich einmal dabei war,will ich nicht nur wegen des Wiedersehens mit Helgas Lauffreunden aus meiner Praktikumszeit in Nürnberg hin. Die Strecke ist sehr schön, aber auch anspruchsvoll. Aufgrund der engen Passagen gilt ein striktes Teilnehmerlimit von 3.700 Läufern auf der Halbmarathondistanz, somit hatte ich mich schon im Oktober, nur wenige Stunden nach der offiziellen Öffnung der Anmeldung registriert – bereits 48h war Schluss.

Die letzte Woche war das Wetter alles andere als erbaulich, und auch die Anfahrt verhieß mir nichts Gutes – immer stärkere Bewölkung, bis hin zu Nebelbänken auf der Autobahn – alles keine Dinge die mich jetzt wirklich 100% motiviert hätten. Aber wie so oft: Über Franken scheint die Sonne – und kurz vor Bamberg reißt der Himmel auf. Zwar ist es noch etwas windig aber insgesamt ideales Laufwetter.

Am Auto stelle ich dann fest, dass ich doch etwas in Mannheim vergessen habe: Meine persönliche Getränkeversorgung – normalerweise bin ich nicht ohne Getränkegürtel oder gar Camelback unterwegs – einfach weil ich weiß, dass ich immer dann Durst habe wenn gerade nichts in Reichweite ist. Aber alles Ärgern hilft nichts – laufen wir halt ohne, wird schon werden. Ebenso ärgerlich gestaltet sich das Parkticket-System im P+R-Parkhaus. Gemäß der offiziellen Empfehlung habe ich nicht mehr als notwendig an Wertgegenständen im Auto – nur leider nimmt der Automat für den Parkschein im Parkhaus keine Geldscheine an – Kleingeld reicht auch nicht … und mit der EC-Zahlung erhalte ich zweimal eine Fehlermeldung. Das muss doch nicht sein … Liebe Veranstalter, liebe Stadtwerke Bamberg: Lasst euch da für in zwei Jahren bitte etwas einfallen! Gerne kann ich auch das Parkticket bereits bei der Anmeldung buchen und dafür zahlen. Allemal besser als rumsuchen zu müssen wer denn nun wechseln kann. Irgendwie ist das P+R-Parkhaus auch merkwürdig: Man kann ohne Parkschein zu ziehen rein und raus – warum das Modell mit Schranken und zentralen Automaten in Bamberg noch nicht Schule gemacht hat ist mir nicht erklärlich. Immerhin klappt das Shuttle leidlich – auch wenn der Bus rappelvoll ist – auch dieses Phänomen tritt nicht zum ersten mal auf, der Lauf wird zum 6. Mal ausgetragen, da könnten sich einige Dinge schon mal so ergeben haben.

Passend zum ausgemachten Termin treffe ich Helga und ihren Mann Heinrich in der Nähe des Starts, Helga hat freundlicherweise wieder eine Sammelabholung der Unterlagen durchgeführt, so muss ich nicht bis 12:00h am Logistikzentrum sein und dann gefühlte Ewigkeiten noch Zeit totschlagen. Die Abgabe meines Gepäcks ist schnell erledigt, die Maria-Ward-Schule steht dafür dieses Jahr auch wieder zur Verfügung und der Check-In geht reibungslos und zügig. Noch bevor ich meine Sachen abgebe trinke ich einen ordentlichen Schluck Wasser, es ist mittlerweile angenehm warm und viele Teile der Strecke liegen in der Sonne.

Bis zum Start unterhalten wir uns alle noch recht gut, ich überlege noch aufs Klo zu gehen oder noch einen Schluck zu trinken vor dem Start, entscheide mich aber dagegen – keine so brilliante Idee wie sich zeigen wird … Pünktlich um 15:30h gibt es den Startschuss – ich benötige aber immer noch fast vier Minuten bis ich über die Startlinie komme – so voll ist es. Den ersten Kilometer will ich eigentlich ruhig angehen lassen, aber der fehlende Besuch auf dem stillen Örtchen macht sich schon negativ bemerkbar – so richtig ruhig und konzentriert will ich nicht werden. Immerhin gibt es bald genügend Abwechslung an der Strecke – bereits nach dem ersten Kilometer beginnt die Bergwertung – fast meint man in Rom zu sein: 7 Hügel gilt es zu erklimmen. Aber zusammen mit der Hitze merke ich, dass auch der zusätzliche Schluck Wasser vor dem Start wohl doch ratsam gewesen wäre. Irgendwie bin ich doch ein Komfort-Läufer: Mit der Flasche am Halfter sind solche Situationen kein großes Ding. Flasche raus und Durst stillen. So muss ich mich gedulden bis ich oben an der Burg bin. Das Panorama über die Stadt entschädigt mich indes für meine Mühen. Es ist ein herrlicher Frühjahrstag mit angenehmen Temperaturen und alles steht in voller Blüte. Einfach herrlich.

Die letzte Steigung zur Burg hats nochmal in sich, und ich merke wie gut man ohne Wasser laufen kann bzw. wenn man latent Durst hat – Performance und Runners-High fühlen sich anders an. In der Burg gibts endlich Wasser – ich kippe mir recht hastig drei Becher in den Rachen. Zumindest der akute Durst ist damit erst mal gestillt – aber ich weiß auch, dass es wohl kaum reichen wird, dafür resobiere ich Wasser zu langsam. Also erst mal Zähne zusammenbeißen, immerhin geht es jetzt erst mal bergab. Auf der Strecke ins Tal suche ich mir dann auch noch einen Busch – mit dem zusätzlich verfügbaren Wasser ist der hydrostatische Überdruck noch weiter gestiegen – die restlichen 15km stehe ich so nicht durch. Reichlich erleichtert geht es dann weiter.

Es geht in Richtung City – auch hier gibt es noch reichlich Hügel, immer mal wieder ein wenig hoch, ein wenig runter, aber der schwerste Brocken liegt hinter mir. Dafür ist der Durst schon wieder mein Begleiter – das Wasser scheint förmlich verdampft. Aber die nächste Versorgung lässt noch etwas auf sich warten: Erst bei Kilometer 9 gibt es wieder Wasser. Auch hier greife ich reichlich zu. Nun geht es auf den für mich schönsten Teil der Strecke, mit einigen Schleifen geht es durch den Hain von Bamberg. Rechts von mir der linke Pegnitzarm, die Vögel tragen neben den vielen Leuten an der Strecke mit zur Stimmung bei. Die Kilometer fliegen nun irgendwie fast an mir vorbei – ich habe meinen Pace gefunden. Auch liegt ja die Halbzeit mit Kilometer 12 schon hinter mir, jetzt ist es nur noch Kopfsache. Bei Kilometer 13 gibt es wieder Wasser – wieder lange ich kräftig zu um den Durst zu bekämpfen. Allerdings ist einer der Becher reichlich kalt, so habe ich mit Zitronen gehandelt und schleppe die nächsten vier Kilometer Magenkrämpfe mit mir herum. Aber Aufgeben ist jetzt auch keine Option mehr – dafür ist auch die Stimmung an der Strecke einfach zu gut.

Entlang des rechten Pegnitzarms geht es wieder auf die Stadt zu, je näher man dem Zentrum kommt um so belebter wird es rechts und links der Strecke. Die Leute machen eine echt gigantische Stimmung – und so langsam lassen die Krämpfe in der Magengrube nach. Kurz vor Kilometer 15 geht es weg von der Pegnitz und wieder in die Bebauung – auch bekannt als „Braurei-Schleife“ – leider schaffe ich es auch dieses Jahr nicht, die Kurve so zu laufen, dass ich etwas von dem Radler abbekomme, diesmal blockiert ein langsamerer Läufer den Weg auf den Radler zu … bis ich ihn überholt habe bin ich wieder nur beim Wasser – schon wieder, aber auch nicht verkehrt, zumindest wenn ich nach meinem Durst gehe.

Nun geht es auf den Bischofsberg zu, natürlich in jeder Menge Schleifen durch die Altstadt, man soll ja auch etwas vom Weltkulturerbe sehen wenn man schon mal da ist. Nochmal gibt es eine Versorgungsstation, wieder greife ich Wasser ab, bevor es an die letzte größere Steigung hoch geht. Ich mahne mich zur Vorsicht, aber es sind ja auch nur noch 3km – vor lauter Konzentration übersehe ich die Schilder für die Kilometer und wundere mich: Da müsste doch schon längst eines gekommen sein … Aber die Strecke ist ja vermessen, da kann nichts schiefgehen. Auch bei den folgenden Gefällestrecken bin ich wieder froh um mein regelmäßiges Training im Exotenwald, ich habe es mittlerweile richtig gut drauf, es bergab richtig laufen zu lassen und den Schwung in die nächste Steigung mitzunehmen. Das Kopfsteinpflaster macht es aber nicht gerade leichter die Füße sauber aufzusetzen.

Nach dem Bischofsberg sind es noch etwa 800m, und die Stimmung an der Strecke kocht richtig. Jetzt ist mir klar: Ankommen ist auf alle Fälle drin und ich gebe nochmal ein wenig Gas, auch wenn ich gerne etwas mehr Endspurtpower gehabt hätte. Sei es drum, mit dem Einbiegen auf die Zielgerade sehe ich die Uhr, und die zeigt: 1:49:5x, ich raffe mich nochmal auf, und laufe exakt mit dem Umspringen auf 1:50:00 der Bruttozeit über die Ziellinie. So richtig freuen kann ich mich adhoc noch nicht – mein Magen bedankt sich erst mal für die Wasserkur … mit einem ordentlichen Husten. Die Sanis sind schon etwas besorgt, aber es geht dann doch recht schnell wieder. Zur Versöhnung gibts dann erst mal bavarian Iso-Drink: Alkoholfreies Weizen. Das bekommt mir nach dem vielen Wasser deutlich besser. Merke: Nochmal passiert mir das nicht mit der Getränkeversorgung – sowohl mit der Eigenversorgung als auch mit der Versorgung und Entsorgung vor dem Lauf.

Mit reichlich Obst und Gebäck fülle ich meine leeren Speicher wieder auf, bevor es in Richtung Gepäckausgabe geht. Dabei mache ich eine weitere unbequeme Erfahrung: Ich habe wohl mal wieder nicht genügend Elektrolyte während des Laufs gehabt – leichte Krampfansätze in den Waden sind die Folge – die rechte Fußunterseite macht dann mit der Drohung auch noch richtig ernst … Sehr praktisch dass es eine kostenfreie Massage gibt – einmal richtig durchkneten lassen – besonders den immer wieder krampfenden Muskel im Fuß … die Physiotherapeutin hat das richtig gut drauf – zielsicher weiß sie welche Sehnen da betroffen sind – auch wenn es im ersten Moment ganz ordentlich schmerzt – danach wird es besser.

Damit es weiterhin so bleibt gehe ich noch zur Dusche – allerdings barfuß, das tut richtig gut wie ich merke – mit jedem Schritt wird es besser. Nach dem Lauf treffe ich wie vereinbart noch Helgas Lauffreunde an der „dicken Berta“  – so richtig Hunger hat allerdings keiner mehr, daher trennen wir uns bald darauf – und ich erwische mal wieder den letzten Shuttle-Bus nach Breitenau.

Fazit: Der Lauf ist Kult und ich möchte ihn auf keinen Fall missen. Aber in zwei Jahren gehe ich das hoffentlich etwas professioneller an, ich weiß ja dass ich es eigentlich kann. Man muss nicht gerade in Bamberg für irgendeinen Wüstenlauf trainieren und nach meinen Erfahrungen muss ich für solche Veranstaltungen ohnehin erst noch etwas üben…

Nachtrag: Mittlerweile habe ich auch die Ergebnisse: 1:46:55 – ganz ok für mich. Betroffen macht mich jedoch die Meldung über den Todesfall während des Laufes. Ein Läufer ist im wahrsten Sinne des Wortes auf der Strecke geblieben. Mein Beileid den Angehörigen und mein Dank an alle Helfer die Ihr bestes gegeben haben.

 

Berufliche Flexibilität – um welchen Preis

Da ich momentan mal auf der Suche nach einer Alternative zu meiner derzeitigen Beschäftigung bin, ist mir das Thema Flexibilität auch wieder in den Fokus geraten.

Generell bin ich selbst ja recht flexibel und ungebunden und somit auch offen für einen Job irgendwo in Deutschland. Wobei auch ich eine gewisse „Heimatverbundenheit“ in Form von Vereinen und Bekanntschaften habe.

Aus diesem Grund habe ich mir mal so meine Gedanken gemacht: Auf der einen Seite ist eine neue Umgebung für mich ja kein Problem, ich habe mich bisher eigentlich überall zurecht gefunden, von Nürnberg bis Washington DC war das eigentlich nie ein Problem. Auf der anderen Seite habe ich mittlerweile auch eine recht hübsch eingerichtete Wohnung in die ich doch einiges reingesteckt habe. Ich kann mir durchaus vorstellen wie es jemandem geht, der nicht zur Miete lebt, sondern eine Wohnung oder gar ein Haus besitzt – da fällt der Weggang sicherlich noch eine Runde schwerer – zumal wenn es noch finanziellen Lasten zu tragen gilt.

Womit wir beim nächsten Thema sind: Ich habe in den vergangenen Wochen vermehrt Berichte gelesen, in denen es darum ging, dass die aktuelle Generation kein Interesse mehr an Investitionsgütern hat. Unter anderem äußert sich das an der Wertstellung der eigenen Automobilität. Selbst für mich ist mein Auto in gewisser Weise ein Stück Freiheit, auf das ich eigentlich nicht verzichten möchte, auf der anderen Seite überlege ich wie häufig es doch in der Garage steht und wann ich es wirklich benötige. Alternativen gibt es zu Hauf, angefangen vom Fahrrad und den eigenen Füßen, über den recht passablen ÖPNV in Mannheim bis hin zu Dingen wie CarSharing oder Mitfahrgelegenheiten. Um es kurz zu machen: Ich leiste mir den Luxus des eigenen Autos, aber ich könnte ggf. auch darauf verzichten.

Schaut man nach den Gründen, so gibt es mit Sicherheit nicht einen, wie üblich sind verschiedene Faktoren ausschlaggebend: So mag die zunehmende Konzentration in den Städten auch zu einer verstärkten Nutzung alternativer Verkehrsmittel geführt haben: Wer sucht abends schon noch gerne nach einem Parkplatz und muss dann noch fast länger vom Auto bis nach Hause laufen als er gefahren ist …

Aber ich habe einen weiteren und wesentlich weiter greifenden Effekt ausgemacht, der sich nicht nur auf den Luxus eines eigenen PKW bezieht sondern auf eine ganze Reihe von Gütern die man nicht zu den Konsumartikeln zählen kann, ich sehe sie eher als Investition, auch wenn das nicht jeder so sehen mag: Ein Auto oder auch Möbel wie eine Küche zu kaufen ist für viele ein großer Brocken Geld. Das war schon immer so, Dinge die man länger nutzen konnte kosten mehr als das was man zum täglichen Leben benötigt. Nur wer kann heute noch sicher sagen, dass er langfristige Finanzierungen stemmen kann? Wenn man ständig flexibel sein muss bzw. ein hochflexibels Arbeitsverhältnis hat – geht man dann ein solches Risiko ein? Ich persönlich würde es nicht. Auch ich überlege mir in diesem Zusammenhang schon länger ob ich meinen treuen Begleiter namens Corsa B (aka Beasty) nicht durch etwas aktuelleres ersetzen soll. Aber mit der aktuellen Situation lasse ich das erst mal – ersetzen dann wenn es wirklich nicht mehr lohnend ist das aktuelle Gerät zu warten und zu Pflegen. Ähnliches gilt für mein Schlafzimmer, dort werde ich bei Gelegenheit wohl auch nicht um eine neue Ausstattung herum kommen, aber ich werde jetzt nicht auf Biegen und Brechen etwas neues kaufen, so lange die Ausstattung im derzeitigen Zustand mehr als ausreichend ist.

Was ich damit sagen will: Wer keine Sicherheit hat, wird sich mit Investitionen zurück halten – fragt sich also ob sich diese geforderte Flexibilität der Arbeitnehmer immer postiv auf das mittel- und langfristige Wirtschaftswachstum auswirken wird.

Eine weitere Auswirkung ist mir aufgefallen, als es zu den üblichen Fragen kam „wie steht es um Familie?“ – Ich selbst wäre ja durchaus bereit dazu, aber es fehlt mir an einer passenden Partnerin. Aber auch da ist ständige Flexibilität wohl eher hinderlich denn förderlich. Wie soll man eine feste Beziehung aufbauen, wenn man ständig auf dem Sprung ist – will man es dem Nachwuchs und auch der Partnerin antun, alle zwei Jahre einen Umzug durchzustehen? Auch hier zeigt sich in meinen Augen ein Nachteil der ständigen Flexibilität – hier klar langfristig: Wer soll unsere Produkte noch kaufen, wenn es kaum noch Nachwuchs gibt? Abgesehen von der wachsenden Produktpalette in Sachen altersgerechte Produkte für alle Lebenslagen gibt es da auf lange Sicht keine Wachstumsmöglichkeiten.

Insgesamt stehe ich der geforderten Flexibilität mittlerweile sehr zweigeteilt gegenüber  – bevor ich keine Arbeit habe, würde ich wohl eher umziehen, auf der anderen Seite: Die heutige Wirtschaft wird auch immer mobiler, das produzierende Gewerbe mit festen Montagehallen wird immer weniger, warum kann dann nicht die Arbeit zu den Menschen kommen? Die Technik dafür existiert schon länger – man muss sie nur konsequent nutzen. Das fordert natürlich eine gewisse Flexibilität der Arbeitgeber, aber wie es so schön heißt: Die Zeiten ändern sich, und wir mit Ihnen. Mit der Veränderung der Altersverteilung in der Gesellschaft sind nun vielleicht Andere an der Reihe in Sachen Beweglichkeit und Flexibilität.

So bitte nicht – bad / worse practices – ein Kessel Buntes

Das die Welt nicht grau in grau ist (oder zumindest aktuell sehr zügig endlich der Frühling mit seiner Blüten und Farbenbracht Einzug hält), erfreut das Gemüt. Anders geartet ist da der Datenbank-Entwickler – wie jeder Informatiker ist er „kühl und dunkel“ zu lagern und zu halten, damit er optimal arbeitet.  Somit einher geht eine verstärkte Reaktion auf Restlicht (auch das des Monitors), allerdings messerscharf in schwarz/weiß oder zumindest in Graustufen. Spaß beiseite: „Ein Kessel Buntes“ ist eine finde ich recht treffende Umschreibung für das was landläufig oftmals als „Datenbank“ verkauft und verstanden wird. Leider wieder eine Praxis die auf Dauer nicht tragfähig ist.

Was ist der „Kessel Buntes“ und warum ist er keine gute Idee? – Generell bezeichne ich mit diesem Ausdruck nicht richtig getrennte und beschriebene Entitäten. Teilweise trifft das auch nicht richtig spezialisierte Entitäten. Immer wieder trifft man auf diese Art des Datenbank-Designs: Oftmals wird sie aus der Not heraus geboren, oder aus dem Missverständnis, dass eine Datenbank doch nur eine etwas bessere Excel-Tabelle sei. Eine Excel-Tabelle per se ist ja nicht einmal schlecht – sie bringt immerhin etwas Ordnung ins Chaos und ist für viele tagtägliche Anforderungen das flexible Werkzeug, wenn man mal eben eine Analyse machen muss, oder einfach nur eine „Kleinigkeit“ visualisieren soll. Eine Tabellenkalkulation ist hierzu sehr flexibel und bietet alle Möglichkeiten die man sich wünschen kann – von Layout bis hin zur Berechnung – nichts ist beschränkt. Genau diese Flexibilität ist es jedoch die bei größeren Projekten schnell vom Vorteil zum Hindernis werden kann. Mit der Flexibilität einer Tabellenkalkulation kann man sich oftmals die doch eher lästige tiefgehende Analyse eines Sachverhaltes für eine Datenbank sparen. Problematisch wird es, wenn Tabellenkalkulationen dann zum Allheilmittel erkoren werden. Ehe man es sich versieht werden da komplexe Matrizen aufgestellt, die dem menschlichen Benutzer die Information schön handlich aufbereiten. Nur die Maschinenlesbarkeit ist dann nicht mehr unbedingt gegeben, und selbst einfach Analysen im Datenbestand arten zur Sisyphus-Arbeit aus, vor allem wenn die Flexibilität voll genutzt wird und jede Matrix ein klein wenig anders aussieht.

Besonders ärgerlich aus Datensicht ist hierbei die Verquickung von Äpfeln und Birnen zu Obstsalat. Ich selbst durfte hierzu ein sehr schönes Beispiel einer gewachsenen Datenbank erleben: In einem Unternehmen gibt es verschiedene Aufträge, mit unterschiedlichen Qualitäten und Eigenschaften. So gibt es Aufträge die intern erzeugt werden und nur innerhalb von Abteilungen verrechnet werden, wenn überhaupt, zudem gibt es Aufträge, welche mit externen Elementen (auch als Kunden bezeichnet) abgewickelt werden. Nun war der Entwickler etwas faul oder es hat sich erst im Laufe der Zeit ergeben: Für die beiden Typen sind unterschiedliche zusätzliche Informationen notwendig. Initialer Weg um Zeit und Arbeit zu sparen: „Es ist ja nicht viel was da dazu kommt, wir fügen einfach Spalten an“. Recht zügig kann man in einer Datenbank der Einsteigerklasse (die sich tatsächlich auch noch als Datenbank bezeichnet) solche Änderungen realisieren. Die Rede ist hier von einem recht bekannten Produkt aus dem Hause „Winzig-Weich“. Problematisch ist bei diesem Produkt schon die Tatsache, dass Datenhaltung und Repräsentation scheinbar nahtlos ineinander übergehen. Für Anfänger ohne große Vorkenntnisse senkt das die Hemmschwelle doch ganz erheblich. Auch das ist ja für sich genommen eine löbliche Sache, nur auch dieses Produkt hat einen Einsatzbereich (der ist zugegebener Maßen recht breit) – wenn man über diesen hinaus wächst (und viele Projekte haben die Tendenz dazu), merkt man irgendwann recht heftig, wo es zwickt und kneift.

Nun haben wir eine aufgebohrte Datenbank-Tabelle – etwas, dass man mit ein klein wenig Aufwand auch in anderen Datenbanksystemen machen kann. Aus Erfahrung weiß ich nur zu gut, dass es immer wieder Fälle gibt, in denen man sich aus gutem Grund dafür entscheidet eine Spalte „Overhead“ zu spendieren, die nicht immer gefüllt wird, oder sogar nur in wenigen Fällen einen von NULL unterschiedlichen Wert hat. Man hat zwar dabei ggf. ein leichtes Bauchgrimmen, aber es gibt durchaus Szenarien in denen es weniger auf die Performance im Speicherverbrauch oder die absolute Performance ankommt, es aber mit den zusätzlichen Spalten recht schnell greifbare und brauchbare Ergebnisse gibt.

Das Ganze kann man jetzt noch weiter auf die Spitze treiben, in verschiedenen, nicht gegenseitig-exklusiven Geschmacksrichtungen (oder vielleicht doch besser Geschmacksverirrungen):

Man nehme einen weiteren Auftragstyp dazu, weil das aktuelle Projekt es erfordert: Da man in der Tabellen-Ansicht ja jetzt Felder hat die unbelegt sind und man die spezifischen Daten des neuen Typs ja auch noch speichern muss, fängt man kurzerhand an zu Tricksen und zu sparen: Bestehende Felder werden je nach Auftragstyp umgewidmet. Je nachdem was für einen Auftrag man gerade hat, bekommen die Felder jetzt eine Abhängigkeit, eine Semantik. Das macht die Arbeit bei den Masken recht einfach, auch eine tabellarische Übersicht ist kein Problem  – man muss nur wissen wie die einzelnen Felder jetzt zu interpretieren sind. Besonders spaßig ist dann natürlich die Verwendung falscher Datentypen, weil es halt doch nicht mehr so recht gepasst hat: Man kann auch ein varchar-Feld dazu verwenden um Datumsangaben oder Integerwerte zu speichern. Typecast gemäß Semantik und die Sache ist geritzt…

Die Performance und Wartbarkeit dieses Konstruktes kann sich der geneigte Leser dann mal selbst überlegen – vom Wechsel des Datenbank-Unterbaus hin zu einem professionellen Server mit ggf. sehr scharfer referenzieller Integrität wollen wir lieber einmal gar nicht träumen, diese wird dann oftmals auch einfach „geopfert“.

Zweite besonders zu empfehlende Möglichkeit die Performance noch weiter zu minimieren und dem ganzen ein unbeschreibliches „Geschmäckle“ zu verpassen: Die Unterscheidung der Typen ist nicht eindeutig oder klar umrissen, sondern kann womöglich sich zur Laufzeit noch ändern. Viel Spaß schon einmal beim Umsortieren und uminterpretieren der oben missbrauchten/umgewidmenten Felder. Auch Typecast-Mortale genannt (nicht unmöglich und bei heutiger Rechenpower fällt es nicht mal so sehr auf, zumindest für kleinere Datenmengen). Damit die Änderung leicht fällt bzw. weil man sich diesmal um die Felder und die notwendigen Anpassungen des semantischen Codes drücken will (wir erinnern uns: Das ist so sonderlich gut wartbar), macht man es wie in der Realität so häufig auch: Man verwendet „sprechende Schlüssel bzw. sprechende Identifikatoren“. Man kennt diese zur Genüge au vielen Bereichen – so lange der Benutzername beschränkt war auf 8 Zeichen, hat man einfach den ersten Buchstaben des Vornamens plus die 7 ersten des Nachnamens genommen. Wenn es doch mal zu Überscheidungen kommt, gab es eben fortlaufende Endziffern. Nicht schön aber es funktioniert. Ähnliches kann man teilweise bei Dokumenten aus Buchhaltungs-Systemen beobachten: Die ersten Zeichen definieren den Typus des Dokuments, die weiteren sind ggf. noch an das Datum gekoppelt oder gleich einfach fortlaufend. Gängig sind Angaben wie „ANG-xyz“ für Angebot Nr. xyz odr der LS-4711 für den Lieferschein mit der Nummer 4711. Weitere Beispiele kann man sich leicht vorstellen.

Die Performance wird allerdings besonders grottig, wenn man diese Typ-Information aus bestimmten Gründen nicht in einer separaten und indizierten Spalte (sehr einfach und dennoch effektiv sind z.B. Enumerations sofern die Datenbank mit dieser „Mini-Foreign-Key-Lösung“ umgehen kann) sondern einfach die gesamte Nummer in ein Varchar-Feld packt. Wenn man nun nach unterschiedlichen Typen filtern möchte, muss man doch nur die ersten Zeichen betrachten (vorzugsweise noch unterschiedliche Längen wie etwa: ANG und LS von oben, zusammen mit ANS für Kostenvoranschläge…). Mit dieser Technik bekommt man jede Datenbankengine ins Trudeln. Anti-Performance ist at its best …

Nun gut, genug gemault und Augen verdreht – woher der Ausdruck „Kessel Buntes“ kommt dürfte nun jedem klar sein: Man hat verschiedenste Obst (und ggf. auch Gemüse)-Sorten (im Datenbank-Bereich auch Entitäten genannt) in einer Tabelle zusammengeführt und über die Zeitachse das ganze gut durchgerührt und etwas ziehen lassen … Zeit dafür Lösungen zu präsentieren wie man es besser macht.

Oberstes Gebot bei der Modellierung bzw. dem Abbild der Realität: Entitäten trennen, wie Eiweiß und Eigelb. Beides gehört zwar zur Entität „Ei“ aber die Eigenschaften unterscheiden sich schon von der Farbe und dem weiteren Verwendungszweck beim Backen 😉 Daher: Wenn sich zeigt, dass eine weitere, vielleicht auf den ersten Blick sehr ähnliche Entität hinzugenommen werden soll, sehr sehr kritisch prüfen ob man diese unbedingt in das bestehende Schema „pressen“ muss. Im ersten Moment mag es zwar mehr Arbeit sein separate Entitäten zu verwalten, aber die Erfahrung zeigt: Jedes Datenbankschema hat auf die mittlere bis lange Frist die Tendenz sich weiter auszudifferenzen und detaillierter zu werden. Also besser gleich von Anfang an verschiedene Tabellen verwenden (ich werde auch noch einen ausführlichen Beitrag zum Thema „one true lookup table – OTLT“  verfassen) – diese im Zweifel per UNION erst einmal wieder zusammen zu führen (was nicht immer vermeidbar ist, oder zumindest für einen Teil der Daten sinnvoll sein kann) ist der bessere Weg.

Im letzten Absatz ist es schon angeklungen, ein Problem das man häufiger hat: „Aber die Dinger aus der Realität sind doch zu 80% ident …“ – in der objektorientierten Programmierung ist das ein klarer Fall für die Verwendung von Vererbung ggf. in Kombination mit abstrakten Klassen. Die übergeordnete Klasse stellt die gemeinsame Basis samt Funktionen bereit, und die spezialisierten Klassen kümmern sich um die 20 verblieben Prozent der Details. In einer relationalen Datenbank klappt dieser Ansatz nicht direkt. Hier muss man auf die Kombination von Geschäftslogik und einzelnen Tabellen zurück greifen: In der Geschäftslogik verwendet man den objektorientierten Ansatz wie gerade beschrieben, in der Datenbank führt man Surrogate ein, die es erlauben vom Kleinen auf das Größere zu schließen – dabei muss man ggf. aufpassen, dass keine Doppeldeutigkeiten entstehen (teilweise sind diese jedoch auch wünschenswert, das muss man situativ entscheiden) gibt. Auch bekannt ist das Konzept unter dem Namen „Vererbung für Arme“. So bekommt man zwar auch ein wenig Overhead, aber die Struktur bleibt klar erkennbar und man braucht nicht erst noch eine Tabelle die einem sagt, wie jetzt welcher Wert zu interpretieren ist.

Was auf keinen Fall eine Option sein darf, ist die Integration von Typinformationen in ein anderes Feld – diese Information muss man wo immer möglich in separate Felder auslagern, die man im besten Fall noch mit einer Referenz (Fremdschlüssel) auf eine andere Tabelle mit entsprechenden Meta-Informationen absichert. Sonst passiert es leicht, dass der Benutzer (aus Schusseligkeit oder gar mit Intention) einen neuen Typ einführt der gar nicht definiert ist (z.B. ein Tippfehler der Form „AND“ anstelle „ANS“) – welche Semantik dann greift bzw. welch kuriose Fehlinterpretationen und Fehlermeldungen dann auftreten können liegt im Bereich der Spekulation und der Admin-Belustigung. Über die notwendigen Operationen der String-Extraktion denkt man in diesem Fall auch besser nicht nach, geschweige denn daran wie häufig diese Operation angewandt werden muss…

Fazit: Es mag verlockend sein, eine Datenbank möglichst flexibel und „platzsparend“ zu gestalten, wie man es auch in einer Tabellenkalkulation machen würde. Aber die gewonnene Sicherheit ist absolut trügerisch und der Performance und Wartbarkeit tut man sich mit einem Kessel Buntes mit absoluter Sicherheit keinen Gefallen. Besser gleich überlegen ob das wirklich notwendig und sinnvoll ist, so klein das Problem aktuell auch sein mag – die Wahrscheinlichkeit, dass man irgendwann einen großen Scherbenhaufen hat ist erheblich vergräßert und dann ist nichts gewonnen, aber viel verloren.