3. Introducción de MongoDB
MongoDB es un sistema de bases de datos NoSQL orientado a
documentos, a diferencia de MySQL, este no es una base de datos
relacional. Es open source, lleva entre nosotros desde el 2009. Está
escrito en C++ y tiene intención de aumentar la escalabilidad de un
sistema. Es compatible con Linux, OS X,Windows y Solaris.
Además de MongoDB existen otros sistemas NoSQL como por
ejemplo Cassandra, CouchDB, Redis, Riak, Membase, Neo4j y
HBase.
Considera que MongoDB fue diseñado para ser un motor de
búsqueda sobre aplicaciones en la nube, debes de ser bien
específico al momento de elegir un sistema NoSQL. Esto porque
tienen diferentes funciones o están optimizados para diferentes
tareas: Como Cassandra que fue diseñado para búsquedas
en Facebook
4. Concepto de MongoDB
Primero, ¿Qué significa NoSQL? El término NoSQL se utiliza
para indicar que dicha base de datos no utiliza el sistema
relacional tan ampliamente utilizado. Las bases de datos
NoSQL no se construyen sobre tablas y normalmente
tampoco utilizan el lenguaje SQL para realizar consultas.
Muchos sistemas NoSQL utilizan una arquitectura distribuida
y tolerante a fallos, lo que permite mantener los datos en
varios servidores de forma redundante. De esta forma es
bastante fácil escalar el sistema añadiendo más servidores.
Normalmente este tipo de base de datos escala
horizontalmente permitiendo administrar grandes cantidades
de datos.
5. Concepto de MongoDB
El nombre de MongoDB proviene de “humongous”, que significa
enorme en inglés, y es una base de datos NoSQL software libre.
MongoDB es un DBMS o mejor conocido como motor de base de
datos orientado a documentos, escalable y de alta performance. El
motor de base de datos MongoDB fue escrito totalmente en C++ y está
liberado como Open Source.
Este motor de DB es actualmente utilizado por muchos servicios online
de la más variada índole, por ejemplo como parte de la infraestructura
de Grooveshark, el servicio de streaming de música online.
6. Características importantes de MongoDB
Consultas Ad hoc
MongoDB soporta la búsqueda por campos, consultas de
rangos y expresiones regulares. Las consultas pueden
devolver un campo específico del documento pero también
puede ser una función JavaScript definida por el usuario.
Indexación
Cualquier campo en un documento de MongoDB puede ser
indexado, al igual que es posible hacer índices secundarios. El
concepto de índices en MongoDB es similar a los encontrados
en base de datos relacionales.
7. Características importantes de MongoDB
Balanceo de carga
MongoDB se puede escalar de forma horizontal usando el
concepto de “shard”.10 El desarrollador elije una llave shard, la
cual determina cómo serán distribuidos los datos en una
colección. Los datos son divididos en rangos (basado en la
llave shard) y distribuidos a través de múltiples shard. Un shard
es un maestro con uno o más esclavos.
MongoDB tiene la capacidad de ejecutarse en múltiple
servidores, balanceando la carga y/o duplicando los datos para
poder mantener el sistema funcionando en caso que exista un
fallo de hardware. La configuración automática es fácil de
implementar bajo MongoDB y nuevas máquinas pueden ser
agregadas a MongoDB con el sistema de base de datos
corriendo.
8. Replicación
MongoDB soporta el tipo de replicación maestro-esclavo. El maestro
puede ejecutar comandos de lectura y escritura. El esclavo puede
copiar los datos del maestro y sólo se puede usar para lectura o para
copia de seguridad, pero no se pueden realizar escrituras. El esclavo
tiene la habilidad de poder elegir un nuevo maestro en caso del que se
caiga el servicio con el maestro actual.
Agregación MapReduce
La función MapReduce puede ser utilizada para el procesamiento por
lotes de datos y operaciones de agregación. Esta función permite que
los usuarios puedan obtener el tipo de resultado que se obtiene
cuando se utiliza el comando SQL.
9. Almacenamiento de archivos
MongoDB puede ser utilizado con un sistema de archivos, tomando la
ventaja de la capacidad que tiene MongoDB para el balanceo de carga
y la replicación de datos utilizando múltiples servidores para el
almacenamiento de archivos. Esta función (que es llamada GridFS11 )
está incluida en los drivers de MongoDB y disponible para los lenguajes
de programación que soporta MongoDB. Esta base de datos expone
funciones para la manipulación de archivos y contenido a los
desarrolladores.
En un sistema con multiple servidores, los archivos pueden ser
distribuidos y copiados entre los mismos varias veces y de una forma
transparente, de esta forma se crea un sistema eficiente que maneja
fallos y balanceo de carga.
Ejecución de JavaScript del lado del servidor
MongoDB tiene la capacidad de realizar consultas utilizando
JavaScript, haciendo que estas sean enviadas directamente a la base
de datos para ser ejecutadas
10. MongoDB tiene drivers oficiales para los
siguientes lenguajes de programación:
C
C++
C# / .NET
Erlang
Haskell
Java
JavaScript
Lenguaje de programación soportado
node.JS
Perl
PHP
Python
Ruby
Scala
11. Organización y sistema
La ventaja que tiene MongoDB ante las bases de datos
racionales es la velocidad de consulta. Esto se logra
gracias a que los documentos son almacenados en
formato BSON, que es una versión modificada del ya
conocido JSON.
BSON pesa un poco más que un JSON regular, pero
gracias a que este guarda longitudes de campos, índices
de arrays, entre otras cosas, es mucho más rápido (y
menos costoso), acceder a la información que se consulta.
12. En Escritura
•MongoDB es más rápido en las operaciones de escritura.
•Para operaciones de escritura sencillas es entre 2 y 4 veces
más rápido. Para un número de escrituras elevado (el tests de
la escritura de 30 millones de registros de acceso, por ejemplo)
MongoDB duplica en rendimiento a MySQL.
•En escrituras concurrentes MongoDB es más rápido (15% y
30% en nuestras pruebas)
•MongoDB es más rápido en las operaciones de lectura.
•En lecturas concurrentes MongoDB es más rápido (15% y 40%
en nuestras pruebas).
En Lectura
13. Conclusión Final
En conclusión con este pequeño repaso de lo que es una base de
datos relacional y las base de datos no relacionales podemos ir
razonando en que situaciones se puede o no usar NoSQL, realmente
se podría usar para todo… Pero también queda de parte de los
desarrolladores realizar una aplicación que haga un buen uso de
MongoDB o alguna otra base de datos no relacional.
También se dice que es una versión libre que cuenta con más de
5000 usuarios. MongoDB puede ser usado para: la administración de
contenido, Inteligencia Operacional, E-Commerce, Administración de
datos de Usuarios y como fuentes de datos de alto volumen.
Muchas organizaciones en todo el mundo lo utilizan, por mencionar
algunas: Foursquare, Disney, The New York Times, MTV, Blink
Media, Ericsson, Radian6, entre otras.