Picture of a telescope

Neues über Datenbanken — Sommer 2018

Bloß nicht den Überblick verlieren: Hier sind die wichtigsten Datenbank-Neuigkeiten der letzten Monate.

SQL weiter im Aufwind

Google’s Sinneswandel hin zu SQL hat schon in meinem letzten Newsletter Erwähnung gefunden. Nun hat Google in einem neuen Artikel eine weitere Eskalationsstufe früherer Aussagen erreicht: In der originalen Spanner-Abhandlung (2012) hieß es noch, dass strenge Konsistenz, wie sie SQL-Datenbanken bietet, zu weniger Problemen führt, als das bei NoSQL-Systemen verbreitete Eventual-Consistency-Modell. Im F1-Paper (2013) wurde eventual consistency dann schon als „inakzeptable Belastung‟ für Entwickler bezeichnet. Diesmal hat es die Botschaft direkt in den Titel geschafft: Why you should pick strong consistency, whenever possible.

Auch Amazon scheut sich nicht, SQL und dem relationalen Modell ein paar Vorzüge zuzugestehen. Bei der letzten AWS re:Invent-Konferenz wurde auf dem offiziellen Twitter-Account verkündet: SQL on the relational schema is orders of magnitude faster than JSON processing.

Der ehemals zugkräftige Marketingbegriff NoSQL verkommt also langsam zum Kennzeichen eines Mangels. Ohne SQL fehlt eben doch etwas. Kein Wunder, dass sich immer mehr Systeme durch die Einführung einer SQL-Schnittstelle von diesem Begriff distanzieren. Vor Kurzem war es mit Elasticsearch ein besonders etabliertes System.

Die weitere Verbreitung von SQL endet nicht NoSQL-Systemen. Auch traditionelle SQL-Datenbanken werden um moderne SQL-Funktionen erweitert. Dazu habe ich anlässlich des Erscheinens von MySQL 8.0 einen ausführlichen Artikel verfasst.

In eigener Sache: Mein nächstes Training

Seit SQL-92 hat sich einiges getan. Mein 5-tägiges Training ist das Update für erfahrene SQL-Benutzer. Sieh es dir jetzt an!

Cloud First

Oracle hat den Versionssprung von 12.2 auf 18 vollzogen und stellt die neue Datenbankversion – wie zuletzt – vorerst nur in der Oracle-Cloud und für Engineered Systems zur Verfügung. Im krassen Gegensatz zu einer bedeutungsvollen Versionierung kennzeichnet der Versionssprung lediglich einen Patchlevel. Nach dem alten Schema wäre es Version 12.2.0.2 geworden. Nur die letzte Stelle hätte sich erhöht. Aus Sicht eines Entwicklers sind die Neuerungen dementsprechend unspektakulär.

Aber nicht jedes Unternehmen liebt die Cloud so sehr wie Oracle. So musste SAP kürzlich die schmerzliche Entscheidung treffen, die Cloud-Lösung SAP Anywhere nach zwei Jahren einzustellen – offenbar konnte man in dieser Zeit nur 30 Kunden gewinnen.

Technologie und Wissenschaft

Das bestimmende technologische Thema war natürlich die Spectre- und Meltdown-Sicherheitslücken. Diese Lücken werfen einen Schatten auf Cloud-Umgebungen, in denen einzelne Server von mehreren Kunden gleichzeitig genutzt werden, weil dadurch die Abgrenzung zwischen den Kunden durchbrochen werden kann, sodass ein böswilliger Nutzer andere Nutzer auf derselben Hardware ausspionieren kann. Da diese Sicherheitslücken einen Hardwarefehler ausnutzen, betreffen sie natürlich nicht nur Datenbanken.

Das „Fsyncgate“ trifft dagegen nur Software, die „buffered IO” nutzt, um Daten dauerhaft zu speichern – wie z. B. manche Datenbanken. Der Kern des Problems ist, dass Fehler, die beim Zurückschreiben des Betriebssystemcaches auftreten, unter gewissen Umständen verloren gehen können. Die Datenbank kann in diesem Fall keine Fehlerbehandlung durchführen. Entdeckt hatte das Problem Craig Ringer von 2ndQuadrant - einem PostgreSQL Consulting Unternehmen. Der Ursprung des Problems ist wohl eine Unterlassung in der POSIX-Spezifikation von fsync(). Dort wird das weitere Verhalten nach dem Melden eines Fehlers nicht spezifiziert, sodass Anwendungs- und Betriebssystementwickler unterschiedliche Erwartungen hatten. Bezüglich Linux hatte Matthew Wilcox, Linux-Kernel-Hacker bei Microsoft (!), einen Vortrag auf PostgreSQL-Entwickerkonferenz PgCon gehalten und sich für die Probleme entschuldigt.

