Ich soll für einen Kunden die Wartung und ggfs. ein komplettes Code-Refactoring für ein paar Tools übernehmen. Meine erste Analyse für den Kunden beginnt wie folgt:
- die Tools sind uralt, historisch gewachsen und für jede gibt es einen anderen Ansprechpartner, aber keiner kennt sich mit allen aus.
- alle Apps sind in mindestens einem der folgenden Punkte angreifbar:
- SQL-Injection
- XSS
- Session Spoofing
- Variablen-Manipulation
WTF?!
Ein Kunde hat hier ein interessantes DB-Konstrukt in Verwendung. Anstatt in einer SQL-Datenbank viele kleine Relation-Tables zu bauen, hat er einen nur einen einzigen großen, in dem sämtliche Relationen abgebildet sind (hatte ich das nicht irgendwo schonmal gesehen..?). Die betroffenen Tabellen/Kategorien stehen in diesem Table gleich mit drin.
Der Vorteil: nur eine Tabelle, die voll indiziert permanent im Speicher ist. Sau-performant. Bis zum break-even-point in Sachen Tabellengröße. Den hat der Kunde (trotz heftigen Datenaufkommens) bislang noch nicht erreicht.
Der Nachteil, zumindest am Modell in der vorliegenden Form: in den zugehörigen Tabellen brauchtes für jede Relation ein eigenes Feld.
Das könnte man auch besser lösen. Ist zum Glück nicht mein Job. Der ist es, ein komplett neues Datenmodell zu entwickeln. Juhu!

Letzte Kommentare