Viele Websites und Anwendungen speichern ihre Daten üblicherweise in einer Datenbank. Das Lesen und Schreiben von Daten aus einer Datenbank kann die Latenzzeit einer Anwendung erheblich beeinträchtigen. Es ist wichtig, die Latenzzeit so weit wie möglich zu verringern, denn die Nutzer erwarten schnelle und reaktionsschnelle Anwendungen, und schnellere Websites sind für die Suchmaschinenoptimierung (SEO) von Vorteil.

Das Schreiben in eine Datenbank erhöht die Latenzzeit, weil Datenbanken die Daten in der Regel auf eine Festplatte schreiben, anstatt sie im Speicher zu halten. Datenbanken wenden in der Regel Komprimierung und Verschlüsselung an, was die Latenzzeit beim Lesen und Schreiben von Daten erhöht. Um diese Herausforderungen zu überwinden, kannst du eine In-Memory-Datenbank verwenden, um Daten schnell im Arbeitsspeicher statt auf der Festplatte zu speichern und abzurufen.

In diesem Artikel erfährst du, wie In-Memory-Datenbanken funktionieren, welche Optionen es gibt und welche Nachteile sie gegenüber Standarddatenbanken haben.

Was sind In-Memory-Datenbanken?

In-Memory-Datenbanken verwenden Arbeitsspeicher (RAM) anstelle von Festplattenlaufwerken (HDD) oder Solid-State-Laufwerken (SSD) zur Datenspeicherung, wodurch die Latenzzeit beim Lesen und Schreiben von Daten drastisch reduziert wird. Die Verringerung der Latenzzeit ist auf zwei Hauptgründe zurückzuführen. Erstens ist der Zugriff auf Daten im Arbeitsspeicher schneller als auf einer Festplatte und zweitens sind die Datenstrukturen, die zum Speichern von Daten im Arbeitsspeicher verwendet werden, einfacher als bei der Speicherung auf einer Festplatte. Daher ist der CPU-Aufwand beim Lesen und Schreiben von Daten geringer.

Diese geringe Latenzzeit hat ihren Preis, denn die im Speicher abgelegten Daten gehen verloren, wenn ein Server ausfällt. Anders als bei einem Festplattenspeicher bleibt der Inhalt des Speichers bei einem Stromausfall nicht erhalten, so dass es einen Kompromiss zwischen Ausfallsicherheit und Geschwindigkeit gibt.

In-Memory-Datenbanken sind eine hervorragende Option für Anwendungen, die schnelle oder Echtzeitdaten benötigen, wie z. B. Bestenlisten oder Echtzeitanalysen. Sie eignen sich auch für die Zwischenspeicherung von Daten, die du normalerweise in einer festplattenbasierten Datenbank speicherst, um die Anzahl der Lese- und Schreibvorgänge auf der Festplatte zu reduzieren und die Latenzzeit zu verringern.

Die Verringerung der Latenzzeit ist besonders wichtig für Websites. Nutzer/innen, die eine Website als reaktionsschnell empfinden, nutzen sie mit größerer Wahrscheinlichkeit weiter. Außerdem nutzen Google und andere Suchmaschinen die Ladegeschwindigkeit von Websites als Faktor für die Suchmaschinenoptimierung. Schnelle Websites werden in den Suchergebnissen besser platziert, was die Wahrscheinlichkeit erhöht, dass Nutzer/innen deine Website besuchen.

Erklärungen zu In-Memory-Datenbanken

Da In-Memory-Datenbanken Daten im Arbeitsspeicher (RAM) speichern, haben sie eine viel geringere Latenz als eine Festplatte, die mechanische, bewegliche Teile verwendet, um auf den richtigen Speicherplatz zuzugreifen. Die Festplatte muss dann die Daten lesen und sie über die Schnittstelle zwischen dem Speichergerät und dem Computer übertragen. Außerdem ist der Arbeitsspeicher selbst bei SSDs immer noch bis zu 30 Mal schneller, weil die Speicherchips und die CPU-Schnittstelle leistungsfähiger sind. Einige Benchmarking-Tests haben gezeigt, dass die Verwendung von MySQL mit Redis – einer beliebten In-Memory-Datenbank – als Caching-Layer die Abfragelatenz um bis zu 25 % gegenüber einer eigenständigen MySQL-Datenbank verringern kann.

Ein Diagramm, das die Anzahl der Anfragen nur mit MySQL und sowohl mit MySQL als auch mit Redis darstellt.
Benchmarks mit nur MySQL und mit MySQL und Redis. (Bildquelle: DZone)

