Seitenanfang

NoSQL: Einfach formlos

NoSQL ist eine ebenso irreführende Bezeichnung für ein Datenbankkonzept, wie SQL. Mit ein wenig Hilfe von Postgres kann MongoDB sogar mit SQL-Befehlen angesprochen werden. Tatsächlich bezieht sich das NoSQL-Konzept eher auf die Art der Datenhaltung: Die von RDBMS bekannten Datensätze existieren nach wie vor, folgen aber keiner festen Form mehr. Statt dessen beinhaltet jeder Datensatz ein komplettes Dokument.

von_mysql_zu_mongodb.jpgEin typisches NoSQL-Dokument sieht aus wie ein JSON-Dokument, meist mit einem Key-Value-Hash als oberste Ebene. Tatsächlich benutzen die meisten MongoDB-Clients ebenfalls JSON für die Darstellung der Daten.

NoSQL-Datenbanken verzichten dabei (üblicherweise) vollständig auf vordefinierte Strukturen, aber auch auf Relationen zwischen unterschiedlichen Datensätzen.

Selbst der Serverstatus wird als Dokument zurückgegeben:

mongodb_beispielobjekt.jpgDas Hash der obersten Ebene enthält die Schlüssel _idhostname, startTimestartTimeLocalcmdLinepid und buildinfo. Die Werte der Schlüssel cmdLine und buildinfo bestehen wieder jeweils aus einem weiteren Hash mit eigenen Schlüsseln und deren Werten. buildinfo hat im Schlüssel versionArray ein Array mit den Einzelteilen der Versionsnummer.

Jedes MongoDB Datenobject hat verpflichtend einen Schlüssel "_id". Wird dieser beim Erstellen des Dokuments in der Datenbank nicht explizit übergeben, dann generiert der Server einen eindeutigen, (derzeit) 12 Byte großen Wert, der bei einer Abfrage als 24 Hexadezimalzeichen zurückgegeben wird. Der _id - Schlüssel ist immer automatisch indiziert und damit besonders schnell abfragbar.

Alle weiteren Schlüssel und die gesamte Struktur sind freigestellt und können von Dokument zu Dokument unterschiedlich sein. Beim Abruf werden Dokumente dann über ihre _id, über einzelne Schlüssel oder komplexe Kombinationen gesucht.

Das vorgenannten Fahrzeug-Beispiel der relationalen Datenbanken würde in einer NoSQL-Datenbank jedes Fahrzeug in einem Dokument erfassen. Neben Hersteller und Modell könnten zu jedem Fahrzeug individuelle weitere Daten gespeichert werden, sofern diese bekannt oder relevant sind, beispielsweise die Achsenzahl eines LKW oder detallierte Angaben zum Spoiler eines Sportwagens. Im Gegensatz zu fest struturierten SQL-Datenbanken werden die zusätzlichen Infomationen nicht bei jedem Fahrzeug gespeichert (und sei es als "nicht vorhanden" bzw. "nicht zutreffend"), sondern nur bei den Datensätzen, bei denen sie überhaupt sinnvoll sind.

In der Praxis wird eine Applikation zwar immernoch ihre festen Schlüssel und Strukturen definieren, kann aber trotzdem flexibel damit arbeiten - beispielsweise einer allgemeinen Fahrzeugübersicht und Einzelfunktionen für PKW und LKW mit den jeweils relevanten Daten.

 

Noch keine Kommentare. Schreib was dazu

Schreib was dazu

Die folgenden HTML-Tags sind erlaubt:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>