• slidebg1

MongoDB La base de datos que estabas buscando


En Develapps hemos apostado por trabajar con Mongo-Express-Angular-Node (MEAN) además de Django. Con apenas 8 años de vida, esta base de datos se está haciendo un hueco entre los desarrolladores. Con una gran simplicidad de uso, capacidad para crecer virtualmente infinita y sus documentos en formato JSON, MongoDB está consiguiendo desbancar a grandes competidores y ya está posicionada como la 5ª más usada, incluyendo las relacionales.

 

 

Cómo es MongoDB

Si estás acostumbrado a trabajar con ficheros tipo JSON, es sencillo entender cómo funciona MongoDB. Es un almacén indexado de ficheros tipo JSON. Así de simple. Así de rápido. ¿Y por qué almacenar la información de esta forma? Porque es una forma muy sencilla -y común- de “parsear” documentos y es el formato nativo de Javascript, con lo que generar código con este lenguaje para trabajar con MongoDB es realmente sencillo. Es más, el cliente de MongoDB “funciona” con Javascript. De hecho, es la elección “por defecto” de la pila fullStack MEAN (MongoDB - Express – Angular – Node).

 

El planteamiento de los ingenieros de MongoDB a la hora de crearla fue simple: necesitamos una base de datos suficientemente sencilla para proyectos pequeños y que sea capaz de escalar mucho más allá que una base de datos relacional. Así que crearon una base de datos NoSQL orientada a documentos, en este caso, JSON. Al carecer de integridad referencial, MongoDB permite “repartir” la información entre distintos servidores sin problemas y montar clusters de computación realmente gigantescos. De ahí su nombre: MongoDB viene de “Humongous” (gigantesco).

 

Empresas como Expedia o Bosch han confiado en MongoDB para sus desplieges más “gigantescos” por sus características.

 

Pero, ¿qué la hace distinta?

 

 

Vayamos por partes, ya he comentado que almacena los datos en formato JSON, pero otras características interesantes son:

 

No tiene esquema: es decir, no tienes que decidir a priori qué formato tendrán los datos que vas a almacenar. Es más, puedes almacenar datos que tengan distintos esquemas sin problemas. Esto permite desarrollar sin tener que plantearse todo el modelo de datos al principio. Se puede empezar e ir refinando. Mejor aún, no tienes por qué almacenar “nulos” si no quieres, simplemente si no quieres que una clave aparezca.

Permite generar relaciones… si las necesitas: Aunque te he dicho que es no relacional, realmente MongoDB permite las relaciones entre objetos. A veces puede que no las necesites, ya que al ser JSON, puedes generar arrays de objetos dentro de el propio documento JSON. Eso sí, tú eres el responsable de la integridad referencial. Si pones una referencia a un objeto que no existe MongoDB no se quejará.

Tiene índices, validación, etc: Sí, es verdad, MongoDB no tiene integridad referencial. Y es así por diseño, pero tiene todo lo que necesitas en cuanto a eficiencia y validación: índices, validación de datos, incluso índices de texto, que te permiten buscar por una palabra y si le indicas el idioma, es capaz de encontrar variantes del idioma. Por ejemplo: Buscas “comer” y sería capaz de encontrar “come”, “comido”, ¡De forma automática!

 

 

Tipos de datos avanzados: dispones de cosas tan chulas como operaciones con datos de geolocalización (búsquedas de proximidad) o blobs (binarios).

GridFS: Se trata de unas colecciones especiales que permiten almacenar ficheros binarios de forma distribuida. Puedes almacenar ficheros de Petabytes y lo que es mejor, recuperar el trozo que quieras de un servidor distinto del cluster. Por ejemplo, si trabajas con vídeo, puedes hacer que MongoDB almacene cada trozo del vídeo en un servidor distinto y así las peticiones de cada trozo se pueden hacer a distintos servidores acelerando la descarga. ¿Has adelantado alguna vez un vídeo de Youtube y ha empezado a cargar enseguida? Pues exactamente eso es lo como se puede hacer.

Replicación y Sharding: Esta base de datos como ya he dicho está pensada para crecer en cluster. Se pueden crear réplicas de los datos para mejorar su disponibilidad. Un servidor puede caer, ser apagado por mantenimiento, etc. y todo sigue funcionando. Además están los “Shards” que permiten trocear la información y distribuirla en varios servidores.

Es Open Source: lo que significa que el código está disponible para que cualquiera pueda verlo, modificarlo, redistribuirlo, etc.

 

Todo esto viene “de casa” en MongoDB. Sin coste alguno.

 

 

Vale, pero ¿por qué no elegir una base de datos relacional?

 

Si bien MongoDB está surgiendo con mucha fuerza es posible que no sea una buena elección para tu próximo proyecto. En mi opinión, deberías elegir una base de datos relacional sí:

La integridad referencial es algo crítico. No te puedes permitir un fallo en este sentido y no te fías de poder implementarla programando.

Tus datos son altamente referenciales. No tiene sentido tratar de clavar un tornillo. Si tus datos dependen mucho de sus relaciones, usa una base de datos relacional. No obstante, en muchas ocasiones es posible transformar esos datos en un objeto JSON con pocas o ninguna relación.

Tienes un proyecto importante entre manos y ninguna experiencia en MongoDB ni bases de datos NoSQL. En este caso no te recomiendo intentarlo. Trabajar con una tecnología que no conoces en entornos de estrés puede ser un suplicio.

 

No obstante, si tienes que empezar un nuevo proyecto te recomiendo que le eches un vistazo. Es muy fácil empezar con MongoDB, hay drivers para una infinidad de lenguajes de programación y seguro que enseguida te das cuenta de la potencia que tiene. Y si el proyecto crece, o cambian las especificaciones, no te preocupes. Con MongoDB estarás preparado para ambas cosas.

 

Me gusta como suena, pero no sé por dónde empezar

 

Al principio no es sencillo cambiar de forma de pensar si estás acostumbrado a bases de datos relacionales. Pero MongoDB tiene unos cursos buenísimos e incluso puedes sacarte alguno de los certificados de la empresa.

 

En cualquier caso, si tienes un proyecto en el que necesitas un backend implementado, siempre puedes contactar con nosotros y te ayudaremos.

 

 

Públicado el 13/09/2017

Comparte este post:

CATEGORÍAS: Aprendizaje Desarrollo Tendencias