Neue Interfaces für MySQL: Oracle-Experte Ulf Wendel im Interview
Kommentare

International PHP Conference

In seinen Sessions „MySQL meets NoSQL“ und „An auto-sharding Database Cluster in a Nutshell“ wird Ulf Wendel sein Wissen um MySQL-Schnittstellen auf der International PHP

International PHP Conference

Ulf Wendel

In seinen Sessions „MySQL meets NoSQL“ und „An auto-sharding Database Cluster in a Nutshell“ wird Ulf Wendel sein Wissen um MySQL-Schnittstellen auf der International PHP Conference Spring Edition 2013 in Berlin teilen. Übrigens könnt Ihr noch bis zum 02. Mai vergünstigt zum Early Bird Tarif buchen und circa 500 Euro sparen.

Ulf Wendel hat in den letzten Monaten für Oracle erhebliche Beiträge geleistet, MySQL zu beschleunigen. Dabei sind ein paar interessante neue Schnittstellen zur Datenbank hinzugekommen. Da er im Juni auf der IPC darüber spricht, fragten wir ihn schon jetzt, worum es da genau gehen wird.

PHP Magazin: Im Teaser können wir schon von einigen Zugriffstechnologien lesen. Kannst du uns in je zwei Sätzen erklären, um was es sich bei
„ORM-style MySQL Cluster Node.js interface“, „Memcache Protocol“ und Co. handelt?

Ulf Wendel: MySQL-Anwender, die hunderte oder tausende von MySQL-Servern betreiben, sind wahre Innovationskünstler bei ihrer Suche nach besserer Performance.

Vor rund drei Jahren fügten sich längst bekannte Beobachtungen zu einem neuen Ganzen. Diese waren:

  • Ein Großteil der Antwortzeit einer einfachen Anfrage wird für die SQL-Verarbeitung benötigt

  • Viele Anfragen sind einfache Primarschlüsselabfragen wie: SELECT column FROM table WHERE pk = &#60wert&#62
  • Das Gros der Datenbanken verwendet B-Bäume und Hash-Tabellen zu Datenablage. Die entsprechenden Algorithmen von MySQL sind sehr CPU-effizient. Es ist schwer, dies weiter zu optimieren.

Da die Datenablage bereits sehr effizient ist, wandten sich die High-End Anwender der Zugiffsmethode zu. Seit jeher hat MySQL eine interne Abstraktionsschicht, die SQL und Datenablage trennt, das Speicher-Engine-Interface. Über viele Jahre wurde es nur als Möglichkeit zur flexiblen Datenspeicherung über spezialisierte Speicher-Engines verstanden.

In der MySQL Anwendergemeinschaft reifte die Idee, das Speicher-Engine-Interface für einfache, Key-Value-Zugriffe zu benutzen. Es entstanden MySQL Plugins, die über ein schlankes, schnelles Netzwerkprotokoll Anwendungen den Direktzugriff erlaubten. Das war genial! MySQL bekam eine NoSQL-Schnittstelle, die erheblich höhere Performance für einfache Primärschlüsselabfragen bietet als die bekannte SQL-Schnittstelle.

Oracle hat die Idee gleich dreifach weiterentwickelt:

  1. Eine Memcache-Protokoll basierte Schnittstelle für MySQL 5.6

  2. Eine Memcache-Protokoll basierte Schnittstelle für MySQL Cluster 7.3
  3. Eine node.js Schnittstelle für MySQL Cluster 7.3

Alle Entwicklungen sind quelloffen und kostenlos. MySQL 5.6 liegt als Produktionsversion vor. Es ist Support für die neue Schnittstelle verfügbar.

Bei MySQL Cluster 7.3 handelt es sich um eine Entwicklungsversion. Während das Memcache-Protokoll ausschließlich ein Key-Value-Interface darstellt, bietet die node.js Schnittstelle für MySQL Cluster 7.3 auch einfache Key-Object-Semantik, um sich nahtlos in die JavaScript-Welt zu integrieren. Eine Vorschau gibt es im Oracle Blog.

PHP Magazin: Du sprichst vom Memcache-Protokoll. Bestehende Memcached Anwendungen und Clients können jetzt direkt auf MySQL zugreifen?

