Immer mehr in Mode kommen soziale Netzwerke wie Facebook, Xing und Co. Über den Sinn und Unsinn einzelner Netzwerke kann man sicherlich vortrefflich diskutieren. Teilweise unglaubliche Nutzerzahlen (Facebook: 130 Mio aktive Nutzer, 10 Mrd hochgeladene Fotos) stellen riesen Herausforderungen an die IT Infrastruktur dar. Viele Features basieren auf komplexen und rechenintensiven Datenbankoperationen deren Skalierung beim derzeitigen atemberaubenden Nutzerwachstum extrem anspruchsvoll ist. Um überhaupt Herr der Seite zu sein (und zu bleiben) bedarf es effizienter Caching Mechanismen, um die Anzahl der Datenbank Connections effizient zu handeln und Daten extrem schnell ausliefern zu können.
Viele hochfrequentierte Seiten (Facebook, Slashdot, Wikipedia) nutzen mittlerweile Memcache zur Performanceoptimierung ihrer Seite. Entwickelt wurde Memcache von Danga Interactice für die Mutter aller Online Netzwerke “LiveJournal”.
Warum sollte man nun Memcache einsetzen? Die Antwort ist relativ einfach: Memcache ist im Vergleich zu Datenbank Queries einfach unglaublich schnell… Memcache speichert die Daten in Form einer Hashtable direkt im Arbeitsspeicher des Servers ab und kann so (im Gegensatz zum DB-Query) die relevanten Daten regelrecht rausfeuern.
Natürlich gibt es noch viele andere Varianten des Cachings bspw. das Caching über MySQL. Dieses hat aber ein paar elementare Nachteile: Bei jeder Statusänderung der Tabelle (Delete, Update…) wird der alte Cache komplett gelöscht, hat man nun die ein oder andere hochfrequentierte Tabelle wird der Cache nahezu nutzlos. In ungünstigen Fällen kann die Nutzung des Caches der Gesamtperformance abträglich sein, da der benötigte Overhead zur Cacheerzeugung höher ist, als der Nutzen aus den Caches. Für schwach frequentierte Tabellen macht der Cache nach wie vor Sinn.
Memcache läuft auf allen halbwegs bekannten Plattformen wie Linux, Windows… und benötigt nur eine relativ geringe CPU Power, das einzige was wirklich benötigt wird ist Speicher, Speicher und nochmals Speicher. Ein richtig gutes Tutorial zur Installation gibt es unter:
http://www.ajohnstone.com/archives/installing-memcached/
In ein paar Tagen gehe ich einem zweiten Teil noch näher auf die Programmierung mit der Komponente Memcache ein, anhand der Programmiersprache PHP wird an ein paar trivialen Beispielen der Einsatz von Memcache gezeigt…
0 Responses
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.