Título: Introducción a la base de datos MongoDB en PHP Publicado por: madpitbull_99 en 14 Agosto 2011, 20:28 pm No voy a entrar en detalles sobre el concepto NoSQL (http://es.wikipedia.org/wiki/NoSQL) ni a explicar de forma detallada qué es y para que sirve. Si estás leyendo este artículo, doy por hecho que tienes unos conocimientos básicos de PHP y de dases de datos.
Los chicos de GenbetaDev han dedicado dos artículos para explicar el concepto NoSQ (http://es.wikipedia.org/wiki/NoSQL)L y una introducción a MongoDB: _El concepto NoSQL, o cómo almacenar tus datos en una base de datos no relacional (http://www.genbetadev.com/bases-de-datos/el-concepto-nosql-o-como-almacenar-tus-datos-en-una-base-de-datos-no-relacional) _Una introducción a MongoDB (http://www.genbetadev.com/bases-de-datos/una-introduccion-a-mongodb) Recomiendo leer los dos artículos citados más arriba si aún se tienen dudas sobre este tipo de bases de datos o sobre MongoDB. En este artículo nos centraremos en el uso de MongoDB desde una aplicación escrita en lenguaje PHP. Instalar MongoDB Lo primero que hay que hacer, es descargar desde la página oficial (http://www.mongodb.org/) la versión de Mongo correspondiente a nuestro sistema operativo, en mi caso lo instalaré en un sistema operativo Windows de 32 bits. Los desarrolladores nos recomiendan usar la versión de 64 bits (claramente se necesita un Sistema Operativo de 64 bits para que funcione), dado que, la versión de 32 bits solamente permite un tamaño máximo de 2 GB de la base de datos. (http://madzone.comoj.com/image_host/images/12253106634e47f3cf0ea228.60072524captura.png) (http://madzone.comoj.com/image_host/images/12253106634e47f3cf0ea228.60072524captura.png) Una vez descargada la versión que corresponde a nuestro SO, la descomprimimos en alguna carpeta. El siguiente paso es crear las carpetas donde MongoDB guardará las bases de datos, es recomendable crearlas en el raíz del disco local. Yo en mi caso, las he creado dentro del disco local C. Hay que crear una carpeta llamada data y dentro de esta carpeta, otra, llamada db. Si lo hacemos usando la consola, quedaría algo así: C:\ mkdir \dataA continuación, nos dirigimos a la carpeta donde hemos descomprimido los archivos descargados anteriormente. Dentro de esa carpeta, lo que más nos interesa es el directorio /bin, dicho directorio podemos agregarlo a la variable de entorno del sistema, si no queremos acceder siempre a esa carpeta cuando queramos arrancar el servidor. Los ficheros más importantes son mongod.exe y mongo.exe. El primero es el "daemon" o el servidor en si, mientras que el segundo es la consola de administración. Es posible ejecutar el servidor en modo standalone, pero en nuestro cosa, lo instalaremos como un servicio del sistema, para eso hay que ejecutar el siguiente comando: C:\mongo\bin>mongod --install --serviceName MongoDB --serviceUser root --servicePassword root --logpath ..\log\log.txtCon el parámetro --serviceName le indicamos el nombre que tendrá el servicio, con los dos siguientes, el usuario y la contraseña, mientras que con el último, le indicamos un archivo de texto donde en caso de error, pueda volcar la información de depuración, dicho archivo tiene que estar previamente creado. Ahora si miramos en los servicios del sistema, observaremos que uno nuevo se ha creado: (http://madzone.comoj.com/image_host/images/21213621374e47f99dd0d315.33710353captura2.png) (http://madzone.comoj.com/image_host/images/21213621374e47f99dd0d315.33710353captura2.png) (http://www.genbetadev.com/bases-de-datos/una-introduccion-a-mongodb#to-comments)Para arrancar el servicio, podemos lanzar en la consola lo siguiente: net start MongoDBPero si no queremos instalarlo como servicio, podemos ejecutar directamente el comando mongod sin ningún parámetro y tendremos el servidor corriendo de forma temporal. C:\mongo\bin>mongodUna vez arrancado el servicio, ese es el mensaje que obtendremos. Si accedemos con el navegador web a la dirección http://localhost:28017, veremos información sobre el servidor. Para crear una base de datos, tendremos que usar el gestor, está en la misma carpeta que el "daemon" y se llama mongo.exe. Lo ejecutamos y veremos información sobre el sistema. Procedemos a crear una base de datos llamada "php". Para eso usamos el comando use, seguido del nombre de la base de datos. (http://madzone.comoj.com/image_host/images/6789137904e47fe1daa5021.70556588captura3.png) (http://madzone.comoj.com/image_host/images/6789137904e47fe1daa5021.70556588captura3.png) La base de datos no se crea al instante, sino, se crea primero en memoria y luego se escribe en el disco. Lo mismo pasa con los datos introducidos en la base de datos. Esto es bueno porque aumenta la velocidad, pero en caso de corte de energía, los datos al estar en la memoria, se perderían. Ahora ya tenemos nuestro servidor MongoDB corriendo y una base de datos, llamada php. Trabajar con MongoDB desde PHP Si nuestra versión de PHP no incluye el drive para MongoDB, como es mi caso, hay que instalarlo manualmente. Nos dirigimos a la página de descarga del driver para PHP y elegimos la versión que se corresponde a la versión de nuestro PHP, en mi caso, la versión 5.3. Página de descargas del driver MongoDB para PHP (https://github.com/mongodb/mongo-php-driver/downloads). Una vez descargado el fichero, nos dirigimos a la carpeta donde PHP guarda las extensiones (en mi caso, al estar usando XAMPP, está en /xampp/php/ext) y copiamos el archivo llamado php_mongo.dll. Después hay que incluirlo en el fichero de configuración de PHP, php.ini, para que al arrancar cargue también el driver de MongoDB. Abrimos el fichero php.ini y agregamos la siguiente línea: extension=php_mongo.dll. Para que los cambios surjan efecto, hay que reiniciar el servidor Apache. Si al arrancar el Apache nos muestra algún error, hay que fijarse (lo pondrá en el error) en la versión de VC con la que está compilado nuestro Apache y elegir la dll (el driver de Mongo descargado anteriormente) que corresponda a la versión del VC de Apache. Ahora vamos a empezar con el código, primero vamos a probar si el driver de MongoDB realmente funciona bien: Código
Si recibimos el mensaje Ok, es que todo funciona perfectamente, como véis en el ejemplo, estamos instanciando la clase Mongo, al constructor de la clase podemos pasarle varios parámetros, como la dirección del servidor, el puerto, etc. En nuestro caso, al dejarlo todo por defecto, se conectará a localhost usando el puerto por defecto de Mongo. Código
El código no requiere muchas explicaciones, lo primero que hacemos es conectarnos al servidor (al instanciar la clase). Seleccionamos la base de datos (que hemos creado anteriormente), y la colección (es como una tabla de los motores SQL) e insertamos dos usuario que más tarde listaremos. A partir de aquí esto depende de vosotros, más abajo os dejo la documentación necesaria para seguir practicando, al final y al cabo, al poca diferencia entre usar MySQL, PostgreSQL o cualquier otro. _Seguridad en PHP al usar MongoDB (http://www.php.net/manual/en/mongo.security.php) _Documentación oficial (php.net) del driver nativo (http://www.php.net/manual/en/book.mongo.php) |