Es gibt noch einen zweiten Grund, warum In-Memory-Datenbanken schnell sind. Du kannst die Datenstrukturen, die von In-Memory-Datenbanken verwendet werden, für einen schnelleren Abruf optimieren. Relationale Datenbanken verwenden zum Beispiel oft B-Trees für Indizes, die eine schnelle Suche ermöglichen und gleichzeitig das Lesen und Schreiben großer Datenblöcke auf die Festplatte unterstützen. In-Memory-Datenbanken müssen keine Datenblöcke auf die Festplatte schreiben und können leistungsfähigere Datenstrukturen wählen, was die Latenzzeit weiter verringert. In-Memory-Datenbanken speichern und nutzen die Daten oft im Ist-Zustand, ohne dass sie in der Datenbankschicht umgewandelt oder geparst werden. Auch das trägt zur Verringerung der Latenz bei, da es sowohl die Lese- als auch die Schreibzeiten beschleunigt.

In-Memory-Datenbanken sind aufgrund technologischer Verbesserungen immer beliebter geworden. Erstens ist der Preis pro Gigabyte (GB) Arbeitsspeicher in den letzten 20 Jahren erheblich gesunken, wodurch die Verwendung von Speicher für die Datenspeicherung erschwinglicher geworden ist. Verbesserungen bei In-Memory-Datenbanklösungen und verwalteten Cloud-Diensten haben auch dazu beigetragen, einige ihrer Hauptnachteile zu verringern.

Außerdem können In-Memory-Datenbanken wie Redis jetzt Snapshots von Daten aus dem Speicher auf die Festplatte machen, sodass die Daten wiederhergestellt werden können, wenn ein Server ausfällt. Cloud-Dienste bieten Georeplikation, d.h. Anwendungen können online bleiben, indem sie im Falle eines Problems durch einen anderen Server ersetzt werden. Diese Kostenreduzierung und die verbesserte Zuverlässigkeit haben In-Memory-Datenbanken zu einer praktikablen Option für moderne Anwendungen und Websites gemacht.

Vor- und Nachteile von In-Memory-Datenbanken

Die wichtigsten Vorteile von In-Memory-Datenbanken sind:

  • Sie verbessern die Leistung.
  • Sie sind einfacher zu skalieren, weil sie Daten speichern.
  • Sie verbessern oft die Zuverlässigkeit einer Anwendung.

In-Memory-Datenbanken speichern Daten in der Regel unstrukturiert oder halbstrukturiert, anstatt sie in komplexen relationalen Modellen zu speichern. Unstrukturierte Daten machen die Skalierung der Datenbank einfacher, da der Aufwand für die Datenübertragung im Netzwerk entfällt, wenn Daten auf mehreren Knoten zusammengeführt werden.

Die Verbesserung der Zuverlässigkeit einer Anwendung mag aufgrund der Unbeständigkeit der im RAM gespeicherten Daten kontraintuitiv erscheinen. Wenn sie jedoch als Caching-Layer eingesetzt werden, entlasten In-Memory-Datenbanken die primäre Datenbank bei Anfragespitzen. Eine Caching-Schicht kann auch zur Kostensenkung beitragen, da es oft teurer ist, eine herkömmliche Datenbank zu skalieren als eine In-Memory-Datenbank, um häufige Anfragen zu beschleunigen und dann die zentrale Datenbank für die längerfristige Speicherung zu nutzen.

Die größten Nachteile von In-Memory-Datenbanken sind:

  • Höhere Kosten bei Verwendung als einzige Datenbank
  • Begrenzte Speichergröße
  • Weniger Sicherheitsfunktionen

In-Memory-Datenbanken nutzen in der Regel keine Sicherheitsfunktionen wie Verschlüsselung, da sich alles im Speicher befinden muss – auch die Verschlüsselungsschlüssel. Diese Funktionen machen die Verschlüsselung von Daten unwirksam, da jede böswillige Person mit Zugriff auf den Speicher theoretisch auch auf den Verschlüsselungsschlüssel zugreifen kann.

In-Memory-Datenbanken können die Kosten senken, wenn sie zusammen mit herkömmlichen Datenbanken eingesetzt werden. Allerdings sind sie oft teurer, wenn sie als alleinige Datenbank verwendet werden, vor allem wenn sie große Datenmengen speichern. Dies liegt an den höheren Kosten für Arbeitsspeicher im Vergleich zu Festplattenspeicher. Diese Kosten begrenzen auch die Datenmenge, die du speichern kannst, da die Speicherung großer Datenmengen im Speicher teuer wird und oft mehrere Server benötigt werden.

Warum sind nicht alle Datenbanken In-Memory?

Der größte Nachteil, der verhindert, dass In-Memory-Datenbanken allgegenwärtig sind, sind die Kosten. Obwohl die Preise für Arbeitsspeicher deutlich gesunken sind, sind sie pro GB immer noch viel höher als bei HDDs und SSDs. Diese Kosten machen In-Memory-Datenbanken zu teuer für umfangreichere Anwendungen mit riesigen Datenbeständen.

Wenn die Preise für Arbeitsspeicher weiter sinken, könnte es eine Zeit geben, in der In-Memory-Datenbanken der Standard sind und festplattenbasierte Datenbanken nur noch in Nischenanwendungen eingesetzt werden.

