This page looks best with JavaScript enabled

MongoDB - La Mysql del NoSQL

 ·   ·   7 min read

Buenas , no hace mucho me hicierón una propuesta para trabajar como backend y requerian de conocimientos en bases de datos NoSQL, así que como buen autodidacta me puse a googlear y me encontre con la MySQL de las bases de datos no relacionales.

Esta se llamaba MongoDB y con tan solo leer sus características me dejo totalmente enamorado.

√ćndice :

    {1} Introducción:
¬†¬†¬† ¬†¬†¬† 1-¬ŅQu√© es MongoDB?
        2-Características
        3-Instalando MongoDB y Primeros pasos
**
{1}.1 : ¬ŅQu√© es MongoDB?**

A estas alturas y con esa introducción todos los que desconoceís de MongoDB os estareís preguntando

-¬ŅQu√© es MongoDB?- , ahora aclarar√© todo.

MongoDB es una base de datos relativamente “nueva”, esta se orienta a documentos…

-¬ŅComo a documentos?- , para poder trabajar c√≥modamente sobre mongoDB debemos de olvidarnos de la l√≥gica relacional¬†que MySQL nos implemento , as√≠ que realizar√© una comparativa para que os quede√≠s con los t√©rminos b√°sicos.

Términos SQL - Términos MongoDB  :

  • Database - Database
  • Tabla - Colecci√≥n
  • Fila - Documento(BSON)
  • columna - campo
  • index - index

Con esto ya tendremos una comparativa bastante clara y podemos proseguir con “¬ŅQu√© es MongoDB?”.

MongoDB fue programada en C++ de código abierto y fué pensada para ser rápida , escalable y sencilla.

Es muy importante destacar que MongoDB ofrece un mayor rendimiento que CouchDB(otra BD NoSQL) e incluso que MySQL.

¬ŅPara qu√© podemos usar MongoDB?

Puesto que MongoDB no usa digamos los “est√°ndares” de bases de datos no es muy recomendable usarla para¬†aplicaciones bancarias pero cuando tienes que almacenar grandes cantidades de datos como por ejemplo un blog si ser√≠a ideal.¬†

Tambien mucha gente recomienda crear híbridos en los que uses una BD Relacional para las transacciones y una no relacional como MongoDB para guardar datos,documentos.

{1}.2 : Características de MongoDB :
   
Bueno vamos a ver un poco por encima las características de MongoDB :

  • Ausencia de transacciones
  • Utiliza Almacenamiento Orientado a documentos (BSON)
  • Soporte a Querys din√°micas
  • Indexaci√≥n de Documentos
  • Indices Geoespaciales
  • Analisis de Rendimiento de Queries
  • Actualizaci√≥n de la informaci√≥n ‚Äúin-Place‚ÄĚ
  • GridFS
  • Replicaci√≥n de Datos
  • Implementaci√≥n de Auto Sharding
  • Utilizaci√≥n de Funciones¬† Map/reduce

Ausencia de transacciones

Se tiene en cuenta como desventaja pero es por esto por lo que MongoDB puede ser más rápida y escalable.

**Utiliza Almacenamiento Orientado a documentos (BSON) **

BSON(Binary-JSON) es una excelente forma de intercambio de información y de almacenaje. MongoDB almacena todo en un mismo documento y gracias a json el cual describe el contenido del documento no existe la necesidad de crear estructuras ni de esquematizar.

Aparte de las funcionalidades que posee JSON agrega otras como la habilidad de manejar datos binarios, permitiendoles ser sumamente r√°pida en la b√ļsqueda, indexaci√≥n, almacenamiento y recuperaci√≥n de la informaci√≥n, ya que BSON es f√°cil y r√°pidamente transformable en cualquier tipo de dato nativo de cualquier lenguaje de programaci√≥n.

Soporte a Querys din√°micas

MongoDB acepta la ejecución de queries dinámicas, es decir , se pueden ejecutar consultas sin haberlas definido antes como pasa en CouchDB.

Indexación de Documentos

A la hora de insertar documentos a una colecci√≥n se indexan con una clave/prefijo (_id) que proporciona al documento la capacidad de ser √ļnico,¬†esta _id se puede definir a la hroa de insertar pero si no se define el propio mongo te pondr√° una por defecto.

**
Indices Geoespaciales**

Esto permite por indexar informaci√≥n basandonos en geo/localizaci√≥n lo que es muy √ļtil a la hora de elaborar aplicaciones¬†para este area.

Analisis de Rendimiento de Queries

MongoDB nos acerca una herramienta para analizar consultas, desde luego muy √ļtil para analizar defectos o mejorarlas.

Actualizaci√≥n de la informaci√≥n ‚Äúin-Place‚ÄĚ

MongoDB puede actualizarse donde quiera que sucedan los cambios ya que realiza la escritura de la información en la memoría y retrasa la escritura en disco lo más posible (esto puede ser una desventaja) pero esto le proporciona su velocidad.

GridFS

Como ya comentamos mongo utiliza BSON para el almacenaje de datos binarios y su limite esta en 4MB de datos binarios en un mismo documento.

Para eso si necesitamos espacios adicionales para audios , videos , imagenes mongoDB nos acerca un sistema de almacenaje de metadatos, GridFS.

