MongoMVCC stattet MongoDB mit Datenversionierung und ACID-Eigenschaften aus

NoSQL süß-sauer

Michel Krämer


NoSQL ist in aller Munde. Immer mehr Applikationen setzen auf neuartige Datenbanken wie MongoDB, CouchDB, Neo4j oder Konsorten. Die Gründe dafür können vielfältig sein. Dokumentenorientierte oder graphenbasierte Lösungen passen zum Beispiel oft besser zum Datenmodell der Anwendung als ein relationales Schema. Außerdem bieten NoSQL-Lösungen gegenüber relationalen Platzhirschen häufig enorme Performancevorteile, insbesondere dann, wenn mit einer großen Menge von Daten hantiert werden muss. Die Performance wird in der Regel jedoch durch Auslassen verschiedener Eigenschaften erreicht, die man von relationalen Datenbanken gewohnt ist. Prominentestes Beispiel hierfür ist die Unterstützung von Transaktionen: Viele Anwendungen könnten von den Vorteilen einer NoSQL-Datenbank wie MongoDB profitieren. Sie benötigen aber zwingend die Möglichkeit, atomare und isolierte Operationen durchzuführen, um die Konsistenz der Daten bei gleichzeitigem Zugriff mehrerer Clients nicht zu gefährden.

Im Folgenden wird die Open-Source-Bibliothek MongoMVCC vorgestellt, mit der sich auf einfache Weise Transaktionen für MongoDB realisieren lassen. Darüber hinaus bietet die Library die Möglichkeit, Daten zu versionieren, damit man später auf alle vorigen Zustände der Datenbank zugreifen kann. Die Versionierung ist bei MongoMVCC ein Nebenprodukt der speziellen Implementierung des MVCC-Modells (Multi Version Concurrency Control). Bisherige Arbeiten haben versucht, das Zwei-Phasen-Commit-Protokoll (2PC) mit MongoDB umzusetzen, um damit konkurrierende Zugriffe zu regeln [1]. Der Vorteil von MVCC gegenüber anderen Methoden ist jedoch der vollständige Verzicht auf Sperren (Locks). Dadurch muss man beim Arbeiten mit Transaktionen keine Performanceeinbußen in Kauf nehmen. Außerdem ist die Handhabung der Bibliothek deutlich leichter als manuell das 2PC-Protokoll zu simulieren.

Der Artikel zeigt zunächst anhand einfacher Beispiele, wie die Bibliothek eingesetzt werden kann und welche Vorteile sie gegenüber dem normalen MongoDB-Java-Treiber hat. Danach wird ein kurzer Einblick in die Interna von MongoMVCC gegeben. Kenntnisse zur Benutzung von MongoDB bzw. des entsprechenden Java-Treibers werden nicht zwingend vorausgesetzt.

Mehr zum ThemaMehr zum Thema NoSQL lesen Sie im Java-Magazin 4.2012 im Artikel „NoSQL: Konzepte und Prinzipien“ von Kai Spichale und Eberhard Wolff. Eine Einführung in MongoDB gibt Ihnen Andreas Hartmann in seinem Artikel „Für mehr Halt und Volumen“ im Java-Magazin 7.2012.

Erste S...

MongoMVCC stattet MongoDB mit Datenversionierung und ACID-Eigenschaften aus

NoSQL süß-sauer

Michel Krämer


NoSQL ist in aller Munde. Immer mehr Applikationen setzen auf neuartige Datenbanken wie MongoDB, CouchDB, Neo4j oder Konsorten. Die Gründe dafür können vielfältig sein. Dokumentenorientierte oder graphenbasierte Lösungen passen zum Beispiel oft besser zum Datenmodell der Anwendung als ein relationales Schema. Außerdem bieten NoSQL-Lösungen gegenüber relationalen Platzhirschen häufig enorme Performancevorteile, insbesondere dann, wenn mit einer großen Menge von Daten hantiert werden muss. Die Performance wird in der Regel jedoch durch Auslassen verschiedener Eigenschaften erreicht, die man von relationalen Datenbanken gewohnt ist. Prominentestes Beispiel hierfür ist die Unterstützung von Transaktionen: Viele Anwendungen könnten von den Vorteilen einer NoSQL-Datenbank wie MongoDB profitieren. Sie benötigen aber zwingend die Möglichkeit, atomare und isolierte Operationen durchzuführen, um die Konsistenz der Daten bei gleichzeitigem Zugriff mehrerer Clients nicht zu gefährden.

Im Folgenden wird die Open-Source-Bibliothek MongoMVCC vorgestellt, mit der sich auf einfache Weise Transaktionen für MongoDB realisieren lassen. Darüber hinaus bietet die Library die Möglichkeit, Daten zu versionieren, damit man später auf alle vorigen Zustände der Datenbank zugreifen kann. Die Versionierung ist bei MongoMVCC ein Nebenprodukt der speziellen Implementierung des MVCC-Modells (Multi Version Concurrency Control). Bisherige Arbeiten haben versucht, das Zwei-Phasen-Commit-Protokoll (2PC) mit MongoDB umzusetzen, um damit konkurrierende Zugriffe zu regeln [1]. Der Vorteil von MVCC gegenüber anderen Methoden ist jedoch der vollständige Verzicht auf Sperren (Locks). Dadurch muss man beim Arbeiten mit Transaktionen keine Performanceeinbußen in Kauf nehmen. Außerdem ist die Handhabung der Bibliothek deutlich leichter als manuell das 2PC-Protokoll zu simulieren.

Der Artikel zeigt zunächst anhand einfacher Beispiele, wie die Bibliothek eingesetzt werden kann und welche Vorteile sie gegenüber dem normalen MongoDB-Java-Treiber hat. Danach wird ein kurzer Einblick in die Interna von MongoMVCC gegeben. Kenntnisse zur Benutzung von MongoDB bzw. des entsprechenden Java-Treibers werden nicht zwingend vorausgesetzt.

Mehr zum ThemaMehr zum Thema NoSQL lesen Sie im Java-Magazin 4.2012 im Artikel „NoSQL: Konzepte und Prinzipien“ von Kai Spichale und Eberhard Wolff. Eine Einführung in MongoDB gibt Ihnen Andreas Hartmann in seinem Artikel „Für mehr Halt und Volumen“ im Java-Magazin 7.2012.

Erste S...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang