Diveria

Mi empresa

domingo, 5 de abril de 2015

Bases de datos NoSQL - MongoDB - ¿Qué es MongoDB?

Si somos bien concretos y específicos se trata de una base de datos no relacional o NoSQL, una de las más conocidas del mercado (MongoDB) pero podemos encontrar otras como CochBase, BaseX, RavenDB, etc..

Este tipo de sistema de base de datos no son relacionales (RDBMS) y no implementan aspectos que comúnmente utilizamos en los sistemas tracionales como el lenguaje SQL de consulta, las transacciónes ni garantizan el ACID, no existe el JOIN.


Desde su arquitectura inicial son pensadas para escalar horizontalmente, e decir, no requieren de características adicionales para escalar  de esta forma con lo cual “todo es más simple”.

Hablando específicamente de Mongo, está escrito en C++, podemos consultar los datos almacenados utilizando JSON e internamente los documentos se almacenan en BSON (una representación binaria de JSON), es posible realizar operaciones CRUD.

Podría buscar los alumnos almacenados en la base de datos en la colección Alumnos ingresando el siguiente comando:

db.Alumnos.find({Nombre : “Juan”});

Los datos en este tipo de BD no requieren estar normalizados, con lo cual podremos guardarlos normalizados, desnormalizados o en forma híbrida está decisión es fundamentalmente un aspecto que puede impactar en el rendimiento.

Los datos son almacenados en colecciones, dentro de las diferentes bases de datos que puedo tener en un servidor Mongo. 

La instalación es muy simple y cuenta con una consola de comandos, donde puedo interactuar con la base de datos. (más información http://docs.mongodb.org/v3.0/tutorial/install-mongodb-on-windows/ )

- Mongob: es la base de datos propiamente dicha, gestiona todas las operaciones request, accesos a datos, etc.
- Mongo: Inica el Shell, es una consola interprete de Java Scritp que permite realizar todo tipo de operaciones.


El esquema lo definirá más que nada las consultas que voy a realizar normalmente, esto sería totalmente en una base de datos RDBMS que debería definir el esquema y luego almacenar los datos con ese criterio.

En los próximos artículos se dará más detalles sobre las características más destacadas. 

Links Relacionados:

Más información sobre el Shell: http://docs.mongodb.org/v2.2/faq/mongo/