Il nome MongoDB deriva da Humongo noi DB.
È un database NoSQL open source. MongoDB è sviluppato e supportato commercialmente dalla società 10gen.
L'obiettivo di MongoDB è sulla scalabilità e sulle prestazioni. MongoDB è un database orientato ai documenti privo di schemi. Questo memorizza i dati come oggetti JSON. A differenza del database SQL tradizionale, non è necessario definire uno schema. Lo schema è incorporato nel documento di dati stesso, semplificando la modifica dello schema in qualsiasi momento senza doversi preoccupare di modificare i precedenti documenti caricati. Prestazioni elevate e scalabilità sono possibili perché non ci sono join e nessuna transazione multi-documento eseguita su MongoDB. Ciò fornisce anche la replica tra i server con la possibilità di eseguire automaticamente il failover. Puoi anche scalare su più server per una disponibilità elevata.
Questo articolo è la prima parte di una serie di articoli su MongoDB.
Installa MongoDB utilizzando YUM
L'installazione di MongoDB utilizzando yum è abbastanza semplice.
Imposta il repository Yum 10gen
Innanzitutto, aggiungi il repository 10gen al tuo yum come mostrato di seguito.
# 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
Nota:quanto sopra è per un sistema a 64 bit. Se stai usando un sistema a 32 bit, punta l'url di base nel file sopra a http://downloads-distro.mongodb.org/repo/redhat/os/i686
Ora, esegui "yum info" per visualizzare i pacchetti mongo-10gen e mongo-10gen-server.
# 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
Installa i pacchetti client e server Mongo
Installa questi due pacchetti mongo-* come mostrato di seguito.
# 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
Verifica il file mongod.conf
Questo installa anche il file /etc/mongod.conf predefinito e lo script di avvio /etc/rc.d/init.d/mongod
Il file /etc/mongod.conf contiene i seguenti valori predefiniti. Come puoi vedere qui, i file del database di mongo verranno creati nella directory /var/lib/mongo. Se vuoi che i file DB vengano creati in una directory diversa, cambia la directory dbpath nel file 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
Avvia il server MongoDB
Avvia il servizio mongod come mostrato di seguito.
# service mongod start Starting mongod: forked process: 15968 all output going to: /var/log/mongo/mongod.log child process started successfully, parent exiting
Visualizza i file di registro per assicurarti che MongoDB sia stato avviato correttamente. Per impostazione predefinita, il server MongoDB viene eseguito sulla porta 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
Utilizza Mongo Shell per connetterti a MongoDB
Digitare "mongo" per avviare la shell mongo e connettersi a MongoDB per eseguire alcune operazioni sul database. Verrà visualizzato il prompt "> " in cui è possibile digitare i comandi del client mongo.
# mongo MongoDB shell version: 2.2.2 connecting to: test Welcome to the MongoDB shell. >
Il comando seguente inserirà un documento di esempio nella raccolta MongoDB chiamata "siti". È simile al comando SQL "INSERT into".
> doc1 = { name : "ramesh" }; > db.sites.insert( doc1 );
Di seguito verranno visualizzati tutti i documenti nella raccolta "siti" di MongoDB. È simile al comando SQL "SELECT * from".
> db.sites.find() { "_id" : ObjectId("50f72809a8e3c7a3aba2bf15"), "name" : "ramesh" }
Installa MongoDB dal sorgente
Se desideri installare MongoDB dal sorgente, segui i passaggi indicati di seguito.
Installa i prerequisiti
Assicurati che gcc-c++ e il pacchetto glibc-devel siano già installati. MongoDB usa scons per costruire il codice sorgente. Quindi, assicurati che il pacchetto scons sia già installato.
# 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
Se non hai questi prerequisiti, installalo.
# yum install gcc-c++ glibc-devel scons
Scarica MongoDB
Vai alla pagina dei download di MongoDB e scarica il codice sorgente. L'attuale versione stabile di MongoDB è la 2.2.2.
Una volta ottenuto il link per il download, puoi anche utilizzare wget per scaricare direttamente il codice sorgente.
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
Crea MongoDB usando Scons
Scons è simile a fare. Digita "scons all" per creare il MongoDB dal sorgente.
Tieni presente che quando esegui "scons all", utilizza solo una CPU ed esegue solo un lavoro alla volta per creare il codice sorgente. Quindi, sarà lento. Se vuoi che scons utilizzi tutta la CPU ed esegua più lavori durante la compilazione, devi specificare il numero di lavori che dovrebbe eseguire.
Sul mio sistema ho 8 core. Quindi, ho eseguito "scons -j 8 all" come mostrato di seguito per creare.
# 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.
Una volta creato il codice sorgente, dovremmo installarlo. Usa "scons install" per installare MongoDB. Per impostazione predefinita, lo installerà in /usr/local/bin. Se desideri installare MongoDB in una directory diversa, usa l'opzione “–prefix”.
Per installare MongoDB nella directory /opt/mongo, eseguire il seguente comando scons.
# scons --prefix=/opt/mongo install
Come puoi vedere di seguito, ha installato MongoDB nella directory /opt/mongo.
# 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
Crea il file /etc/mongod.conf
Crea il seguente file di configurazione che verrà utilizzato dal server MongoDB durante l'avvio.
# cat /etc/mongod.conf logpath=/var/log/mongo/mongod.log logappend=true fork = true dbpath=/var/lib/mongo pidfilepath = /var/run/mongodb/mongod.pid
Nel file sopra, il parametro dbpath indica che quando avviamo il database MongoDB, creerà tutti i database richiesti nella directory /var/lib/mongo. Puoi modificare questo percorso di conseguenza.
Crea la directory a cui fa riferimento il dbpath.
# mkdir -p /var/lib/mongo
Avvia il demone MongoDB
Aggiungi /opt/mongo/bin/ alla variabile PATH.
# export $PATH=$PATH:/opt/mongo/bin/
Avvia mongodb come mostrato di seguito passando il percorso del file di configurazione usando l'opzione -f.
# mongod -f /etc/mongod.conf forked process: 20127 all output going to: /var/log/mongo/mongod.log child process started successfully, parent exiting
Se usi semplicemente "mongod" senza alcun argomento, avvierà il processo in primo piano. Quando chiudi il tuo terminale, anche il tuo server MongoDB si fermerà. Quindi, assicurati di eseguire mongod con l'opzione -f come mostrato sopra.
Verifica i file di registro per assicurarti che siano stati avviati correttamente. Per impostazione predefinita, il server MongoDB viene eseguito sulla porta 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
Utilizza Mongo Shell per connetterti a MongoDB
Digitare "mongo" per avviare la shell mongo e connettersi a MongoDB per eseguire alcune operazioni sul database. Verrà visualizzato il prompt "> " in cui è possibile digitare i comandi del client mongo.
# mongo MongoDB shell version: 2.2.2 connecting to: test Welcome to the MongoDB shell. >
Il comando seguente inserirà un documento di esempio nella raccolta MongoDB chiamata "siti". È simile al comando SQL "INSERT into".
> doc1 = { name : "ramesh" }; > db.sites.insert( doc1 );
Di seguito verranno visualizzati tutti i documenti nella raccolta "siti" di MongoDB. È simile al comando SQL "SELECT * from".
> db.sites.find() { "_id" : ObjectId("50f72809a8e3c7a3aba2bf15"), "name" : "ramesh" }
Nel prossimo articolo di questa serie, spiegheremo diversi comandi MongoDB con esempi.