MySQL [ˌmaɪɛskjuːˈɛl] e s r o w g n i t t e g e r a s g n i ! e Th t a l o c o h c d n e s e s a e l p MySQL • Chronologie • 1994 - 2008 MySQL AB, Schweden • 2008 - 2010 Sun Microsystems, USA • • 2008 - Fork in die MariaDB 2010 - Oracle, USA MySQL • Historie • 1994 von Ulf Michael Widenus gegründet. • Vorläufer war das UNIREG und mSQL Projekt. • Name besteht aus My (Name seiner Tochter) und SQL. • Startet mit Version 3.1 und einer reduzierten, aber dadurch schnellen SQL Unterstützung. MySQL • Historie • Zur Zeit seiner Entstehung gab es kaum freie und frei verwendbare Datenbanksysteme. • Die gute Integration von MySQL in PHP brachte dieses Gespann mit Linux und Apache zu großer Verbreitung. • Der LAMP Stack war geboren. LAMP Linux Apache MySQL PHP MySQL • rDBMS? • relationelles Datenbank Management System • Schnell Rein & Raus und bitte sortiert. • Ach ja, Ausfallsicherheit und Gruppierung bitte auch. • Und verteilt, sowie komplexe Abfragen bitte! MySQL • SQL • Standard Query Language – die Sprache der meisten rDBMS. • Nur die Anwender tun sich schwer mit ihr ;) • SELECT p.ID AS 'id', p.post_title AS 'title', p.post_date AS 'date', p.post_author AS 'uid' , p.comment_count AS 'comment_count' , v.pageview s AS 'pageviews' FROM wp_popularpostsdata v LEFT JOIN wp_posts p ON v.postid = p.ID WHERE p.post_type IN(‘post','page') AND p.post_password = '' AND p.post_status = 'publish' ORDER BY pageviews DESC LIMIT 3; # Time: 8m 31s 22ms MySQL • Verarbeitung einer Anfrage • Query-Cache hatte ich die gleiche Anfrage schon, kann sie direkt aus dem Cache beantwortet werden. • Parsing Ist die Anfrage überhaupt syntaktisch korrekt? • Optimierung hier wird mit Heuristiken versucht die Datenmenge kleinzuhalten. Menschliche Optimierer sind aber Gold wert. MySQL • Speicherengines • BDB • MyISAM • FEDERATED • InnoDB • ARCHIVE • MERGE • CSV • MEMORY (HEAP) • BLACKHOLE • EXAMPLE • NDB einfaches Client Server Modell DB1 Server Client Client Server Modell DB2 DB1 DB3 Server Client Client Client Dual-Head Replication DB2 DB1 DB2 DB3 Server Client DB1 Server Client Client DB3 MySQL Cluster DB2 DB1 DB3 DB2 Server DB1 DB3 Client Server virtuelle IP Server DB2 DB1 Mgmt Server DB3 DB2 DB1 Mgmt Client Client DB3 MySQL Cluster • Server inside • SQL Knoten • Datenknoten • Managementknoten MySQL Cluster • Ausfallsicherheit • Synchrone Replikation • Automatischer Failover • Shared-Nothing-Architektur, keine singuläre Fehlerquelle • Geographische Replikation MySQL Cluster • Im laufenden Betrieb • Schema-Aktualisierung • Skalierung durch Hinzunahme von weiteren Knoten • Upgrades von OS und Applikationen • Backup MySQL • Einsatzgebiete • Blogs, CMS, Websites • Wordpress, Drupal, Joomla, Koken, … • MySQL wird unter anderem verwendet von Flickr, Nokia.com, YouTube, Google, Facebook und Twitter. • Daneben wird MySQL in vielen Produkten als eingebettetes Datenbanksystem eingesetzt. MySQL • Problemgebiete • Der Query-Cache hält Entwickler davon ab, saubere Indices und “Materialized Views” zu benutzen. • Die durchaus halsbrecherische Akrobatik um wirklich UTF-8 Daten sauber zu speichern und auch wieder darzustellen. • Quick-N-Dirty Kultur bei der Implementierung von vielen Webprojekten. • Quo vadis Oracle? Fragen? ! Mathias Brandstetter Trend Micro Deutschland GmbH ! [email protected] ! http://www.linuxpinguin.de MySQL [ˌmaɪɛskjuːˈɛl] e s r o w g n i t t e g e r a s g n i ! e Th t a l o c o h c d n e s e s a e l p