Fragen und Antworten zur In-Memory-Datenbank

Mai 14

ODBMS.org Interview mit einem unserer Ingenieure, Jeff Parsons, über Raima Database Manager und In-Memory-Datenbanken.

 

Gehirn als Leiterplatte gezeichnet

Was sind die Vor- und Nachteile von In-Memory-Datenbanken?

In-Memory-DatenbankenBehandeln Sie per Definition die Daten, die sie im Hauptspeicher verarbeiten. Es besteht keine Notwendigkeit, sich mit Sekundärspeicher zu befassen, der um Größenordnungen langsamer sein kann als der Zugriff auf Daten, die im Hauptspeicher gespeichert sind. Das Eliminieren der Anforderung des Zugriffs auf den langsameren Sekundärspeicher ermöglicht die Verwendung von Algorithmen in einer speicherinternen Datenbank, die für eine festplattenbasierte Datenbank nicht möglich wären. Beispielsweise verwendet eine festplattenbasierte Datenbank üblicherweise einen B-Tree-basierten Index, um die Anzahl der zum Auffinden einer Zeile erforderlichen Festplattenzugriffe zu begrenzen. Eine In-Memory-Datenbank kann eine verwenden AVL-Baum anstelle einer B-Baum Dies reduziert (oder eliminiert) die Notwendigkeit, Daten zu duplizieren, erhöht jedoch die Anzahl der Zeilen, auf die während des Durchlaufs zugegriffen wird.

Ohne die Notwendigkeit eines Sekundärspeichers kann eine In-Memory-Datenbank in Systemen ohne Sekundärspeicher verwendet werden.
Dies ermöglicht die Verwendung eines Datenbankmoduls in vielen Fällen eingebettete Systeme das könnte eine herkömmliche festplattenbasierte Engine nicht unterstützen.
In der Regel ist der Speichertyp, der mit einem speicherinternen Datenbanksystem verwendet wird, nicht dauerhaft. Wenn eine Anwendung sauber oder unerwartet geschlossen wird, gehen die in einer speicherinternen Datenbank gespeicherten Daten verloren. Bestimmte Anwendungsdomänen erfordern keine Datenpersistenz zwischen den Läufen, andere jedoch möglicherweise. Anwendungen, die ein hohes Maß an Persistenz erfordern, sind möglicherweise nicht für die Verwendung einer In-Memory-Datenbank geeignet.

Eine speicherinterne Datenbank speichert alle Daten im Hauptspeicher, wodurch die Menge der Daten, die gespeichert werden können, stark eingeschränkt werden kann. Die meisten Datenbanksysteme können die Zuweisung von Speicher ad-hoc zum Speichern von Datenbankobjekten übernehmen oder einen Teil des Speichers erhalten, der als Speicher verwendet werden kann. In beiden Fällen ist das Datenvolumen, das in einer In-Memory-Datenbank gespeichert werden kann, tendenziell viel kleiner als das in einem festplattenbasierten System gespeicherte.

 

Was ist der Unterschied zwischen einer In-Memory-Datenbank und dem einfachen Speichern von Daten in gemeinsam genutzten Speichersegmenten?

The biggest difference between in-memory databases and storing data in shared memory segments deals with a structured approach to data access. In-memory databases maintain components of the “ACID” attributes of data storage engines. The ACID properties include Atomicity, Consistency, Isolation, and Durability. While in-memory databases may relax the durability property based on non-persistent storage, they commonly support the other properties:

• • Atomarität - Mehrere Änderungen werden als Alles-oder-Nichts-Operation in die Datenbank übernommen
• • Konsistenz - Strukturelle Regeln und Beziehungen werden für alle Benutzer beibehalten
• • Isolation - Transaktionsänderungen können von anderen Benutzern erst gesehen werden, wenn sie festgeschrieben wurden

Es kann zeitaufwändig und fehleranfällig sein, diese Funktionalität auf gemeinsam genutzten Speichersegmenten zu implementieren.
Neben den Transaktionseigenschaften von In-Memory-Datenbanken gibt es noch viele andere
Out-of-the-Box-Vorteile, einschließlich:
Verwendung allgemeiner genau definierter Datendefinitionssprachen (SQL DDL-Anweisungen) Verwendung allgemeiner genau definierter Datenabfragesprachen (SQL DML-Anweisungen) Fernzugriff auf Daten über ein Netzwerkkommunikationsprotokoll
Möglichkeit zum Speichern von Daten in einem plattformunabhängigen Format
Für den Import / Export über CSV, XML, JSON usw. verfügbare Tools. Möglichkeit, speicherinterne Daten auf der Festplatte zu speichern

 

Eine In-Memory-Datenbank kann zu Datenverlust führen, wenn etwas nicht mehr funktioniert: Wie gehen Sie damit um?

