Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Was fehlt?

Es liegt in der Natur der Sache: Ein Wiki ist niemals fertig. Wir geben uns große Mühe, mit der Entwicklung Schritt zu halten; lassen Supportanfragen direkt in neue Artikel einfließen … aber auch wir sind nicht perfekt. Wenn du hier nicht fündig wirst: Nicht schmollen - Bescheid sagen! Unter hallo@uberspace.de steht dir unser Team gerne bereit. Hand drauf!

database:mongodb

MongoDB

MongoDB ist wie beispielsweise auch CouchDB eine Datenbank vom Schlag der aufstrebenden dokumentorientierten Datenbanken (oft auch als „NoSQL-Datenbanken“ bezeichnet).

Wir haben eine fertige Installation von MongoDB vorbereitet, die allerdings nicht als zentraler Daemon läuft. Der Hauptgrund dafür ist, dass wir in diesem Fall deine MongoDB-Daten nicht zu deiner Quota zählen könnten :-) … aber so oder so hast du mit einer komplett eigenen MongoDB-Instanz auch viel mehr Möglichkeiten und kannst auch die Serverkonfiguration selbst beeinflussen.

Da Mongo sich an einen Netzwerkport bindet und natürlich nicht jeder den gleichen Port belegen kann, selektieren wir für dich beim Anlegen der Installation automatisch einen Port für dich und konfigurieren ihn vor. Außerdem richten wir dir direkt einen administrativen User ein und schalten MongoDB in den --auth-Modus, der eine Authentifizierung voraussetzt - standardmäßig arbeitet MongoDB nämlich ohne Authentifizierung, was im Rahmen von Shared Hosting wohl als fahrlässig zu betrachten sein dürfte.

Einrichtung

Eine eigene MongoDB-Instanz hast du blitzschnell eingerichtet. Voraussetzung ist zunächst ein eigenes ~/service-Verzeichnis, damit du innerhalb deines Uberspaces eigene Daemons laufen lassen kannst. Was es damit genau auf sich hat haben wir bereits an anderer Stelle dokumentiert. Hier daher nur in aller Kürze, falls du diesen Schritt nicht schon aus anderen Gründen absolviert hast:

[annette@amnesia ~]$ test -d ~/service || uberspace-setup-svscan 

Binnen weniger Sekunden ist dein ~/service-Verzeichnis fertig angelegt. Mit MongoDB geht es ähnlich schnell, wobei dir der dafür einzugebende Befehl uberspace-setup-mongodb am Ende deine persönliche Portnummer nennt sowie Benutzername und Passwort für den administrativen Zugang. Letztere werden nirgendwo gespeichert (in der MongoDB-Datenbank liegt das Passwort nur in Form eines Hashwerts vor); es ist also wichtig, dass du dir diese Daten irgendwo notierst, wo du sie wiederfindest. Und so sieht das aus:

[annette@amnesia ~]$ uberspace-setup-mongodb 
Creating the ~/mongodb database directory
Creating the ~/etc/run-mongodb/run service run script
Creating the ~/etc/run-mongodb/log/run logging run script
Symlinking ~/etc/run-mongodb to ~/service/mongodb to start the service
Waiting for the service to start ... 1 2 3 4 started!
Creating administrative user

Congratulations - You can now reach your dedicated MongoDB installation!
Please note that your MongoDB uses the NON-standard port number 21080.
This allows running multiple instances of MongoDB on the same machine for different users.

Hostname: localhost
Portnum#: 21080
Username: annette_mongoadmin
Password: iatAnyikDa
Achtung! Notiere Dir den Port, Usernamen und das Passwort. Wenn Du diese Daten verlierst, sind sie nicht ohne weiteres wieder zu beschaffen (jedenfalls das Passwort nicht).

Fertig! Deine MongoDB-Installation läuft jetzt als Service unter den daemontools - du kannst sie also mit den für solche Services üblichen Befehlen steuern, beispielsweise einen Neustart durchführen:

[annette@amnesia ~] svc -du ~/service/mongodb

Authentifizierung

Bei der Authentifizierung gibt es noch eine Besonderheit, wenn du von anderen Datenbanken wie z.B. MySQL gewohnt bist, dass du dich mit Username und Passwort authentifzierst und dann mit USE xyz; eine Datenbank auswählst. Wenn du dich als Admin-User mit deiner MongoDB verbinden möchtest, musst du dich allerdings explizit an der Datenbank admin anmelden, bevor du eine andere Datenbank wählen oder eine neue anlegen kannst, so wie im Abschnitt Logging in as an admin user der offiziellen Dokumentation beschrieben. Konkret sähe das so aus:

[annette@amnesia ~] mongo admin --port 21080 -u annette_mongoadmin -p

Port und Username musst du dabei entsprechend der Angaben anpassen, die uberspace-setup-mongodb ausgegeben hat.

Import von Collections

Um eine Collection aus einer json-, csv- oder tsv-Textdatei zu importieren, liefert MongoDB das Tool mongoimport mit. Allerdings muss beim Import der zusätzliche Parameter --authenticationDatabase admin verwendet werden, damit wir uns wie im obigen Punkt Authentifizierung beschrieben zuvor an der admin-Datenbank authentifizieren:

[annette@amnesia ~] mongoimport --port 21080 -u annette_mongoadmin -p --authenticationDatabase admin -d datenbank -c collection --file importieren.json

Wie geht es weiter?

Wie es mit der Anwendung von MongoDB weitergeht, kannst du dem MongoDB-Tutorial entnehmen. Die vollständige Dokumentation findest du im MongoDB-Manual.

Um MongoDB für Anwendungen im Uberspace zu verwenden, musst du erst die entsprechende Bibliothek installieren. Das wird bei jeder Sprache anders gehandhabt. Allgemeine Informationen dazu findest du auf den jeweiligen Seiten in diesem Wiki unter Perl, Python, PHP und Ruby.

Viel Erfolg!

Entfernen / Resetten

Falls Du MongoDB entfernen möchtest oder nochmal von vorn anfangen möchtest, bedenke dass daemontools erfordern, dass Dienste auf eine ganz bestimmte Art und Weise entfernt werden.

Nachdem der Dienst gestoppt und entfernt wurde, überprüfe schnell mit ps ax | grep mongod, ob der MongoDB-Daemon wirklich nicht mehr läuft. Die Ausgabe sollte leer sein wie hier:

[annette@amnesia ~]$ ps ax | grep mongod
[annette@amnesia ~]$ 

Anschließend kannst du MongoDB selbst wie folgt löschen:

[annette@amnesia ~]$ rm -rf ~/mongodb

Solltest du nochmal eine frische MongoDB brauchen, kannst du nun wieder von vorne anfangen.

Backups

Derzeit stellen wir keine automatischen Backups für MongoDB-Datenbanken bereit, die über die Backups des Homeverzeichnis hinausgehen. Bisher hat das in den Supportfällen immer gereicht. Es gibt so aber keine Garantie dafür, dass diese Backups konsistent sind. Wir haben aber konkrete Pläne, unser Setup-Script entsprechend anzupassen, um bald auch mittels mongodump erstellte, konsistente Datenbank-Backups bereitzustellen.

database/mongodb.txt · Zuletzt geändert: 2016/08/23 09:27 von uber