- doag.org · “a collection of technologies and companies who leverage users and developers in a...
TRANSCRIPT
<Insert Picture Here>
Agenda
• Die Definition von Web-2.0 • Web-2.0-Architektur• MySQL als Datenbankschicht Teil 1
– MySQL Replikation
• Memcached und MySQL• MySQL als Datenbankschicht Teil 2
– MySQL Cluster
• Q&A
<Insert Picture Here>
“A collection of technologies and companies who leverage users and
developers in a collaborative manner in order to rapidly create
data and develop applications with a high level of integration across
platforms, data sources and other web-enabled services”
Die Definition von Web-2.0
Tim O’Reilly & Dale Dougherty 2004
Die Definition von Web-2.0
• Das Web als Plattform• Daten als die treibende Kraft• Zusammenarbeit im Netzwerk durch Architektur der
Mitwirkung• Innovation durch Zusammenfassung von Systemen
und Sites durch das Zusammenführen von Funktionen verteilt arbeitender unabhängiger Entwickler
• Geschäftsmodelle ohne Overhead, die durch die Syndikatbildung von Inhalten und Services ermöglicht werden
• Das Ende des Software-Entwicklungszyklus - BETA
Die Plattform ist das Web
• Das Web als grundlegende Programmier-Plattform• Einfach alles findet über das Web statt• Mainframe zu Client/Server – PC zu Web• Migration vom Desktop zum Browser und Browser-
fähigen Geräten
Feeds Blogs Social Networking Wikis Mashups Tags…
Herausforderungen für Web-2.0-Anwendungen
• Ständige Veränderungen• Diverse Schnittstellen und Quellen• Verfügbarkeitsanforderungen steigen mit dem Erfolg• Last-Abschätzungen kaum möglich
Das bedeutet für die Datenbank-Komponente:• Standard-Schnittstellen müssen vorhanden sein• Verschiedenste Anforderungen seitens
– Last, Verfügbarkeit, Persistenz
• Skalierung über mehrere Server, oft Online
MySQL Replikation
• Die Kernfunktionalität Basis für Lese-Skalierung
• Asynchrone Implementierung sorgt für Entkopplung zwischen Master und Slave
• Auf dem Master geschriebene Daten werden zusätzlich im Binary Log protokolliert
• Der I/O Thread des Slave liest Einträge des Binary Log und protokolliert diese im Relay Log des Slaves
• Der SQL Thread des Slaves liest das Relay Log und übernimmt die Daten in den Slave
• Die geschriebenen Daten können optional wiederum im Binary Log des Slaves protokolliert werden
Varianten mit MySQL Replikation
Master-Slave Kette Master-Master
Slave-Farm Multi-Master Ring
Multi-Source nicht möglich!
Schreibintensive AnwendungenAllgemeine Nutzung
• Verwaltung mehrerer Verbindungen für:– Authentifizierung– Session Management– Logging/Click Stream– Management und Administration– Anwendungsdaten– Trennen von „Low Persistency“ und High Persistency“-Daten
Schreibintensive AnwendungenAllgemeine Nutzung
• Low Persistency– Warenkörbe und temp. Listen– Queues wie Bestellungen, Dokumente mit
Statusänderungen, ...– Kurze Nachrichten
• High Persistency– Kataloge– Wunschlisten– Vorschlagslisten– Foren, Nachrichten, Kommentare etc.
Leseperformance durch Memcached
• Entwickelt von Danga Interactive für LiveJournal• Allgemeiner, verteilerter Cache-Mechanismus
– Verfügbar für Linux, FreeBSD, Solaris, Windows, OS X– Einfaches UDP Protokoll, Libevent basiert– Integration mit MySQL, PostgreSQL, Apache, lighthttpd,
Drupal ...• PhP, Perl, Python, Ruby, C/C++, Java, LUA etc.
• Verwendet (unter anderem) von LiveJournal, Fotolog, Facebook, Amazon, Yahoo, YouTube, Wikipedia
Memcached ist ein hochperformantes Objekt-Caching-System auf Basis von verteiltem Speicher. Ziel ist der schnellere
Zugriff auf dynamische Web-Anwendungen durch Reduzierung von Datenbanklast,
aber auch eine Nutzung ohne Datenbank ist möglich.
Memcached – die Fakten
• Größe Key: 250 Bytes• Größe Daten: bis zu 1 MB• Maximale Größe hängt vom 32/64 Bit Betriebssystem ab• LRU (Least Recently Used) basiert – Die am längsten
nicht verwendeten Elemente werden freigegeben (Datengröße spielt hier auch eine Rolle)
• Threads arbeiten effektiv mit großen Instanzen• Speicher wird permanent zugewiesen
– Der „Slab Allocator“ teilt den Speicher in Daten-Container
– Verbesserte Performance zum Preis von Fragmentierung und verschwendetem Speicher
Memcached – Was es NICHT ist
• Ein zuverlässiger Speicher– Daten können verloren gehen
• Hochverfügbar– Keine Redundanz, kein Failover
• Sicher– Kein Mechanismus zur Authentifizierung
• Eine schnelle Datenbank– keine Atomarität, keine Konsistenz, keine Isoliertheit,
keine Dauerhaftigkeit
• Ein reiner Datenbank-Cache– Kein Konzept, Daten als ungültig zu deklarieren
• Reine Nutzung aus der Anwendung heraus
MySQL Cluster
• Höchste Verfügbarkeit– Automatisches Fail-Over in
Sekundenbruchteilen– Online Skalierung– Online Upgrades
• Nutzung von Standard-Hardware
• Kein „Single Point of Failure“• Daten wird über 2 Nodes
synchron gehalten• Automatische Partitionierung• Hoch-Performant
Anwendung
MySQL Server Nodes
Data Nodes
Management Nodes
On-Line Skalierung & Wartung
1. Hinzufügen einer Node Group
2. Daten re-partitionieren
3. Redundante Daten löschen
4. Verteilung der Last auf beide Node Groups
• Online Schemata ändern• Hardware & Software-
Upgrade ohne Downtime• Online Backup
Vergleich Memcached & MySQL Cluster
Memcached• Verteilt• Praktisch unlimitierte Größe• Generisch (kann jedes Objekt
speichern)• Keine direkte Invalidation• Max 1MByte pro Element
MySQL Cluster• Verteilt• Nicht unlimitiert aber sehr groß• Speichert jede Art von Daten als
DB• Keine Invalidation (aber DELETE)• Hochverfügbar und redundant• Random/Multikey Suche• SQL oder natives Interface