Scaling Patterns
In 2004 habe ich auf dem Linuxtag einen kleinen Vortrag zum Thema
Skalierbarkeit gehalten. Schon damals war
die Message an verschiedenen Stellen im
Vortrag "Jedes Readproblem ist ein Caching-Problem, jedes
Schreibproblem ist ein Verteilungs- und Batchproblem":
Zum Skalieren muß man seine Anwendung in Teilanwendungen
unterteilen und die Daten replizieren. Die Replikation muß
asynchron erfolgen, ohne Two Phase Commit (2PC), sonst gewinnt
man wenig bis nichts. Schreibzugriffe müssen verzögert und
gebatched werden, damit sie effizienter abgewickelt werden
können. Um weitere Flaschenhälse zu vermeiden, muß man die
Datenhaltung in die …
Meine Sparkasse exportiert mir die Kontoauszüge aus Wunsch auch
als CSV. Die Dateien sehen so aus:
"Auftragskonto";"Buchungstag";"Valutadatum";"Buchungstext";
"Verwendungszweck";
"Begünstigter/Zahlungspflichtiger";"Kontonummer";"BLZ";
"Betrag";"Währung";"Info"
"08154711";"30.12";"30.12.05";"LASTSCHRIFT";
"DRP 08154711 040441777 INKL. 16% UST 5.38 EUR";
"STRATO MEDIEN AG";"040441777";"10050000";
"-39,00";"EUR";"Umsatz gebucht"
Weil ich wissen will, wofür ich mein Geld ausgebe, lade ich diese
Daten in ein MySQL.
Das geht so:
Zunächst einmal muß ich mir eine Tabelle definieren, in die ich
den Load vornehmen kann. Diese Tabelle hat Felder, die in erster
Linie dazu geschaffen sind, die Daten aufnehmen zu können. Wir
müssen die Daten noch bereinigen, sodaß es sich noch nicht um die
endgültigen Felder oder Typen handelt.
…
Eines gleich vorweg, es war heute zwar unausstehlich warm, aber
selbst das möchte ich an dieser Stelle nicht als Entschuldigung
gelten lassen.
Eigentlich ist das Aufsetzen einer MySQL Master-Slave Replikation
eine relativ schmerzfreie Angelegenheit. So machte ich mich
frohen Mutes an die Installation von zwei Linux Servern. Nach der
Installation und Konfiguration der MySQL Server samt Replikation
?weigerte? sich der Slave vehement bei der Replikation
mitzuspielen. Die Verbindung zum Master wurde aufgebaut, keine
Fehler, eigentlich alles paletti. Nachdem ich mich fast zu Tode
geyahoot hatte fand ich in der my.cnf diese Option
?expire-logs-days = 20?. Ein Vergleich der Systemzeit der beiden
Systeme zeigte einen Unterschied von einigen Monaten.
Merke: Erst einen NTP Abgleich machen, dann mit dem Einrichten
des Systems beginnen...
Seit dem 1. November 2005 arbeite ich für MySQL Deutschland GmbH
als Consultant. Damit mit bin ich Teil einer Firma mit 320
Mitarbeitern in 27 Ländern. Ein Office habe ich noch nie gesehen. Einige
der Kollegen, mit denen ich am engsten zusammenarbeite habe ich
auch noch nie gesehen. Die anderen sehe ich so alle paar Monate
mal. Die Zusammenarbeit ist gut und sehr intensiv.
Als ich von web.de zu MySQL gewechselt bin, war ich am Anfang
sehr skeptisch und habe meine Interviewpartner gefragt, wie das
denn wohl so ist, für eine "virtuelle" Firma zu arbeiten, in der
die Kollegen so weit verstreut gesät sind. Auch in den Fällen, in
denen ich neue Kollegen interviewed habe ist dies die Frage, die
mir in der Regel zuerst gestellt wird.
Meine Antwort auf diese Frage ist inzwischen "Hast Du einmal in
irgendeinem Open Source Projekt …
Nachdem ich heute vergeblich versucht habe ein aktuelles Windows
XP (SP 2) sowie Windows 2003 Server (SP1) an MySQL über ODBC mit
Access zu verbinden, Access mir allerdings immer abgestürzt ist,
bin ich auf diesen Bugreport gestoßen.
Dies hat bei mir geholfen:
- Access beenden
- die Datei msjet40.dll downloaden
- diese Datei über die bereits vorhandene Datei msjet40.dll in
%SystemRoot%\system32\dllcache\ sowie %SystemRoot%\system32
kopieren
- Access wieder starten und hoffen
Unsere Presseabteilung wies mich heute darauf hin, daß mein Artikel “Hand in Hand: Wie XA-Transaktionen und das Zwei-Phasen-Commit-Protokoll aus MySQL und Oracle Freunde machen” aus dem PHP Magazin (Ausgabe 4/2006) vom Verlag als Online-Artikel ausgewählt wurde. Der Artikel beschreibt die Grundlagen des Zwei-Phasen-Commit-Protokoll und XA-Transaktionen am Beispiel einer fiktiven Reisebuchung. Die URL des Online-Artikels lautet: http://www.php-mag.de/itr/online_artikel/psecom,id,815,nodeid,62.html . Feedback, z.B. über die MySQL Foren, ist …
[Mehr]Unsere Presseabteilung wies mich heute darauf hin, daß mein Artikel “Hand in Hand: Wie XA-Transaktionen und das Zwei-Phasen-Commit-Protokoll aus MySQL und Oracle Freunde machen” aus dem PHP Magazin (Ausgabe 4/2006) vom Verlag als Online-Artikel ausgewählt wurde. Der Artikel beschreibt die Grundlagen des Zwei-Phasen-Commit-Protokoll und XA-Transaktionen am Beispiel einer fiktiven Reisebuchung. Die URL des Online-Artikels lautet: http://www.php-mag.de/itr/online_artikel/psecom,id,815,nodeid,62.html . Feedback, z.B. über die MySQL Foren, ist …
[Mehr]Unsere Presseabteilung wies mich heute darauf hin, daß mein Artikel “Hand in Hand: Wie XA-Transaktionen und das Zwei-Phasen-Commit-Protokoll aus MySQL und Oracle Freunde machen” aus dem PHP Magazin (Ausgabe 4/2006) vom Verlag als Online-Artikel ausgewählt wurde. Der Artikel beschreibt die Grundlagen des Zwei-Phasen-Commit-Protokoll und XA-Transaktionen am Beispiel einer fiktiven Reisebuchung. Die URL des Online-Artikels lautet: http://www.php-mag.de/itr/online_artikel/psecom,id,815,nodeid,62.html . Feedback, z.B. über die MySQL Foren, ist …
[Mehr]
So, das erste MySQL UG Treffen Rhein-Neckar in Heidelberg ist nun
durch, und wenn man mal davon absieht daß ich viel zu viel
geredet habe ist es hoffentlich ganz gut gelaufen.
Einige Dinge, die ich beim Treffen angesprochen habe, will ich
hier noch einmal sammeln, obwohl ich sie im einzelnen auch schon
auf die Mailingliste gesendet habe.
MySQL und _rowid. In MySQL ist es möglich, den
Primärschlüssel einer Tabelle als _rowid anzusprechen, egal wie
er wirklich heißt, wenn die Tabelle einen auto_increment-Integer
als Primärschlüssel hat. Nachfragen in den internen MySQL
Supportkanälen ergibt, daß das "Feature" a) undokumentiert ist
und b) wahrscheinlich für irgendwelche Connector-Kompatibilität
eingeführt wurde, aber niemand weiß nix genaues. Man sollte es
nicht verwenden.
Die …
Einladung zum Treffen der MySQL Usergroup Rhein-Neckar
Am Dienstag, dem 2. Mai trifft sich in Heidelberg die MySQL
Usergroup Rhein-Neckar um 19.30 Uhr zum ersten Male in der
griechischen Taverne an der Bergbahn.
Neben Gedankenaustausch rund um das Thema MySQL und dem
gegenseitigen Kennenlernen steht ein Vortrag auf dem Programm:
Kristian Köhntopp von MySQL wird über das Thema Performance
Tuning referieren.
Der Eintritt ist frei. Weitere Informationen und Voranmeldung
über die Mailingliste (http://lists.mysql.com/ug-rhein-neckar).
Adresse:
Griechische Taverne an der Bergbahn
Zwingerstrasse 20
69117 Heidelberg-Altstadt
Tel. 06221-28038
…