Universidad de oriente Núcleo Monagas Escuela de ingeniería y ciencias aplicadas Departamento de Ingeniería de sistemas Administración de sistemas de base de datos (071-3622) Bases de datos no relacionales (NoSQL) Docente: Bachilleres: Msc. Aníbal Fariñas Arvelo, Jesús C.I: 28516610 Pérez, Jesús C.I: 29914067 Rangel, María C.I: 30439811 Maturín, febrero 2024 Índice Bases de datos no relacionales (NoSQL) ................................................................................... 1 1. Origen de las Bases de Datos No Relacionales (NoSQL):............................................... 5 2. Limitaciones de las Bases de Datos Relacionales: ........................................................... 6 3. Teorema CAP: .................................................................................................................. 7 4. Big Data: .......................................................................................................................... 8 5. Características de las Bases de Datos NoSQL: ................................................................ 8 6. 5.1 Esquema Flexible: ........................................................................................................ 8 5.2 Escalabilidad Horizontal............................................................................................... 8 5.3 Modelos de Datos Variados:......................................................................................... 9 5.4 Optimización para Operaciones de Lectura/Escritura Específicas: .............................. 9 5.5 Escalabilidad Lineal: .................................................................................................... 9 5.6 Escalabilidad Horizontal: ............................................................................................. 9 5.7 Habilidad de Distribución:............................................................................................ 9 5.8 Uso Eficiente de Recursos: ......................................................................................... 10 5.9 Libertad de Esquema: ................................................................................................. 10 5.10 Modelo de Concurrencia Débil: .............................................................................. 10 5.11 Consultas Simples: .................................................................................................. 11 Elementos ....................................................................................................................... 11 6.1 Documento: ................................................................................................................ 11 6.2 Tipos de Datos: ........................................................................................................... 11 6.3 Colecciones:................................................................................................................ 12 6.4 Base de Datos: ............................................................................................................ 12 Clasificación en función de su modelo de datos ............................................................ 13 7. 7.1 Orientadas a Clave-Valor (Key-Value Stores): .......................................................... 13 7.2 Orientadas a Columnas (Wide Column Stores):......................................................... 13 7.3 Orientadas a Documentos (Document Stores): .......................................................... 13 7.4 Orientadas a Gráficos (Graph Databases): ................................................................. 13 8. Ventajas de los Sistemas NoSQL: .................................................................................. 14 9. Inconvenientes de los sistemas NoSQL ......................................................................... 14 10. Diferencias esenciales entre NoSQL y SQL .................................................................. 15 10.1 Modelo de Datos: .................................................................................................... 15 10.2 Esquema: ................................................................................................................. 16 10.3 Escalabilidad: .......................................................................................................... 16 10.4 Consistencia: ........................................................................................................... 16 10.5 Lenguaje de Consulta:............................................................................................. 16 10.6 Transacciones:......................................................................................................... 17 10.7 Casos de Uso: .......................................................................................................... 17 11. Proveedores de base de datos NoSQL............................................................................ 17 Aplicaciones ............................................................................................................................. 19 12. Ejemplos de bases de datos NoSQL............................................................................... 21 13. Diagramas UML para Base de datos NoSQL ................................................................ 22 13.1 Diagrama de Clases UML:...................................................................................... 22 13.2 Diagrama de Componentes: .................................................................................... 22 13.3 Diagrama de Objetos UML:.................................................................................... 22 13.4 Diagrama de Actividad UML: ................................................................................ 23 13.5 Diagrama de Despliegue UML : ............................................................................. 23 Referencias bibliográficas ........................................................................................................ 24 1. Origen de las Bases de Datos No Relacionales (NoSQL): El surgimiento de las bases de datos NoSQL se enraíza en la necesidad de superar las limitaciones de las bases de datos relacionales en el contexto de la explosión de datos y la demanda de escalabilidad en el ámbito de las aplicaciones web y los entornos empresariales modernos. Históricamente, las bases de datos relacionales han sido la piedra angular de la gestión de datos, pero su arquitectura y modelo de datos relacional presentan desafíos cuando se enfrentan a la ingente cantidad de información generada por las plataformas online, redes sociales y aplicaciones de gran escala. El término "NoSQL" inicialmente se interpretó como "No SQL" o "Not Only SQL", subrayando la idea de que estas nuevas bases de datos no están restringidas al modelo relacional y proporcionan alternativas flexibles y ágiles. Este movimiento ganó impulso en la década de 2000, cuando compañías como Google, Amazon y Facebook enfrentaron problemas prácticos en la administración eficiente de grandes volúmenes de datos no estructurados y semi-estructurados. Diversos factores contribuyeron al surgimiento de las bases de datos NoSQL. Entre ellos se incluyen la necesidad de gestionar datos distribuidos en entornos escalables horizontalmente, la adaptación a esquemas dinámicos y la tolerancia a fallos en sistemas distribuidos. El teorema CAP (Consistency, Availability, Partition Tolerance), propuesto por Eric Brewer, también influyó en la concepción de estas bases de datos al señalar las limitaciones inherentes al garantizar simultáneamente consistencia, disponibilidad y tolerancia a particiones en sistemas distribuidos. Los pioneros en el desarrollo de bases de datos NoSQL incluyen sistemas como Apache Cassandra, MongoDB, y CouchDB, cada uno diseñado para abordar problemas específicos de escalabilidad y flexibilidad en la gestión de datos. A medida que la tecnología evolucionó, las bases de datos NoSQL se diversificaron en diferentes tipos, como bases de datos de documentos, columnares, clave-valor y orientadas a grafos, cada una con sus propias características y casos de uso particulares. Este cambio en el paradigma de gestión de datos ha transformado la forma en que las organizaciones abordan el almacenamiento y procesamiento de información a gran escala, proporcionando soluciones adaptadas a los desafíos contemporáneos de la administración de datos. 2. Limitaciones de las Bases de Datos Relacionales: Las limitaciones intrínsecas de las bases de datos relacionales han sido objeto de análisis y discusión en la literatura especializada. Según Date (2004), una de las restricciones fundamentales radica en la rigidez de su esquema, que impone una estructura fija y predefinida a los datos. Esta característica puede resultar especialmente problemática al tratar con datos no estructurados o semi-estructurados. Además, Codd (1970) señaló que las bases de datos relacionales presentan desafíos en términos de escalabilidad, destacando la limitación de la escalabilidad vertical. La dependencia de la mejora de rendimiento a través de la adición de recursos en un solo servidor puede volverse insuficiente en entornos que requieren escalabilidad horizontal para gestionar grandes volúmenes de datos y tráfico. Otra limitación documentada es la complejidad que puede surgir al manejar relaciones más intrincadas entre entidades. A medida que la complejidad de las relaciones crece, las consultas en bases de datos relacionales pueden volverse más complicadas y afectar el rendimiento global del sistema. En el ámbito de la modificación del esquema, Date (2004) subraya que realizar cambios en la estructura de una base de datos relacional existente puede ser un proceso laborioso y costoso, lo que podría ser una restricción significativa en entornos de producción. Estas limitaciones subrayan la necesidad de considerar enfoques alternativos, como las bases de datos NoSQL, para abordar eficazmente los desafíos emergentes en la gestión de datos en entornos contemporáneos. 3. Teorema CAP: El teorema CAP, propuesto por Eric Brewer, desempeñó un papel crucial en la conceptualización de las bases de datos NoSQL. Este teorema establece que en un sistema distribuido, es imposible garantizar simultáneamente Consistencia (C), Disponibilidad (A) y Tolerancia a particiones (P). La comprensión de este teorema ha influido significativamente en la arquitectura y diseño de bases de datos NoSQL, que buscan equilibrar estos tres aspectos en función de las necesidades específicas de una aplicación (Brewer, 2000). 4. Big Data: El término "Big Data" describe el fenómeno de la gestión y análisis de conjuntos masivos de datos que superan la capacidad de las herramientas de bases de datos tradicionales. Este concepto se popularizó con la obra "Big Data: A Revolution That Will Transform How We Live, Work, and Think" de Viktor Mayer-Schönberger y Kenneth Cukier, que explora cómo el análisis de grandes volúmenes de datos puede generar conocimientos significativos y transformar diversos aspectos de la sociedad (Mayer-Schönberger & Cukier, 2013). 5. Características de las Bases de Datos NoSQL: Las bases de datos NoSQL comparten varias características que las diferencian de las bases de datos relacionales tradicionales: 5.1 Esquema Flexible: A diferencia de las bases de datos relacionales con un esquema fijo, las NoSQL permiten esquemas flexibles, lo que facilita la adaptación a cambios en la estructura de los datos sin necesidad de modificar el esquema de toda la base de datos. 5.2 Escalabilidad Horizontal: Las bases de datos NoSQL están diseñadas para escalar horizontalmente, lo que significa que pueden gestionar grandes volúmenes de datos distribuyendo la carga de trabajo en múltiples nodos o servidores. 5.3 Modelos de Datos Variados: Incluyen diversos modelos de datos como bases de datos de documentos, clave-valor, columnares y orientadas a grafos, permitiendo a los desarrolladores elegir el modelo que mejor se adapte a sus necesidades. 5.4 Optimización para Operaciones de Lectura/Escritura Específicas: Muchas bases de datos NoSQL están optimizadas para operaciones específicas, ya sea lecturas rápidas, escrituras eficientes o búsquedas complejas, dependiendo de los requisitos de la aplicación. 5.5 Escalabilidad Lineal: La escalabilidad lineal es una característica clave que permite a estas bases de datos manejar un aumento proporcional en la carga de trabajo al agregar más nodos, manteniendo un rendimiento constante. 5.6 Escalabilidad Horizontal: La escalabilidad horizontal se refiere a la capacidad de una base de datos para manejar un crecimiento en el volumen de datos distribuyendo la carga entre múltiples nodos o servidores. En lugar de depender de un único servidor más potente (escalabilidad vertical), la escalabilidad horizontal implica agregar más nodos para distribuir la carga de trabajo. Este enfoque permite a las bases de datos NoSQL adaptarse fácilmente a grandes volúmenes de datos y a incrementos en la demanda, proporcionando un rendimiento consistente a medida que la infraestructura se expande. 5.7 Habilidad de Distribución: La habilidad de distribución en las bases de datos NoSQL se refiere a la capacidad de distribuir datos de manera eficiente a través de múltiples nodos o servidores. Esta distribución puede llevarse a cabo mediante la fragmentación de datos, donde diferentes partes de la base de datos residen en diferentes nodos. La habilidad de distribución es esencial para lograr la escalabilidad horizontal y garantizar que la carga de trabajo se distribuya de manera equitativa entre los nodos, evitando cuellos de botella y mejorando el rendimiento general del sistema. 5.8 Uso Eficiente de Recursos: Las bases de datos NoSQL están diseñadas para hacer un uso eficiente de los recursos disponibles. Al distribuir la carga entre varios nodos, se puede aprovechar mejor la capacidad de procesamiento y almacenamiento de cada servidor. Además, la capacidad de escalar horizontalmente permite agregar recursos según sea necesario, lo que contribuye a un uso más eficiente de los recursos en entornos dinámicos y cambiantes. 5.9 Libertad de Esquema: La "libertad de esquema" es una característica distintiva de las bases de datos NoSQL, permitiendo flexibilidad en la estructura de los datos almacenados. A diferencia de las bases de datos relacionales, que requieren un esquema rígido y predefinido, las bases de datos NoSQL permiten a los desarrolladores adaptar la estructura de los datos sin restricciones. En este sentido, Date (2004) señala que la libertad de esquema permite a los usuarios agregar campos o columnas de manera dinámica, facilitando la evolución de la base de datos conforme evolucionan los requisitos de la aplicación. 5.10 Modelo de Concurrencia Débil: El "modelo de concurrencia débil" en las bases de datos NoSQL se refiere al enfoque de manejar operaciones concurrentes. Según Brewer (2000), en un modelo de concurrencia débil, se tolera cierto grado de inconsistencia temporal entre réplicas distribuidas para lograr un mejor rendimiento y disponibilidad. Este enfoque reconoce que, durante operaciones concurrentes, puede haber breves períodos de discrepancia antes de que la consistencia sea restaurada. 5.11 Consultas Simples: Las bases de datos NoSQL están diseñadas para admitir consultas simples y eficientes. En concordancia con esta idea, Sadalage y Fowler (2013) explican que, dependiendo del modelo de datos (como documentos o clave-valor), las consultas en bases de datos NoSQL tienden a ser más sencillas y centradas en el acceso eficiente a los datos, ofreciendo un rendimiento rápido. 6. Elementos 6.1 Documento: En el contexto de las bases de datos NoSQL, un "documento" se refiere a una unidad básica de almacenamiento que generalmente contiene datos en un formato semiestructurado. Estos documentos pueden ser representados en varios formatos, como JSON, BSON (una representación binaria de JSON), XML o YAML. Cada documento puede contener información relacionada y puede variar en estructura, lo que proporciona una gran flexibilidad en la representación de datos. Los documentos se utilizan comúnmente en bases de datos de documentos como MongoDB, donde constituyen registros individuales que encapsulan información específica de una entidad. 6.2 Tipos de Datos: En bases de datos NoSQL, los "tipos de datos" se refieren a las distintas formas en que los datos pueden ser representados y almacenados. A diferencia de las bases de datos relacionales, donde los tipos de datos están predefinidos y estructurados en tablas, las bases de datos NoSQL permiten una variedad más amplia de tipos de datos. Esto puede incluir tipos simples como números, cadenas de texto, booleanos, así como tipos más complejos como arreglos, objetos anidados y otros tipos semiestructurados. La flexibilidad en los tipos de datos es una característica distintiva que se alinea con la naturaleza dinámica y diversa de los datos manejados por estas bases de datos. 6.3 Colecciones: Una colección es un conjunto lógico de documentos. Mientras que en las bases de datos relacionales se usan tablas para organizar datos, en bases de datos de documentos, como MongoDB, los documentos se agrupan en colecciones. Cada colección puede contener documentos con estructuras ligeramente diferentes, lo que facilita la adaptabilidad a cambios en los requisitos de almacenamiento sin afectar a otras partes de la base de datos. Las colecciones proporcionan una forma de organizar y gestionar datos de manera lógica y eficiente. 6.4 Base de Datos: Se refiere al almacenamiento centralizado que contiene una o más colecciones de datos. A diferencia de las bases de datos relacionales, donde se enfatiza la consistencia en la estructura de los datos, en las bases de datos NoSQL, la base de datos puede albergar colecciones con estructuras más flexibles. Cada base de datos puede representar un conjunto lógico de información relacionada, y las bases de datos NoSQL pueden gestionar múltiples bases de datos independientes en un solo sistema. La naturaleza distribuida y escalable de muchas bases de datos NoSQL permite gestionar grandes volúmenes de datos de manera eficiente y adaptarse a las demandas cambiantes de las aplicaciones modernas. 7. Clasificación en función de su modelo de datos 7.1 Orientadas a Clave-Valor (Key-Value Stores): Las bases de datos orientadas a clave-valor, como DynamoDB de Amazon, se caracterizan por almacenar datos como pares de clave y valor, ofreciendo eficiencia en la recuperación de datos mediante la clave (Amazon DynamoDB, n.d.). 7.2 Orientadas a Columnas (Wide Column Stores): Las bases de datos orientadas a columnas almacenan datos en columnas en lugar de filas. Esto permite la recuperación eficiente de datos específicos, siendo ideales para aplicaciones que requieren análisis y agregaciones de datos. Cada columna puede ser tratada de manera independiente, lo que brinda flexibilidad en la manipulación de datos. 7.3 Orientadas a Documentos (Document Stores): Las bases de datos orientadas a documentos almacenan datos en documentos semiestructurados (por ejemplo, JSON o BSON). Cada documento es único y puede contener campos variados. Esto facilita la representación de datos complejos y su evolución con el tiempo, proporcionando una mayor flexibilidad. 7.4 Orientadas a Gráficos (Graph Databases): Las bases de datos orientadas a gráficos están diseñadas para representar y almacenar relaciones complejas entre entidades. Utilizan estructuras de grafo con nodos y bordes para modelar conexiones. Esto las hace eficientes para consultas que involucran patrones complejos y relaciones. 8. Ventajas de los Sistemas NoSQL: Escalabilidad Horizontal: Los sistemas NoSQL, al estar diseñados para escalar horizontalmente, permiten la expansión del sistema distribuyendo la carga de trabajo entre múltiples nodos, proporcionando una escalabilidad eficiente (Cattell, 2011). Manejo de Grandes Volúmenes de Datos: Los sistemas NoSQL son adecuados para manejar grandes volúmenes de datos no estructurados o semi-estructurados, brindando flexibilidad en la gestión de información masiva (Sadalage & Fowler, 2013). Flexibilidad en el Esquema: Descripción: La libertad de esquema de los sistemas NoSQL permite la adaptación dinámica de la estructura de datos, facilitando cambios en el esquema sin afectar a toda la base de datos (Date, 2004). 9. Inconvenientes de los sistemas NoSQL Consistencia Relajada: Algunos sistemas NoSQL adoptan un modelo de consistencia relajada para lograr escalabilidad y disponibilidad, lo que puede resultar en datos inconsistentes durante ciertos periodos (Brewer, 2000). Complejidad en Consultas Complejas: La simplicidad en las consultas es una característica, pero puede resultar en limitaciones para realizar consultas complejas que involucren múltiples operaciones (Sadalage & Fowler, 2013). Falta de Estandarización: Descripción: La falta de un estándar consolidado en los sistemas NoSQL puede generar complicaciones al seleccionar y cambiar entre diferentes sistemas de bases de datos (Hecht & Jablonski, 2011). 10.Diferencias esenciales entre NoSQL y SQL Las diferencias entre bases de datos NoSQL y SQL (relacionales) abarcan varios aspectos, incluyendo el modelo de datos, la escalabilidad, la consistencia, el esquema y el lenguaje de consulta. 10.1 Modelo de Datos: SQL: Las bases de datos SQL son basadas en un modelo relacional, que organiza los datos en tablas con filas y columnas. La estructura está definida por un esquema fijo. NoSQL: Las bases de datos NoSQL ofrecen varios modelos de datos, como clave-valor, documentos, columnares o basados en grafos, proporcionando flexibilidad en la representación de datos. 10.2 Esquema: SQL: Las bases de datos SQL tienen un esquema fijo y predefinido que debe ser seguido. Cualquier cambio en la estructura requiere alteraciones en el esquema, lo que puede ser un proceso complejo. NoSQL: Las bases de datos NoSQL permiten esquemas dinámicos, permitiendo la adición o eliminación de campos sin requerir cambios globales en la base de datos. 10.3 Escalabilidad: SQL: La escalabilidad en bases de datos SQL se logra típicamente mediante escalabilidad vertical (añadiendo más recursos a un servidor). NoSQL: Las bases de datos NoSQL están diseñadas para escalar horizontalmente, distribuyendo la carga entre múltiples servidores o nodos. 10.4 Consistencia: SQL: Las bases de datos SQL tienden a priorizar la consistencia transaccional (ACID), garantizando que las transacciones se completen con éxito o se reviertan por completo. NoSQL: Algunas bases de datos NoSQL pueden adoptar modelos de consistencia eventual o consistencia relajada para mejorar la disponibilidad y la tolerancia a fallos. 10.5 Lenguaje de Consulta: SQL: Utiliza el lenguaje estructurado de consulta (SQL) para realizar operaciones como SELECT, INSERT, UPDATE y DELETE. NoSQL: Cada tipo de base de datos NoSQL puede tener su propio conjunto de operaciones y lenguaje de consulta. Algunos utilizan consultas similares a SQL, mientras que otros pueden utilizar métodos específicos del modelo de datos. 10.6 Transacciones: SQL: Las bases de datos SQL admiten transacciones ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad), garantizando la integridad de los datos en entornos críticos. NoSQL: Algunas bases de datos NoSQL pueden sacrificar ciertos aspectos de las transacciones ACID en favor de mejoras en la escalabilidad y rendimiento. 10.7 Casos de Uso: SQL: Tradicionalmente utilizado en aplicaciones con relaciones complejas entre datos y donde la integridad de la transacción es crucial, como sistemas de gestión empresarial (ERP) y aplicaciones financieras. NoSQL: Preferido en entornos con grandes volúmenes de datos, alta concurrencia, y donde la flexibilidad y escalabilidad son prioritarias, como aplicaciones web, redes sociales y análisis de big data. 11.Proveedores de base de datos NoSQL Existen varios proveedores de bases de datos NoSQL que ofrecen soluciones robustas para diversos casos de uso. A continuación, proporciono descripciones breves de algunos de los principales proveedores de bases de datos NoSQL: MongoDB: MongoDB es una base de datos orientada a documentos que almacena datos en formato BSON (Binary JSON). Proporciona flexibilidad en el esquema, escalabilidad horizontal y soporte para consultas complejas. Es ampliamente utilizado en aplicaciones web y móviles. Cassandra: Apache Cassandra es una base de datos orientada a columnas diseñada para proporcionar alta disponibilidad y escalabilidad lineal. Es especialmente adecuada para aplicaciones con grandes volúmenes de datos distribuidos. Couchbase: Couchbase combina la flexibilidad de un modelo de documentos con la velocidad y escalabilidad de un sistema de clave-valor. Ofrece una gestión eficiente de datos JSON, escalabilidad y características de tiempo real. Neo4j: Neo4j es una base de datos orientada a grafos que utiliza la estructura de grafo para representar y almacenar relaciones complejas entre entidades. Es ideal para casos de uso que involucran patrones de conexión. Amazon DynamoDB: DynamoDB es un servicio de base de datos NoSQL completamente administrado proporcionado por Amazon Web Services (AWS). Ofrece un rendimiento rápido y escalabilidad automática, siendo especialmente útil en entornos de aplicaciones web y móviles. Redis Redis es una base de datos en memoria que funciona principalmente como un almacén de estructuras de datos clave-valor. Es conocida por su alta velocidad y capacidad de manejar operaciones en tiempo real, como la mensajería y las listas ordenadas. Aplicaciones Los sistemas NoSQL encuentran aplicaciones en una variedad de escenarios donde la flexibilidad, la escalabilidad y la eficiencia en la manipulación de grandes volúmenes de datos son fundamentales. Como ejemplos tenemos: Aplicaciones Web y Móviles: Las bases de datos NoSQL son ampliamente utilizadas en el desarrollo de aplicaciones web y móviles. Su capacidad para manejar grandes volúmenes de datos no estructurados o semiestructurados, así como su capacidad de escalabilidad horizontal, las hace ideales para entornos con una alta concurrencia y un rápido crecimiento de usuarios. Gestión de Contenido y Catálogos de Productos: Descripción: En entornos donde se gestionan grandes cantidades de contenido multimedia o catálogos de productos con atributos variables, las bases de datos NoSQL, especialmente las orientadas a documentos, ofrecen flexibilidad para adaptarse a la diversidad de datos y esquemas cambiantes. Análisis de Big Data: Para el análisis de grandes conjuntos de datos, los sistemas NoSQL son utilizados en combinación con herramientas de procesamiento y análisis de big data. Su capacidad para manejar datos no estructurados y escalar horizontalmente los hace adecuados para entornos de big data. Redes Sociales y Recomendaciones: En plataformas de redes sociales, donde la relación entre usuarios, publicaciones y actividades es compleja, las bases de datos NoSQL, especialmente las orientadas a grafos, son utilizadas para modelar y analizar eficientemente estas relaciones. También son aplicadas en sistemas de recomendación para personalizar contenidos. IoT (Internet of Things): En entornos de IoT, donde se generan grandes cantidades de datos de dispositivos conectados, las bases de datos NoSQL son utilizadas para gestionar la variedad y volumen de datos generados por sensores y dispositivos IoT. Aplicaciones en Tiempo Real: En situaciones que requieren procesamiento y análisis de datos en tiempo real, como sistemas de monitorización o aplicaciones financieras, las bases de datos NoSQL, especialmente las basadas en clave-valor o en memoria, ofrecen un rendimiento rápido y eficiente. Desarrollo Rápido de Prototipos y Startups: Los sistemas NoSQL son a menudo elegidos en entornos de desarrollo ágil y startups, donde los requisitos de esquema pueden cambiar rápidamente. La flexibilidad en el esquema y la capacidad de escalabilidad horizontal son beneficiosas en estos contextos. Sistemas de Gestión de Sesiones y Caché: Para mejorar el rendimiento en aplicaciones que requieren una rápida recuperación de datos, como sistemas de gestión de sesiones en aplicaciones web, las bases de datos NoSQL, especialmente las basadas en clave-valor o en memoria, son utilizadas para almacenar y recuperar datos de manera eficiente. 12.Ejemplos de bases de datos NoSQL MongoDB: MongoDB es una base de datos NoSQL orientada a documentos. Almacena datos en formato BSON (Binary JSON) y permite una representación flexible de la información mediante documentos que pueden contener campos y estructuras complejas. MongoDB es conocida por su escalabilidad, rendimiento y facilidad de uso. Es ampliamente utilizado en aplicaciones web y móviles, así como en entornos que requieren manejo eficiente de datos no estructurados. Apache Cassandra: Cassandra es una base de datos NoSQL orientada a columnas diseñada para ofrecer alta disponibilidad y escalabilidad lineal. Es especialmente adecuada para entornos distribuidos con grandes volúmenes de datos. Cassandra utiliza un modelo de datos basado en columnas que permite un acceso eficiente a conjuntos de datos específicos y es capaz de manejar cargas de trabajo distribuidas. 13.Diagramas UML para Base de datos NoSQL Aunque los diagramas UML (Unified Modeling Language) son herramientas eficaces para modelar bases de datos relacionales, no son tan ampliamente utilizados para representar bases de datos NoSQL debido a la naturaleza flexible y variada de los modelos de datos NoSQL. Sin embargo, se pueden utilizar ciertos diagramas UML adaptados para brindar una visión general de la estructura y las relaciones en bases de datos NoSQL. Acá algunas adaptaciones posibles: 13.1 Diagrama de Clases UML: Este diagrama puede representar las clases de documentos y las relaciones entre ellas. Cada clase de documento podría tener atributos y métodos asociados. Las asociaciones pueden indicar relaciones entre documentos, como la inclusión de documentos anidados o referencias entre ellos. 13.2 Diagrama de Componentes: En lugar de clases, un diagrama de componentes podría ser útil para representar las columnas y sus relaciones. Los componentes pueden representar columnas individuales y sus asociaciones, proporcionando una vista estructurada de cómo se almacenan y se relacionan los datos. 13.3 Diagrama de Objetos UML: Descripción: Este tipo de diagrama puede utilizarse para representar instantáneas de datos específicos en un momento dado. Los objetos pueden representar documentos, registros o elementos específicos de la base de datos en un estado particular. 13.4 Diagrama de Actividad UML: Este diagrama puede ser útil para modelar el flujo de datos a través de operaciones y procesos en una base de datos NoSQL. Puede ilustrar cómo se manipulan los datos en diferentes etapas. 13.5 Diagrama de Despliegue UML : Si la base de datos NoSQL se despliega de manera distribuida, un diagrama de despliegue UML puede mostrar cómo se distribuyen los nodos y cómo se interconectan para garantizar la escalabilidad y la disponibilidad. Referencias bibliográficas Date, C. J. (2004). "An Introduction to Database Systems." Addison-Wesley. Codd, E. F. (1970). "A Relational Model of Data for Large Shared Data Banks." Communications of the ACM, 13(6), 377-387. DOI: 10.1145/362384.362685. Mayer-Schönberger, V., & Cukier, K. (2013). "Big Data: A Revolution That Will Transform How We Live, Work, and Think." Editorial. Brewer, E. A. (2000). "Towards Robust Distributed Systems." Proceedings of the 19th Annual ACM Symposium on Principles of Distributed Computing (PODC), 7-10. Date, C. J. (2004). "An Introduction to Database Systems." Addison-Wesley. Brewer, E. A. (2000). "Towards Robust Distributed Systems." Proceedings of the 19th Annual ACM Symposium on Principles of Distributed Computing (PODC), 7-10. DOI: 10.1145/343477.343502. Sadalage, P. J., & Fowler, M. (2013). "NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence." Addison-Wesley.