MongoDB und Fedora 13
NoSQL ist ja zur Zeit in aller Munde. So habe ich mich mal umgeschaut, und will mich in Zukunft ein wenig mit MongoDB befassen. Und da es für MongoDB für fast alle Mainstream Programmiersprachen einen Treiber gibt, lohnt sich der Blick, aus meiner Sicht, auf jeden Fall.
Als erstes steht allerdings erst einmal eine Installation auf meiner Fedora 13 Workstation an. Es gibt auf den Download-Seiten des Projekts fertige, generische Binaries und auch RPMs für Fedora/CentOS, jedoch für Fedora nur 11/12 und auch nur als x86_64. Also heißt die Devise: selber bauen. Da ich diese Schritte auch für Fedora Neulinge nachvollziebar halten will, fange ich wirklich ganz von Vorne an. Alles was hier beschrieben steht, außer die Installationen mit yum, wird als normaler $User ausgeführt.
1. Mit
yum install rpm-build rpmdevtools auto-buildrequireswerden die nötigen Tools, und deren Abhängigkeiten, installiert. Diese sind grundlegend für das Bauen der RPM-Pakete. Des weiteren installiert ihr mit
yum install gcc-c++ cons js-devel readline-devel boost-devel pcre-develalle anderen, für den Build der MongoDB RPMs, benötigten Sachen.
2. Mit einem beherzten Aufruf von rpmdev-setuptree erzeugt ihr die nötige Ordnerstruktur. Danach solltete ihr in $HOME folgendes vorfinden:
- rpmbuild/BUILD
- rpmbuild/RPMS
- rpmbuild/SOURCES
- rpmbuild/SPECS
- rpmbuil/SRPMS
3. Ihr entpackt das runtergeladene tar.gz Archiv von MongoDB und sucht dort nach einem rpm-Ordner. In diesem befindet sich eine mongo.spec Datei. Kopiert die mongo.spec in den SPECS Ordner. Das Verzeichnis des entpackten Archivs benennt ihr nun einfach von mongodb-src-r${Version} in mongo-${Version} um und erzeugt mit diesem Ordner ein neues Archiv, welches dann z.B. mongo-1.4.2.tar.gz heißt. Dies hat mit einigen Kleinigkeiten in der spec-Datei zu tun. Ich werde hier, in den nächsten Tagen, eine überarbeitete Datei zum Download anbieten.
4. Dieses Archiv kopiert ihr nun in den SOURCES Ordner der zuvor erzeugten rmpbuild Umgebung.
5. Wechlselt in den rpmbuild Ordner und gebt jetzt einfach rpmbuild -ba –clean SPECS/mongo.spec ein. Sollte alles richtig installiert sein, beginnt jetzt der übliche configure, make und build Prozess. Es dauert eine Weile, je nachdem wieviel Leistung euer Rechner bietet.
6. Ist der Build-Prozess abgeschlossen, solltet ihr in RPMS/$(eure Architecktur) 4 rpm-Dateien vorfinden, die alle mongo-irgendwas.rpm heißen. Von diesen 4 benötigen wir nur den mongo-server und das mongo Paket. Diese beiden installieren wir nun mit
yum localinstall --nogpgcheck paket1 paket2Wer an MongoDB selbst entwickeln möchte, oder aber z.B. eine Schnittstelle zu PHP braucht, der sollte auch das devel-Paket installieren.
7. Zum Schluß geben wir als root/sudo noch schnell service mongod start ein und können dann im Browser unsere Vertrauens, unter http://localhost:28017, unsere Installation bewundern.
So, das war’s für’s erste. Jetzt habt ihr unter Fedora 13 eine funktionierende MongoDB Installation am Laufen. Wenn ihr mit PHP entwickelt, reicht nun ein
pecl install mongo, vorrausgesetzt ihr habt das devel-Paket von MongoDB installiert. Für Java gibt es auch passende JDBC-Treiber auf den Projektseiten.

Donnerstag 10. Juni 2010 um 19:30
Hi,
ich habe auch vor mich ein wenig in NoSQL-DBs einzuarbeiten. Ich werde jedoch wahrscheinlich die CouchDB ausprobieren. Was hat dich bewogen MongoDB zu wählen?
lg
Donnerstag 10. Juni 2010 um 20:18
Hallo Daniel,
ich habe mich deshalb für MongoDB entschieden, weil ich viel im Web-Bereich arbeite. Laut diversen Aussagen im Internet kann MongoDB dort sehr gut eingesetzt werden, ist leicht skalierbar und arbeitet nicht nach dem MVCC Prinzip. Schau dir mal diese doch recht objektive Gegenüberstellung an: http://www.mongodb.org/display/DOCS/Comparing+Mongo+DB+and+Couch+DB. Vor allem hat mich die enorme Vielfalt der vorhandenen Schnittstellen/Treiber, und der kaum vorhandene Overhead an Abhängigkeiten, überzeugt. Wenn ich sehe, was bei der Installation von CouchDB noch alles so auf die Platte will…
Samstag 4. September 2010 um 19:13
Ich have versucht mongo-1.6.2 nach Ihrem Rezept zu installieren. Nach dem es einige Zeit (1-2 min) kompiliert hat, stoppte der Prozess plötzlich mit der folgenden Errormeldung:
Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/martin/rpmbuild/BUILDROOT/mongo-1.6.2-mongodb_1.fc13.i386
error: Installed (but unpackaged) file(s) found:
/usr/bin/bsondump
RPM build errors:
Installed (but unpackaged) file(s) found:
/usr/bin/bsondump
Haben Sie eine Ahnung was ich falsch gemacht habe?
Beste Grüsse
Martin
Sonntag 5. September 2010 um 10:27
Hallo Martin.
Falsch, garnichts
Wenn eine neue Minor-Version erscheint, kann es vorkommen, das sich etwas an der API usw. ändert, oder neue Dateien hinzukommen, wie in diesem Fall. Schauen Sie in der spec-Datei einfach mal unter dem Punkt %files nach und tragen dort die fehlende Datei ein. Es müßte dann in so aussehen:
%{_bindir}/bsondump
Die obige Meldung besagt übrigens nur, das der Paketierungsprozess Dateien gefunden hat, mit denen er nichts anfangen kann, da sie nicht in seiner spec-Datei stehen. Das kann allerdings für noch einige Dateien vorkommen. Ich selbst habe die 1.6.x Version von mongodb aus Zeitmangel bisher noch nicht als Paket gebaut. Werde ich aber in den nächsten Tagen nachholen und hier dann berichten.
Schönes Wochenende noch.
Mario