Ein Cache ist in der Informationstechnologie eine Hochgeschwindigkeitsspeicherebene, auf der eine Datenteilmenge meist temporär gespeichert wird und über die diese Daten bei zukünftigen Anfragen schneller bereitgestellt werden können als über den primären Speicherort dieser Daten. Über Caching können bereits abgerufene oder berechnete Daten effizient wiederverwendet werden. Die Daten in einem Cache werden im Allgemeinen auf Hardware mit schnellem Zugriff gespeichert, beispielsweise im RAM (Random Access Memory), gelegentlich auch in Verbindung mit einer Softwarekomponente. Zweck eines Cache sind schnellere Datenabrufzeiten durch Vermeidung eines Zugriffs auf die zugrunde liegende langsamere Speicherebene. Der Geschwindigkeit eines Cache steht als Nachteil seine geringere Kapazität gegenüber. In einem Cache wird in der Regel nur eine Teilmenge der Daten, und dies auch nur vorübergehend, gespeichert, während die Daten in einer Datenbank in der Regel vollständig und persistent sind.
Caches können für die verschiedensten Technologieebenen wie Betriebssysteme, Netzwerkebenen (einschließlich Content Delivery Networks (CDN) und DNS), Webanwendungen und Datenbanken genutzt werden.
Dank der hohen, durch RAM und In-Memory-Engines unterstützten Anforderungsraten bzw. E/As (Ein-/Ausgabevorgänge pro Sekunde) erhöht sich durch Caching die Datenabrufleistung erheblich und dies bei reduzierten Kosten. Um den gleichen Durchsatz mit herkömmlichen Datenbanken und datenträgerbasierter Hardware zu erreichen, wären erheblich mehr Ressourcen erforderlich. Diese zusätzlichen Ressourcen würden die Kosten in die Höhe treiben, ohne nur annähernd die geringe Latenz eines In-Memory-Cache zu erreichen.
Caching eignet sich insbesondere zur deutlichen Reduzierung der Latenz und zur Steigerung der E/As pro Sekunde bei vielen Anwendungen mit leseintensiven Arbeitslasten wie Frageportalen, Gaming, gemeinsamer Mediennutzung und sozialen Netzwerken. Beispielsweise können die Ergebnisse von Datenbankabfragen oder rechenintensiven Berechnungen, API-Anforderungen/Antworten und Webartefakte wie HTML-, JavaScript- und Bilddateien im Cache zwischengespeichert werden. Auch rechenintensive Arbeitslasten mit Datensatzmanipulationen wie Empfehlungsengines und HPC-Simulationen profitieren sehr von einer In-Memory-Datenebene, die als Cache fungiert. Bei solchen Anwendungen muss meist in Echtzeit über mehrere Maschinencluster, die Hunderte von Knoten umfassen können, auf sehr große Datenmengen zugegriffen werden. Aufgrund der geringen Geschwindigkeit der zugrunde liegenden Hardware wäre die Verarbeitung solcher Datenmengen bei einem datenträgerbasierten Speicher ein erheblicher Engpass für diese Anwendungen.
In einer verteilten Computing-Umgebung ermöglicht eine dedizierte Caching-Ebene die vom Cache unabhängige Ausführung der Systeme und Anwendungen mit ihren jeweils eigenen Lebenszyklen, ohne dass der Cache dadurch beeinträchtigt würde. Der Cache dient als zentrale Ebene, auf den diverse Systeme mit ihren eigenen Lebenszyklen und architektonischen Topologien zugreifen können. Besonders relevant ist dies in einem System, in dem Anwendungsknoten dynamisch skaliert werden müssen. Befindet sich der Cache hier auf demselben Knoten wie die Anwendung oder die Systeme, die die Anwendung nutzen, kann die Integrität des Cache durch eine Skalierung beeinträchtigt werden. Bei einem lokalen Cache profitiert zudem nur die lokale Anwendung von diesem Cache, die die Daten im Cache konsumiert. In einer verteilten Caching-Umgebung können die Daten mehrere Cache-Server abdecken und an einem zentralen Speicherort gespeichert werden, an dem sie allen Konsumenten dieser Daten von Nutzen sind.
| Layer | Clientseitig | DNS | Web | Anwendung | Datenbank |
| Anwendungsfall | Beschleunigung des Abrufs von Webinhalten von Websites (Browser oder Gerät) | Domain-zu-IP-Auflösung | Beschleunigen Sie den Abruf von Webinhalten von Web- bzw. Anwendungsservern. Verwaltung von Websitzungen (serverseitig) | Beschleunigung der Anwendungsleistung und des Datenzugriffs | Reduzierung der Latenz bei Datenbankabfragen |
| Technologien | HTTP-Cache-Header, Browser | DNS-Server | HTTP-Cache-Header, CDNs, Reverse-Proxys, Web-Accelerators, Key-Value-Speicher | Datenspeicher mit Key-Value-Struktur, lokale Caches | Datenbankpuffer, Datenspeicher mit Key-Value-Struktur |
| Lösungen | Browser-spezifisch | Amazon Route 53 | Amazon CloudFront, ElastiCache for Redis, ElastiCache for Memcached, Partnerlösungen | Anwendungsframeworks, ElastiCache for Redis, ElastiCache for Memcached, Partnerlösungen | ElastiCache for Redis, ElastiCache for Memcached |
Bei der Implementierung einer Cache-Ebene sollten Sie genau wissen, wie lange die Daten im Cache gespeichert werden. Ein erfolgreicher Cache führt zu einer hohen Trefferquote, das heißt, die angeforderten Daten sind bei der Abfrage vorhanden. Einen Cache-Fehlversuch erhalten Sie hingegen, wenn die angeforderten Daten nicht im Cache vorliegen. Durch Parameter wie Time to Live (TTL) kann der Datenablauf gesteuert werden. Eine hohe Verfügbarkeit der Cache-Umgebung, die zum Beispiel durch In-Memory-Engines wie Redis erreicht werden kann, mag eine weitere wichtige Überlegung sein. Im Gegensatz zum Daten-Caching von einem primären Standort kann eine In-Memory-Ebene in einigen Fällen auch als eigenständige Datenspeicherebene ausgeführt werden. In einem solchen Szenario ist es wichtig, für die in der In-Memory-Engine gespeicherten Daten angemessene Zielwerte für RTO (Recovery Time Objective – Wiederherstellungszeit nach einem Ausfall) und RPO (Recovery Point Objective – der letzte Punkt bzw. die letzte Transaktion, der/die bei einem Recovery wiederhergestellt wird) festzulegen, um festzustellen, ob eine eigenständige Datenspeicherebene empfehlenswert ist. Durch die diversen Designstrategien und -merkmale der verschiedenen In-Memory-Engines gibt es für nahezu jede RTO- und RPO-Anforderung eine geeignete Lösung.
Amazon ElastiCache ist ein Webservice, mit dem ein In-Memory-Datenspeicher oder -Cache auf einfache Weise in der Cloud bereitgestellt, betrieben und skaliert werden kann. Der Service verbessert die Leistung von Webanwendungen, da Sie die Möglichkeit haben, Informationen aus schnellen, verwalteten In-Memory-Datenspeichern abzurufen, anstatt sich vollständig auf langsamere datenträgerbasierte Datenbanken verlassen zu müssen.
Erfahren Sie in diesem technischen Whitepaper zu In-Memory-Caching, wie eine effektive Caching-Strategie implementiert werden kann.
Da der Arbeitsspeicher um ein Vielfaches schneller als Festplattenspeicher ist, und zwar unabhängig davon, ob es sich um magnetischen Speicher oder SSDs handelt, können Daten aus In-Memory-Caches extrem schnell (im Sub-Millisekunden-Bereich) gelesen werden. Durch diesen deutlich schnelleren Datenzugriff erhöht sich die Gesamtleistung einer Anwendung enorm.
Eine einzige Cache-Instance ermöglicht Hunderttausende von E/A-Vorgängen pro Sekunde und ersetzt so potenziell mehrere Datenbank-Instances, wodurch sich die Gesamtkosten erheblich senken. Bedeutsam ist dies insbesondere dann, wenn sich die Gebühren für die primäre Datenbank aus dem Durchsatz errechnen. In einem solchen Fall können sich die Einsparungen u. U. in einem mehrfach zweistelligen Prozentbereich bewegen.
Durch Umleitung eines erheblichen Teils der Leselast von der Backend-Datenbank auf die In-Memory-Ebene kann Caching die Last Ihrer Datenbank senken. Dadurch vermeiden Sie selbst bei Unterbelastung eine langsamere Leistung und in Spitzenzeiten u. U. sogar einen Datenbankausfall.
In Zeiten der Spitzenauslastung geraten viele der heutigen Anwendungen erheblich unter Druck. Sehen Sie sich zum Beispiel soziale Anwendungen während des Super Bowl oder an Wahltagen oder auch E-Commerce-Websites am "Schwarzen Freitag" an. Eine erhöhte Datenbanklast führt beim Datenabruf zu höheren Latenzen, sodass die Anwendungsleistung insgesamt unvorhersehbar wird. Dieses Problem lässt sich durch einen In-Memory-Cache mit hohem Durchsatz entschärfen.
In vielen Anwendungen ist eine kleine Datenteilmenge gegenüber dem Rest der Datenbank wesentlich populärer und wird häufiger abgerufen. Diese sogenannten Hotspots einer Datenbank erfordern eine Überdimensionierung der Datenbankressourcen, die sich an den Durchsatzanforderungen der meistfrequentierten Daten bemisst. Eine solche Überdimensionierung haben Sie nicht mehr nötig, wenn Sie die populärsten Schlüsselwörter in einem In-Memory-Cache ablegen, und gleichzeitig sorgen Sie so dafür, dass auch die hochfrequentierten Daten jederzeit zuverlässig und schnell abrufbar sind.
In-Memory-Systeme bieten nicht nur niedrigere Latenzen, sondern gegenüber vergleichbaren datenträgerbasierten Datenbanken auch wesentlich höhere Anforderungsraten (E/As pro Sekunde). Eine einzige Instance, die als verteilter Neben-Cache genutzt wird, kann Hunderttausende von Anforderungen pro Sekunde bedienen.
Mit einem vollständig verwalteten Service wie Amazon ElastiCache sind die ersten Schritte des Caching in der Cloud ganz einfach. Die Komplexitäten der Einrichtung und Verwaltung Ihres Cache wird Ihnen dadurch abgenommen – und Sie können sich ganz auf das konzentrieren, was Ihrem Unternehmen tatsächlich Wert bringt. Registrieren Sie sich noch heute für Amazon ElastiCache.

