Der Name MongoDB wurde von Humongo abgeleitet uns DB.
Es ist eine Open-Source-NoSQL-Datenbank. MongoDB wird von der Firma 10gen entwickelt und kommerziell unterstützt.
Der Fokus der MongoDB liegt auf Skalierbarkeit und Leistung. MongoDB ist eine schemafreie dokumentenorientierte Datenbank. Dadurch werden Daten als JSON-Objekte gespeichert. Im Gegensatz zu herkömmlichen SQL-Datenbanken müssen Sie kein Schema definieren. Das Schema ist in das Datendokument selbst eingebettet, sodass Sie das Schema jederzeit problemlos ändern können, ohne sich Gedanken über die Änderung eines der zuvor geladenen Dokumente machen zu müssen. Hohe Leistung und Skalierbarkeit sind möglich, da auf MongoDB keine Joins und keine Transaktionen mit mehreren Dokumenten durchgeführt werden. Dies bietet auch eine serverübergreifende Replikation mit der Möglichkeit zum automatischen Failover. Sie können für Hochverfügbarkeit auch mehrere Server skalieren.
Dieser Artikel ist der erste Teil einer Reihe von Artikeln zu MongoDB.
Installieren Sie MongoDB mit YUM
Die Installation von MongoDB mit yum ist ziemlich einfach.
Richten Sie das Yum-Repository der 10. Generation ein
Fügen Sie zunächst das 10gen-Repository wie unten gezeigt zu Ihrem Yum hinzu.
# vi /etc/yum.repos.d/10gen.repo [10gen] name=10gen Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64 gpgcheck=0 enabled=1
Hinweis:Das Obige gilt für ein 64-Bit-System. Wenn Sie ein 32-Bit-System verwenden, verweisen Sie die Basis-URL in der obigen Datei auf http://downloads-distro.mongodb.org/repo/redhat/os/i686
Führen Sie nun „yum info“ aus, um die Pakete mongo-10gen und mongo-10gen-server anzuzeigen.
# yum info mongo-10gen Name : mongo-10gen Arch : x86_64 Version : 2.2.2 Release : mongodb_1 Size : 43 M Repo : 10gen Summary : mongo client shell and tools URL : http://www.mongodb.org License : AGPL 3.0 # yum info mongo-10gen-server Name : mongo-10gen-server Arch : x86_64 Version : 2.2.2 Release : mongodb_1 Size : 6.7 M Repo : 10gen Summary : mongo server, sharding server, and support scripts URL : http://www.mongodb.org License : AGPL 3.0
Mongo-Client- und -Serverpakete installieren
Installieren Sie diese beiden mongo-*-Pakete wie unten gezeigt.
# yum install mongo-10gen mongo-10gen-server Installing : mongo-10gen-2.2.2-mongodb_1.x86_64 Installing : mongo-10gen-server-2.2.2-mongodb_1.x86_64
Überprüfen Sie die mongod.conf-Datei
Dadurch werden auch die Standarddatei /etc/mongod.conf und das Startskript /etc/rc.d/init.d/mongod
installiertDie Datei /etc/mongod.conf enthält die folgenden Standardwerte. Wie Sie hier sehen, werden die Mongo-Datenbankdateien im Verzeichnis /var/lib/mongo erstellt. Wenn Sie möchten, dass die DB-Dateien in einem anderen Verzeichnis erstellt werden, ändern Sie das Verzeichnis dbpath in der Datei mongod.conf.
# cat /etc/mongod.conf logpath=/var/log/mongo/mongod.log logappend=true fork = true dbpath=/var/lib/mongo pidfilepath = /var/run/mongodb/mongod.pid
MongoDB-Server starten
Starten Sie den Mongod-Dienst wie unten gezeigt.
# service mongod start Starting mongod: forked process: 15968 all output going to: /var/log/mongo/mongod.log child process started successfully, parent exiting
Sehen Sie sich die Protokolldateien an, um sicherzustellen, dass MongoDB erfolgreich gestartet wurde. Standardmäßig läuft der MongoDB-Server auf Port 27017.
# cat /var/log/mongo/mongod.log Sat Jan 19 10:57:03 [initandlisten] MongoDB starting : pid=15968 port=27017 dbpath=/var/lib/mongo 64-bit host=centos Sat Jan 19 10:57:03 [initandlisten] db version v2.2.2, pdfile version 4.5 Sat Jan 19 10:57:03 [initandlisten] git version: d1b43b61a5308c4ad0679d34b262c5af9d664267 Sat Jan 19 10:57:03 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49 Sat Jan 19 10:57:03 [initandlisten] options: { config: "/etc/mongod.conf", dbpath: "/var/lib/mongo", fork: "true", logappend: "true", logpath: "/var/log/mongo/mongod.log", pidfilepath: "/var/run/mongodb/mongod.pid" } Sat Jan 19 10:57:03 [initandlisten] journal dir=/var/lib/mongo/journal Sat Jan 19 10:57:03 [initandlisten] recover : no journal files present, no recovery needed Sat Jan 19 10:57:03 [websvr] admin web console waiting for connections on port 28017 Sat Jan 19 10:57:03 [initandlisten] waiting for connections on port 27017
Verwenden Sie Mongo Shell, um eine Verbindung zu MongoDB herzustellen
Geben Sie „mongo“ ein, um die Mongo-Shell zu starten und sich mit MongoDB zu verbinden, um einige Datenbankoperationen durchzuführen. Dadurch wird die Eingabeaufforderung „>“ angezeigt, an der Sie Mongo-Client-Befehle eingeben können.
# mongo MongoDB shell version: 2.2.2 connecting to: test Welcome to the MongoDB shell. >
Der folgende Befehl fügt ein Beispieldokument namens „sites“ in die MongoDB-Sammlung ein. Dies ähnelt dem SQL-Befehl „INSERT into“.
> doc1 = { name : "ramesh" }; > db.sites.insert( doc1 );
Im Folgenden werden alle Dokumente in der MongoDB-Sammlung „Sites“ angezeigt. Dies ähnelt dem SQL-Befehl „SELECT * from“.
> db.sites.find() { "_id" : ObjectId("50f72809a8e3c7a3aba2bf15"), "name" : "ramesh" }
Installieren Sie MongoDB von der Quelle
Wenn Sie MongoDB von der Quelle installieren möchten, befolgen Sie die unten aufgeführten Schritte.
Voraussetzungen installieren
Stellen Sie sicher, dass gcc-c++ und das Paket glibc-devel bereits installiert sind. MongoDB verwendet Scons, um den Quellcode zu erstellen. Stellen Sie also sicher, dass das scons-Paket bereits installiert ist.
# rpm -qa | egrep 'gcc-c++|glibc-devel|scons' gcc-c++-4.4.6-4.el6.x86_64 glibc-devel-2.12-1.80.el6_3.6.x86_64 scons-2.0.1-1.el6.noarch
Wenn Sie diese Voraussetzungen nicht haben, installieren Sie sie.
# yum install gcc-c++ glibc-devel scons
MongoDB herunterladen
Gehen Sie zur MongoDB-Downloadseite und laden Sie den Quellcode herunter. Die aktuelle stabile Version von MongoDB ist 2.2.2.
Sobald Sie den Download-Link haben, können Sie auch wget verwenden, um den Quellcode direkt herunterzuladen.
cd /usr/src wget http://downloads.mongodb.org/src/mongodb-src-r2.2.2.tar.gz tar xvfz mongodb-src-r2.2.2.tar.gz cd mongodb-src-r2.2.2
MongoDB mit Scons erstellen
Scons ist ähnlich zu machen. Geben Sie „scons all“ ein, um die MongoDB aus der Quelle zu erstellen.
Bitte beachten Sie, dass beim Ausführen von „scons all“ nur eine CPU verwendet wird und nur ein Job gleichzeitig ausgeführt wird, um den Quellcode zu erstellen. Es wird also langsam. Wenn Sie möchten, dass scons die gesamte CPU verwenden und während des Baus mehrere Jobs ausführen, sollten Sie die Anzahl der auszuführenden Jobs angeben.
Auf meinem System habe ich 8 Kerne. Also habe ich „scons -j 8 all“ ausgeführt, wie unten gezeigt, um zu bauen.
# scons -j 8 all scons: Reading SConscript files ... scons version: 2.0.1 python version: 2 6 6 'final' 0 Checking whether the C++ compiler works(cached) yes Checking for C header file unistd.h... (cached) yes Checking whether clock_gettime is declared... (cached) yes Checking for C library rt... (cached) yes Checking for C++ header file execinfo.h... (cached) yes Checking whether backtrace is declared... (cached) yes Checking whether backtrace_symbols is declared... (cached) yes Checking for C library pcap... (cached) no Checking for C library wpcap... (cached) no Checking if __malloc_hook is declared volatile... (cached) no scons: done reading SConscript files. .. Install file: "build/linux2/normal/mongo/test" as "test" scons: done building targets.
Sobald Sie den Quellcode erstellt haben, sollten wir ihn installieren. Verwenden Sie „scons install“, um MongoDB zu installieren. Standardmäßig wird es unter /usr/local/bin installiert. Wenn Sie MongoDB in einem anderen Verzeichnis installieren möchten, verwenden Sie die Option „–prefix“.
Um MongoDB im Verzeichnis /opt/mongo zu installieren, führen Sie den folgenden scons-Befehl aus.
# scons --prefix=/opt/mongo install
Wie Sie unten sehen, wurde MongoDB im Verzeichnis /opt/mongo installiert.
# ls -l /opt/mongo/ total 12 drwxr-xr-x. 2 root root 4096 Jan 19 13:33 bin drwxr-xr-x. 3 root root 4096 Jan 19 13:33 include drwxr-xr-x. 2 root root 4096 Jan 19 13:33 lib
Erstellen Sie die Datei /etc/mongod.conf
Erstellen Sie die folgende Konfigurationsdatei, die vom MongoDB-Server während des Starts verwendet wird.
# cat /etc/mongod.conf logpath=/var/log/mongo/mongod.log logappend=true fork = true dbpath=/var/lib/mongo pidfilepath = /var/run/mongodb/mongod.pid
In der obigen Datei gibt der Parameter dbpath an, dass beim Starten der MongoDB-Datenbank alle erforderlichen Datenbanken im Verzeichnis /var/lib/mongo erstellt werden. Sie können diesen Pfad entsprechend ändern.
Erstellen Sie das Verzeichnis, auf das der Datenbankpfad verweist.
# mkdir -p /var/lib/mongo
Starten Sie den MongoDB-Daemon
Fügen Sie /opt/mongo/bin/ zur PATH-Variablen hinzu.
# export $PATH=$PATH:/opt/mongo/bin/
Starten Sie die mongodb wie unten gezeigt, indem Sie den Speicherort der Konfigurationsdatei mit der Option -f übergeben.
# mongod -f /etc/mongod.conf forked process: 20127 all output going to: /var/log/mongo/mongod.log child process started successfully, parent exiting
Wenn Sie einfach „mongod“ ohne Argument verwenden, wird der Prozess im Vordergrund gestartet. Wenn Sie Ihr Terminal schließen, wird auch Ihr MongoDB-Server gestoppt. Stellen Sie also sicher, dass Sie Mongod mit der Option -f wie oben gezeigt ausführen.
Überprüfen Sie die Protokolldateien, um sicherzustellen, dass es ordnungsgemäß gestartet wurde. Standardmäßig läuft der MongoDB-Server auf Port 27017.
# cat /var/log/mongo/mongod.log Sat Jan 19 13:48:44 [initandlisten] MongoDB starting : pid=20127 port=27017 dbpath=/var/lib/mongo 64-bit host=centos Sat Jan 19 13:48:44 [initandlisten] db version v2.2.2, pdfile version 4.5 Sat Jan 19 13:48:44 [initandlisten] git version: nogitversion Sat Jan 19 13:48:44 [initandlisten] build info: Linux centos 2.6.32-279.19.1.el6.x86_64 #1 SMP Wed Dec 19 07:05:20 UTC 2012 x86_64 BOOST_LIB_VERSION=1_49 Sat Jan 19 13:48:44 [initandlisten] options: { config: "/etc/mongod.conf", dbpath: "/var/lib/mongo", fork: "true", logappend: "true", logpath: "/var/log/mongo/mongod.log", pidfilepath: "/var/run/mongodb/mongod.pid" } Sat Jan 19 13:48:44 [initandlisten] journal dir=/var/lib/mongo/journal Sat Jan 19 13:48:44 [initandlisten] recover : no journal files present, no recovery needed Sat Jan 19 13:48:44 [websvr] admin web console waiting for connections on port 28017 Sat Jan 19 13:48:44 [initandlisten] waiting for connections on port 27017
Verwenden Sie Mongo Shell, um eine Verbindung zu MongoDB herzustellen
Geben Sie „mongo“ ein, um die Mongo-Shell zu starten und sich mit MongoDB zu verbinden, um einige Datenbankoperationen durchzuführen. Dadurch wird die Eingabeaufforderung „>“ angezeigt, an der Sie Mongo-Client-Befehle eingeben können.
# mongo MongoDB shell version: 2.2.2 connecting to: test Welcome to the MongoDB shell. >
Der folgende Befehl fügt ein Beispieldokument namens „sites“ in die MongoDB-Sammlung ein. Dies ähnelt dem SQL-Befehl „INSERT into“.
> doc1 = { name : "ramesh" }; > db.sites.insert( doc1 );
Im Folgenden werden alle Dokumente in der MongoDB-Sammlung „Sites“ angezeigt. Dies ähnelt dem SQL-Befehl „SELECT * from“.
> db.sites.find() { "_id" : ObjectId("50f72809a8e3c7a3aba2bf15"), "name" : "ramesh" }
Im nächsten Artikel dieser Serie erklären wir einige MongoDB-Befehle mit Beispielen.