Benutzer-Werkzeuge

Webseiten-Werkzeuge


bigdata:mongodb

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
bigdata:mongodb [2015/10/05 20:09] – angelegt brueckbigdata:mongodb [2015/10/05 21:21] – [Abfragen] brueck
Zeile 16: Zeile 16:
 Jedes Dokument besitzt eine **ObjectId** („_id“), die als Primärschlüssel der eindeutigen Identifizierung dient und auch bei Abfragen als Index hilfreich sein kann. Sie ist innerhalb einer Collection einzigartig und wird automatisch generiert, kann aber auch manuell gesetzt werden. Jedes Dokument besitzt eine **ObjectId** („_id“), die als Primärschlüssel der eindeutigen Identifizierung dient und auch bei Abfragen als Index hilfreich sein kann. Sie ist innerhalb einer Collection einzigartig und wird automatisch generiert, kann aber auch manuell gesetzt werden.
  
-Die Größe eines Dokuments beschränkt sich auf 16MB. Das soll verhindern, dass ein File zu viel RAM- oder Netzwerk-Kapazitäten beansprucht. Dokumente, die größer sind, werden mit GridFS in kleinere Teile aufgespalten. ([[bigdata:literatur|MongoDB o. J.]])+Die Größe eines Dokuments beschränkt sich auf 16MB. Das soll verhindern, dass ein File zu viel RAM- oder Netzwerk-Kapazitäten beansprucht. Dokumente, die größer sind, werden mit GridFS in kleinere Teile aufgespalten. ([[bigdata:literatur#m|MongoDB o. J.]])
  
 Beispiel für ein Dokument: Beispiel für ein Dokument:
Zeile 33: Zeile 33:
 </code> </code>
  
-Um nun ein Dokument anzulegen, muss dafür die Datenbank und die Collection angegeben werden: ''db.collection.insert(<Dokument oder Array von Dokumenten>)''. Dabei wird das **_id-Feld** automatisch angelegt und ein Wert generiert (u.a. abhängig von Maschine und dem Zeitpunkt), kann aber auch (wie in diesem Beispiel) manuell angelegt werden, dann muss aber auch darauf geachtet werden, dass dieser Wert einzigartig innerhalb der Collection bleibt. ([[bigdata:literatur|MongoDB o. J.a]])+Um nun ein Dokument anzulegen, muss dafür die Datenbank und die Collection angegeben werden: ''db.collection.insert(<Dokument oder Array von Dokumenten>)''. Dabei wird das **_id-Feld** automatisch angelegt und ein Wert generiert (u.a. abhängig von Maschine und dem Zeitpunkt), kann aber auch (wie in diesem Beispiel) manuell angelegt werden, dann muss aber auch darauf geachtet werden, dass dieser Wert einzigartig innerhalb der Collection bleibt. ([[bigdata:literatur#m|MongoDB o. J.a]])
  
 Bei dem Beispiel handelt es sich um ein verschachteltes Dokument. Das „adresse“-Feld beinhaltet ein Adressobjekt mit eigenen Attributen. Das Feld „mag“ beinhaltet eine Liste aus beliebig vielen Elementen. Eine Liste kann auch aus mehreren Objekten bestehen und z.B. die Liefer- und Rechnungsadresse (ähnlich aufgebaut wie „adresse“) einer Person speichern. Ebenso gut könnte ein anderes Dokument an dieser Stelle aber auch nur „Hund“ beinhalten oder das Feld gar nicht erst angelegt haben, da es kein fest definiertes Schema gibt, was im Gegensatz zu RDBMS flexiblere Gestaltungsmöglichkeiten bietet, da man dort vor dem Erstellen einer Tabelle genaue Angaben darüber braucht, welche Felder angelegt sein müssen (die im Zweifelsfall mit NULL aufgefüllt werden müssten). Bei dem Beispiel handelt es sich um ein verschachteltes Dokument. Das „adresse“-Feld beinhaltet ein Adressobjekt mit eigenen Attributen. Das Feld „mag“ beinhaltet eine Liste aus beliebig vielen Elementen. Eine Liste kann auch aus mehreren Objekten bestehen und z.B. die Liefer- und Rechnungsadresse (ähnlich aufgebaut wie „adresse“) einer Person speichern. Ebenso gut könnte ein anderes Dokument an dieser Stelle aber auch nur „Hund“ beinhalten oder das Feld gar nicht erst angelegt haben, da es kein fest definiertes Schema gibt, was im Gegensatz zu RDBMS flexiblere Gestaltungsmöglichkeiten bietet, da man dort vor dem Erstellen einer Tabelle genaue Angaben darüber braucht, welche Felder angelegt sein müssen (die im Zweifelsfall mit NULL aufgefüllt werden müssten).
  
-Beim Einfügen bietet MongoDB die Möglichkeit, den Grad der Konsistenz zu bestimmen. Durch ''db.collection.insert( document, { writeConcern: { w: „majority“, wtimeot: 5000} } )'' lässt sich festlegen, dass eine Schreiboperation erst dann als vollendet gilt, wenn die „Mehrheit“ der Replika geupdatet wurden oder alternativ 5 Sekunden verstrichen sind. ([[bigdata:literatur|MongoDB o. J.a]])+Beim Einfügen bietet MongoDB die Möglichkeit, den Grad der Konsistenz zu bestimmen. Durch ''db.collection.insert( document, { writeConcern: { w: „majority“, wtimeot: 5000} } )'' lässt sich festlegen, dass eine Schreiboperation erst dann als vollendet gilt, wenn die „Mehrheit“ der Replika geupdatet wurden oder alternativ 5 Sekunden verstrichen sind. ([[bigdata:literatur#m|MongoDB o. J.a]])
  
  
Zeile 66: Zeile 66:
 Des Weiteren gibt es Optionen mit ''$lt'' (<) und/oder ''$gt'' (>) Abfragen in definierbaren Bereichen zu machen oder Befehle wie ''update()'' zum Manipulieren eines bestehenden Dokuments, etc. Des Weiteren gibt es Optionen mit ''$lt'' (<) und/oder ''$gt'' (>) Abfragen in definierbaren Bereichen zu machen oder Befehle wie ''update()'' zum Manipulieren eines bestehenden Dokuments, etc.
  
-Eine praktische Übersicht an Befehlen findet sich z.B. [[http://www.mongodbspain.com/en/2014/03/23/mongodb-cheat-sheet-quick-reference/|HIER]].+Eine praktische Übersicht an Befehlen findet sich z.B. [[http://www.mongodbspain.com/en/2014/03/23/mongodb-cheat-sheet-quick-reference/|hier]].
  
-Darüber hinaus lassen sich größere Aufgaben auch in MapReduce-Jobs erledigen, die in JavaScript geschrieben werden ([[bigdata:literatur|Edlich et al. 2010: S. 124]]).+Darüber hinaus lassen sich größere Aufgaben auch in MapReduce-Jobs erledigen, die in JavaScript geschrieben werden ([[bigdata:literatur#e|Edlich et al. 2010: S. 124]]).
  
  
bigdata/mongodb.txt · Zuletzt geändert: 2015/10/05 21:22 von brueck