Datenbanken Online Lexikon TH Köln, Campus Gummersbach
Aktuelle Änderungen - Suchen:

Indizes

Ganz einfach erklärt entspricht ein Index in einer Datenbank einem Inhaltsverzeichnis in einem Buch. Das bedeutet, dass sie einen schnellen Zugriff auf ein Feld in der Datenbank bieten. Vorrausgesetzt die Indizierung wurde sorgfältig angelegt (s.a Schema Design).

Indizes in MongoDB werden als Binär-Baum in einer vordefinierten Sortierreihenfolge abgelegt. Der Index wird beim Erstellen, Updaten und Löschen eines Dokumentes auch aktualisiert. Zu viele Indizes machen schreib Operationen langsam und die Größe der Indizes steigt an, deswegen sollte ein Index nur auf Felder zeigen, auf die auch Query-Operationen angewendet werden. Beim Anlegen der Indizes ist die Sortierreihenfolge zu gunsten einer schnelleren Suche wichtig, da sie schon vorsortiert vorliegen und nicht erst bei der Liveabfrage sortiert werden müssen.

Es gibt drei Möglichkeiten der Sortierung:

  • Aufsteigend(1),
  • Absteigend (-1)
  • geospatial (2d)

Sorting Order bei Indizes

Die Index Deklarationen werden in einer eigenen Collection (system.indexes) gespeichert und danach durchsucht werden. Folgende Informationen werden in der Collection gespeichert:

  • Welche Indizes gibt es
  • Auf welche Felder sie zeigen
  • Welche Sortierreihenfolge verwendet wird und außerdem
  • die Namen der Indizes

Index - Typen (MongoDB)

Einfache Indizes

Einfache Indizes beziehen sich auf ein einzelnes Feld und werden mit ensureIndex erstellt. z.B db.cities.ensureIndex({city: 1})

Compound-Indexes

Compound-Indexes sind zusammengesetzte Indizes, die aus zwei oder mehreren Feldern bestehen. z.B db.cities.ensureIndex({city:1, zip:1})

Unique-Indexes

Unique-Indexes dienen der Überprüfung doppelter Datensätze, die dann durch ablehnen eines inserts verhindert werden. Eine Abfrage auf Fehlermeldung oder ObjectId gibt Aufschluss über den Erfolg oder Misserfolg des getätigten inserts.

Unique-Compound-Indexes

Dieser Index dient der Überprüfung doppelter Datensätze, anhand einer Kombination aus mehreren Feldern, z.B anhand von Vor- und Nachnamen in einer Kundendatei. Der große Vorteil liegt auch darin, dass ein nachträgliches Anlegen eines Indexes das Löschen der doppelten Datensätze ermöglicht.

Geobasierte Abfragen

Geospatial-Index

MongoDB bietet einen spezielen Index um einfache Abfragen von Geodaten zu ermöglichen. Der geospatial - Index ermöglicht unterschiedliche Suchfunktionen. Die einfachste ist die exakte Suche nach einem Punkt welche die Eingabe zwei Koordinaten erfordert. Die Umkreissuche wird durch Angabe der Koordinaten eines Punktes und dem Radius, der die Entfernung angibt, ermöglicht. Die Flächensuche wird durch zwei Punkte (ein Punkt enthält jeweils zwei Koordinaten) abgegrenzt (siehe Bild). Diese Suche bezieht sich auf flaches (zweidimensionales) Kartenmaterial. Seit der Version 1.8 kann die Entfernung, mit Berücksichtigung der Erdkrümmung berechnet werden. Dies wird mit Variable: spherical : true erreicht. Auch neu hinzugekommen ist die Möglichkeit mehrere Geodaten in einem Dokument abzulegenund (Multi-location Documents)und zu idizieren.
Bsp:

> db.fh.insert({ Standort : [{name : "GM", loc : [20, 42]}, {name : "CL", loc : [02.21, 11.71]}]})
> db.fh.ensureIndex({ "Standort.loc" : "2d" })

Quellen

  • Edlich et. Al.(2011), 2.Aufl.: „NoSQL – Einstieg in die Welt nichtrelationaler Web 2.0 Datenbanken „ Carl Hanser Verlag, München
  • Marc Boeker (2010), "MongoDB - Sag ja zu NoSQL", entwickler.press, Frankfurt
  • Peter Membrey und Tim Hawkins (2010), "The definitive Guide to MongoDB, Eelco Plugge", Springer Verlag
  • Internet: 10gen: MongoDB URL: http://www.mongodb.org (Stand: 20.08.2012)
  • Internet: 10gen: MongoDB URL:http://www.paolocorti.net/2009/12/06/using-mongodb-to-store-geographic-data (Stand: 20.08.2012)

zurück zu MongoDB