Este permite almacenar información del archivo en una coleccion de archivos.

Esto se divide en minimas partes(chunks) que se almacenan en una coleccion de chunks y permite que sea mas sencillo manejar y escalar.

Replicación de Datos

MongoDB tiene un mecan√≠smo llamado “replicaci√≥n maestro-esclavo”.

Este mecanismo es sencillo de entender , todas las peticiones de escritura se realizan en la BD maestra quien las “copia” en su r√©plica(esclavo) y as√≠ tenemos alternativa si la maestro falla porque la esclava ocupa su sitio.

Implementación de Auto Sharding

Esta es la caracter√≠stica m√°s √ļtilizada porque esta busca que se encarga del manejo de la data y de que esta vaya al servidor correcto para que¬†las queries se ejecuten de la forma m√°s eficiente.

Funciones  Map/reduce

  • Son las funciones m√°s poderosas en cuanto a consultor√≠a de data se refiere.
  • Estan en JS(JavaScript) y se ejecutan en el servidor.
  • Hay que dejar claro que mongoDB tiene una shell js para el manejo de BD’s y en ella podemos trabajar con c√≥digo js que nos permite explotar todo su potencial.
  • (Bucles para insertar documentos etc etc…)

La funci√≥n MAP se encarga de encontrar documentos que cumplen X condici√≥n/criterio , despues la funcion REDUCE se encarga de procesar esa informaci√≥n y¬†nos retorna un documento con la informaci√≥n “peticionada”/“encargada”.

{1}.3 : Instalando MongoDB

Es de l√≥gica que si vamos a ver como instalar MongoDB primero habr√° que descargarlo ¬ŅNo?.

Para esto acudimos a su website oficial ->Mongodb.org

Ahí podeís elejir para que OS y estas cositas , en mi caso Linux 32-bit

O tambien podemos hacerlo desde nuestra terminal :

sudo apt-get install mongodb

Para comprobar si todo quedo bien abrimos nuestra terminal y escribimos :

Se nos conecta a una bd por defecto “test” , vamos a crear nuestra propia database:

use nombredb




Podemos ver que databases tenemos creadas con :

show dbs

Aclaración : 

La base de datos no se guardar√° hasta que no guardemos algo dentro…

esto quiere decir que si la creo “use namedb” y luego me salgo de la shell la db no aparecera como creada.

Ok , creemos una colección para nuestra database e insertaremos un documento :

db.nombrecoleccion #asi creamos la coleccion  
db.nombrecoleccion.insert({"name":"sanko","twitter":"sankoSK"})

Podemos ver que colecciones tenemos creadas con :

show collections

Ahora usaremos .find() para comprobar que se creo el documento :

db.nombrecoleccion.find()

ahí vemos que nos creo el documento y lo pudimos buscar con .find() que daría un busqueda a todos entre los () podemos dar argumentos

Vamos a crear otro documento con una estructura totalmente diferente para probar la eficiencie de find() para pedirle una busqueda m√°s especifica:

db.nombrecoleccion.insert({"color":"azul","material":"metal"})  
  
db.nombrecoleccion.find({"color":"azul"})

Ahi comprobamos que nos muestra solo lo que nosotros queremos buscar , es decir , datos que contengan “color”:“azul” , si no , no muestra nada.

Existe otro m√©todo , para mi un poco in√ļtil la verdad pero es otro , xd , este muestra solo la primera fila del doc.

db.nombrecoleccion.findOne()

Bueno pasemos a el m√©todo count() , este si es m√°s √ļtil ya que nos dice el n√ļmero de los que tenemos almacenados :

db.nombrecoleccion.count()

supongamos que queremos actualizar datos y para esto tenemos a nuestro querido update()

db.nombrecoleccion.update({"name":"sanko"}, {$set:{"other":"fuckthishit"}})

Como pode√≠s observar en la imagen gracias a $set actualizamos el documento COLOCANDO “other”:“fuckthishit” despues de “name”:“sanko”

Ahora tocaremos sobre los m√©todos remove y drop¬† , es de suponer que algo tiene que ver con eliminar… xd,¬†el m√©todo remove nos servira para eliminar filas en los documentos , aqui un ejemplo :

db.nombrecoleccion.remove()

Esto lo que hará será borrar todas las filas del documento dejando este vacío:

pero tambien podemos usar a remove() con parametros para borrar algo de manera concreta :

db.nombrecoleccion.insert({"name":"sanko"})  
  
db.nombrecoleccion.insert({"color":"rojo"})  
  
db.nombrecoleccion.remove({"color":"rojo"})

ahí podeís ver que nos borro lo que le pedimos.

Bueno y por √ļltimo en esta “introducci√≥n” a mongoDB daremos el m√©todo drop qu√© es como el remove PERO drop no tiene la opci√≥n de poder¬†borrar datos especificos , si no que te vacia el documento y ya.

db.nombrecoleccion.drop()

Espero que vuestra opini√≥n acerca de esta database sea buena y qu√© m√°s que decir que el pr√≥ximo articulo sobre mongodb ser√° algo m√°s “profundo” , veremos¬†m√°s m√©todos , de autentificaci√≥n, y demas

Saludos , Sanko.

Share on
Support the author with

Avatar
WRITTEN BY