El nombre MongoDB se deriva de Humongo nosotros base de datos.
Es una base de datos NoSQL de código abierto. MongoDB está desarrollado y respaldado comercialmente por la empresa 10gen.
El enfoque de MongoDB está en la escalabilidad y el rendimiento. MongoDB es una base de datos orientada a documentos sin esquemas. Esto almacena datos como objetos JSON. A diferencia de la base de datos SQL tradicional, no necesita definir un esquema. El esquema está incrustado en el propio documento de datos, lo que facilita cambiar el esquema en cualquier momento sin preocuparse por cambiar cualquiera de los documentos anteriores que se cargan. El alto rendimiento y la escalabilidad son posibles porque no hay uniones y no se realizan transacciones de documentos múltiples en MongoDB. Esto también proporciona replicación entre servidores con la capacidad de conmutación por error automática. También puede escalar entre servidores para una alta disponibilidad.
Este artículo es la primera parte de una serie de artículos sobre MongoDB.
Instalar MongoDB usando YUM
Instalar MongoDB usando yum es bastante sencillo.
Configurar el repositorio 10gen Yum
Primero, agregue el repositorio 10gen a su yum como se muestra a continuación.
# 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:Lo anterior es para un sistema de 64 bits. Si está utilizando un sistema de 32 bits, apunte la baseurl en el archivo anterior a http://downloads-distro.mongodb.org/repo/redhat/os/i686
Ahora, ejecute "yum info" para ver los paquetes mongo-10gen y 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
Instalar paquetes de servidor y cliente de Mongo
Instale estos dos paquetes mongo-* como se muestra a continuación.
# 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
Verificar archivo mongod.conf
Esto también instala el archivo predeterminado /etc/mongod.conf y el script de inicio /etc/rc.d/init.d/mongod
El archivo /etc/mongod.conf contiene los siguientes valores predeterminados. Como puede ver aquí, los archivos de la base de datos mongo se crearán en el directorio /var/lib/mongo. Si desea que los archivos DB se creen en un directorio diferente, cambie el directorio dbpath en el archivo 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
Iniciar servidor MongoDB
Inicie el servicio mongod como se muestra a continuación.
# service mongod start Starting mongod: forked process: 15968 all output going to: /var/log/mongo/mongod.log child process started successfully, parent exiting
Vea los archivos de registro para asegurarse de que MongoDB se inició correctamente. Por defecto, el servidor MongoDB se ejecuta en el puerto 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
Utilice Mongo Shell para conectarse a MongoDB
Escriba "mongo" para iniciar el shell de mongo y conectarse a MongoDB para realizar alguna operación de base de datos. Esto mostrará el indicador ">" donde puede escribir los comandos del cliente mongo.
# mongo MongoDB shell version: 2.2.2 connecting to: test Welcome to the MongoDB shell. >
El siguiente comando insertará un documento de muestra en la colección de MongoDB llamado "sitios". Esto es similar al comando SQL "INSERTAR en".
> doc1 = { name : "ramesh" }; > db.sites.insert( doc1 );
A continuación, se mostrarán todos los documentos en la colección de "sitios" de MongoDB. Esto es similar al comando SQL "SELECCIONAR * de".
> db.sites.find() { "_id" : ObjectId("50f72809a8e3c7a3aba2bf15"), "name" : "ramesh" }
Instalar MongoDB desde el origen
Si desea instalar MongoDB desde la fuente, siga los pasos que se mencionan a continuación.
Instalar requisitos previos
Asegúrese de que los paquetes gcc-c++ y glibc-devel ya estén instalados. MongoDB usa scons para construir el código fuente. Por lo tanto, asegúrese de que el paquete scons ya esté instalado.
# 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
Si no tiene estos requisitos previos, instálelo.
# yum install gcc-c++ glibc-devel scons
Descargar MongoDB
Vaya a la página de descargas de MongoDB y descargue el código fuente. La versión estable actual de MongoDB es 2.2.2.
Una vez que tenga el enlace de descarga, también puede usar wget para descargar directamente el código fuente.
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
Construir MongoDB usando Scons
Scons es similar a hacer. Escriba "scons all" para compilar MongoDB desde la fuente.
Tenga en cuenta que cuando ejecuta "scons all", utiliza solo una CPU y ejecuta solo un trabajo a la vez para compilar el código fuente. Entonces, será lento. Si desea que scons use toda la CPU y ejecute varios trabajos mientras construye, debe especificar la cantidad de trabajos que debe ejecutar.
En mi sistema, tengo 8 núcleos. Entonces, ejecuté "scons -j 8 all" como se muestra a continuación para compilar.
# 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 vez que haya compilado el código fuente, debemos instalarlo. Use "scons install" para instalar MongoDB. Por defecto lo instalará en /usr/local/bin. Si desea instalar MongoDB en un directorio diferente, use la opción “–prefijo”.
Para instalar MongoDB en el directorio /opt/mongo, ejecute el siguiente comando scons.
# scons --prefix=/opt/mongo install
Como puede ver a continuación, ha instalado MongoDB en el directorio /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
Crear archivo /etc/mongod.conf
Cree el siguiente archivo de configuración que utilizará el servidor MongoDB durante el inicio.
# cat /etc/mongod.conf logpath=/var/log/mongo/mongod.log logappend=true fork = true dbpath=/var/lib/mongo pidfilepath = /var/run/mongodb/mongod.pid
En el archivo anterior, el parámetro dbpath indica que cuando iniciamos la base de datos MongoDB, creará las bases de datos requeridas en el directorio /var/lib/mongo. Puede cambiar esta ruta en consecuencia.
Cree el directorio al que hace referencia dbpath.
# mkdir -p /var/lib/mongo
Inicie el demonio MongoDB
Agregue /opt/mongo/bin/ a la variable PATH.
# export $PATH=$PATH:/opt/mongo/bin/
Inicie mongodb como se muestra a continuación pasando la ubicación del archivo de configuración usando la opción -f.
# mongod -f /etc/mongod.conf forked process: 20127 all output going to: /var/log/mongo/mongod.log child process started successfully, parent exiting
Si solo usa "mongod" sin ningún argumento, comenzará el proceso en primer plano. Cuando cierre su terminal, su servidor MongoDB también se detendrá. Por lo tanto, asegúrese de ejecutar mongod con la opción -f como se muestra arriba.
Verifique los archivos de registro para asegurarse de que se inició correctamente. Por defecto, el servidor MongoDB se ejecuta en el puerto 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
Utilice Mongo Shell para conectarse a MongoDB
Escriba "mongo" para iniciar el shell de mongo y conectarse a MongoDB para realizar alguna operación de base de datos. Esto mostrará el indicador ">" donde puede escribir los comandos del cliente mongo.
# mongo MongoDB shell version: 2.2.2 connecting to: test Welcome to the MongoDB shell. >
El siguiente comando insertará un documento de muestra en la colección de MongoDB llamado "sitios". Esto es similar al comando SQL "INSERTAR en".
> doc1 = { name : "ramesh" }; > db.sites.insert( doc1 );
A continuación, se mostrarán todos los documentos en la colección de "sitios" de MongoDB. Esto es similar al comando SQL "SELECCIONAR * de".
> db.sites.find() { "_id" : ObjectId("50f72809a8e3c7a3aba2bf15"), "name" : "ramesh" }
En el próximo artículo de esta serie, explicaremos varios comandos de MongoDB con ejemplos.