Primeros pasos con bases de datos NoSql

Hace ya un tiempo había intentado dar mis primeros pasos sobre dases de datos NoSql y otros lenguajes distintos a PHP. En ese entonces decidi hacer cosas en Python (Django) y en Rubi (RoR), por falta de tiempo solo hice algunas pruebas, ahora quiero hacer mas tiempo para aprender sobre estas cosas y muchas mas. Por eso comencé mi proyecto de tomar una maquina virtual con Centos 5.5 para emular un ambiente de producción y compilar un apache, compilar php instalar apc, memcached,etc. (todo lo necesario para un ambiente de producción pesado los detalles los colocare en otro post).
Después de todo ese proceso de creación de mi ambiente de desarrollo lo mas parecido a un server que se puede alquilar en: hostgator o en theplanet (servicios de hosting que usado en proyectos). Instale para comenzar mi ya acostumbrado Codeigniter y el modulo de HMVC (ya no se como funcionar sin los modulos xD), pero como en uno de los proyectos actuales en los que estoy trabajando es algo con SocialEngine el cual usa como framework Zend y Mysql, y en otro proyecto estaba manejando alto trafico con WordPress y Mysql. Esos dos proyectos me hicieron comenzar dos cosas una buscar un framework con mejor rendimiento y introducirme en el mundo de las bases de datos NoSql y los arreglos de base de datos. Como resultado de esto conocí a MongoDB y Doophp, donde el primero es el motor de base de datos NoSql del que voy a hablar en este post y el segundo es un framework php del cual comentare en otro post.


Primero veamos exactamente que es mongodb y para eso voy a citar la introducción de ellos en su site en español:

Introducción a MongoDB

La combinación de las mejores características de las bases de datos JSON, almacenamiento clave/valor y RDBMSes.

Mongo (del anglosajón “humongous” que traduce “enorme”) es una base de datos de alto rendimiento, de código abierto y de esquema-libre orientada a documentos (schema-free document-oriented). MongoDB está escrito en C++ y ofrece las siguientes características:
  • Almacenamiento orientado a documento (la simplicidad y el poder datos de esquemas de tipo JSON )
  • Consultas dinámicas
  • Soporte completo de índices, incluido el interior de inner objects y cadenas embebidas
  • Consulta de perfiles (Query profiling)
  • Replicación y soporte de fail-over
  • Almacenamiento eficaz de datos binarios incluidos objetos grandes (por ejemplo, vídeos)
  • Auto-sharding de escalabilidad cloud-level (en la actualidad, en etapa alfa)
  • MapReduce para agregación compleja
  • Soporte Comercial Disponible
El objetivo fundamental de MongoDB es el de cerrar la brecha existente entre los valores almacenados de clave/valor (key/value) (que son rápidos y altamente escalables) y los sistemas tradicionales RDBMS (que son potentes en funcionalidad).
Este motor de bases de datos lo podemos instalar en Centos fácilmente. Primero agregamos los repositorios de Mongo.
Para 64-bit colocamos las siguientes lineas dentro del archivo /etc/yum.repos.d/10gen.repo:
[10gen]
name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0
Para 32-bit colocamos las siguientes lineas dentro del archivo /etc/yum.repos.d/10gen.repo:
[10gen]
name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686
gpgcheck=0
Luego de agregar los repositorios procedemos a instalar mongo:
yum install mongo-10gen
yum install mongo-10gen-server
Ahora solo tenemos que agregar los drivers de Mongo para PHP, para lo cual necesitamos tener los paquetes de desarrollo de php (en caso de ya tenerlos instalado este paso no es necesario):
yum install php-devel
Y finalmente instalamos el Driver
pecl install mongo
Verificamos si en nuestro archivo php.ini esta agregada la siguiente linea, en caso que no este la agregamos
extension=mongo.so
Podemos verificar que corre en consola con el comando mongo y entramos al interprete de comando de mongo o veamos en nuestro archivo /etc/mongod.conf donde dice port (en mi caso 27017) y accedemos al
http://localhost:27017 y vamos a ver información del mongo
En el siguiente post vamos a crear una base de datos y una coleción (tabla en SQL) y ver las funciones de CRUD en php.

Sergio Marin
Mis Primeros pasos con bases de datos NoSql

Comentarios