sql >> Base de Datos >  >> NoSQL >> MongoDB

Bases de datos NoSQL más populares compatibles con ClusterControl

NoSQL ("no solo SQL") es un enfoque para el diseño de bases de datos que permite el almacenamiento y la consulta de datos fuera de las estructuras tradicionales que se encuentran en las bases de datos relacionales. Fue creado para tratar principalmente con datos no estructurados que se generan a partir de numerosas fuentes, como documentos, audio, video, redes sociales, etc. Las bases de datos NoSQL son mejores para las aplicaciones modernas donde los modelos de datos evolucionan y la escalabilidad es esencial. Esta base de datos ha ganado popularidad en los últimos años, ya que las empresas ahora tienen que lidiar con datos no estructurados más que nunca. Este modelo almacena datos de manera diferente a las tablas relacionales tradicionales para permitir que los datos relacionados se mantengan dentro de una única estructura de datos. Una base de datos NoSQL se puede dividir en cuatro categorías:

  • Almacén de documentos

  • Bases de datos de valores-clave

  • Tiendas de columna ancha

  • Bases de datos gráficas

Las bases de datos NoSQL se utilizan a menudo en proyectos ágiles porque ofrecen modelos de datos flexibles. Esto permite a los desarrolladores centrarse en la lógica empresarial y los algoritmos en lugar de ocuparse de las actualizaciones del esquema. Si anticipa que el modelo de datos de su aplicación debe permanecer flexible para adaptarse a los cambios a lo largo del tiempo, el enfoque de esquema flexible de las bases de datos NoSQL puede ser adecuado para sus necesidades.

Según db-engines, las dos principales bases de datos NoSQL (julio de 2021) son MongoDB (clasificación:5) y Redis (clasificación:6). Curiosamente, estas bases de datos NoSQL no existían hace 12 años. Cómo surgieron y ganaron atracción, popularidad y cómo cambiaron el panorama del sistema de administración de bases de datos es la esencia principal de esta publicación de blog.

MongoDB

MongoDB es una base de datos orientada a documentos de código abierto, con el lanzamiento inicial en febrero de 2009. Las bases de datos de documentos contrastan fuertemente con la base de datos relacional tradicional. Almacenan toda la información de un objeto dado en una sola instancia en la base de datos, y cada objeto almacenado puede ser diferente de los demás. Esto elimina la necesidad de un mapeo relacional de objetos y permite una estructura sin esquema, una función en la que los desarrolladores de aplicaciones tienen la agilidad de evolucionar rápidamente debido a su modelo de datos flexible. En lugar de adaptar una aplicación para cumplir con los requisitos del esquema, los desarrolladores escriben la aplicación y el esquema sigue.

MongoDB es muy popular debido a su flexibilidad, facilidad de aprendizaje y menor costo de propiedad para comenzar. A los desarrolladores de aplicaciones les encanta MongoDB porque pueden cambiar el modelo de datos sobre la marcha y porque MongoDB usa documentos JSON para registrar datos. JSON está en todas partes y puede considerarse el formato de facto para enviar datos enriquecidos entre aplicaciones web y puntos finales. Su diseño simple y su flexibilidad hacen que sea fácil de leer y comprender y, en la mayoría de los casos, fácil de manipular en el lenguaje de programación de su elección.

MongoDB nació gracias a 10gen (antes de que se le cambiara el nombre a MongoDB Inc), comenzó a desarrollarlo en 2007 y salió con su primer lanzamiento de GA en febrero de 2009. Desde entonces, MongoDB ha evolucionado rápidamente y se considera uno de los proyectos de bases de datos más emocionantes para aplicaciones modernas. Según StackOverflow Developer Survey 2020, MongoDB sigue siendo la tecnología de base de datos que más quieren aprender los desarrolladores. En el momento de escribir este artículo, acaban de lanzar la versión 5.0 (13 de julio de 2021) y viene con muchas características notables, como la fragmentación en vivo, la compatibilidad con datos nativos de series temporales y la API versionada, adecuada para entornos de varias nubes.

Otra característica importante de MongoDB son las funciones integradas de alta disponibilidad, como la replicación, el conjunto de réplicas y la fragmentación. Es escalable horizontalmente, lo que ayuda a reducir la carga de trabajo y escalar su negocio con facilidad. Ofrece replicación a través de un protocolo de consenso de cosecha propia que se inspira en Raft y puede distribuir datos a través de fragmentos a través de su enrutador de consultas llamado mongos. Puede usar ClusterControl para implementar un conjunto de réplicas de MongoDB y una configuración de clúster fragmentada con facilidad.

