NoSQL - MongoDB

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.
+ El comercio electrónico, Juegos, estadística en tiempo real, Aplicaciones móviles, etc.
“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.
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
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.
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:
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