Frei nach dem Motto „erschießt den Boten“ musste PostgreSQL einige Kritik für Fsyncgate wegstecken. Tatsächlich ist PostgreSQL von diesem Problem besonders betroffen, da es kein direct IO unterstützt. Potentiell betroffen sind aber auch andere Datenbanken – genauer gesagt jegliche Software, wenn sie buffered IO verwendet. Das ist zum Beispiel auch MySQL in der Standardkonfiguration auf zahlreichen Unixderivaten.

Ansonsten gab es für PostgreSQL nur gute Nachrichten: Von DB-Engines.com wurde PostgreSQL zur Datenbank des Jahres 2017 gekürt. Bei einem Vergleich der Sourcecode-Qualität von Firebird, MySQL und PostgreSQL ging PostgreSQL – ex aequo mit Firebird – als Sieger hervor. Mit viermal so vielen Minuspunkten folgt MySQL in diesem Vergleich an zweiter und damit letzter Stelle.

Vonseiten der Wissenschaft hat ein Google-Paper über Indizierung – noch immer meine Leidenschaft, seit ich SQL Performance Explained geschrieben habe – eine verwegene Behauptung aufgestellt: Man hat neuronale Netzwerke trainiert, die um Faktoren kleiner und beim Suchen 70 % schneller sind als traditionelle Indexstrukturen wie der B-Tree. Das gilt jedoch erst, wenn das Netzwerk einmal trainiert ist. Das Trainieren selbst dürfte ein unverhältnismäßig hoher Aufwand sein, sodass die Anwendung dieser Idee vorerst auf statische Datenbestände limitiert ist. Für die Google-Suchmaschine also durchaus in interessantes Konzept – für allgemeine Indizierung eher weniger.

Neue Hauptversionen

In den letzten Monaten gab es zwei beeindruckende Releases:

MySQL 8.0 (April 2018)

Nach unerträglich langen 19 Monaten seit der ersten „development milestone release (DMR)“ im September 2016 hat MySQL 8.0 im April 2018 endlich Produktionsreife erlangt. Die Relevanz dieses Release für alle SQL-Nutzer kann ich nicht genug betonen – daher nochmals der Hinweis auf meinen Artikel „Ein gigantischer Sprung für SQL: MySQL 8.0 veröffentlicht“.

Die bahnbrechenden Neuerungen sind natürlich

Endlich hat sich MySQL über SQL-92 hinaus entwickelt und eröffnet diese modern SQL-Funktionen einer riesigen Benutzergemeinde.

Nach einer so langen Entwicklungszeit gibt es natürlich zahlreiche Neuerungen. Mysqlserverteam.com hat eine übersichtliche Zusammenfassung.

MariaDB 10.3 (Mai 2018)

Besonders nennenswert ist die Einführung von system-versionierten Tabellen entsprechend des SQL-Standards. Diese Funktion hätte jeder schon einmal gebraucht und führt bei meinen „modern SQL“-Vorträgen immer wieder zu besonderem Interesse. Da MariaDB diese Funktion als erste gängige, Gratis-Open-Source Datenbank unterstützt, setzt sie die Mitbewerber damit durchaus unter Druck. Demnächst veröffentliche ich einen detaillierten Artikel über MariaDB 10.3 auf modern-sql.com.

Auf mariadb.com gibt es natürlich die Release-Notes.

Neues auf meinen Webseiten

Via Twitter, in aller Kürze (folge mir auf Twitter)

Über Markus Winand

Markus Winand ist unabhängiger Autor, Trainer und Berater zum Thema SQL. Sein Buch „SQL Performance Explained“ wurde bereits in fünf Sprachen übersetzt. Es kann als Printausgabe erworben, aber auch gratis auf seiner Webseite use-the-index-luke.com gelesen werden. Unter dem Motto „Seit SQL-92 hat sich einiges getan“ arbeitet er derzeit an seinem zweiten Buch, das ebenfalls gratis im Web abrufbar ist (modern-sql.com). Markus Winand spricht regelmäßig auf internationalen Konferenzen und Usergruppen über SQL.

Mit Markus Winand verbinden

Markus Winand auf LinkedInMarkus Winand auf XINGMarkus Winand auf Twitter