Es por ello que debemos tener presente que es una realidad que pronto tendremos que saber manejarlas como ahora sabemos manejar las Bases de Datos tradicionales, para ello necesitaremos conectarnos a ellas a través de lenguajes tradicionales, como por ejemplo el ampliamente conocido PHP.
Uno de los motores de Bases de Datos NoSQL más populares es mongoDB, debido a su fácil instalación y una comunidad en desarrollo que nos permite aprender mucho en poco tiempo con búsquedas sencillas en Internet.
Instalación en Ubuntu
Para instalar mongoDB en Ubuntu debemos seguir unos sencillos pasos para poder habilitar el paquete, una vez hecho dichos pasos podemos utilizar apt-get install normalmente, veamos.
1- Primero debemos importar la llave pública, para ello abriremos una nueva consola o terminal y escribiremos el siguiente comando:
sudo apt-key adv --keyserver hkp:/ /keyserver.ubuntu.com:80 --recv 7F0CEB10
2- Luego debemos añadir un archivo de lista para mongoDB, para ello debemos hacer lo siguiente:
echo 'deb http:/ /downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
3- Ahora finalmente podemos instalar el servicio, para ello primero actualizaremos nuestras dependencias y luego instalaremos el paquete:
sudo apt-get update
Una vez que todo haya sido actualizado colocamos el comando para realizar la instalación y con ello ya tendremos disponible el servicio de mongoDB en nuestro sistema:
sudo apt-get install -y mongodb-org
Instalación en Windows
La instalación en Windows es más sencilla, únicamente debemos asegurarnos de tener Windows Vista o algo más reciente, ya que lamentablemente la última versión de mongoDB no es compatible con Windows XP.
Luego visitamos el sitio oficial de mongoDB y elegimos la versión que más se apegue a nuestra configuración del sistema operativo:
Una vez descargado el ejecutable, lo instalamos y luego realizaremos los siguientes pasos para que el servicio pueda iniciar correctamente:
1- Debemos crear una carpeta de datos donde mongoDB pueda almacenar las colecciones de documentos de nuestras bases de datos, para ello desde la consola de comandos, con permisos de administrador, nos vamos a ubicar en el directorio adecuado y crearemos una nueva carpeta. Para ello utilizamos lo siguiente:
md \data\db
2- Luego de haber creado la carpeta debemos iniciar el servicio de mongoDB esto lo hacemos al ejecutar mongod.exe, la ruta debería ser similar a la siguiente, esto dependiendo de donde hayamos realizamos la instalación y la versión de mongoDB que tengamos:
C:\Program Files\MongoDB 2.6 Standard\bin\mongod.exe
Veamos en la siguiente imagen donde nos damos cuenta que todo salió bien cuando la consola nos indica que mongoDB espera por nuevas conexiones:
Instalando el driver para PHP
Ya que hemos instalado exitosamente nuestro servicio de mongoDB, ahora debemos indicarle a PHP como debe comunicarse con él, para ello debemos descargar el driver adecuado y activarlo en el php.ini como una extensión.
Para Windows podemos descargar el driver desde el repositorio oficial de mongoDB en la siguiente ruta: s3.amazonaws.com/drivers.mongodb.org/php/index.html donde tendremos varias opciones, debemos seleccionar la más reciente y estable.
Luego debemos mover el archivo al directorio de nuestras extensiones que sería:
C:\wamp\bin\php\php5.4.12\ext
Con la extensión añadida solo nos faltaría agregar en el php.ini la siguiente línea: extension=php_mongo.dll
Finalmente reiniciamos nuestro servidor Apache y ejecutamos phpinfo() para verificar que la extensión este habilitada, buscamos con CTRL + F la palabra mongo y veremos la información de nuestra extensión:
Con esto verificado ya estaremos listos para trabajar con PHP y mongoDB en nuestro ambiente Windows.
Instalación del driver en Linux
Para Linux lleva un par de pasos extra, primero debemos instalar Pear, para ello haremos lo siguiente en la consola o terminal:
sudo apt-get install php5-dev php5-cli php-pear
Luego procedemos a instalar el driver, para ello desde la consola o terminal ejecutaremos la siguiente instrucción:
sudo pecl install mongo
Finalmente debemos abrir nuestro php.ini y activar la extensión:
extension=mongo.so
Ya con ello podremos reiniciar nuestro servidor apache y estaremos listos para empezar a trabajar en Linux.
Principios de MongoDB
Ya hemos hecho suficientes configuraciones a nivel técnico para que mongoDB y PHP puedan comunicarse, sin embargo debemos ver un poco como funciona este motor de Bases de Datos para poder tener una idea de que podemos lograr con el NoSQL.
Un ejemplo clásico es el de autores y sus libros, en una Base de Datos relacional debemos crear una tabla de autores, luego debemos crear una tabla de libros y en esta última debemos tener un campo donde asociemos el id o identificador único del autor con cada libro, no es nada del otro mundo y es bastante funcional.
Esto demuestra que no hay una relación establecida para los autores y los libros, simplemente hay un documento que puede contener esa parte o no, de hecho es tan versátil que podemos crear un autor que contenga una propiedad llamada libros para niños y que otros autores no tengan, de esta forma no tendremos que crear relaciones ni tablas nuevas, simplemente el documento de la colección lo tendrá.
Conexión de PHP con MongoDB
Ya habiendo cubierto las bases adecuadas de todo lo que necesitamos saber antes de poder conectar con PHP, vamos a repasar que necesitamos:
- Un servidor para ejecutar PHP, por ejemplo Apache.
- El servicio mongoDB instalado y activo esperando conexiones.
- Haber instalado el driver de PHP para mongoDB.
- Un editor de texto plano y la posibilidad de ejecutar en nuestro servidor de PHP código que escribamos.
Probando la conexión
Lo primero que debemos hacer es crear un objeto de la clase MongoClient, esto no debe ser problemas si hemos instalado el driver correctamente, luego con ese objeto establecemos el nombre de nuestra Base de Datos, en este caso le colocamos biblioteca, luego establecemos el nombre de la colección y ahora podemos insertar datos, veamos el código fuente de este ejemplo:
<?php $mongo = new MongoClient(); $db = $mongo->biblioteca; $coleccion = $db->autores; $autor = array('autorid' => 1, 'nombre' => 'Dan Brown'); $coleccion->insert($autor); $autor = array('autorid' => 2, 'nombre' => 'Chuck Palahniuk'); $coleccion->insert($autor); $autor = array('autorid' => 3, 'nombre' => 'Max Brooks'); $coleccion->save($autor); ?>
Vemos como cada uno de los registros que en realidad son documentos de nuestra colección los construimos en forma de array en nuestro programa, luego simplemente pasamos ese array al objeto coleccion y ejecutamos el método insert, esto nos da fácilmente la forma de insertar datos en nuestra colección en mongoDB, veamos en la siguiente imagen como luego de ejecutar nuestro código en nuestro servidor, se genera nuestra Base de Datos llamada biblioteca:
Leer los datos de la coleccion
Ya que hemos visto como fácilmente insertamos los datos, vamos ahora a hacer una pequeña consulta, de esta forma demostraremos cómo funciona la extracción de datos de los documentos.
Para ello vamos nuevamente a hacer las conexiones necesarias como en el ejemplo anterior, pero ahora vamos a utilizar el método findOne() con el objeto coleccion, de esta forma podremos consultar por alguna de las propiedades del documento en la colección como por ejemplo el autorid que habíamos creado, veamos el código:
<?php $mongo = new MongoClient(); $db = $mongo->biblioteca; $coleccion = $db->autores; $autor = array('autorid' => 1, 'nombre' => 'Dan Brown'); $coleccion->insert($autor); $autor = array('autorid' => 2, 'nombre' => 'Chuck Palahniuk'); $coleccion->insert($autor); $autor = array('autorid' => 3, 'nombre' => 'Max Brooks'); $coleccion->save($autor); $documentos = $coleccion->findOne(array('autorid' => 2)); echo "Datos de la Consulta: <br><br>"; echo "<b>Llave primaria de Mongo:</b> {$documentos['_id']}<br>"; echo "<b>Nombre del Autor:</b> {$documentos['nombre']}"; ?>
Finalmente podemos recorrer los resultados como si fuese un array y simplemente indicar el índice de cada propiedad que necesitamos imprimir, adicionalmente hemos incluido dentro del ejemplo la propiedad _id de forma que podamos visualizar como mongoDB genera la llave primaria o campo identificador único. Veamos el resultado en nuestro navegador cuando ejecutamos nuestro código:
Administración web
Existen algunas herramientas que podemos utilizar para hacer la administración vía web de nuestras Bases de Datos en mongoDB.
Una de ellas es Genghis, para ello simplemente podemos descargar o clonar el proyecto en nuestro directorio www o equivalente donde podamos levantar una página en localhost y podremos ver nuestra instalación de mongoDB y sus datos, para finalizar veamos como luce esta útil herramienta:
Con esto hemos terminado este tutorial, ya tenemos una base para poder adentrarnos en el mundo del NoSQL, que está en la tendencia actual en la administración de grandes colecciones de datos, muchos quizá se cuestionen el hacer la conexión en PHP teniendo alternativas como node.js, la respuesta es simple, porque existen muchos sistemas de backend hechos en este lenguaje y con este conocimiento podremos reutilizar nuestros códigos de toda la vida mientras nos actualizamos a nuevas tecnologías.