Nur SQL statt NoSQL an deutschen Hochschulen?
Tags: big data, softwarearchitektur, softwareentwicklung
Kategorie Software Engineering | 6 Kommentare »
Ich bin immer wieder überrascht, wenn frische Informatikabsolventen noch nie eine Versionsverwaltung genutzt haben oder außer SQL nie mit anderen Datenbankformen in Berührung gekommen sind. Ein kurzer Blick zum Beispiel in die Modulhandbücher der Fernuni Hagen (DBMS 1, DBMS 2) liefert keine einzige Spur von Datenbanksystemen, die nicht auf dem relationalem Konzept aufbauen. Dabei werden die so genannten NoSQL Datenbanken (Englisch für „not only SQL“) in der Praxis immer wichtiger…
Hier ein typisches Praxisszenario: Firma A entwickelt und vermarktet seit 15 Jahren erfolgreich ihre Branchensoftware X. Produkt X basiert auf einer Desktopanwendung plus zentraler Datenbank (häufig Oracle). Neben der Dateneingabe und -pflege ist ein typischer Anwendungsfall die Suche. Mit X verwaltete Objekte müssen abrufbar sein. Trotz schon mehrfacher Optimierung und Buchung von teuren technischen Beratern des Datenbankherstellers will es einfach nicht gelingen, die entsprechenden Suchanfragen in wenigen Sekunden zu beantworten, sondern Anwender müssen mitunter 10 Sekunden und länger auf eine Antwort warten. Den Verantwortlichen dämmert, dass da irgendwas faul sein muss, denn schließlich liefert uns Google in unter einer Sekunde eine Auswahl aus Milliarden Webseiten zu beliebigen Stichwörtern.
Eine mögliche Lösung für Firma A könnte sein, dass Produkt X neben der Ablage aller Objekte in der zentralen Datenbank zusätzlich noch einen Suchindex vorhält, der für die Volltextsuche genutzt wird. Das erfordert aber Umdenken, denn jedem Absolventen deutscher Hochschulen wurde über Jahrzehnte eingedonnert, dass Redundanz zu vermeiden ist und relationale Datenbanken das alleinige Allheilmittel sind. Das Vorhalten eines redundanten Suchindex außerhalb der relationalen Welt erscheint da leicht als eine nicht realisierbare Radikalforderung.
Meiner Meinung nach muss deshalb zunächst in der Ausbildung ein Umdenken stattfinden, damit neue Absolventen das Wissen in die Unternehmen tragen können. Martin Fowler formuliert die benötigte Kompetenz als Polyglot Persistence. Anstatt nur einen Hammer für alle möglichen Datenpersistenzprobleme zu haben („den relationalen Hammer“), muss jeder Informatiker über eine Werkzeugkiste verfügen, aus der er je nach aktuellen Anforderungen das passende Persistenzwerkzeug auswählt. Die Antwort ist eben nicht immer SQL – eben NoSQL. Doch wie könnte solch ein Werkzeugkasten gelehrt werden?
Zunächst sollte man weiterhin mit dem relationalen Datenbankmodel beginnen. Irgendwo muss man schließlich anfangen und warum nicht im auch für Lehrkräfte vertrauten Gebiet? Dabei sind wichtige Grundbegriffe wie Entität, Schlüssel, Datensatz, Beziehung, ACID, etc. zu klären. Man könnte anschließend ausgehend vom CAP Theorem (Konsistenz, Verfügbarkeit, Partitionierungstoleranz) zeigen, dass das relationale Model in der Regel nicht geeignet ist, eine hohe Verfügbarkeit bei gleichzeitiger Partitionierungstoleranz zu gewährleisten. An knackigen Fallbeispielen, etwa einer fiktiven Webanwendung für Emails, könnte man zeigen, dass diese beiden Eigenschaften durchaus wichtiger sein können, als eine stete Konsistenz. Daraus könnte man ableiten, dass es eine Vielzahl weiterer Ansätze zur Datenablage gibt, die diese Eigenschaften aufweisen.
Ziel sollte es sein, dass der Absolvent die Vor- und Nachteile der wichtigsten Ansätze kennt. Spontan fallen mir folgende Ansätze ein:
- relationales Model
- Dokumentenspeicher (engl.: document store)
- Schlüssel-Wertpaar-Speicher (engl.: key-value store)
- spaltenorientierte Datenbanken (engl.: column-oriented database)
- Graph- bzw. Netzdatenbanken (engl.: graph database)
Schön wäre auch, wenn in Praktikas zumindest ein alternativer NoSQL Ansatz an einem Beispiel ausprobiert wird, um die Unterschiede zum relationalen Model zu spüren. Das sollte nicht zu schwer fallen, denn die notwendige Software ist als OpenSource verfügbar und verfügt für trivale Schnittstellen für alle gängigen Programmiersprachen.
Doch was meint der geneigte Leser? Verlange ich zu viel? Habe ich zu hohe Erwartungen an Absolventen? Verlagere ich die Verantwortung der Weiterbildung von Unternehmen auf die Hochschulen?
Der Anteil des an der Hochschule gelernten, was in der Praxis relevant ist, war auch bei mir gering. Statt einer Vorlesung, wie in C Strings zerschnitten und verkettet werden wäre in der Tat die Verwendung einer Versionsverwaltung gut gewesen.
Bei den Datenbanken kann ich dir auch zustimmen.
Insgesamt lehrten die Professoren das, was sie zwanzig Jahre zuvor selbst gelernt hatten und das wenigste davon wurde heute noch so genutzt.
Ja, es gibt da draussen auch noch Programmierer für PL/1 und eine Wirtschaftsinformatikerin, die ich kenne, hatte diese Sprache noch vor 3 Jahren im Studium. Aber wozu?
Die wenigsten Lehrkräfte lernen gern. Warum das so ist, weiß ich nicht. Bei Lehrern gibt es auch oft genug Weiterbildungsangebote, die dann nicht genutzt werden. Hier etwas mehr Lernkultur bei dem Lehrenden ein zu führen würde einige Probleme lösen. Dann würden die Profs auch selber sehen, dass ihr Stoff veraltet ist.
Wo kommt der NoSQL-Ansatz eigentlich her? Aus der Praxix oder der Forschung? Und aus welchem Land? Z.B. bei Danisch lese ich oft, dass aus deutschen Universitäten kaum große Forschungsergebnisse zur Informatik kommen. Das müsste man allerding irgendwie mal empirisch testen.
Aber kann man Forschungsergebnisse quantifizieren?
Also für mich hat das nichts mit Forschung zu tun. Zumindest bis zum Bachelor werden ja sowieso nur Grundlagen für die Praxis vermittelt und da sollte meiner Meinung nach NoSQL dazugehören. Dass man zu dem Theme vielleicht in Deutschland nicht forscht oder es sogar nicht aus der Forschung kommt, spielt dabei erst mal gar keine Rolle.
Unter Forschen verstehe ich aber auch, mich auf dem Laufenden zu halten, was Stand der Technik ist. Nur so bin ich ja überhaupt in der Lagen evtl. mal an einer Stelle selbst etwas beizutragen, was über den aktuellen Stand hinausgeht.
Und ich kann in Lehrversnstaltungen dann auch immer etwas zum aktuellen Technikstand sagen.
Wenn du es so siehst, hast du natürlich recht!
[…] neben dem relationalen Datenmodel gibt es eine Vielzahl alternativer Ansätze, allgemein subsumiert unter NoSQL […]