Cargando



Conexión de PHP con mongoDB

En este tutorial veremos cómo podemos establecer una conexión entre PHP y mongoDB para poder utilizar todo el poder de las Bases de Datos no relacionales en nuestros proyectos presentes y futuros.


nov 28 2014 15:33
Profesional
nov 29 2014 16:05
Las Bases de Datos NoSQL han ido tomando una gran relevancia en los últimos años. Su diseño escalable y la posibilidad de manejar las estructuras de una forma no relacionada hacen que sean una alternativa para las nuevas formas de desarrollo que se están gestando en el mundo.

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 de MongoDB
Lo primero que debemos hacer es instalar el servidor de mongoDB, con ello obtendremos el motor de Base de Datos para poder manejar nuestras nuevas bases NoSQL. Al ser un motor nuevo ha sido pensado para que pueda ser instalado en varias plataformas. Vamos a explicar cómo hacerlo en dos de los más importantes sistemas operativos de la actualidad Windows y Linux en su versión Ubuntu.


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:

conectar-php-con-mongoDB2.jpg


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.

Identificar la extensión
Una vez descargado el archivo, descomprimimos y buscamos la extensión que se adapte a nuestra versión de PHP, en mi caso como estoy corriendo la versión 5.4 utilizaré php_mongo-1.6.0RC2-5.4-vc9.dll y lo renombramos como php_mongo.dll.


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.

Colecciones y documentos
En primer lugar debemos saber que no existen tablas sino colecciones y estás no almacenan registros sino documentos, ello nos da la libertad de que no es necesario seguir una estructura rígida y que cada documento puede contener todos los datos que necesite.


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.

¿Cómo funciona mongoDB?
En mongoDB simplemente crearemos una colección llamada autores y cada documento será un autor, mongoDB se encarga de crearle un identificador único automáticamente, pero podemos añadir una propiedad que nos ayude a identificar cada autor de forma propia, luego podemos crear dentro de cada autor una nueva propiedad llamada libros y ahí almacenaremos todos sus títulos, por ello si queremos un autor que no tenga libros simplemente consultamos dentro de la colección al documento que no tenga la propiedad libros.


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:

conectar-php-con-mongoDB5.jpg


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.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X