Ulf Wendel: Richtig. Viele MySQL-Anwender benutzen Memcached zur schnellen Zwischenspeicherung von Daten. Sie lesen die Daten aus MySQL aus und legen sie zur Zwischenspeicherung in Memcached ab. Dafür benutzen sie beispielsweise die Memcached-Erweiterung von PHP, php.net/memcached.

Mittels der Memcached-Erweiterung von PHP lässt sich jetzt direkt eine Zeile aus einer InnoDB-Tabelle auslesen, weil MySQL 5.6 eine zusätzliche Memcache-Schnittstelle hat. Ein Zugriff auf MySQL über die
Memcache-Schnittstelle ist schneller als ein vergleichbarer SQL-Zugriff
über die PDO_MySQL, mysqli oder mysql-APIs von PHP.

Das angesprochene, freie PECL/mysqlnd_memcached versucht SQL-Anfragen zu erkennen, die in eine schnellere Memcache-Anfrage übersetzt werden können. Falls möglich, übersetzt es semi-transparent eine SQL-Anfrage an MySQL in eine identische Memcache-Anfrage an MySQL.

PHP Magazin: Wächst mit der Zahl der Schnittstellen nicht auch die Angriffsfläche
für Hacker?

Ulf Wendel: Die ersten Community-Entwicklungen blendeten Authentifizierung (bin ich der, der ich behaupte zu sein?) und Autorisierung (darf ich das?) komplett aus. Alle Klienten durften alle Daten abfragen.

Das InnoDB Memcached Plugin von MySQL 5.6 bietet optionale Authentifizierung über NTLM an. Die Autorisierung erfolgt global. Über die Memcache Schnittstelle können nur Tabellen abgefragt werden, die von einem MySQL Administrator freigeneben wurden.

Das Memcache Protokoll hat eine geringe Komplexität, es ist seit Jahren im Einsatz und gut getestet — anders als etwaige Eigenentwicklungen.

PHP Magazin: Weshalb hat man so viele neue Schnittstellen erschaffen, um auf MySQL-Datenbanken zuzugreifen?

Ulf Wendel: Die ursprüngliche Motivation der MySQL Anwender war die Suche nach einer zusätzlichen besonders schnellen Zugriffsmöglichkeit für InnoDB basierte Tabellen. Dem Ruf ist das MySQL Team gefolgt.

Das MySQL 5.6 InnoDB Memcache Plugin überspringt sogar das Speicher-Engine-Interface beim Zugriff auf InnoDB. Es verwendet InnoDB interne Programmierschnittstellen für maximale Geschwindigkeit.

PHP Magazin: Wo siehst du noch Chancen für weitere gute Ideen in dem Bereich?

Ulf Wendel: Die erste Runde ging an die Performance als treibende Kraft. Was die zweite Runde bringt, hängt stark von den Ideen der Anwender ab.

Die MySQL Anwender haben MySQL im wahrsten Sinne des Wortes auf den Kopf gestellt. Fast alle Illustrationen zur internen Struktur von MySQL zeigen das modulare Speicher-Interface ganz unten. Oben erscheinen die Klienten der verschiedenen Programmiersprachen, dann folgen SQL-Parser und Optimierer bevor das modulare Speicher-Interface den Übergang zu den Speicher-Engines InnoDB, NDB (MySQL Cluster), Memory, MyISAM usw. bildet.

Mit den NoSQL-Innovationen dreht sich das Bild um. Auf einmal sind die Speicher-Engines oben und die Clients direkt darüber! Auf einmal zeigt sich ein Datenbank-Bausatz: Wer will, nimmt SQL. Wer SQL will, aber nicht das MySQL Client Server Protokoll sprechen kann, wie ein JavaScript in einem Browser, tauscht das Protokoll aus und lässt MySQL HTTP oder WebSocket sprechen.

PHP Magazin: Okay, das wird spannend. Vielen Dank soweit!

Ulf Wendel arbeitet seit 2004 an MySQL, seine ersten Erfahrungen damit hat er 1997 gesammelt. Derzeit ist er im Connectors Team, wo er sich auf seine Kernkompetenzen als Web-Entwickler konzentrieren kann, also auf PHP- und MySQL-Entwicklung. Aktuell beschäftigt er sich mit Treibern in PHP, C++ und OpenOffice. Seit 2000 unterstützt er die International PHP Conference mit Sessions und Workshops. 2009 hat er die deutschen PHP User Groups im Zuge der „MySQL PHP BBQ Tour“ besucht.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -