Universidad Nacional Abierta y a Distancia
Vicerrectoría Académica y de Investigación
Curso: Análisis y Especificación de Requerimientos
Código: 202016894
Tarea 2 – Desarrollo de base de datos NoSQL
Participantes:
Andres Cardona
Karime Vega
Ramon Rodriguez
Valentina Herrera Rocha
Tutora
Sonia Patricia Garzon Martinez
Universidad nacional abierta y a distancia - UNAD
Escuela de ciencias básicas tecnología e ingeniería - ECBTI
Bases de Datos
Barranquilla - Atlántico
2024
Desarrollo de los ejercicios
Ejercicio 1
1ra pregunta → Que tipos de bases de datos NoSQL existen
1. Bases de Datos Basadas en Documentos: Almacenan datos en documentos
(usualmente en formato JSON, BSON, etc.) y son ideales para almacenar y consultar
datos en forma de documentos. Estas bases de datos son muy flexibles, permitiendo
cambios en los esquemas de datos "sobre la marcha". Ejemplos populares incluyen
MongoDB y CouchDB.
2. Bases de Datos de Clave-Valor: Son las más simples, donde cada elemento
almacenado es un par de clave-valor. Son extremadamente rápidas tanto en lectura
como en escritura, ideales para almacenar sesiones de usuarios, configuraciones, y
diccionarios. Ejemplos incluyen Redis y DynamoDB.
3. Bases de Datos Columnares: Optimizadas para leer y escribir rápidamente grandes
volúmenes de datos distribuidos en columnas en lugar de filas, lo que las hace muy
eficientes para operaciones de agregación y análisis en tiempo real. Ejemplos de este
tipo de bases de datos son Cassandra y HBase.
4. Bases de Datos Basadas en Grafos: Diseñadas para almacenar y manipular
relaciones entre datos de manera eficiente, representando los datos como nodos
(entidades) y aristas (relaciones). Son útiles para redes sociales, sistemas de
recomendación, y análisis de grafos. Neo4j y JanusGraph son ejemplos de este tipo.
5. Bases de datos orientadas a objetos: Las bases de datos orientadas a objetos se
centran en manejar datos como objetos individuales en lugar de organizarlos en filas y
columnas como en las bases de datos relacionales. Este enfoque es especialmente útil
para aplicaciones que emplean modelos de datos orientados a objetos, facilitando la
manipulación y gestión de datos complejos.
2da pregunta→ Comparación entre ACID vs BASE
Concepto en español
ACID y BASE son modelos de transacciones de bases de datos que determinan cómo
una base de datos organiza y manipula los datos. En el contexto de las bases de datos, una
transacción es cualquier operación que la base de datos considere una sola unidad de trabajo.
Una transacción debe completarse en su totalidad para que la base de datos siga siendo
coherente. Por ejemplo, cuando se transfiere dinero de una cuenta bancaria a otra, el dinero
debe salir de su cuenta y agregarse a la cuenta del tercero. No se puede dar por finalizada la
transacción sin que se realicen ambos pasos.
Las bases de datos ACID priorizan la coherencia sobre la disponibilidad: toda la
transacción falla si se produce un error en cualquier paso de la transacción. Por el contrario,
las bases de datos BASE priorizan la disponibilidad por sobre la coherencia. En lugar de
registrar un error en la transacción, los usuarios pueden acceder a datos inconsistentes de
manera temporal. La coherencia de datos se logra, pero no de forma inmediata.
Concept in English
ACID and BASE are database transaction models that determine how a database
organizes and manipulates data. In the context of databases, a transaction is any operation
that the database considers a single unit of work. A transaction must complete fully for the
database to remain consistent. For example, when you transfer money from one bank account
to another, the money must leave your account and must be added to the third-party account.
You can call the transaction complete without both steps occurring.
ACID databases prioritized consistency over availability.the whole transaction fails if
a mistake occurs in any step within the transaction. In contrast, BASE data prioritizes over
consistency. Instead of failing the transaction, users can access inconsistent data temporarily.
Data is achieved, but not immediately.
3ra pregunta→ 1. El teorema de CAP
El Teorema CAP nos sugiere que todo sistema distribuido de almacenamiento de
datos es vulnerable a fallos de conectividad de la red, por lo que, frente al nivel de tolerancia
de la partición de los nodos, tendrá que realizar algún tipo de concesión entre el acceso a la
información o a su versión más reciente.
Este teorema fue presentado por Eric Brewer en el año 2000 y su nombre está basado
en los siguientes tres atributos claves de los sistemas distribuidos:
C - Consistencia (Consistency): Se refiere a la lectura coherente del valor actual del
dato desde cualquier instancia, es decir que los datos se encuentran sincronizados y
replicados en todos los nodos a la vez.
A - Disponibilidad (Availability): Se refiere a obtener una respuesta válida y rápida
para todas las solicitudes, aunque existan nodos inactivos, es decir el acceso a los datos sin
interrupciones.
P - Tolerancia a particiones (Partition tolerance): Se refiere a la capacidad del
sistema para permanecer estable y continuar procesando solicitudes a pesar de ocurrir una
partición (interrupción) entre la comunicación de los nodos.
El Teorema CAP nos da tres opciones de combinaciones de pares de atributos que pueden
garantizarse a la vez. Veamos cuáles son:
CA: Consistencia y Disponibilidad - Se garantiza el acceso a la información y el valor
del dato es consistente (igual) para todas las peticiones atendidas; de haber cambios, se
mostrarán inmediatamente. Sin embargo, la partición de los nodos no es tolerada por el
sistema de forma simultánea.
AP: Disponibilidad y Tolerancia a la partición - Se garantiza el acceso a los datos y el
sistema es capaz de tolerar (gestionar) la partición de los nodos, pero dejando en segundo
plano la consistencia de los datos, ya que no se conserva y el valor de dato no estará replicado
en los diferentes nodos al instante.
CP: Consistencia y Tolerancia a la partición - Se garantiza la consistencia de los datos
entre los diferentes nodos y la partición de los nodos se tolera, pero sacrificando la
disponibilidad de los datos, con lo cual, el sistema puede fallar o tardar en ofrecer una
respuesta a la petición del usuario.
4ta pregunta→ Colecciones y documentos en bases de datos NoSQL
Colecciones
Es aquella que administra un conjunto de campos/valores. Normalmente almacenan
los datos en forma de documentos JSON. Si queremos compararlo con una base de datos
relacional, las colecciones vendrían siendo las tablas.
Documentos
MongoDB se define como “Base de datos de documentos”, que es básicamente un
documento que tiene una estructura de datos por pares de campos y valores (field: value),
donde cada valor del campo puede ser cualquier “cosa”, un número, arreglo, cadena de texto
e inclusive otro documento.
5ta pregunta→ Qué es MongoDB
Concepto en español
MongoDB es una base de datos NoSQL de código abierto. Como base de datos no
relacional, puede procesar datos estructurados, semiestructurados y no estructurados. Utiliza
un modelo de datos no relacional orientado a documentos y un lenguaje de consulta no
estructurado.
MongoDB es muy flexible y permite combinar y almacenar múltiples tipos de datos.
También almacena y maneja mayores cantidades de datos que las bases de datos relacionales
tradicionales. MongoDB usa un formato de almacenamiento de documentos llamado BSON,
que es una forma binaria de JSON (JavaScript Object Notation o notación de objetos de
JavaScript) que puede acomodar más tipos de datos.
Concept english
MongoDB is an open source NoSQL database. As a non-relational database, it can
process structured, semi-structured, and unstructured data. It uses a non-relational,
document-oriented data model and a non-structured query language.
MongoDB is highly flexible and enables you to combine and store multiple types of
data. It also stores and handles larger amounts of data than traditional relational databases.
MongoDB uses a document storage format called BSON, which is a binary form of JSON
(JavaScript Object Notation) that can accommodate more data types.
6ta pregunta→Cómo y cuándo utilizarlo
Análisis en tiempo real
Como base de datos NoSQL, MongoDB es una buena opción para integrar y procesar
big data (es decir, enormes cantidades de datos diversos demasiado grandes para ser
procesados por bases de datos relacionales tradicionales).
Debido a que MongoDB es esquemas, varios tipos de datos se pueden almacenar y
acceder a la mosca. El soporte integrado de MongoDB para el fragmento también le permite
escalar datos horizontalmente en varios servidores. Además, proporciona la flexibilidad
necesaria para fusionar cientos de fuentes de datos en una sola visión para la analítica en
tiempo real y la integración de datos.
Gestión de los contenidos
El modelo de documento no estructurado de MongoDB lo convierte en una excelente
opción para la gestión de contenidos y la entrega de sitios web de comercio electrónico,
publicaciones en línea y sistemas de gestión de contenidos web. Su modelo de datos flexible
facilita el almacenamiento de varios tipos de contenido, incluyendo imágenes, texto y vídeo,
así como metadatos.
Todo el contenido relacionado se almacena en un solo documento, lo que facilita la
adición de nuevas características y atributos. MongoDB también se puede utilizar para
almacenar contenido generado por el usuario como comentarios, que se pueden analizar y
utilizar para guiar el desarrollo de contenido futuro.
Ejercicio 2
A continuación un link para ver las imagenes desarrollando la actividad
https://docs.google.com/document/d/1DMOJC5oOxmyysV7_wVPFQ1UE8o0JMUCa0P-cd_
Vam90/edit?usp=sharing
Referencias bibliográficas
Joe Celko. (2013). Joe Celko’s Complete Guide to NoSQL : What Every SQL
Professional Needs to Know About Non-Relational Databases. Morgan Kaufmann. (pág. 1 -
14).
https://bibliotecavirtual.unad.edu.co/login?url=https://search.ebscohost.com/login.aspx?direct
=true&db=nlebk&AN=485322&lang=es&site=ehost-live&ebv=EB&ppid=pp_1
Sarasa, Antonio. (2016). Introducción a las bases de datos NoSQL usando MongoDB.
Capitulo 1, 2 y 3. Barcelona. ESPAÑA, Editorial UOC. (pág. 17 - 113).
https://elibro-net.bibliotecavirtual.unad.edu.co/es/ereader/unad/58524?page=18
Vaish, Gaurav. 2013. Getting Started with NoSQL : Your Guide to the World and
Technology of NoSQL. Birmingham: Packt Publishing. Chapter 2.
https://bibliotecavirtual.unad.edu.co/login?url=https://search.ebscohost.com/login.aspx?direct
=true&db=nlebk&AN=562024&lang=es&site=eds-live&scope=site&ebv=EB&ppid=pp_Co
ver