MongoDB llamó la atención del público y los críticos debido a su debilidad en la configuración de seguridad predeterminada de MongoDB, lo que permite que cualquier persona tenga acceso completo a la base de datos. Se han robado datos de decenas de miles de instalaciones de MongoDB. Además, se han retenido muchos servidores MongoDB para pedir rescate. Esta exposición nos ha llevado a escribir un puñado de publicaciones de blog relacionadas con la seguridad relacionadas con MongoDB, como Secure MongoDB y Protéjase del Ransom Hack y Cómo proteger MongoDB del ransomware:diez consejos. En consecuencia, MongoDB ha mejorado los aspectos de configuración predeterminados para ser más seguros con MongoDB 3 y versiones posteriores.

Algunas grandes empresas dependen en gran medida de MongoDB como su almacén de datos, como Forbes, Toyota, SAP, Cisco, eBay y Adobe. MongoDB se considera un cambio de juego en el mundo de las bases de datos, convirtiéndose en una de las plataformas de bases de datos más importantes en la era de Internet.

ClusterControl es compatible con MongoDB desde la versión de julio de 2013 (v1.2.3) y ha estado mejorando continuamente desde entonces. ClusterControl incluso era compatible con TokuMX (MongoDB con el árbol fractal de Tokutek) en ese entonces, antes de que quedara obsoleto en MongoDB 3 debido a los cambios en el diseño del núcleo del flujo ascendente. En las notables mejoras recientes, ClusterControl presenta soporte para Percona Backup for MongoDB, una solución distribuida de bajo impacto para lograr copias de seguridad consistentes de clústeres fragmentados y conjuntos de réplicas de MongoDB. El proyecto Percona Backup for MongoDB se hereda y reemplaza a mongodb_consistent_backup, que ya no se desarrolla ni admite activamente.

Redis

Redis es otra tecnología de base de datos NoSQL más popular que se enfoca en el acceso frecuente de alta velocidad a los mismos fragmentos de datos, incluso si esos fragmentos de datos son grandes. En mayo de 2019, Salvatore Sanfilllippo lanzó la versión inicial de Redis, también conocido como Servidor de diccionario remoto, y llamó la atención de todos debido a sus características más ricas en la solución de base de datos en memoria de código abierto ya establecida en ese momento llamada Memcached.

Redis es súper rápido debido a la estructura de datos en memoria y al hecho de que se escribió en lenguaje C (esa es una de las razones por las que Memcached se reescribió en C). Debido a su alto rendimiento, los desarrolladores recurrieron a Redis para el almacenamiento en caché de datos cuando el volumen de operaciones de lectura y escritura supera las capacidades de las bases de datos tradicionales. Los datos a los que se accede con frecuencia pueden almacenarse en caché y servirse mediante almacenes de datos clave-valor en memoria y minimizar las lecturas y escrituras en sistemas más lentos basados ​​en disco que se centran en el almacenamiento persistente.

Tradicionalmente, los sistemas de administración de bases de datos están diseñados para proporcionar funcionalidades de datos sólidas en lugar de velocidad a escala. La caché de la aplicación a menudo se usa para almacenar copias de tablas de búsqueda y las respuestas a consultas costosas del DBMS, tanto para mejorar el rendimiento de la aplicación como para reducir la carga de la fuente de datos. A veces, el flujo de trabajo de una aplicación requiere la generación de resultados intensivos en recursos. Una vez obtenidos estos resultados, hay casos en los que los resultados podrían ser reutilizados posteriormente, como cuando se realizan agregados parciales. La memoria caché actúa como un medio intermedio ideal para conservar dichos resultados entre solicitudes. Aquí es donde brilla Redis.

Redis ha evolucionado desde un almacén de clave-valor simple y muy rápido hasta el almacenamiento persistente de datos y se utiliza como un intermediario de mensajería y un sistema de colas. Permite una verdadera apatridia para los procesos de las aplicaciones al tiempo que reduce la duplicación de datos o solicitudes a fuentes de datos externas. Según StackOverflow Developer Survey 2020, Redis se mantiene en la cima de la tecnología de bases de datos que los desarrolladores han expresado interés en continuar desarrollando. Al momento de escribir este artículo, Redis 6 es la última versión, con una implementación de ACL basada en el usuario nueva y más sofisticada, cifrado SSL de tráfico integrado y E/S de subprocesos múltiples, aunque el proceso de Redis sigue siendo de un solo subproceso. .

La implementación de Redis es compatible con ClusterControl 1.9.0 mediante el uso de nuestro nuevo paquete de GUI de ClusterControl de próxima generación disponible en una instalación independiente. En el momento de escribir este artículo, nos referimos a él como ClusterControl v2 etiquetado con Technology Preview, que solo admite la implementación de una replicación de Redis de hasta 5 nodos con Redis Sentinel con administración de copias de seguridad de AOF y RDB. Si está interesado, consulte esta guía sobre cómo instalarlo.

Resumen

MongoDB y Redis son, sin lugar a dudas, dos de las mejores soluciones de bases de datos NoSQL del mercado en este momento y se cree que mantendrán su posición en el ranking de las 10 mejores bases de datos durante bastante tiempo. Esa es la razón por la que ClusterControl es compatible con ambas tecnologías de bases de datos.