NoSQL - MongoDB


Las bases de datos durante mucho tiempo se rigieron mediante el esquema SQL, pero en la actualidad, las necesidades de las empresas y de los usuarios se incrementan día a día, es ahí cuando nacen las bases de datos NoSQL, las cuales presentan un versatilidad en su empleo y desarrollo, es decir las bases de datos NoSQL presentan la oportunidad de manejar y almacenar los datos de manera distinta, es por eso que se dice en el bajo mundo que el acrónimo se refiere a la frase “No Only Structure Query Languaje”.

Este tipo de bases de datos lo que propone es el almacenamiento de los datos de manera más sencilla, ya que se vuelven bases de datos no relacionales,  con una escalabilidad que es bastante fácil de implementar, permite el uso de búsquedas geoespaciales, en el caso de MongoDB los procedimientos almacenados son cambiados por funciones de JavaScript, permiten la implementación de la escalabilidad horizontal, su rendimiento de escritura y lectura tiende a hacer mejor que el de algunas bases de datos relacionales, aunque también es importante mencionar que los datos dentro de la BD no tienen una definición de datos (DTD) fija.


Algunas de las principales diferencias entre las bases de datos SQL y las NoSQL son:

Diversidad en la manera de almacenar sus datos: es bastante común encontrar que las bases de datos SQL utilizan como regla de almacenamiento el uso de Tablas, Filas y Columnas, mientras que en las bases de datos NoSQL, tenemos un mayor abanico de posibilidades en lo que almacenamiento se refiere, por ejemplo, documentos, grafico, almacenamiento del tipo clave – valor, etc.

Desacoplamiento y ligereza en su esquema: Las NoSQL nos permiten consultar la información contenida sin la necesidad forzar la existencia de Joins dentro de la sentencia, ya que no se requiere del uso de un esquema estricto para el funcionamiento correcto de las bases de datos.


Distribución de almacenamientos: Es bastante común encontrar que las NoSQL permiten ubicarse en diversos servidores, realizando un mejor desempeño en su funcionamiento, sin exigir grandes requerimientos en hardware.

MongoDB

MongoDB viene de la palabra “humongous”, lo cual significa enorme, y es servidor de bases de datos NoSQL, es multiplataforma, se encuentra orientado a documentos y es de esquema libre, lo que permite que la persistencia de los datos se encuentre de manera anidada (un campo puede contener más documentos o un tipo de dato único), esto permite que las consultas de los datos se realicen de manera ad hoc,  fue escrito en C++, y la licencia que posee es GNU AGPL v3.0, los principales puntos a favor son su rendimiento, velocidad y su sencillez de uso.



Como puedes darte cuenta la base principal de MongoDB son los documentos, los cuales corresponderían a las filas dentro de las bases de datos relacionales, los documentos se basan en el uso de clave (campo) para poder almacenar su valor dentro del documento (algo así como los nombres de columna), es importante mencionar que este nombre no debe ni puede repetirse dentro del mismo documento, las claves dentro de un documento se almacenan como Strings y se puede emplear cualquier carácter de la codificación UTF-8, salvo algunos caracteres, como lo son ‘\0’ (conocido como el carácter nulo), el cual MongoDB utiliza para indicar el final de una clave, otros caracteres que debes evitar usar son ‘$’ y ‘.’, ya que MongoDB los utiliza de manera interna.

Antes de continuar es importante mencionar que MongoDB es sensible a mayúsculas y minúsculas dentro de sus claves así pues es distinta la clave “NOMBRE” de “Nombre” o de “nombre”.

Ejemplo de un documento dentro de MongoDB:

{ “Usuario” :  {
“Nombres”:”Armando”,
“Apellidos”:”Gómez”
    }
}

Sí antes de leer este documento has llegado a utilizar el formato JSON (JavaScript Object Notation) te puede resultar muy familiar el ejemplo mostrado arriba, ya que MongoDB utiliza este tipo de formato para almacenar la información dentro de sus documentos, y permite el almacenamiento de estructuras tan complejas como las que se emplean en el intercambio de información de un servidor a un aplicación.

Aunque realmente parecer ser JSON puro y duro, MongoDB utiliza realmente una variante conocida como BSON, el cual es un formato binario codificado que permite mejorar el modelo de datos de JSON, lo cual te permite a ti como desarrollador implementar tipos de datos adicionales, estructuras de datos complejas, tales como objetos y arreglos embebidos.

Los Principales Tipos de Datos aceptados en MongoDB:



Cadenas de caracteres => String
Número enteros => Integer
Números decimales => Double
Boleanos => Boolean
Fechas => Date
Marcas de Tiempo => TimeStamp
Valores Nulos => NULL
Documentos Embebidos => Object
Punteros de Archivos Binarios = DataBinary
Arreglos de diversos tipos de datos



La manera en la que MongoDB trabaja al momento de actualizar un documento se puede resumir en estos 3 enunciados:

Permite un número ilimitado de usuarios leyendo dentro de la base de datos.
Solo puede existir una sola actualización al mismo tiempo, por colección y por base de datos.
Al momento en el comienza la escritura dentro de una colección, los lectores serán bloqueados, hasta que la escritura se termine y sea confirmada (escritor celoso). Algo que desde la versión 3 de MongoDB se mejoró ya que solo se bloquea el documento que se está actualizando, permitiendo a los lectores continuar con su trabajo.

Desde la versión 3 MongoDB viene con 2 motores de almacenamiento, los cuales son:

MMAPv1: Este el motor de almacenamiento por defecto, el cual trabaja con el bloqueo a nivel de colección.
WiredTiger: Este nuevo motor trabaja con bloqueo a nivel de documento y permite el uso de compresión, la cual solo está disponible para arquitectura de 64 bits.


Ventajas de las bases de datos NoSQL

- Permiten el almacenamiento de datos complejos como lo son documentos, en un solo ítem.
- Permiten la escalabilidad horizontal de una manera sencilla.
- Ahorras tiempo de desarrollo ya que no se requiere iniciar con un esquema perfectamente detallado.
- Son bastante rápidas para la inserción de nuevos datos y de las operaciones simples o de la ejecución consultas.
- La mayoría de las bases de datos NoSQL se centran en la disponibilidad y en la escalabilidad en lugar de la atomicidad y la consistencia.
- NoSQL se recomienda su implementación cuando se requiere un manejo de los datos una manera ágil, como por ejemplo:
    El comercio electrónico, Juegos, estadística en tiempo real, Aplicaciones móviles, etc.

Desventajas de las bases de datos NoSQL

- Al ser una tecnología nueva siempre es necesario capacitar al personal de ingreso.
- La mayoría de las NoSQL tiene sus propias reglas para almacenar los documentos, lo que impide su portabilidad.
- No existe una estandarización, lo cual representa un elevado costo si en un momento dado ser requiere realizar una migración.
- La mayoría de las herramientas son de uso dedicado para cada NoSQL.



NoSQL es el término empleado para definir a las bases de datos que no siguen la estructura de almacenamiento de datos como las RDBMS.



Enlaces Recomendados 
Desarrollador: MongoDB Inc. - ir.
Blog: https://www.mongodb.com/blog.
Twitter: https://twitter.com/MongoDB.

Comentarios

Entradas más populares de este blog

Geochart - Republica Mexicana

TypeScript (Tipos De Datos)

JS convertir una cadena de texto en mayúsculas, minúsculas o solo la primer letra de cada texto