domingo, 3 de junio de 2018

¿Qué es MongoDB?


MongoDB es una base de datos orientada a documentos de código abierto.

Facilita el desarrollo proveyendo alta performance, alta disponibilidad y fácil escalabilidad.

El motor almacena N cantidad de bases de datos, cada una de las cuales almacena un set de colecciones y cada colección almacena un set de documentos. Un documento es un par clave-valor.

Los documentos son dinámicos.

Un documento en MongoDB es un registro cuya estructura de datos se compone de pares clave-valor.

Estos documentos son similares a un objeto JSON.

El siguiente es un ejemplo de un documento:


A MongoDB document.



Los datos en MongoDB tienen un esquema flexible. Las colecciones en MongoDB no deben cumplir con una estructura definida, lo que facilita mapear un documento a una entidad u objeto.

El desafío a la hora de modelar datos está en balancear las necesidades de la App, las características de performance del motor de base de datos y los patrones de recuperación de datos.

La decisión sobre el diseño de los modelos de datos para MongoDB se resuelven alrededor de la estructura de los documentos y de cómo la App representa las relaciones entre los datos.

Existen dos herramientas que permiten a las Apps representar estas relaciones:

Referencias : Almacenan las relaciones entre los datos incluyendo links desde un documento a otro.
La Apps pueden resolver esas referencias accediendo a los datos relacionados.
En términos generales, estos son los modelos de datos normalizados.

Documentos Embebidos: Capturan las relaciones entre los datos almacenando la información relacionada en una única estructura documental.

Los documento en MongoDB hacen posible embeber estructuras en un campo o arrays dentro de un documento.

Este modelo de datos desnormalizado permite a las Apps obtener y manipular datos relacionados en una única operación.

Crecimiento del Documento: algunas actualizaciones sobre los documentos pueden incrementar el tamaño de los mismos. 

Atomicidad: Las operaciones son atómicas. Lo que significa que una operación no puede cambiar más de un documento. Operaciones que modifican más de un documento en una colección se ejecutan sobre un documento a la vez.

Sharding: MongoDB utiliza el sharding para proporcionar escalabilidad horizontal. Esto permite particionar una colección dentro de la base de datos para distribuir los documentos de una colección a través de una serie de instancias de MongoDB.

Índices:  Los índices son usados para mejorar la performance. Se pueden crear índices a partir de los campos de uso común dentro de las queries que se manejan en la App. Además MongoDB crea índices únicos para el campo _id.

Las Colecciones pueden contener un gran número de Documentos. De ser posible, hay que evitar que se dé esta condición por motivos de performance. Es aconsejable juntar estos objetos más pequeños mediante alguna lógica que los agrupe. De esta manera habrá pocas copias de los campos comunes y habrá pocas entradas claves para el correspondiente índice.

Optimización de Almacenamiento para pequeños Documentos: Cada documento en MongoDB contiene algún tipo de sobrecarga la cual es normalmente insignificante, pero se torna lo contrario si los documentos son pequeños (uno o dos campos máximo).

Dejo link: https://www.mongodb.com/