Anwendungsfälle für In-Memory-Datenbanken

Einer der häufigsten Anwendungsfälle für In-Memory-Datenbanken ist das Caching. Du kannst die In-Memory-Datenbank als Caching-Schicht in Verbindung mit einer herkömmlichen Datenbank verwenden. Die In-Memory-Datenbank speichert Daten, auf die häufig zugegriffen wird. Dadurch werden wiederholte und kostspielige Suchvorgänge in der festplattenbasierten Datenbank vermieden und eine schnellere Benutzererfahrung ermöglicht.

In-Memory-Datenbanken sind auch für E-Commerce-Websites, Foren und Blogs mit hohem Besucheraufkommen und Kommentarfunktionen bekannt geworden. Das liegt daran, dass es sich um hochdynamische Websites handelt. E-Commerce-Seiten wollen das Nutzererlebnis personalisieren und die Verfügbarkeit von Produkten in Echtzeit anzeigen. In Blogs und Foren können Hunderte oder Tausende von Nutzern gleichzeitig posten und kommentieren. Das bedeutet, dass eine Website einen hohen Schreibdurchsatz bewältigen und die neuesten Inhalte und Kommentare schnell an die Nutzer/innen weitergeben muss. In-Memory-Datenbanken reduzieren die Latenzzeit bei der Speicherung von nutzergenerierten Inhalten und bieten ein aktuelles und personalisiertes Erlebnis.

In-Memory-Datenbanken eignen sich auch hervorragend für Spiele-Ranglisten. Sie können Daten in Echtzeit aktualisieren und abrufen und Daten effizient sortieren, um eine aktuelle Ansicht der Rangliste während des Spiels zu liefern.

Du kannst sie auch für Echtzeit-Analysen verwenden. Sie ermöglichen es dir, Daten in die Datenbank zu streamen und Abfragen auf der aktuellsten Version der Daten für Echtzeit-Dashboards, Risikoanalysen und maschinelle Lernmodelle durchzuführen.

Beispiele für In-Memory-Datenbanken

Bei der Auswahl einer In-Memory-Datenbank gibt es viele Möglichkeiten. Einige der beliebtesten sind Redis, Memgraph und Hazelcast. Redis ist die am weitesten verbreitete Datenbank und als verwalteter Dienst auf den meisten Cloud-Plattformen verfügbar. Memgraph bietet Graphenberechnungen von Streaming-Daten, alles im Speicher, und Hazelcast bietet ähnliche Funktionen wie Redis, aber mit anderen Caching-Mustern.

Redis wird üblicherweise als Caching-Schicht zwischen Websites und Anwendungen eingesetzt, um die Leistung zu verbessern, indem kostspielige Datenbanklesungen vermieden werden. Diese Leistungssteigerung ist mit Hilfe des Redis-Add-ons von Kinsta auch für WordPress-Seiten möglich. Zusammen mit diesem Add-on bietet Kinsta auch das Kinsta APM-Tool an, das bei der Fehlersuche bei Leistungsproblemen mit Redis-Abfragen hilft.

Websites, die auf Kinsta laufen, verwenden standardmäßig Caching. Websites mit häufigen Datenbankabfragen profitieren aber dennoch stark von Redis. Die Latenzzeit der Datenbank ist einer der wichtigsten Faktoren, die eine Website verlangsamen, aber Redis hilft dabei, diese Belastung zu verringern und ermöglicht eine schnelle Skalierung der Website.

Zusammenfassung

Die Datenbanklatenz kann die Gesamtlatenz einer Website oder Anwendung erheblich beeinflussen. Das Lesen von und Schreiben auf Festplatten erhöht die Latenz. In-Memory-Datenbanken verringern die Datenbanklatenz, weil sie die Daten im RAM speichern. Selbst wenn du SSDs verwendest, ist RAM immer noch schneller, weil es schnellere Speicherchips und eine schnellere Schnittstelle zur CPU verwendet. Außerdem kannst du die von In-Memory-Datenbanken verwendeten Datenstrukturen optimieren, damit sie schneller abgerufen werden können.

In-Memory-Datenbanken können Websites und Anwendungen beschleunigen, wenn sie als Caching-Schicht zwischen der Website und einer herkömmlichen Datenbank eingesetzt werden. Das liegt daran, dass der Zugriff auf den Speicher schneller ist als auf die Festplatte. Dieser geringere Overhead führt zu schnelleren Ladezeiten der Website und kann zu einer besseren Suchmaschinenoptimierung beitragen.

Redis ist eine der beliebtesten In-Memory-Datenbanken und du kannst sie mit dem Kinsta-Add-on ganz einfach zu WordPress-Websites hinzufügen. Probiere das Redis-Add-on für deine von Kinsta gehostete Website aus.

Salman Ravoof

Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.