© saicle/Shutterstock.com
Einführung in die Nutzung von Geodaten in der NoSQL-Datenbank MongoDB

MongoDB trifft Geo Data


Die NoSQL-Datenbank MongoDB gehört sicherlich zu den heißesten Themen für Entwickler. In diesem Artikel erhalten Sie einen kurzen Überblick über den Einsatz von MongoDB unter PHP. Insbesondere zeigt der Praxisteil einige Fingerübungen für die Nutzung von Geodaten mithilfe von MongoDB.

Heute setzt man für PHP-Anwendungen im Wesentlichen auf den LAMP Stack, damit ist dann eigentlich MySQL fast immer mit von der Partie. Im Bereich der Entwicklung hat sich die Nutzung des objektorientierten Aufbaus von PHP-Anwendungen bereits durchgesetzt. Kaum eine Anwendung nutzt aber daneben kein JavaScript und meistens spielt auch Ajax eine große Rolle. Wobei das „x“ bei „Ajax“ kaum noch XML, sondern fast immer einen Austausch von Daten im JSON-Format bedeutet. Tatsächlich sprechen hier einige gar von Ajaj.

MongoDB – NoSQL im Vergleich

Genau hier setzt letztlich die NoSQL-Datenbank MongoDB an. Eine Grundeigenschaft ist, dass MongoDB alle Dokumente im JSON-Format speichert. Dabei werden die Daten ohne die Nutzung von Schemainformationen abgelegt. Müssen bei der Nutzung von MySQL zunächst Datenbanken und Tabellen angelegt und konfiguriert und als diesem Schema entsprechende Daten erzeugt werden, so ist der Entwickler bei ­NoSQL-Datenbanken davon befreit. Beliebige PHP/JSON-Objekte (inklusive eventuell vorhandener Unterobjekte oder Arrays) können einfach in einer so genannten Collection abgelegt werden. Dabei ist grundsätzlich die Ablage völlig unterschiedlicher Objekte in einer solchen Sammlung möglich, wenn auch nicht wirklich sinnvoll. Dieser dokumentenorientierte Ansatz ist insbesondere im Zusammenspiel mit einer objektorientierten Skriptsprache wie PHP recht nützlich und vermeidet den Bruch zwischen Kodierung und Datenvorhaltung. Für die Nutzung von relationalen Systemen wird ja heute oft ein entsprechender Mapper (ORM) genutzt, der jedoch zu größerem Aufwand insbesondere bei der initialen Implementierung führt. Bei vielen Entwicklungen arbeitet man auch direkt mit SQL und überführt nur teilweise Datenbanken in PHP-Objekte und Teile in JSON-Daten. Insbesondere sobald komplexe Objektbeziehungen dargestellt werden müssen, werden die Erwartungen an einen objektrelationalen Mapper oft enttäuscht. Im Gegensatz hierzu ist die Nutzung von MongoDB für die Speicherung von Objekten geradezu trivial; die MongoDB-Schnittstelle ermöglicht hier die direkte Speicherung von PHP-Objekten.

Als erfahrener Entwickler kennen Sie vielleicht die Probleme einer SQL-Datenbank, wenn Schemaänderungen im laufenden Betrieb auf großen Datenmengen durchgeführt werden müssen. Oft müssen hierzu die Systeme zur Sicherstellung der Konsistenz heruntergefahren werden, bevor Daten und Schema konvertiert werden können. Eventuell kommt dazu dann noch das „Wiederanfahren“ einer Replikation. MongoDB arbeitet hingegen ohne ein Datenbankschema. Somit können Sie auf eine Datenkonvertierung verzichten und sämtliche Versionsunterschiede im Code ausgleichen oder Strategien verwenden, wie die Konvertierung beim ersten Schreibzugriff. Intern speichert MongoDB alle Daten in Form von BSON, einem Format, das JSON binär und damit effizienter abbildet. Die Nähe zu JavaScript und JSON ist allerdings groß. MongoDB integriert Spider Monkey (also die JavaScript Engine von Mozilla/Firefox) und nutzt sie an vielen Stellen.

Hinter MongoDB steht die Firma 10gen. Schon 2007 begann man hier nach einer Venture-Capital-Runde von etwa 24 Millionen Euro mit der Entwicklung einer Cloud-Plattform. Nach zwei Jahren Entwicklungsarbeit hat man sich dann dazu entschlossen, die Datenbankkomponente als MongoDB unter einer Open-Source-Lizenz zu veröffentlichen und sich ganz der Weiterentwicklung zu widmen.

Der Name Mongo leitet sich übrigens vom englischen Wort „humongous“ (enorm) ab. Und neben den zuvor genannten Eigenschaften, die MongoDB sehr nahe an Sprachen wie JavaScript und auch PHP bringt, liegt der eigentliche Fokus in einem anderen Bereich: Es geht um Big Data, also um Anwendungen, die sehr große Datenmengen verwalten müssen. Ein zweiter Anwendungsfall ist die Bereitstellung von Diensten für eine sehr große Anzahl von Benutzern. Beide Problemstellungen lassen sich nur mit einem System lösen, das in der Lage ist, ohne größeren Aufwand die Daten auf mehrere Systeme verteilen zu können. Dabei ermöglicht MongoDB diverse Replikationsszenarien, die die Datenvorhaltung im Sinne einer redundanten Sicherung duplizieren können. Hierzu kommt das Sharding-Verfahren, ...

Neugierig geworden? Wir haben diese Angebote für dich:

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