Las bases de datos NoSQL están cogiendo cada vez más popularidad, MongoDB posiblemente sea la que más atención acapare ahora mismo, mucha gente se centra en su capacidad de almacenar y procesar gran cantidad de información pero de cara al desarrollo su interés radica en su cómodo acoplamiento con el código.
En desarrollo se llama impedancia a esa separación que existe entre las bases de datos y el código, las BBDDs tradicionales funcionan con tablas mientras que el código si es POO funciona a través de clases, esta impedancia se ha intentado resolver con varias soluciones (Active Record, ORM,..) aunque en el desarrollo resulta evidente que siguen surgiendo diferencias entre un sistema y otro.
En el caso de MongoDB (y posiblemente otras) esta diferencia queda mitigada, el simple hecho de que tus objetos se puedan guardar “tal cual”, si además a esto le sumamos un mantenimiento fácil que simplifica la parte de IT es normal que haya calado entre la comunidad de desarrolladores
En este caso voy a dar unas breves notas de cómo se instala y un poco de configuración básica sobre MongoDB, hay que tener en cuenta que MongoDB se puede programar usando un lenguaje javascript lo cual facilita mucho las cosas, al final veremos un ejemplo.
Una vez descargada la aplicación está se instalará por defecto en C:\Program Files\MongoDB, por defecto la ruta de los datos se almacena en \data\db.
La aplicación se lanza con el ejecutable mongod, una vez abierta se puede cerrar con Ctrl+C.
Es posible indicar un archivo de configuración, por ejemplo:
#where data files will reside
dbpath=G:\MongoDB\Data
#where the log file will be stored
logpath=G:\MongoDB\Log\mongo-server.log
#how verbose the server will be logging
verbose=vvvvv
Esto indica que los datos se guardarán en la ruta G:\MongoDB\Data, el log se guardará en la ruta G:\MongoDB\Log\mongo-server.log el nivel de detalle se especifica en verbose.
Para poder instalar como un servicio se ejecutaría la siguiente línea apuntando al archivo de configuración.
mongod –f “c:\Program Files\MongoDB\Server\3.0\bin\mongod.conf” –install
Para poder lanzar la línea de comandos del cliente hay que usar el ejecutable mongo.
Algunos comandos básicos son:
| show dbs |
Muestra las bases de datos que existen |
| db |
Muestra la base de datos actual |
| Use nombre_de_base_de_datos |
Cambia a la base de datos indicada |
| help |
Muestra la ayuda |
| db.getMongo() |
Devuelve los datos de la conexión |
Se pueden lanzar comandos administrativos sin invocar la Shell de comandos, por ejemplo para poder lanzar comandos de administración:
mongo server1/admin –eval “db.runCommand({logRotate:1})”
En este caso la opción eval evaluará el comando entre comillas y lo ejecutará sin entrar en Shell (en el ejemplo se rota el archivo de log para archivarlo).
Si son muchos comandos entonces se puede lanzar un archivo que contenga todos los comandos:
mongo server1 myDailyChores.js
Existe la opción de ejecutar una secuencia de comandos y después ingresar en la Shell para seguir introduciendo órdenes, en este caso introduciendo –shell al final:
mongo server1 myDailyChores.js –shell
Podemos introducir la cadena de conexión y la base de datos directamente donde ejecutar el comando.
mongo localhost/admin –eval “db.runCommand({logRotate:1})”
La salida de este comando no es muy descriptiva, si queremos ver la información que emite la consola podemos hacer:
mongo localhost/admin –eval “printjson(db.runCommand({logRotate:1}))”
Unos accesos rápido y útiles en la shell desde teclado:
Ctrl+K Borra desde el cursor hasta el final de línea
Ctrl+L Limpiar pantalla
Se puede usar un editor externo para la edición de javascript asociado a MongoDB, para ello se establece la variable de entorno EDITOR.
C:\>set EDITOR = “notepad++.exe”
Después desde el Shell de mongo haríamos:
mongo> myFunction = function(x) {}
mongo> edit myFunction
Para cargar desde la Shell un archivo primero usaríamos pwd() para saber la ruta actual y después para cargar el archivo safer.js que contiene el código haríamos load(‘safer.js’).
Se puede ejecutar un fichero siempre que se entra en la shell de mongo para esto se crea un fichero con nombre mongorc.js y se coloca dentro de la ruta de usuario c:\users\{username}\.mongorc.js
Si se quiere evitar la carga de este fichero inicial se puede usar el parámetro –norc
Finalmente un script útil para evitar borrar base de datos o apagar el servidor:
var _no_ = function() { print(“Nope!”);}
db.prototype.dropDatabase = _no_;
db.dropDatabase = db.prototype.dropDatabase;
db.prototype.shutdownServer = _no_;
db.shutdownServer = db.prototype.shutdownServer;
Otra forma sería:
db.prototype.dropDatabase = function() {
print(“No”);
}
db.dropDatabase=db.prototype.dropDatabase;