Frage

Ich habe gelesen, dass ein paar Datenbanken in Memory verwendet werden können, sich aber nicht vorstellen können, warum jemand diese Funktion verwenden möchte. Ich verwende immer eine Datenbank, um Daten und Speicher -Caches für einen schnellen Zugriff zu bestehen.

War es hilfreich?

Lösung

Cache ist auch eine Art Datenbank, wie ein Dateisystem. 'Speichercache' ist nur eine spezifische Anwendung einer In-Memory-Datenbank, und einige In-Memory-Datenbanken sind als Speicher-Caches spezialisiert.

Andere Verwendungen von In-Memory-Datenbanken wurden bereits in andere Antworten aufgenommen, aber lassen Sie mich auch die Verwendungen aufzählen:

  1. Speichercache. Normalerweise wird ein Datenbanksystem verwendet, das auf diese Verwendung spezialisiert ist (und wahrscheinlich eher als "Speichercache" als als "eine Datenbank" bezeichnet wird).
  2. Testen von Datenbank-bezogenem Code. In diesem Fall wird häufig ein "In-Memory" -Modus eines generischen Datenbanksystems verwendet, aber auch eine dedizierte In-Memory-Datenbank kann verwendet werden, um eine andere "On-Diisk" -Datenbank für schnellere Tests zu ersetzen.
  3. Anspruchsvolle Datenmanipulation. In-Memory-SQL-Datenbanken werden häufig auf diese Weise verwendet. SQL ist ein großartiges Instrument für die Datenmanipulation, und manchmal müssen die Daten nicht auf der Festplatte geschrieben werden, während das Endergebnis berechnet wird.
  4. Speichern des vorübergehenden Laufzeitzustands. Es gibt Anwendungen, die ihren Zustand in einer Art Datenbank speichern müssen, müssen jedoch nicht bestehen bleiben, dass der Antrag neu startet. Denken Sie an eine Art Prozessmanager-sie muss die Ausführung von Unterprozessen im Auge behalten, aber diese Daten sind nur so lange gültig, wie die Anwendung und die Unterprozesse ausgeführt werden.

Andere Tipps

Ein üblicher Anwendungsfall besteht darin, Einheits-/Integrationstests auszuführen.

Sie kümmern sich nicht wirklich darum, Daten zwischen jedem Testlauf zu bestehen, und Sie möchten, dass Tests so schnell wie möglich laufen (um die Menschen dazu zu ermutigen, sie oft durchzuführen). Wenn Sie eine Datenbank im Prozess hosten, haben Sie sehr schnellen Zugriff auf die Daten.

Hat Ihr Speichercache SQL -Unterstützung?

Wie wäre es, wenn Sie die In-Memory-Datenbank als einen wirklich cleveren Cache betrachten?

Dies hinterlässt Fragen, wie die In-Memory-Datenbank besiedelt wird und wie aktualisiert und die Konsistenz in mehreren Fällen erhalten bleibt.

Die Suche nach etwas unter 100000 Elementen ist langsam, wenn Sie keine Tricks wie Indizes verwenden. Diese Tricks sind bereits in einer Datenbank-Engine implementiert (sei es anhaltend oder in Memory).

Eine In-Memory-Datenbank bietet möglicherweise eine effizientere Suchfunktion als das, was Sie möglicherweise schnell über selbstschriebene Strukturen implementieren können.

In-Memory-Datenbanken sind ungefähr mindestens eine Größenordnung schneller als herkömmliche RDBMs für allgemeine Abfragen (Lese-Seite). Die meisten werden mit der Diskette gesichert, die die gleiche Konsistenz wie ein normales RDBMs erstellen - nur den gesamten Datensatz muss in den RAM passen.

Die Kernidee ist, dass der Speicher mit Disk -Backed -Speicher enorme Zufallszugriffsstrafen hat, die nicht für DRAM gilt. Daten können in einem zufälligen Zugriff optimiert werden, was nicht durchführbar unter Verwendung herkömmlicher RDBMS -Daten zwischen den Daten zwischen RDBMS ist.

Anwendungen, für die Echtzeitantworten erforderlich sind, möchten eine In -Speicher -Datenbank, möglicherweise Anwendung zur Steuerung von Flugzeugen, Pflanzen, bei denen die Antwortzeit kritisch ist

Eine In -Memory -Datenbank ist auch in der Spielprogrammierung nützlich. Sie können Daten in einer In -Speicher -Datenbank speichern, die viel schneller ist als permanente Datenbanken.

Sie werden als erweiterte Datenstruktur verwendet, um Laufzeitdaten zu speichern, abzufragen und zu ändern.

Möglicherweise benötigen Sie eine Datenbank, wenn verschiedene Anwendungen auf den Datensatz zugreifen. Eine Datenbank verfügt über eine konsistente Schnittstelle zum Zugriff auf / ändern Sie Daten, die Ihre Hash -Tabelle (oder was auch immer Sie verwenden) nicht haben wird.

Wenn ein einzelnes Programm mit den Daten zu tun hat, ist es vernünftig, nur eine Datenstruktur in jeder Sprache zu verwenden, die Sie verwenden.

Die In-Memory-Datenbank ist besser als die Ausführung von Datenbankdaching. Datenbank-Caching funktioniert ähnlich wie bei den Memory-Datenbanken, wenn es um Lesevorgänge geht.

Andererseits sind In-Memory-Datenbanken beim Schreiben von Operationen im Vergleich zu Datenbank-Caches schneller, wo die Daten auf der Festplatte bestehen (was zu IO-Overheads führt).

Mit dem Datenbank-Caching können Sie auch mit Cache-Misses enden, aber Sie werden nie mit Cache-Misses enden, wenn Sie In-Memory-Datenbanken verwenden.

Angesichts ihrer Geschwindigkeit und des sinkenden Preises von RAM ist es wahrscheinlich, dass In-Memory-Datenbanken in Zukunft zur dominierenden Technologie werden. Es gibt bereits einige, die ausgefeilte Funktionen wie SQL -Abfragen, sekundäre Indizes und Motoren für die Verarbeitung von Datensätzen als RAM entwickelt haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top