Ein Anwendungsentwickler muss verstehen, dass Datenverlust bei der Arbeit mit einer In-Memory-Datenbank möglich ist. Es gibt verschiedene Ansätze wie Persistenz und Replikation, mit denen Datenverlustszenarien gemindert werden können. Datenverlust ist jedoch weiterhin möglich.

Beharrlichkeit
Raima unterstützt zwei Modi zum Öffnen einer Datenbank im Arbeitsspeicher.
• • Flüchtig - Die Datenbank ist beim ersten Öffnen leer und alle Inhalte werden beim Schließen der Datenbank verworfen
• • Hartnäckig - Beim Öffnen wird die Datenbank aus Inhalten im Sekundärspeicher gefüllt, beim Schließen werden geänderte Daten (Einfügungen, Aktualisierungen, Löschungen) in den Sekundärspeicher geschrieben

Wenn eine Datenbank im permanenten In-Memory-Modus geöffnet wird, werden geänderte Inhalte beim Schließen der Datenbank automatisch in den Sekundärspeicher geschrieben. Darüber hinaus kann der Entwickler die Änderung des Sekundärspeichers bei Bedarf beibehalten. Verwenden von
Die Persistenz kann den Datenverlust auf das beschränken, was seit dem letzten Persistenzvorgang passiert ist.

Reproduzieren
Viele Datenbanksysteme unterstützen das Replizieren von Änderungen auf eine andere Datenbankinstanz (oder ein anderes Datenbanksystem). Durch die Verwendung der Replikation können Daten, die möglicherweise von der In-Memory-Kopie verloren gegangen sind, von der replizierten Kopie wiederhergestellt werden.

 

Sind alle eingebetteten Datenbanken auch In-Memory-Datenbanken?

Ein eingebettete Datenbank kann als Datenbankmodul definiert werden, das in einer Anwendung ausgeführt wird und für das keine anderen Prozesse installiert, konfiguriert oder auf die zugegriffen werden muss. Das Speichermedium für die von der Engine verwalteten Daten ist implementierungsabhängig.
Ursprünglich verwendeten die meisten Datenbankmodule eine Festplatte zur Datenspeicherung, da die verfügbare Speichermenge kein ausreichendes Datenvolumen für nützliche Datensätze zulässt. Mit zunehmender Speichergröße fügten viele Anbieter In-Memory-Funktionen hinzu. Heutzutage unterstützen viele eingebettete oder herkömmliche Datenbank-Engines In-Memory.

 

Wie implementiert Raima ein In-Memory-Datenbanksystem in RDM?

Das Raima RDM-Datenbankmodul ist in zwei Komponenten unterteilt: das Laufzeitmodul und das Speichermodul.
Die Laufzeit ist für die Transaktionsverwaltung, die Durchsetzung von Regeln, die Abfrageverarbeitung und die Verwaltung lokaler, nicht festgeschriebener Änderungen an der Datenbank verantwortlich. Immer wenn die Laufzeit-Engine ein Datenbankobjekt benötigt, fordert sie das Objekt von der Speicher-Engine an. Wenn lokale Änderungen in der Laufzeit festgeschrieben werden, werden sie außerdem an die Speicher-Engine übergeben, um an einem Speicherort gespeichert zu werden, der von allen Benutzern der Datenbank gemeinsam genutzt wird. Die Laufzeit-Engine weiß oder kümmert sich nicht darum, ob die Speicher-Engine den Hauptspeicher oder den Sekundärspeicher verwendet.

Die Speicher-Engine kann als betrachtet werden Schlüssel / Wert-Paar-Repository. Die Schlüssel sind Datenbankobjektkennungen und die Werte sind der Speicherort der Datenbankobjekte. Bei festplattenbasierten Datenbanken sind die Werte eine Dateikennung, ein Dateiversatz und eine Größe. Bei einer speicherinternen Datenbank sind die Werte der Speicherort des Datenbankobjekts.
Die Objekte selbst können codiert, komprimiert und verschlüsselt sein, aber die Laufzeit-Engine weiß, wie der Inhalt zu interpretieren ist.

Durch Beibehalten dieser Abstraktion muss ein Anwendungsentwickler nichts anderes tun, als einen vorgeöffneten Konfigurationsparameter anzugeben, um eine speicherinterne RDM-Datenbank zu verwenden. Die Anwendung, die Laufzeit und die Speicher-Engine können alle auf demselben Speicherplatz ausgeführt werden und bieten einen Zugriff mit sehr geringer Latenz. Wenn ein Entwickler weiß, dass eine Datenbank hauptsächlich im Arbeitsspeicher verwendet wird, kann er Methoden wie z AVL-Indizierung zur Optimierung des In-Memory-Zugriffs.

Get notified about new RDM updates

Be the first to know about new Raima Database Manager updates when they go live, use cases, industry trends and more.