Ein Überblick über die Neuerungen

MongoDB 2.6: Humongous Release?

Tobias Trelle
©shutterstock.com/Tischenko Irina

Anfang April 2014 war es endlich soweit – das lange angekündigte Release 2.6 der dokumentenorientierten NoSQL-Datenbank MongoDB wurde veröffentlicht. Die wesentlichen Neuerungen, die mit dieser Version auf Sie zukommen, möchte ich Ihnen im Folgenden vorstellen.

Konzentrieren wir uns auf die API-Änderungen, die Codebasis und die neuen Enterprise-Features, die dieses Release zu bieten hat. Los geht es mit den…

API-Änderungen

Die wohl wichtigste Änderung in MongoDB 2.6 aus Entwicklersicht gibt es beim Aggregation-Framework , das mit Version 2.2 eingeführt wurde. Waren die Ergebnisse von Aggregationen bislang auf den Umfang eines Dokuments und damit auf 16 MB beschränkt, wird jetzt ein Cursor zurückgegeben, mit dem der Client über größere Ergebnismengen iterieren kann. Wahlweise besteht auch die Möglichkeit, über den neuen Pipeline-Operator $out die Ergebnisse in einer Collection abzulegen. Darüber hinaus gibt es ein Explain für die Aggregation und einige neue Expression-Operatoren.

Die in Version 2.4 experimentell eingebaute Volltextsuche (ähnlich Apache Lucene) kann nun wie eine ganz normale Query über den neuen $text-Operator ausgeführt werden und liefert auch einen Cursor anstatt eines einzigen Ergebnis-Dokuments zurück.

Wer mit Geodaten arbeitet, wird sich dafür interessieren, dass mit der neuen Version nun nahezu alle Datentypen des GeoJSON-Standards als Werte in Dokumenten-Feldern gespeichert und bei der integrierten Geo-Suche als Suchkriterien genutzt werden können. Schließlich gibt es beim Update neue und leicht geänderte Operatoren.

Unter der Haube

Intern sind massiv Refactorings an der Codebasis durchgeführt worden. Dies betrifft insbesondere die Bereich der Index-Verwaltung und des Lockings.

Ab sofort können Queries von mehr als einem Index profitieren, was bislang nicht möglich war (bis auf den $or-Operator). Mit den sogenannten Index Intersections wurde die Möglichkeit geschaffen, dass Queries mehr als einen Index zur Beschleunigung heranziehen können. Dadurch müssen Sie nicht mehr zwingend viele zusammengesetzte Indexe für verschiedene Abfragekombinationen vorhalten und können stattdessen Indexe auf einzelnen Feldern vom Query Analyzer kombinieren lassen.

Die Granularität des Locking bei Datenbank-Operationen liegt zurzeit auf Ebene einer logischen Datenbank (in früheren Versionen wurden noch die gesamten Server-Instanzen mit allen Datenbanken gelockt). Dies ändert sich auch mit Version 2.6 erst mal nicht. Allerdings wurden die Vorbereitungen getroffen, das Locking zukünftig auf einzelne Dokumente einzuschränken, was ein massiver Fortschritt in Sachen Nebenläufigkeit sein wird. Bleibt abzuwarten, in welcher Version wir in den Genuss dieser Performance-Optimierung kommen werden.

Ready for Enterprise

Mit der Version 2.6 bringt MongoDB eine ganze Menge an Dingen mit, die Sie bisher für einen professionellen Einsatz im Unternehmen vielleicht schmerzlich vermisst haben, weil diese Features bei den altgedienten, relationalen Datenbanksystemen allgemein gebräuchlich sind.

Lange Zeit war eine Autorisierung nur sehr grobgranular steuerbar. Ein Datenbank-User konnte Read-only- oder Vollzugriff haben, ganz unabhängig von speziellen Ressourcen oder Datenbankoperationen. Mit Version 2.6 erhalten Sie endlich die langersehnte Möglichkeit, eigene Rollen zu verwalten, die auf Ebene einer Collection Berechtigungen für einzelnen Aktionen wie Insert, Update, Remove oder aber auch einen Count und Aggregationen definieren.

In der kostenpflichtigen Enterprise-Variante können Sie nun neben Kerberos auch LDAP zur Verwaltung der Authentifizierung einsetzen. Ebenso profitieren Sie von erweitertem SMNP-Support und einem Auditing.

Fazit

Die Änderungen in den APIs des Aggregation-Frameworks und der Volltextsuche (die allerdings nicht an dedizierte Suchserver wie etwa Elasticsearch heranreicht, dafür aber nahtlos integriert ist) bringen im Prinzip keine neuen Features, dienen aber doch der Vereinheitlichungen der Query Engine. Die Optimierung bei der Index-Verwaltung und zukünftig auch beim Locking wird hoffentlich spürbar die Performance steigern. Sehr interessant finde ich die Neuerungen im Enterprise-Bereich. Insbesondere die Möglichkeit, den Zugriff auf einzelnen Collections feingranular beschränken zu können, ist ein lang vermisstes Feature. Insgesamt dient dieses Release vor allem der Konsolidierung und erhöht außerdem deutlich die Reife des Systems.

Eine vollständige Liste aller Neuerungen und Änderungen können Sie den Release Notes zu Version 2.6 entnehmen.

Und was kommt danach? Im Laufe des Jahres soll vor allem die Provisionierung von Replica Sets und Sharding-Clustern im MMS deutlich vereinfacht werden.

Aufmacherbild: Fresh lime leaves on branch isolated over white background von Shutterstock / Urheberrecht: Tischenko Irina

Geschrieben von
Tobias Trelle
Tobias Trelle
Dipl.-Math. Tobias Trelle ist Senior IT Consultant bei der codecentric AG, Solingen. Er ist seit knapp zwanzig Jahren im IT-Business unterwegs und interessiert sich für Softwarearchitekturen und skalierbare Lösungen. Tobias hält Vorträge zum Thema NoSQL und MongoDB auf Konferenzen und Usergruppen und ist Autor des Buchs „MongoDB – Ein praktischer Einstieg“ im dpunkt.verlag.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: