0% encontró este documento útil (0 votos)
82 vistas207 páginas

cc3 Compressed

Este documento describe las bases de datos columnares, incluyendo su estructura de almacenamiento de datos por columnas en lugar de filas y los elementos clave como la llave de fila y las columnas. También discute las ventajas de las bases de datos columnares como consultas de agregación rápidas y escalabilidad, así como desventajas como falta de soporte para transacciones. Finalmente, proporciona ejemplos de bases de datos columnares en la nube como Amazon Redshift, Azure Synapse Analytics, BigQuery y Oracle Autonomous Data Warehouse.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
82 vistas207 páginas

cc3 Compressed

Este documento describe las bases de datos columnares, incluyendo su estructura de almacenamiento de datos por columnas en lugar de filas y los elementos clave como la llave de fila y las columnas. También discute las ventajas de las bases de datos columnares como consultas de agregación rápidas y escalabilidad, así como desventajas como falta de soporte para transacciones. Finalmente, proporciona ejemplos de bases de datos columnares en la nube como Amazon Redshift, Azure Synapse Analytics, BigQuery y Oracle Autonomous Data Warehouse.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 207

Sistemas de bases de datos 2

Clase 7
Jeannira Sic
¿Qué es una base de datos columnar?

Agenda de Estructura
Elementos en la fila

hoy Ventajas y desventajas


Ejemplos
columnares
de bases de datos
¿Qué es una base de datos
columnar?
Una base de datos columnar es un sistema de gestión de bases de datos (DBMS) que almacena
datos en columnas en lugar de filas. El objetivo de una base de datos columnar es escribir y leer
datos de manera eficiente desde y hacia el almacenamiento en el disco duro para acelerar el
tiempo que lleva devolver una consulta.

En una base de datos columnar, todos los valores de la columna 1 están físicamente juntos,
seguidos de todos los valores de la columna 2, etc. Los datos se almacenan en orden de registro,
por lo que la entrada número 100 para la columna 1 y la entrada número 100 para la columna 2
pertenecen al mismo registro de entrada. Esto permite acceder a elementos de datos individuales,
como el nombre del cliente, por ejemplo, en columnas como un grupo, en lugar de individualmente
fila por fila.
Estructura

Las bases de datos de columnas utilizan un


concepto llamado Keyspace. Un Keyspace
es como un esquema en el modelo
relacional. Este contiene todas las familias
de columnas (tipo de tablas similares en el
modelo relacional), que contienen filas,
que contienen columnas.
Estructura
Estructura
Una familia de columnas consta de varias filas.
Cada fila puede contener un número diferente de
columnas a las otras filas. Y las columnas no
tienen que coincidir con las columnas de las otras
filas (es decir, pueden tener diferentes nombres
de columna, tipos de datos, etc.).
Cada columna está contenida en su fila. No
abarca todas las filas como en una base de datos
relacional. Cada columna contiene un par de
nombre/valor, junto con una marca de tiempo.
Elementos en la fila

Row Key o Llave de fila: Cada fila tiene una clave única, que es un identificador único para
esa fila.
La columna: Cada columna contiene un nombre, un valor y una marca de tiempo (Name,
Value, Timestamp)
Nombre: Este es el nombre del par nombre/valor.
Valor: Este es el valor del par nombre/valor.
Marca de tiempo: Esto proporciona la fecha y hora en que se insertaron los datos. Esto se
puede usar para determinar la versión más reciente de los datos.
La compresión
Los almacenes de columnas son muy eficientes en la
compresión y/o partición de datos. La compresión
permite que las operaciones en columna, como MIN,
MAX, SUM, COUNT y AVG, se realicen muy rápidamente.

Ventajas
Consultas de agregación
Debido a su estructura, las bases de datos en columnas
funcionan particularmente bien con las consultas de
agregación (como SUM, COUNT, AVG, etc.).
Rápido para cargar y consultar
Las tiendas de columnas se pueden cargar
extremadamente rápido. Una tabla de miles de millones
de filas podría cargarse en unos pocos segundos.
Puedes comenzar a consultar y analizar casi de
inmediato.

Ventajas
Escalabilidad
Las bases de datos en columnas son muy escalables. Se
adaptan bien al procesamiento masivo en paralelo (MPP),
que implica la distribución de datos en un gran grupo de
máquinas, a menudo miles de máquinas.
No orientado a transacciones
Este es el factor más débil de esta tecnología. El hecho
de tener los datos guardados columna a columna nos
permite retornarnos las filas más rápidamente, pero al
insertar, actualizar o borrar un registro, se deberá hacer
en más de una ubicación. Por esta razón, este tipo de
bases de datos no se recomienda para sistemas de tipo

Desventajas OLTP orientados a transacciones y alta concurrencia.

Reportes operacionales
También llamados reportes de seguimiento en los que
se desea ver toda la información de una relación que
puede contener muchas tuplas. En algunos casos esto
puede resultar ineficiente comparado con los Row-
Stores

No existe un modelo de datos que soporte teoricamente


este modelo de base de datos
Amazon Redshift
Es un almacenamiento de datos basado en la nube a escala de
petabytes totalmente administrado para el almacenamiento y el
análisis de conjuntos de datos a gran escala. También es utilizado
para realizar migraciones de bases de datos a gran escala.
Está solución esta diseñada para permitir a los clientes basados en
SQL conectarse a las herramientas de Business Intelligence,
ofreciendo datos a los usuarios en tiempo real.
Se basa en PostgreSQL 8, ofrece un rendimiento rápido y consultas
eficientes que ayudan a la organización a tomar decisiones y
análisis de negocios sólidos.
Amazon Redshift vs Almacén de datos
tradicional
Costo y Escalabilidad
Rendimiento Permite una mayor flexibilidad y escala elástica.
A medida que cambian sus requisitos, puede
Consultas rápidas en grandes conjuntos
escalar hacia arriba o hacia abajo de forma
de datos, que tratan con tamaños de
instantánea para adaptarse a las necesidades
datos de hasta un petabyte. La velocidad
de capacidad y rendimiento con unos pocos
con la que procesa los datos es
clics en administración.
simplemente imposible de alcanzar en el
Los precios bajo demanda y en términos de
almacenamiento de datos tradicional.
costos garantizan que solo pague por lo que
usa.
Azure Synapse Analytics
(antes Azure SQL Data Warehouse)
Es un almacén de datos analíticos MPP a escala de petabytes
creado sobre la base de SQL Server, ejecutado como parte de la
plataforma en la nube de Microsoft Azure. Separa el
almacenamiento y el proceso facturando cada una por separado.

SQL DW abstrae las máquinas físicas y representa la potencia de


proceso en forma de unidades de almacenamiento de datos (DWU)
permitiendo a los usuarios escalar recursos de procesos sin
complicaciones.
Azure Synapse Analytics vs Almacén
de datos tradicional
Facilidad de uso Escalabilidad y Rendimiento
Gran variedad de opciones proporcionadas
Abstrae los recursos de proceso lejos del
a los usuarios finales para escalar el
usuario, representándolos en forma de DW, el
rendimiento de Azure Synapse Analytics.
usuario puede escalar verticalmente y reducir
Los usuarios pueden actualizar las máquinas
muy fácilmente para aprovisionar más o menos
individuales o agregar más recursos
recursos en su almacenamiento de datos.
informáticos en forma de máquinas
adicionales, que se pueden configurar para
escalar automáticamente.
BigQuery

Es un almacén de datos para empresas que resuelve el problema


de almacenar y consultar, al permitir realizar consultas de SQL de
alta velocidad mediante el poder de procesamiento de
infraestructura de Google.
BigQuery permite controlar el acceso al proyecto y los datos según
sean las necesidades de la organización.
BigQuery vs Almacén de datos
tradicional

Costo y escalabilidad
Las empresas pueden implementar los análisis y consultas que requieren sin la necesidad de
alquilar más espacio en el servidor o escalar sin una necesidad real.
La combinación de las capacidades de aprendizaje automático de BigQuery con conjuntos de
datos y estructuras existentes puede mejorar el diseño del almacenamiento de información,
facilitar las consultas y el análisis de datos, e incluso reducir los costos al eliminar estructuras
superfluas.
Oracle Autonomous Data
Warehouse
Es un servicio de almacenamiento de datos basado en la nube que
Utiliza la optimización de consultas continua, indexación de tablas,
resúmenes de datos y el ajuste automático para garantizar un
rendimiento alto constante, aunque la cantidad de usuarios y
volumen de datos aumenten.
Oracle Autonomous Data Warehouse
vs Almacén de datos tradicional

Escalabilidad autónoma Rendimiento y costos


La gestión autónoma permite ejecutar un
Puede triplicar de forma temporal el
almacén de alto rendimiento, seguro y de
procesamiento y la E/S para que esta
alta disponibilidad, al tiempo que se van
mantenga el rendimiento.
rediciendo los costos administrativos.
Snowflake Computing

Almacén de datos analítico el cual se proporciona como software


de servicio (SaaS). Proporciona un almacén más rápido, de fácil uso
y flexible. No está basado en una base de datos existente o
plataforma de software de Big Data como Hadoop, en su lugar este
utiliza un nuevo motor de base de datos SQL con una arquitectura
única diseñada para la nube. Tiene muchas similitudes con los
almacenes de datos empresariales, pero demuestra una
funcionalidad adicional y capacidades únicas.
Arquitectura
Snowflake vs Almacén de datos
tradicional

Escalabilidad y Rendimiento
Cuenta con la simplicidad de administración de datos de una arquitectura de disco compartido,
pero con el rendimiento y ventajas de escala horizontal de una arquitectura de nada compartido.
MariaDB SkySQL
Es la oferta de DBaaS, es un servicio de base de datos totalmente
administrado a través de un servicio en la nube por medio de
Google Clound Platforma (GCP).
Las ventajas que mantiene es el control de versiones SkySQL
garantiza que los usuarios estén siempre en la versión más
reciente, así como que cuenten con análisis y soporte
transaccional.
Al estar integrado con DBaaS proporciona monitoreo con métricas y
gráficos en tiempo real además de un análisis de carga de trabajo
que muestra el servicio de machine learning el cual identifica los
cambios en los patrones de carga de trabajo para una escala
proactiva de recursos y coherencia del servicio.
Características

Cuenta con toda la potencia de Maria DB Platform combinando diferentes tipos


de base de datos que van desde transacciones (configuración para OLTP),
análisis o almacenamiento de datos OLAP o si se requiere de una configuración
híbrida.
Apache Cassandra

Es un sistema de gestión de bases de datos (DBMS) de código


abierto para bases de datos muy grandes y estructuradas. La buena
escalabilidad, de estas bases de datos se pueden distribuir a
diferentes clústeres, por lo que Cassandra no se encuentra unida a
un único servidor.
Cassandra vs Almacén de datos
tradicional
Tolerante a Fallos Performance
Los datos son replicados automáticamente en Supera constantemente a las alternativas
varios nodos para la tolerancia a errores. populares de NoSQL en puntos de
Admite la replicación en varios centros de referencia y aplicaciones reales,
datos y los nodos con errores pueden ser principalmente debido a opciones de
reemplazados. arquitectura fundamentales.
MonetDB

Inova en todas las capas de un DBMS, por ejemplo, un modelo de


almacenamiento basado en la fragmentación vertical, una
arquitectura moderna de ejecución de consultas ajustada por CPU,
índices automáticos y de autoajuste, optimización de consultas en
tiempo de ejecución y una arquitectura de software modular.
MonetDB vs Almacén de datos
tradicional
Escalabilidad Vertical y Horizontal
La escalabilidad vertical puede aumentar los recursos relacionados con la memoria o la CPU del
servidor que utiliza MongoDB.
La escalabilidad horizontal puede crear diferentes nodos, los cuales permiten aumentar la
disponibilidad de la aplicación conforme el volumen de los datos o el número de accesos a la base
de datos.
¿Por qué utilizar una base de
datos columnar?
Las bases de datos columnares superan a las bases de datos relacionales tradicionales en
algunas áreas. Proporcionan acceso a los elementos de mayor relevancia, aumentando la
velocidad en consultas incluso en bases de datos de millones de registros.

Las bases de datos tradicionales ofrecen una fuente de datos completa, sin embargo, la
arquitectura de base de datos en columnas ofrece un análisis completo de los datos generales
de forma sencilla. La organización de las bases de datos columnares permite que los usuarios
puedan ver resultados más rápidos y análisis más eficientes.
¿Preguntas?
Gracias por su atención
Sistemas de bases de datos 2

Clase 8
JEANNIRA SIC
AGENDA DE HOY
¿Qué es Apache Cassandra?
Estructura
Características
Usuarios
Ventajas y desventajas
Teorema CAP
Ejemplo instalación
¿QUÉ ES APACHE CASSANDRA?
ES UNA BASE DE DATOS DISTRIBUIDA NOSQL DE
CÓDIGO ABIERTO EN LA QUE CONFÍAN MILES DE
EMPRESAS POR SU ESCALABILIDAD Y ALTA
DISPONIBILIDAD SIN COMPROMETER EL RENDIMIENTO.
LA ESCALABILIDAD LINEAL Y LA TOLERANCIA A FALLAS
PROBADA EN HARDWARE BÁSICO O INFRAESTRUCTURA
EN LA NUBE LA CONVIERTEN EN LA PLATAFORMA
PERFECTA PARA DATOS DE MISIÓN CRÍTICA.
¿QUÉ ES APACHE CASSANDRA?
BASE DE DATOS NOSQL DE TIPO COLUMNAR, DISEÑADA
PARA MANEJAR GRANDES VOLÚMENES DE DATOS.
CUENTA CON UNA ARQUITECTURA DISTRIBUIDA QUE
PERMITE TENER MÚLTIPLES REPLICAS EN DISTINTAS
MAQUINAS, LO CUAL NOS PROVEE ALTA DISPONIBILIDAD
Y TOLERANCIA A FALLOS.
NODO DATACENTER CLUSTER
Componente principal de Conjunto de nodos Conjunto de datacenters
cassandra, aquí es
almacenada la informacion
Características
principales
Características
principales
TOLERANTE A FALLAS
HÍBRIDA El soporte de Cassandra para replicar
en múltiples centros de datos es el
La arquitectura sin maestría y la baja
mejor en su clase, brinda una latencia
latencia significan que Cassandra
más baja para sus usuarios y la
resistirá una interrupción completa del
tranquilidad de saber que puede
centro de datos sin pérdida de datos,
sobrevivir a las interrupciones
en nubes públicas o privadas y en las
regionales. Los nodos fallidos se
instalaciones.
pueden reemplazar sin tiempo de
inactividad.
CENTRADA EN LA CALIDAD
Para garantizar la confiabilidad y la RENDIMIENTO
estabilidad, Cassandra se prueba en Cassandra supera sistemáticamente
clústeres de hasta 1,000 nodos y con las alternativas populares de NoSQL en
cientos de esquemas y casos de uso evaluaciones comparativas y
del mundo real probados con aplicaciones reales, principalmente
repetición, fuzz, basado en debido a elecciones arquitectónicas
propiedades, inyección de fallas y fundamentales.
pruebas de rendimiento.
SEGURIDAD Y
OBSERVABILIDAD
CONTROL
La función de registro de auditoría
Elija entre replicación sincrónica o
para operadores rastrea la actividad
asincrónica para cada actualización.
de DML, DDL y DCL con un impacto
Las operaciones asincrónicas de alta
mínimo en el rendimiento normal de la
disponibilidad están optimizadas con
carga de trabajo, mientras que fqltool
funciones como Hinted Handoff y Read
permite la captura y reproducción de
Repair.
cargas de trabajo de producción para
su análisis.
DISTRIBUIDA
Cassandra es adecuada para ESCALABLE
aplicaciones que no pueden permitirse El rendimiento de lectura y escritura
perder datos, incluso cuando todo un aumenta linealmente a medida que se
centro de datos falla. No hay puntos agregan nuevas máquinas, sin tiempo
únicos de falla. No hay cuellos de de inactividad ni interrupción de las
botella en la red. Todos los nodos del aplicaciones.
clúster son idénticos.
ELASTICIDAD
Cassandra transmite datos entre nodos durante las operaciones de escalado, como
agregar un nuevo nodo o centro de datos durante las horas pico de tráfico. Zero Copy
Streaming hace que esto sea hasta 5 veces más rápido sin vnodes para una
arquitectura más elástica, particularmente en entornos de nube y Kubernetes.
ALGUNOS USUARIOS DE CASSANDRA
DESVENTAJAS
La conexión de nuevos nodos
VENTAJAS puede volverse compleja
Se debe conocer previamente que
Alta disponibilidad
tipo de consultas se ejecutarán,
Tolerancia a particiones y escalado
esto debido a que no soporta joins,
group by, funciones de agregación,
etc.
Una base de datos en Cassandra se encuentra
representada de la siguiente manera:

KEYSPACE
TABLAS
PRIMARY KEY
PARTITION KEY
CLUSTERING KEY
Apache Cassandra fue lanzada en el año 2008 y fue
creada inicialmente por Facebook.
Más tarde fue traspasada a la Fundación Apache,
convirtiéndose en una herramienta Open Source, que
a día de hoy la sigue manteniendo.
Está inspirada tanto en Amazon Dynamo como en
Google BigTable.
Para comprender bien la base de datos Cassandra
es importante conocer el Teorema CAP.
TEOREMA CAP
Este Teorema lo que dice es que un sistema
distribuido no puede conseguir las tres siglas del
teorema, que son consistencia (Consistency), alta
disponibilidad (Avaiability) y tolerancia a particiones
(Partition tolerance).
Lo que quiere decir es que nuestras bases de datos
siempre se van a mover en la intersección de dos de
las tres características, pero nunca en el en el
triángulo amarillo, que sería la intersección de las tres.
Como vemos en la imagen, Apache Cassandra está
situada en la intersección de alta disponibilidad y
tolerancia a particiones, sacrificando un poco la parte
de la consistencia.
TOLERANCIA A LAS
PARTICIONES
Una partición es una interrupción de
DISPONIBILIDAD la comunicación dentro de un
sistema distribuido: una conexión
Disponibilidad significa que perdida o temporalmente retardada
COHERENCIA cualquier cliente que realiza una entre dos nodos. La tolerancia a las
solicitud de datos obtiene una particiones significa que el clúster
La coherencia significa que todos los respuesta, aunque uno o varios debe continuar trabajando a pesar
clientes ven los mismos datos al nodos estén inactivos. Otra forma de de las interrupciones de
mismo tiempo, independientemente describirlo: todos los nodos de comunicación que se produzcan
del nodo al que se conecten. Para trabajo del sistema distribuido entre los nodos del sistema.
que esto suceda, siempre que se devuelven una respuesta válida
escriban datos en un nodo, se debe para cualquier solicitud, sin
reenviar o replicar al instante en los excepción.
demás nodos del sistema antes de
que la escritura se considere
'satisfactoria'.
TIPOS DE BASE DE DATOS NOSQL DEL TEOREMA DE CAP
Las bases de datos NoSQL (no relacionales) son ideales para las aplicaciones de red
distribuidas. A diferencia de sus equivalentes SQL (relacionales) verticalmente
escalables, las bases de datos NoSQL son horizontalmente escalables y están
distribuidas por diseño: pueden escalarse rápidamente en una red creciente formada
por múltiples nodos interconectados.
BASE DE DATOS
CA
BASE DE DATOS AP una base de datos CA ofrece
coherencia y disponibilidad en todos
Una base de datos AP ofrece
los nodos. Sin embargo, no podrá
disponibilidad y tolerancia a las
hacerlo si hay una partición entre
particiones a expensas de la
dos nodos en el sistema; por lo
coherencia. Cuando se produce una
tanto, no puede ofrecer tolerancia a
partición, todos los nodos
errores.
BASE DE DATOS CP permanecen disponibles, pero los
que están en el extremo incorrecto
Una base de datos CP ofrece de una partición pueden devolver
coherencia y tolerancia a las una versión de los datos más
particiones a expensas de la antigua que los otros. (Cuando se
disponibilidad. Cuando se produce resuelve la partición, las bases de
una partición entre dos nodos, el datos AP suelen resincronizar los
sistema tiene que cerrar el nodo no nodos para reparar todas las
coherente (es decir, hacer que no incoherencias del sistema).
esté disponible) hasta que se
resuelva la partición.
CASSANDRA Y EL TEOREMA DE CAP (AP)
Apache Cassandra es una base de datos NoSQL de código abierto mantenida por Apache Software Foundation.
Es una base de datos de columna amplia que permite almacenar datos en una red distribuida. Sin embargo, a
diferencia de MongoDB, Cassandra tiene una arquitectura sin nodo maestro y, como resultado, tiene múltiples
puntos de error, en lugar de uno solo.

En relación con el teorema de CAP, Cassandra es una base de datos de AP: ofrece disponibilidad y tolerancia a
las particiones, pero no puede garantizar la consistencia todo el tiempo. Puesto que Cassandra no tiene un nodo
maestro, todos los nodos deben estar disponibles continuamente. No obstante, Cassandra proporciona
coherencia final al permitir a los clientes escribir en cualquier nodo en cualquier momento y reconciliar las
incoherencias lo antes posible.

Como los datos solo son incoherentes en el caso de una partición de red y las incoherencias se resuelven
rápidamente, Cassandra ofrece una funcionalidad de "reparación" para ayudar a los nodos a actualizarse con
sus homólogos. Sin embargo, la disponibilidad constante da como resultado un sistema de gran rendimiento
que podría compensar en muchos casos.
INSTALACIÓN CASSANDRA
INSTALAR JAVA
SUDO ADD-APT-REPOSITORY PPA:OPENJDK-R/PPA
SUDO APT-GET UPDATE
SUDO APT-GET INSTALL OPENJDK-8-JRE
VERIFICAR LA INSTALACIÓN
JAVA -VERSION
INSTALAR LAS DEPENDENCIAS
SUDO APT INSTALL APT-TRANSPORT-HTTPS GNUPG2 -Y
DESCARGAR Y AGREGAR LAS LLAVES
SUDO WGET -Q -O - HTTPS://WWW.APACHE.ORG/DIST/CASSANDRA/KEYS | SUDO APT-KEY ADD -
AGREGAR EL REPOSITORIO DESCARGADO
SUDO SH -C 'ECHO "DEB HTTP://WWW.APACHE.ORG/DIST/CASSANDRA/DEBIAN 311X MAIN" >
/ETC/APT/SOURCES.LIST.D/CASSANDRA.LIST'
ACTUALIZAR EL SISTEMA
SUDO APT UPDATE
INSTALAR CASSANDRA
SUDO APT INSTALL CASSANDRA -Y
VERIFICAR EL ESTADO DE LA INSTALACIÓN
SUDO SYSTEMCTL STATUS CASSANDRA
VERIFICAR EL ESTADO DEL NODO
SUDO NODETOOL STATUS
CONFIGURACIÓN CASSANDRA

LOGIN A LA TERMINAL DE CASSANDRA


CQLSH
CAMBIAR EL NOMBRE DEL CLUSTER
UPDATE SYSTEM.LOCAL SET CLUSTER_NAME = 'MY CLUSTER' WHERE KEY = 'LOCAL';
SALIR
EXIT;
EDITAR EL ARCHIVO DE CONFIGURACIÓN DE CASSANDRA
SUDO NANO /ETC/CASSANDRA/CASSANDRA.YAML
EDITAR LA DIRECTIVA CLUSTER_NAME, GUARDAR EL ARCHIVO Y SALIR
CLUSTER_NAME: 'MY CLUSTER'
LIMPIAR EL CACHE DEL SISTEMA
NODETOOL FLUSH SYSTEM
REINICIAR EL SISTEMA DE CASSANDRA
SUDO SYSTEMCTL RESTART CASSANDRA
VERIFICAR LOS CAMBIOS
CQLSH
CASSANDRA CON DOCKER

BAJAR CASSANDRA
DOCKER PULL CASSANDRA:LATEST
INICIAR CASSANDRA
DOCKER RUN --NAME CASSANDRA CASSANDRA
DOCKER RUN --RM -D --NAME CASSANDRA --HOSTNAME CASSANDRA --NETWORK CASSANDRA
CASSANDRA
CARGAR DATOS CON CQLSH
DOCKER RUN --RM --NETWORK CASSANDRA -V "$(PWD)/DATA.CQL:/SCRIPTS/DATA.CQL" -E
CQLSH_HOST=CASSANDRA -E CQLSH_PORT=9042 NUVO/DOCKER-CQLSH
INTERACTUAR CON CQLSH
DOCKER RUN --RM -IT --NETWORK CASSANDRA NUVO/DOCKER-CQLSH CQLSH CASSANDRA 9042 --
CQLVERSION='3.4.4'
LIMPIAR
DOCKER KILL CASSANDRA
DOCKER NETWORK RM CASSANDRA
¿Preguntas?

GRACIAS POR SU
ATENCIÓN
SISTEMAS DE BASES DE DATOS 2

CLASE 9

Jeannira Sic
AGENDA DE HOY

PUNTOS A TRATAR
Arquitectura y características
Modelado de datos
Almacenamiento de registros en
cassandra
Clave clúster y clave partición
Enunciado práctica 2
Arquitectura y
características
Es distribuida, lo quiere decir que la información está repartida a lo largo de
los nodos del cluster. Además ofrece alta disponibilidad, de manera que si
alguno de los nodos se cae el servicio no se degradará.
Escala linealmente, lo que quiere decir que el rendimiento de forma lineal
respecto al número de nodos que añadamos. Por ejemplo, si con 2 nodos
soportamos 100.000 operaciones por segundo, con 4 nodos soportaremos
200.000. Esto da mucha predictibilidad a nuestros sistemas.
Escala de forma horizontal, lo que quiere decir que podemos escalar nuestro
sistema añadiendo nuevos nodos basados en hardware commodity de bajo
coste.
Implementa una arquitectura Peer-
to-Peer, lo que elimina los puntos de
fallo único y no sigue patrones
maestro-esclavo como otros
sistemas de almacenamiento.
SOPORTA EL CONCEPTO DE DATA CENTER
PARA AGRUPAR LOS NODOS LÓGICAMENTE
Y TENER LOS DATOS MÁS CERCA DEL
USUARIO.
Modelado de
datos
Combina propiedades de una base de datos
clave-valor y una orientada a columnas. La
información se organiza de manera que toda
fila tiene una clave única y una serie de pares
de clave, valor de columna. Es importante tener
en mente estas características a la hora de
diseñar nuestro modelo de datos.
MODELADO DE
DATOS

Cuando diseñemos nuestro modelo debemos de guiarnos por el patrón de


acceso a los datos, hay que hacer un análisis de las queries que pretendemos
ejecutar contra nuestro sistema y de esta forma podremos diseñar un modelo
eficiente que pueda sacar partido de las ventajas de Cassandra.
Es importante también definir adecuadamente la clave de partición de nuestro
datos, ya que Cassandra se basará en esta clave para distribuir los datos a lo
largo del cluster. Si queremos aprovechar nuestro cluster debemos pensar en
distribuir los datos para evitar cuellos de botella.
También es recomendable, dado nuestro patrón de consulta, intentar minimizar
el número de particiones a las que hay que acceder durante una lectura.
Almacenamiento de
registros en Cassandra
Una base de datos en Cassandra es representada por una
keyspace, que almacenará las tablas. Para crear las
tablas será necesario definir la clave partición y la clave
clúster:

CLAVE DE PARTICIÓN
Su función es definir el nodo en donde se almacenará el
registro. Esto lo hace utilizando una función hash.

CLAVE DE CLÚSTER
Una vez definido el nodo en que se almacenará el registro,
el siguiente paso será guardarlo de acuerdo al orden
definido por el usuario, la clave clúster idealmente debe
de ser una marca de tiempo (timestamp).
Clave
clúster y
clave
partición
SISTEMAS DE BASES DE DATOS 2

¿Preguntas?
GRACIAS POR SU ATENCIÓN
Sistemas de bases de datos 2

CLASE 10
Jeannira Sic
AGENDA DE
HOY PUNTOS A TRATAR

Inserción
Tipos de datos más
utilizados
Lenguaje CQL
Ejemplo
INSERCIÓN
Un factor de replicación de uno
significa que solo hay una copia de
cada fila en el clúster de Cassandra

DEPENDIENDO DEL
REPLICATION
SE UBICA EL NODO SE APLICA LA
FACTOR, SE HACEN
COORDINADOR FUNCIÓN HASH
LAS REPLICACIONES
PARA DETERMINAR
NECESARIAS SOBRE
EN CUAL SE
LOS NODOS
INSERTARÁ
CONTIGUOS
INT

BOOLEAN
Tipos de
TEXT datos más
utilizados
TIMESTAMP

COLECCIONES
List, Map y Set
LENGUAJE CQL

Cassandra Query Language (CQL) es el Podemos interactuar con Cassandra mediante


lenguaje de acceso a datos en Cassandra, es CQL a través de la shell. de CQL,
un derivado reducido de SQL. En Cassandra cqlshell. También podemos usar
los datos están desnormalizados de manera herramientas gráficas como DevCenter o a
que el concepto de joins o subqueries no través de los drivers soportados para
existe. múltiples lenguajes de programación.
Keyspaces
Tables
Primary key
Insert
Delete
Where condition únicamente con campos incluidos en la llave primaria
Cuidado con el orden en el que se ponen los campos en el WHERE

Select
Update
Import
Export
CREAMOS UN KEYSPACE
CREATE KEYSPACE geeky WITH REPLICATION = {
'class' : 'SimpleStrategy', 'replication_factor'
: 1 };

VER TODOS LOS KEYSPACE


DESC KEYSPACES;

SELECCIONAR EL KEYSPACE Ejemplo


USE geeky;

CREAR TABLA USUARIO


CREATE TABLE users (
firstname text,
lastname text,
email text,
organization text,
PRIMARY KEY (lastname));
VER INFORMACIÓN DE TABLA
DESC SCHEMA;

INSERTAR DATOS
INSERT INTO users (firstname, lastname,
email, organization) VALUES ('Mario',
'Perez', '[email protected]', 'Geeky
Theory'); Ejemplo
VER DATOS INSERTADOS
SELECT * FROM users;

SELECCIONAR UN REGISTRO
SELECT * FROM users WHERE lastname=
'Panda';
ACTUALIZAR REGISTROS
UPDATE users SET organization='Geeky
Juegos' WHERE lastname='Catalan';

OTRA CONSULTA
SELECT * FROM users WHERE
lastname='Catalan';
Ejemplo
ELIMINAR UN REGISTRO
DELETE from users WHERE lastname =
'Ros';

ÚLTIMA CONSULTA
SELECT * FROM users;
GRACIAS POR SU ATENCIÓN ¿PREGUNTAS?
Sistemas de bases de datos 2

CLASE 11
Jeannira Sic
Sistemas de bases de datos
2

AGENDA DE
HOY
¿Qué es una base de datos clave-valor?
Elementos
Aplicaciones
Ventajas y desventajas
Ejemplos
MongoDB
¿QUÉ ES UNA BASE DE DATOS CLAVE-VALOR?
Esta modalidad de base de datos, key-value database o store en inglés, se basa en una tabla de tan solo dos
columnas. En una de ellas se guarda un valor y en la otra, una clave que representa una característica identificativa
única. Un valor puede ser sencillo, como una cadena de caracteres o un número entero, o pueden ser objetos
complejos (un documento también puede ocupar el lugar de un valor, aunque, entonces se hablaría de una base de
datos de documentos). En las bases de datos se pueden incluir también referencias a archivos, así como a tuplas
(conjunto de valores).
El contenido de la base de datos puede ser muy heterogéneo, por lo que es posible incluir objetos distintos en una
misma columna. Lo mismo se aplica a los rasgos identificativos. En la mayoría de los casos, las claves seguirán un
determinado esquema, pero esto no es indispensable. Tanto las cadenas de caracteres como los enteros se
pueden constituir siguiendo criterios libres.

Sistemas de bases de
datos 2
Sistemas de
bases de
datos 2
¿QUÉ ES UNA BASE DE
DATOS CLAVE-VALOR?
Una base de datos clave-valor es un tipo de base de datos no
relacional que utiliza un método simple de clave-valor para
almacenar datos. Una base de datos clave-valor almacena
datos como un conjunto de pares clave-valor en los que una
clave sirve como un identificador único. Tanto las claves como
los valores pueden ser cualquier cosa, desde objetos simples
hasta objetos compuestos complejos. Las bases de datos
clave-valor son altamente divisibles y permiten el escalado
horizontal a escalas que otros tipos de bases de datos no
pueden alcanzar.
¿QUÉ ES UNA BASE DE DATOS
CLAVE-VALOR?

Las bases de datos clave valor forman parte de la familia


de los modelos no relacionales. Estas utilizan un modelo
simple de almacenamiento de datos. Son conocidas por
su gran funcionalidad. Gozan del aprecio de los
desarrolladores y programadores gracias a sus
características de alta eficacia en ejecución de lectura y
escritura de datos.

Sistemas de bases de datos


2
Sistemas de
bases de
datos 2
BASES DE DATOS
CLAVE-VALOR
Una base de datos clave valor (Key-Value) es un tipo de base de datos
NoSQL que funciona con un modelo simple de claves y valores. Esto se
refiere al hecho de que la base de datos almacena en pares clave/valor.
La clave puede ser sintética o autogenerada, así como también puede
poseer diversos formatos. La condición obligatoria que ha de tener
dicha clave, es que debe ser única. Los valores por otro lado, se
construyen en una estructura simple, que acepta diferentes tipos de
formatos. Pueden ser numéricos, JSON u otros.
Otras características importantes que las bases de datos clave valor
poseen es que clasifican y almacenan los datos en diccionarios. Son
fáciles de escalar en sentido horizontal y brindan una alta velocidad en
materia de consultas y modificación de datos.
ELEMENTOS
La clave
La clave en un par clave-valor debe (o al menos, debería) ser única. Este es el identificador único que le permite
acceder al valor asociado con esa clave.
En teoría, la clave podría ser cualquier cosa. Pero esto puede depender del DBMS. Un DBMS puede imponer
limitaciones mientras que otro puede imponer ninguno.

El valor
El valor en un almacén de clave-valor puede ser cualquier cosa, como texto (largo o corto), un número, código de
marcado como HTML, código de programación como PHP, una imagen, etc.
El valor también podría ser una lista, o incluso otro par clave-valor encapsulado en un objeto.
Algunos DBMS de almacenamiento de claves le permiten especificar un tipo de datos para el valor. Por ejemplo,
puede especificar que el valor sea un entero. Otros DBMS no proporcionan esta funcionalidad y, por lo tanto, el valor
podría ser de cualquier tipo.

Sistemas de bases de datos


2
POSIBLES Las características simples pero ventajosas de las bases de datos

APLICACIONES clave valor permiten vincularla con diversos tipos de proyectos.


Podemos disfrutar de máxima funcionalidad con un diseño sencillo
para proyectos en los que la capacidad de almacenar y recuperar
datos sea importante.
Podemos considerarla en casos en los que los datos no sean
estructurados o cuando no es importante establecer relaciones entre
los elementos a vincular. Esta base de datos tiene una gran
potencialidad para ser implementada en el desarrollo de rápido de
prototipos.
Adicionalmente esta puede ser implementada en proyectos grandes
relacionados con almacenes de sesiones y carritos de e-shopping.
En cuanto al almacén de sesiones, su funcionamiento iniciaría con el
inicio de sesión y obviamente su duración, hasta el cierre o la
expiración de la sesión. En ese proceso se almacenaría en la base de
datos todos los tránsitos o escogencias realizadas por el usuario en la
página web. Se pueden incluir información del perfil, mensajes
Sistemas de bases de datos
enviados y recibidos, temas, promociones, descuentos etc.
2
POSIBLES
APLICACIONES Todo esto puede ser posteriormente analizado para modificar
progresivamente las sesiones y adaptarla a las preferencias y gustos
del usuario.
Los sitios de compras tienen hoy en día un tráfico de visitas bastante
altos. Se realizan miles de transacciones en segundos.
Estas bases de datos pueden manejar con facilidad la escalada de
información de los pedidos. Permitiendo que un gran número de
usuarios al mismo tiempo adquieran sus productos sin sufrir
ralentización de las operaciones.
Además estas bases de datos pueden manejar pérdida de nodos de
almacenamiento, ya que gozan de propiedades de redundancia
incorporada.

Sistemas de bases de datos


2
VENTAJAS Y DESVENTAJAS
Ventajas
Las bases de datos clave valor almacenan los datos en diccionarios. Esto nos garantiza tener la información, sin
importar su peso, en una clasificación funcional que podemos recuperar y usar en cualquier momento. La
velocidad y escalabilidad que ofrecen son de los puntos más fuertes de estas bases.

Desventajas
Estas bases de datos son muy importantes y funcionales, pero tienen sus puntos flojos. Comparte con el resto de
las NoSQL la debilidad de no tener estándares en el manejo de datos. En ocasiones los lenguajes de consultas son
básicos, impidiendo realizar trabajos de profundidad. Algunos gestores carecen de herramientas avanzadas para
su uso y configuración personalizada. Adicionalmente las consultas y el ordenamiento de la información pueden
ser realizados solo partiendo de la clave primaria.

Sistemas de bases de datos


2
REDIS
Este es un importante motor de base de datos de tipo
calve-valor. Esta BBDD NoSQL de Código abierto es
patrocinada y desarrollada por RedisLabs. Su diseño
principal está basado en el almacenamiento de tablas
de hashes aunque no es restrictiva solo hacia este
modelo. También tiene la posibilidad de ser utilizada
como una BBDD persistente.

Sistemas de bases de datos


2
COUCHDB
Esta una base de datos NoSQL que nace con
aspiraciones bastante altas. Su principal
desarrollador aspiraba a que CouchDB se convirtiera
en la base de datos más usada en internet. En 2008 el
proyecto pasa a formar parte de Apache Incubator.
Esta BBDD llega a nosotros con la intención de
facilitar la accesibilidad y compatibilidad web con
diferentes tipos de dispositivos. Su primera versión
estable llegó al público en el año 2010. En esta BBDD
los datos se incluyen en formato JSON. La forma en
la que los datos son organizados es según pares de
valor clave.
Sistemas de bases de datos
2
PROJECT
VOLDEMORT
Voldemort además de compartir nombre con el
villano más terrible del mundo mágico de Harry
Potter, es una base de datos de clave valor con muy
buena reputación. LinkedIn es uno de sus usuarios
más famosos.
Esta tiene la capacidad de replicarse en múltiples
servidores. Cuenta con nodos independientes que
evitan caídas de sistema y múltiples ventajas
adicionales.

Sistemas de bases de datos


2
AMAZON
DYNAMODB Esta es una base de datos de clave valor que ofrece altos de
rendimientos a cualquier escala.
Tiene propiedades multiregion y multimaestro totalmente
administrada y con módulos fuertes de seguridad. También
tiene respaldos, copias de seguridad y restauración para
aplicaciones a escala en línea.
En la actualidad es una de las bases de datos con más
clientes en el mundo. Cuenta con empresas de renombre
como Samsung, Toyota, Capital one, Airbnb como
principales consumidores de sus servicios.

Sistemas de bases de datos


2
MONGODB
MongoDB es una base de datos de documentos que ofrece una gran
escalabilidad y flexibilidad, y un modelo de consultas e indexación
avanzado.

Sistemas de bases de
datos 2
Sistemas de bases de
datos 2
DESARROLLO
FÁCIL

El modelo de documentos de MongoDB


resulta muy fácil de aprender y usar, y
proporciona a los desarrolladores todas las
funcionalidades que necesitan para
satisfacer los requisitos más complejos a
cualquier escala. Se proporcionan drivers
para más de diez lenguajes, y la comunidad
Sistemas de bases de
datos 2
ha desarrollado varias decenas más.
JAVASCRIPT

Sistemas de bases de
datos 2
PYTHON

Sistemas de bases de
datos 2
JAVA

Sistemas de bases de
datos 2
C++

Sistemas de bases de
datos 2
C#

Sistemas de bases de
datos 2
Sistemas de
bases de
datos 2
MongoDB almacena datos en documentos flexibles similares a
JSON, por lo que los campos pueden variar entre documentos
y la estructura de datos puede cambiarse con el tiempo
El modelo de documento se asigna a los objetos en el código
de su aplicación para facilitar el trabajo con los datos
Las consultas ad hoc, la indexación y la agregación en tiempo
real ofrecen maneras potentes de acceder a los datos y
analizarlos
MongoDB es una base de datos distribuida en su núcleo, por lo
que la alta disponibilidad, la escalabilidad horizontal y la
distribución geográfica están integradas y son fáciles de usar
MongoDB es de uso gratuito. Las versiones lanzadas antes del
16 de octubre de 2018 se publican bajo licencia AGPL. Todas
las versiones posteriores al 16 de octubre de 2018, incluidos
los parches lanzados para versiones anteriores, se publican
bajo Licencia pública del lado del servidor (SSPL) v1.
MONGODB

Advertising Presentation |
December 2020
CARACTERÍSTICAS

Alta disponibilidad con replicación y respaldo


integrados
Escalabilidad horizontal con fragmentación nativa
Seguridad integral
Validación nativa de documentos y exploración de
esquemas con Compass
Herramientas de gestión de automatización,
monitorización y respaldo
Base de datos como servicio completamente
elástica y con buenas prácticas integradas

Sistemas de bases de datos


2
Sistemas de bases
de datos 2

USAN
EMPRESAS
QUE LA
Sistemas de bases de datos
2

¿Preguntas?
Gracias por su atención
SISTEMAS DE BASES DE DATOS 2

Clase 12
Jeannira Sic
Agenda de hoy
¿Qué es una base de datos documental?
Características, funciones y métodos
Beneficios
Ventajas y desventajas
Tipos
Estructura y uso
Diferencia con las bases SQL
Ejemplos
¿Qué es una base de datos
documental?
Una base de datos documental es una de las principales variantes de las bases de datos no
relacionales o NoSQL. Se caracterizan por almacenar la información en registros, cada uno de los
cuáles funciona como una unidad autónoma de información.
Como su propio nombre indica, las bases de datos orientadas a documentos utilizan documentos
para el almacenamiento de todos los registros y los datos asociados a ellos. Cada uno de estos
registros puede almacenar distintos tipos de datos. A su vez, los documentos que contienen los
registros pueden tener diferentes formatos, desde archivos JSON o XML hasta documentos de
texto.
¿Qué es una base de datos
documental?
AL SER UN TIPO DE BASES DE DATOS NO RELACIONALES, OTRA DE SUS
PRINCIPALES CARACTERÍSTICAS ES QUE LA INFORMACIÓN NO ESTÁ
CONTENIDA EN TABLAS. POR EL CONTRARIO, ESTÁN PENSADAS PARA
EL ALMACENAMIENTO DE DATOS SEMIESTRUCTURADOS, LOS CUÁLES
SE ORGANIZAN EN DOCUMENTOS CON VALORES ASIGNADOS, LOS
CUÁLES PUEDEN SER CONSULTADOS POR LOS USUARIOS GRACIAS A
LAS DIVERSAS HERRAMIENTAS DE CONSULTA EXISTENTES.
GRACIAS A SU ESTRUCTURA Y A SU FLEXIBILIDAD A LA HORA DE
ALMACENAR INFORMACIÓN NO ESTRUCTURADA, LAS BASES DE DATOS
DOCUMENTALES OFRECEN UNA GRAN VERSATILIDAD.
¿Qué es una base de datos
documental?
Las bases de datos documentales son una de las más importantes dentro de los modelos no relacionales o
NoSQL. Durante mucho tiempo las bases de datos relacionales marcaron la pauta dentro de la era digital.
Esta etapa no ha quedado por completo en el pasado. Pero el mundo tecnológico es sorprendente. Se
reinventa en cuestión de segundos. Así ha pasado con las bases de datos y la irrupción de las NoSQL. En
nuestra vida diaria, las bases de datos tienen una incidencia importante. Sin importar su configuración,
diseño y funcionamiento, están dentro de los procesos que realizamos a diario. Ocupan parte fundamental
de nuestra vida y es importante conocerlo. Las BBDD están presentes en nuestras aplicaciones móviles y
softwares de ordenadores. En especial las Bases de datos documentales. Mientras más pasa el tiempo, más
nos conectamos a estas herramientas de trabajo. Esto también significa algo importante: cada vez
generamos y manejamos más datos.
¿Qué es una base de
datos documental?
UNA BASE DE DATOS DOCUMENTAL, TAMBIÉN DENOMINADA BASE DE
DATOS ORIENTADA A DOCUMENTOS, ES UN SUBCONJUNTO DE UN TIPO
DE BASE DE DATOS CONSTRUIDA BAJO NOSQL. LAS BBDD
DOCUMENTALES SON ALIADOS FUNDAMENTALES EN LOS QUE PODEMOS
CONFIAR PARA EL MANEJO DE VOLUMINOSAS CANTIDADES DE
INFORMACIÓN.
ESTAS SE COMPONEN DE CONJUNTOS DE INFORMACIÓN
ESTRUCTURADA EN REGISTROS Y ALMACENADAS EN UN SOPORTE
ELECTRÓNICO DESDE UN ORDENADOR O SERVIDOR. CADA UNO DE LOS
REGISTROS ES UNA UNIDAD AUTÓNOMA QUE CONTIENE INFORMACIÓN.
ESTOS REGISTROS A SU VEZ PUEDEN CONTENER DIFERENTES TIPOS DE
DATOS.
¿Qué es una base de datos
documental?
UNA BASE DE DATOS DE ESTAS
CARACTERÍSTICAS SE APOYA EN LA
UTILIZACIÓN DE DOCUMENTOS PARA LA
ESTRUCTURACIÓN DEL ALMACENAMIENTO Y
LAS CONSULTAS. ESTOS DOCUMENTOS SON
COMPUESTOS POR TODOS Y CADA UNO DE LOS
REGISTROS Y DATOS ASOCIADOS.
LOS DOCUMENTOS QUE CONTIENEN ESTAS
BASES DE DATOS PUEDEN REFERIRSE A
DOCUMENTOS DE TEXTO, ARCHIVOS XML O
JSON.
¿Qué es una base de datos
documental?
LA CONFORMACIÓN DE ESTAS BASES DE DATOS EN LUGAR DE ESTAR
INTEGRADA POR COLUMNAS CON NOMBRES Y TIPOS DE DATOS,
COMO SUCEDE EN LAS BBDD RELACIONALES, TIENE DATOS
SEMIESTRUCTURADOS EN FORMA DE DOCUMENTOS Y VALORES QUE
PUEDEN SER CONSULTADOS POR LOS USUARIOS CON LAS
DIFERENTES HERRAMIENTAS DE CONSULTA Y ANÁLISIS
PERTENECIENTES A ESTOS MODELOS NO RELACIONALES.
EL ESQUEMA O ARQUITECTURA DE ESTAS BBDD NOSQL PUEDE
VARIAR TANTO QUE NOS PUEDE SORPRENDER. ESTOS MODELOS DE
BASES DE DATOS PROPORCIONAN UNA FLEXIBILIDAD INCREÍBLE
QUE FACILITA EL MODELADO DE DATOS.
Características, funciones y
métodos
LAS BASES DE DATOS DOCUMENTALES SON CAPACES DE
ALMACENAR INFORMACIÓN EN DIFERENTES FORMATOS SIN
UNA ESTRUCTURA DEFINIDA. EN CUALQUIER CASO, LO
HABITUAL ES QUE LOS DOCUMENTOS EMPLEEN UN
FORMATO DE ARCHIVO, MIENTRAS QUE LOS DATOS
CONTENIDOS SÍ UTILICEN UNA ESTRUCTURA FIJA.
A PESAR DE QUE SU ESTRUCTURA ES COMPLETAMENTE
DISTINTA, ESTAS BASES DE DATOS PERMITEN REALIZAR LAS
MISMAS OPERACIONES BÁSICAS QUE LAS BASES DE DATOS
RELACIONALES, ESTO ES, AÑADIR, ACTUALIZAR O ELIMINAR
INFORMACIÓN, ADEMÁS DE REALIZAR LAS PERTINENTES
CONSULTAS POR PARTE DEL USUARIO.
Características,
funciones y métodos
A DIFERENCIA DE LAS BASES DE DATOS RELACIONALES, EN LAS BASES DE DATOS
ORIENTADAS A DOCUMENTOS NO ES NECESARIO RECORREN TODAS LAS
COLUMNAS DE UNA TABLA A LA HORA DE REALIZAR UNA CONSULTA. EN LUGAR
DE ELLO SE ASIGNA UN IDENTIFICADOR ÚNICO A CADA DOCUMENTO, DE MANERA
QUE A LA HORA DE HACER UNA CONSULTA SE COMPRUEBA EL MISMO
DOCUMENTO. ESTE IDENTIFICADOR PUEDE SER DE DIFERENTES TIPOS, POR
EJEMPLO UNA RUTA COMPLETA O UNA CADENA DE CARACTERES.
GRACIAS A ESTE FUNCIONAMIENTO, LAS BASES DE DATOS DOCUMENTALES SE
EMPLEAN PARA EL ALMACENAMIENTO Y CONSULTA DE DATOS
SEMIESTRUCTURADOS, LOS CUÁLES NO TIENEN UN ESQUEMA PREVIAMENTE
DEFINIDO Y QUE SERÍAN DIFÍCILES (O INCLUSO IMPOSIBLES) DE GESTIONAR EN
LA TRADICIONALES BASES RELACIONALES.
Beneficios
MODELADO FLEXIBLE
Los datos que utilizan nuestras aplicaciones web, móviles o sociales se ven constantemente sujetas a cambios. Todos los días
necesitamos incluir o eliminar algún dato ya que estos se corresponden con las necesidades o realidades en las que debemos
desempeñarnos. Las Bases de Datos Documentales disminuyen la necesidad de utilizar modelos relacionales. Estas nos abren las
posibilidades de incorporar de manera flexible y dinámica modelos nuevos de análisis de datos para lo que necesitemos en nuestro día
a día.

ESCRITURA RÁPIDA
Una de sus principales ventajas respecto a las bases de datos relacionales a las que estuvimos acostumbrados por años, es que estas
bases de datos documentales establecen un orden de priorización de la disponibilidad de escritura por encima de la estricta
consistencia de los datos. Esto permite asegurar que las escrituras de datos siempre serán rápidas sin importar la existencia de una
falla de hardware o de la red. Con otros modelos de bases de datos estos problemas, que acá son cosas de otro plano, afectarían el
resultado del trabajo que realicemos implicando un retraso de la replicación de datos y alterando la coherencia.

RENDIMIENTO
La velocidad es uno de los factores más importantes a la hora de trabajar. Necesitamos consultas de alta velocidad con potentes
motores de búsqueda con propiedades de indexación. Muchas de estas bases de datos documentales cuentan con esto y más,
garantizando de esta forma que las consultas a realizar sean veloces, cortas de tiempo pero de gran eficiencia.
Ventajas
Permiten almacenar y consultar información semiestructurada sin una estructura definida.
Son un modelo muy flexible que puede albergar numerosos tipos de datos.
Simplifican las tareas de adición o actualización de datos. La mayoría de aplicaciones web
o móviles están sometidas a cambios constantes. Gracias a las bases de datos
documentales se pueden añadir nuevos datos o modelos de análisis de manera mucho
más flexible.
Aseguran una escritura rápida, dando prioridad a la disponibilidad de la escritura sobre la
consistencia de los datos. Esto permite asegurar la rapidez incluso en casos de fallos en el
hardware o en la red, que en otras bases de datos supondría retrasos en la modificación
de los datos y repercutiría negativamente en su coherencia.
Garantizan un buen rendimiento. La mayoría de bases de datos documentales cuentan
con potentes motores de búsqueda y avanzadas propiedades de indexación, lo que
asegura una mayor rapidez a la hora de consultar la información.
Tienen una gran escalabilidad y son uno de los mejores métodos para el almacenamiento
de grandes volúmenes de información.
Desventajas
No utilizan el lenguaje SQL como lenguaje principal de consulta, aunque sí lo
pueden usar de apoyo. Es decir, al contrario que las bases relacionales, no
existe un lenguaje estandarizado para la creación de estas bases de datos.
No siempre pueden garantizar las propiedades ACID de atomicidad,
consistencia, integridad y durabilidad.
No tienen una gran comunidad detrás y existen mucha menos información
acerca de estas bases de datos.
Los índices pueden ocupar mucha memoria RAM, sobre todo en las bases
documentales que manejan un gran volumen de datos.
Tipos de bases de
datos documentales
Las bases de datos documentales se puede clasificar en diferentes tipos, en función de su
contenido, de las materias que abarque o su modo de acceso.
En función del contenido de los documentos
Bases de datos bibliográficas (almacenan los principales datos sobre un documento o texto
y, como máximo, un fragmento del mismo).
Bases de datos de texto completo (guardan todo el texto de un determinado documentos o
escrito).
Según su cobertura temática
Multidisciplinares (almacenan información relativa a diferentes materias o disciplinas).
Especializadas (solo guardan información sobre una disciplina en concreto, por ejemplo una
base de datos documental de textos médicos).
Por su método de acceso
De acceso local
En línea
En CD-ROM o dispositivos externos
Estructura y uso
LAS BASES DE DATOS DOCUMENTALES ALMACENAN DATOS SEMIESTRUCTURADOS
SIN UN ESQUEMA PREDEFINIDO. LA INFORMACIÓN SE ALMACENA EN DOCUMENTOS
QUE INCLUYEN TODAS LAS CARACTERÍSTICAS DEL REGISTRO, Y LAS CONSULTAS SE
REALIZAN EN BASE A ESTOS DOCUMENTOS. ESTO LAS DIFERENCIA DE LAS BASES
RELACIONALES QUE ORGANIZAN LA INFORMACIÓN EN TABLAS Y LAS CONSULTAS SE
REALIZAN EN BASE A LOS CAMPOS (COLUMNAS) DE DICHAS TABLAS.
POR OTRO LADO, NO UTILIZAN EL LENGUAJE SQL. POR EL CONTRARIO, EMPLEAN
OTRO TIPO DE FORMATOS COMO PUEDEN SER EL JSON O XML. EL FORMATO MÁS
HABITUAL ES JSON (JAVASCRIPT OBJECT NOTATION), UN LENGUAJE QUE RESULTA
MÁS COMPACTO Y LEGIBLE QUE EL SQL.
EN BASE A ESTA ESTRUCTURA Y CARACTERÍSTICAS, LAS BASES DE DATOS
DOCUMENTALES SE USAN PRINCIPALMENTE PARA ALMACENAR GRANDES
CANTIDADES DE DATOS, O CUANDO SE TRATA DE INFORMACIÓN POCO
ESTRUCTURADA.
Diferencia entre base de
datos documental y
relacional
Por un lado, las bases de datos documentales no emplean el lenguaje
SQL, o si lo utilizan es solo como apoyo. Por el contrario, emplean otro
tipo de formatos para la información almacenada, tales como XML o
JSON.
Relativo al punto anterior, cabe destacar que, a diferencia de las bases
de datos relacionales, no existe un estándar definido para las bases de
datos documentales (el SQL está definido como lenguaje estándar
para las bases de datos por el ANSI).
Diferencia entre base de
datos documental y
relacional
Tampoco almacenan la información en tablas, sino que los registros se
organizan por documentos que contienen toda la información de cada
registro. Las consultas se realizan sobre los propios documentos, a los
cuales se les asigna un identificador, y no sobre los campos de las
tablas.
Las bases de datos documentales son mucho más escalables y pueden
almacenar volúmenes más grandes de información. Por eso, para
grandes bases de datos se suele emplear este modelo.
Diferencia entre base de
datos documental y
relacional
Por otra parte, las bases documentales NoSQL son más flexibles y
pueden albergar una gran cantidad de datos, incluyendo datos
semiestructurados o no estructurados.
Al ser más novedosas y no tener un sistema todavía estandarizado,
también es cierto que no tienen una comunidad tan grande detrás
como las bases relacionales, y existe menos información acerca de
ellas.
Diferencia entre base de
datos documental y
relacional
Las bases de datos documentales también están diseñadas para
adaptarse mejor a los cambios en las aplicaciones. En caso de tener
que cambiar un esquema, simplemente se añadirían los nuevos datos
siguiendo ese nuevo esquema, y los datos ya existentes no se verían
afectados.
Por último, las bases de datos documentales se podrían considerar
como una manera verdaderamente natural de almacenar la
información. No sucede así con las bases de datos relacionales que
utilizan una estructura plana y definida por tablas, filas y columnas.
Ejemplo

{ ‘_ID’ : 1, ‘ARTISTNAME’ : { ‘NIRVANA’ }, (NOMBRE DEL ARTISTA)


‘ALBUMS’ : [
{ ‘ALBUMNAME’ : ‘BLEACH’, (NOMBRE DEL ÁLBUM)
‘DATERELEASED’ : 1989, (FECHA DE SALIDA AL MERCADO)
‘GENRE’ : ‘GRUNGE’ (GÉNERO MUSICAL)},
{‘ALBUMNAME’ : ‘NEVERMIND’, ‘DATERELEASED’ : 1991, ‘GENRE’ : ‘GRUNGE’},
{‘ALBUMNAME’ : ‘IN UTERO’, ‘DATERELEASED’ : 1993, ‘GENRE’ : GRUNGE},
{}
]
MongoDB
MongoDB es un gestor de datos estructurado bajo NoSQL
que cuenta con un formato de almacenamiento de
documentos en un formato similar al JSON (JavaScript
Object Notation). Está escrita en lenguaje C++, es
multiplataforma en código abierto y completamente
gratuito.
Sus orígenes se remontan a finales del año 2007 cuando era
un proyecto interno de una empresa de nombre 10Gen.
Su diseño fue desarrollado para ser implementado en una
aplicación de internet que la empresa desarrollaba y no fue
hasta el año 2009 que deciden liberarlo en formato
OpenSource.
MongoDB
MongoDB cuenta con un almacenamiento flexible basado en
JSON. Además tiene soporte para la creación de índices
desde cualquier atributo. No requiere la definición de
procesos.
También es importante destacar que tiene un alto
rendimiento para consultas y actualizaciones. Es
increíblemente flexible y potente su capacidad de
crecimiento, replicación y escalabilidad.
MongoDB es increíble para crear aplicaciones online que
requieran el registro de diversos datos. O para la creación y
diseño de softwares que sean flexibles en cuanto a manejo
de altos volúmenes de información.
Las Bases construidas bajo este diseño pueden recibir
cientos de miles de lecturas por segundo sin que su
rendimiento se vea afectado o disminuido.
DynamoDB
De la tienda más grande del mundo (Amazon) nace
DynamoDB. Es una base de datos de claves-valor y
documentos que ofrece un gran rendimiento a cualquier
escala.
Se trata de una base de datos multimaestro y multiregión
completamente administrada que cuenta con esquemas
integrados de seguridad, copias de seguridad,
almacenamiento en de cache en memoria para apps de
internet y restauración.
Suena a ciencia ficción pero es real, DynamoDB puede
gestionar más de 10 billones de solicitudes por día. Puede
gestionar en un segundo 20 millones de solicitudes.
DynamoDB
Esta potente base de datos NoSQL de Amazon Web Service
admite modelos de datos basados en clave-valor y
documentos que son perfectas para los desarrolladores de
aplicaciones modernas que no poseen servidor propio. Esto
ayuda a que progresivamente puedan proceder a su
escalabilidad global.
Entre los principales atributos novedosos que ofrece
DynamoDB se encuentra su modo operativo de capacidad
bajo demanda, su compatibilidad integrada con transacciones
ACID, copias de seguridad bajo demanda, modo de
recuperación inmediata y el cifrado de datos en reposo.
Events
CouchDB es una base de datos NoSQL de código abierto
pensada para facilitar la accesibilidad y compatibilidad web
con diversos dispositivos. El proyecto Couch nace en el año
2005 de la mano de un ex desarrollador de Lotus Notes en
IBM.
Sus objetivos eran que la base de datos fuese
transformándose en la base de datos más usada en internet.
Se diseñó desde el principio para prestar sus servicios en
internet. En 2008 paso a ser un proyecto de Apache
Incubator adoptando una ApacheLicense.
Su primera versión estable llegó a nosotros en el año 2010.
Events
En esta BBDD los datos se almacenan en formato JSON y
están organizados en pares de valor clave. La clave es un
identificador único de datos, y el valor es el propio dato o un
apuntador de la ubicación de los datos. Las funciones
estándar de la base son realizadas por JavaScript. CouchDB
posee la capacidad de hacer replicación fácil entre
servidores.
Además cuenta con soporte para la resolución de conflictos
y configuración del master. Tiene entre sus principales
características las actualizaciones de alimentación de datos
por suscripción. Cuenta con indexación, búsqueda y
recuperación rápida de datos. También es importante
señalar que los documentos de estas bases de datos son
accesibles a través de navegadores y sus índices pueden ser
consultados a través de HTTP.
Azure Cosmos
No podíamos dejar de mencionar a Azure Cosmos DB del
gigante Microsoft. Este servicio de bases de datos funciona
bajo la modalidad de ser totalmente administrado,
multimaestro y es ampliamente transparente. Posee una
capacidad de escalabilidad ilimitada que permite desarrollar
proyectos de gran alcance.
La versatilidad de Azure Cosmos DB permite que se puedan
agregar o eliminar regiones de la base de datos en cualquier
momento. Esto no afecta la lectura o escritura de datos.
Adicionalmente posee un módulo de consultas muy amplio
que permite ejecutar el API de nuestra preferencia. También
permite migrar datos sin mayores contratiempos a MongoDB,
ApacheSpark o Cassandra.
Azure Cosmos

Este modelo de BBDD permite ejecutar módulos de


inteligencia artificial para realizar análisis operativos en
tiempo real. Ofrece amplia eficiencia en cargas de trabajo
que requieren esquemas de seguridad complejos.
Es un modelo bastante interesante de base de datos no SQL,
que cuenta con clientes de talla mundial como Bentley y el
gigante de los hidrocarburos Exxon Mobil
RavenDB
Esta base de datos documental trabaja de forma
transaccional. RavenDB es una BBDD escrita en NET bajo
licencia open source muy práctica y flexible. Almacena los
datos en documentos JSON y ofrece la posibilidad de ser
modificada mediante colas linq o utilizando herramientas
API.
RavenDB ofrece una arquitectura multiplataforma y
multimodelo que permite a desarrolladores y
programadores disfrutar de su alto rendimiento, gran
capacidad de escalabilidad de una forma bastante simple.
Ejemplo
{
'_ID' : 1,
'ARTISTNAME' : { 'OASIS' },
'ALBUMS' : [
{
'ALBUMNAME' : 'WHAT´S THE STORY MORNING GLORY',
'DATERELEASED' : 1996,
'GENRE' : 'BRITPOP'
}, {
'ALBUMNAME' : 'DEFINATELY MAYBE',
'DATERELEASED' : 1992,
'GENRE' : 'ROCK'
}, {
'ALBUMNAME' : 'BE HERE NOW',
'DATERELEASED' : 1999,
'GENRE' : BRITPOP
}, {
}]
¿Preguntas?
GRACIAS POR SU ATENCIÓN
SISTEMAS DE BASES DE DATOS 2

Clase 13
Jeannira Sic
PUNTOS A TRATAR

¿Qué es un clúster?
¿Qué es un clúster en MongoDB Atlas?
Crear un clúster en MongoDB
¿Qué es un réplica set en MongoDB?
¿Qué es un clúster fragmentado?
Bases de datos y colecciones

Agenda de hoy
¿Qué es un clúster?
En el contexto de MongoDB, "clúster" es la palabra que se usa normalmente
para un conjunto de réplicas o un clúster fragmentado. Un conjunto de réplicas
es la réplica de un grupo de servidores MongoDB que contienen copias de los
mismos datos; esta es una propiedad fundamental para las implementaciones
de producción, ya que garantiza una alta disponibilidad y redundancia, que son
características cruciales a tener en cuenta en caso de fallas y períodos de
mantenimiento planificados.
Un clúster fragmentado también se conoce comúnmente como escalado
horizontal, donde los datos se distribuyen entre muchos servidores.
El objetivo principal de MongoDB fragmentado es escalar las lecturas y
escrituras a lo largo de varios fragmentos.
MONGODB ATLAS CLUSTER ES UNA

¿Qué es un OFERTA DE BASE DE DATOS COMO


SERVICIO NOSQL EN LA NUBE PÚBLICA

clúster en
(DISPONIBLE EN MICROSOFT AZURE,
GOOGLE CLOUD PLATFORM, AMAZON
WEB SERVICES). ESTE ES UN SERVICIO

MongoDB ADMINISTRADO DE MONGODB Y, CON


SOLO UNOS POCOS CLICS, PUEDE

Atlas?
CONFIGURAR UN CLÚSTER DE MONGODB
EN FUNCIONAMIENTO, ACCESIBLE
DESDE SU NAVEGADOR WEB FAVORITO.
¿Qué es un NO NECESITA INSTALAR NINGÚN

clúster en
SOFTWARE EN SU ESTACIÓN DE
TRABAJO, YA QUE PUEDE CONECTARSE
A MONGODB DIRECTAMENTE DESDE LA

MongoDB INTERFAZ DE USUARIO WEB, ASÍ COMO


INSPECCIONAR, CONSULTAR Y

Atlas?
VISUALIZAR DATOS.
Alternativamente, si prefiere trabajar con la línea de comando, puede
conectarse usando el shell mongo. Para hacer esto, deberá configurar el
firewall desde el portal web para aceptar su IP. Desde la página de inicio,
navegue hasta Seguridad y luego Acceso a la red. Finalmente, haga clic en
"Agregar dirección IP" y agregue su IP. Luego, sustituya las siguientes opciones
de configuración (nombre del clúster MongoDB Atlas, nombre de la base de
datos y nombre de usuario) en la ventana de línea de comandos de mongo shell.
Crear un clúster en MongoDB
Ya sea que sus intenciones iniciales sean desarrollar
aplicaciones de prueba de concepto o planificar un entorno de
producción, un muy buen punto de partida es crear un nuevo
clúster de MongoDB en MongoDB Atlas. Al usar el nivel gratuito,
la configuración predeterminada es implementar un clúster de
MongoDB con un conjunto de réplicas. Sin embargo, si también
desea habilitar la fragmentación, debe habilitar esta función
por separado y especificar la cantidad de fragmentos que debe
tener.
¿Qué es un replica set en
MongoDB?
Un conjunto de réplicas de MongoDB garantiza que se aplique la réplica
al proporcionar redundancia de datos y alta disponibilidad en más de un
servidor MongoDB.

Si una implementación de MongoDB careciera de un conjunto de


réplicas, eso significa que todos los datos estarían presentes
exactamente en un servidor. En caso de que el servidor principal falle,
se perderán todos los datos, pero no cuando se habilite un conjunto de
réplicas. Por lo tanto, podemos ver de inmediato la importancia de tener
un conjunto de réplicas para una implementación de MongoDB.
¿Qué es un replica set en
MongoDB?
Además de la tolerancia a fallas, los conjuntos de réplicas también
pueden proporcionar capacidad de operaciones de lectura adicional
para el clúster de MongoDB, dirigiendo a los clientes a los servidores
adicionales y reduciendo posteriormente la carga general del clúster.

Los conjuntos de réplicas también pueden ser beneficiosos para las


aplicaciones distribuidas debido a la ubicación de los datos que ofrecen,
de modo que las operaciones de lectura en paralelo y más rápidas
suceden en los conjuntos de réplicas en lugar de tener que pasar por un
servidor principal.
¿Cómo funcionan
los replica set en
MongoDB?
Un clúster de MongoDB debe tener un nodo principal y un conjunto
de nodos secundarios para que se considere un conjunto de
réplicas. Como máximo, debe existir un nodo principal y su función
es recibir todas las operaciones de escritura. Todos los cambios en
los conjuntos de datos del nodo principal se registran en una
colección limitada especial llamada registro de operaciones (oplog).
La función de los nodos secundarios es luego replicar el registro de
operaciones del nodo principal y asegurarse de que los conjuntos
de datos reflejen exactamente los conjuntos de datos del principal.
La replicación del registro de operaciones del
nodo principal a los secundarios se produce de
forma asincrónica, lo que permite que el
conjunto de réplicas continúe funcionando a
pesar de la falla potencial de uno o más de sus
miembros. Si el nodo principal actual deja de
estar disponible de repente, se llevará a cabo
una elección para determinar el nuevo nodo
principal. En el escenario de tener dos nodos
secundarios, uno de los nodos secundarios se
convertirá en el nodo principal.
Si por alguna razón solo existe un nodo secundario, se puede agregar una
instancia especial llamada árbitro a un conjunto de réplicas que solo puede
participar en las elecciones del conjunto de réplicas, pero no replica el registro
de operaciones del primario. Esto significa que no puede proporcionar
redundancia de datos y siempre será un árbitro, es decir, no puede convertirse en
un nodo primario o secundario, mientras que un primario puede convertirse en un
nodo secundario y viceversa.
La falla de un nodo primario no es la única razón por la que puede ocurrir una
elección de conjunto de réplicas. Las elecciones del conjunto de réplicas pueden
ocurrir por otras razones en respuesta a una variedad de eventos, como cuando
se agrega un nuevo nodo en el conjunto de réplicas, en el inicio de un conjunto de
réplicas, durante el mantenimiento del conjunto de réplicas o si se pierde algún
nodo secundario. Conectividad al nodo principal durante un período superior al
período de tiempo de espera configurado ('10 segundos' de forma
predeterminada).
Operaciones de lectura y
escritura en un replica set
Un conjunto de réplicas en un clúster de MongoDB es transparente para las
aplicaciones cliente. Esto significa que no pueden identificar si el clúster
tiene un conjunto de réplicas habilitado o si se está ejecutando en una
implementación de un solo servidor.
Sin embargo, MongoDB ofrece operaciones de lectura y escritura adicionales
además de los comandos de entrada y salida estándar. Las aplicaciones
cliente pueden, opcionalmente, dirigirse directamente a qué nodo del
conjunto de réplicas debe ejecutar una operación de lectura. De forma
predeterminada, todas las operaciones de lectura se dirigen al nodo
principal, pero también se puede configurar un enrutamiento específico a los
secundarios; esto se llama preferencia de lectura.
Operaciones de lectura y
escritura en un replica set
Se pueden configurar varios modos de preferencia de lectura. Por ejemplo,
si una aplicación cliente está configurada para ir directamente a
secundarios, entonces el parámetro de modo en la preferencia de lectura
debe establecerse en secundario. Si hay necesidades específicas para la
menor latencia de red, independientemente de si eso ocurre en el nodo
primario o en cualquier nodo secundario, entonces se debe configurar el
modo de preferencia de lectura más cercano. Sin embargo, en esta opción,
entra en juego el riesgo de datos potencialmente obsoletos (si el nodo más
cercano es un nodo secundario) debido a la naturaleza de la replicación
asincrónica de primaria a secundaria.
Operaciones de lectura y
escritura en un replica set
Alternativamente, el modo de preferencia de lectura se puede configurar
como preferido primario o preferido secundario. Estos dos modos también
hacen uso de otra propiedad llamada maxStalenessSeconds para determinar
a qué nodo del conjunto de réplicas debe dirigirse la operación de lectura. En
todos los casos en los que existe la posibilidad de que la operación de lectura
se realice en un nodo no principal, debe asegurarse de que su aplicación
pueda tolerar datos obsoletos.
UN CLÚSTER FRAGMENTADO EN

¿Qué es un
MONGODB ES UNA COLECCIÓN DE
CONJUNTOS DE DATOS
DISTRIBUIDOS EN MUCHOS
clúster FRAGMENTOS (SERVIDORES) PARA
LOGRAR UNA ESCALABILIDAD

fragmentado? HORIZONTAL
RENDIMIENTO
Y UN
EN
MEJOR
LAS
OPERACIONES DE LECTURA Y
ESCRITURA.
¿Qué es un clúster
fragmentado?
La fragmentación es muy útil para colecciones que tienen
una gran cantidad de datos y altas tasas de consulta.
Collection1 está fragmentado, a diferencia de Collection2,
que no está fragmentado. Si mantuviéramos Collection1 en
un servidor, la CPU de ese servidor podría aumentar porque
no tendría la capacidad necesaria para atender las
solicitudes que recibió. Sin embargo, agregar otro
fragmento para Collection1 ayuda a distribuir la carga al
aumentar la capacidad general que puede recibir.
¿Qué es un clúster fragmentado?
La configuración de un clúster fragmentado permite que un fragmento también
se configure como un conjunto de réplicas. En otras palabras, está configurado
para tener alta disponibilidad y escalabilidad horizontal. Además, se implementa
un componente llamado mongos al configurar un clúster fragmentado. Mongos
es un enrutador de consultas; actúa como intermediario entre el cliente y el
servidor, o el fragmento en el que residen los datos. Además del enrutamiento,
también puede manejar el equilibrio de carga para todas las consultas y
operaciones de escritura en los fragmentos.
Finalmente, también se implementa un servicio de metadatos llamado
servidores de configuración (configsvr). Contiene información y configuraciones
relacionadas con el clúster fragmentado. Este componente también almacena
la ubicación y los rangos de los fragmentos de datos en los diferentes
fragmentos, así como información de autenticación, incluidos nombres de
usuario, roles y permisos para diferentes bases de datos y colecciones.
Bases de datos y
colecciones
MongoDB almacena registros de datos como
documentos (específicamente documentos BSON)
que se recopilan en colecciones. Una base de datos
almacena una o más colecciones de documentos.
SI NO EXISTE UNA BASE DE
DATOS, MONGODB CREA LA
BASE DE DATOS LA PRIMERA
VEZ QUE ALMACENA DATOS
PARA ESA BASE DE DATOS.
COMO TAL, PUEDE CAMBIAR A
UNA BASE DE DATOS
INEXISTENTE Y REALIZAR LA
SIGUIENTE OPERACIÓN
LA OPERACIÓN INSERTONE () CREA TANTO
LA BASE DE DATOS MYNEWDB COMO LA
COLECCIÓN MYNEWCOLLECTION1 SI AÚN
NO EXISTEN. ASEGÚRESE DE QUE TANTO
LOS NOMBRES DE LA BASE DE DATOS
COMO DE LA COLECCIÓN SIGAN LAS
RESTRICCIONES DE DENOMINACIÓN DE
MONGODB.
Colecciones

MongoDB almacena documentos en


colecciones. Las colecciones son análogas
a las tablas en las bases de datos
relacionales.
Crear una colección
Si una colección no existe, MongoDB crea la colección cuando almacena datos
para esa colección por primera vez.

Tanto las operaciones insertOne () como createIndex () crean su colección


respectiva si aún no existen. Asegúrese de que el nombre de la colección siga
las restricciones de nomenclatura de MongoDB.
¿Preguntas?

GRACIAS POR SU ATENCIÓN


SISTEMAS DE BASES DE DATOS
2

Clase 14

Jeannira Sic
PUNTOS A TRATAR
1202 | 2 sotad ed sesaB

Agenda de ¿Qué es el teorema CAP?


Explicación del CAP

hoy Tipos de bases de datos CAP

MongoDB y el teorema CAP

Operaciones CRUD
El teorema de CAP aplica un tipo de lógica similar

¿Qué es el
a los sistemas distribuidos, es decir, que un sistema

distribuido puede entregar sólo dos de tres

características deseadas: coherencia,

teorema
disponibilidad y tolerancia a la partición (CAP, en

inglés).

Un sistema distribuido es una red que almacena

datos en más de un nodo (físico o máquinas

CAP?
virtuales) al mismo tiempo. Como todas las

aplicaciones de cloud son sistemas distribuidos, es

fundamental entender el teorema de CAP al

diseñar una aplicación de cloud, para que pueda

elegir un sistema de gestión de datos que ofrezca

las características que más necesita la aplicación.

Bases de datos 2 | 2021


Explicación COHERENCIA

de ‘CAP’ en
La coherencia significa que todos los
1202 | 2 sotad ed sesaB

clientes ven los mismos datos al mismo

el teorema de
tiempo, independientemente del nodo

al que se conecten. Para que esto

CAP
suceda, siempre que se escriban datos

en un nodo, se debe reenviar o replicar

al instante en los demás nodos del

sistema antes de que la escritura se

considere 'satisfactoria'.
Explicación DISPONIBILIDAD

de ‘CAP’ en
Disponibilidad significa que cualquier
1202 | 2 sotad ed sesaB

cliente que realiza una solicitud de

el teorema de
datos obtiene una respuesta, aunque

uno o varios nodos estén inactivos. Otra

CAP
forma de describirlo: todos los nodos

de trabajo del sistema distribuido

devuelven una respuesta válida para

cualquier solicitud, sin excepción.


Explicación TOLERANCIA A LAS
PARTICIONES

de ‘CAP’ en
1202 | 2 sotad ed sesaB

Una partición es una interrupción de la

el teorema de
comunicación dentro de un sistema

distribuido: una conexión perdida o

CAP
temporalmente retardada entre dos

nodos. La tolerancia a las particiones

significa que el clúster debe continuar

trabajando a pesar de las

interrupciones de comunicación que se

produzcan entre los nodos del sistema.


TIPOS DE BASE DE DATOS
NOSQL DEL TEOREMA DE CAP

LAS BASES DE DATOS NOSQL (NO

RELACIONALES) SON IDEALES PARA LAS

APLICACIONES DE RED DISTRIBUIDAS. A

DIFERENCIA DE SUS EQUIVALENTES SQL

(RELACIONALES) VERTICALMENTE ESCALABLES,

LAS BASES DE DATOS NOSQL SON

HORIZONTALMENTE ESCALABLES Y ESTÁN

DISTRIBUIDAS POR DISEÑO: PUEDEN ESCALARSE

RÁPIDAMENTE EN UNA RED CRECIENTE

FORMADA POR MÚLTIPLES NODOS

INTERCONECTADOS.
BASE DE DATOS CP

Tipos de base
Una base de datos CP ofrece coherencia y tolerancia a las

particiones a expensas de la disponibilidad. Cuando se produce

una partición entre dos nodos, el sistema tiene que cerrar el nodo

de datos
no coherente (es decir, hacer que no esté disponible) hasta que

se resuelva la partición.

NoSQL del
BASE DE DATOS AP
Una base de datos AP ofrece disponibilidad y tolerancia a las

particiones a expensas de la coherencia. Cuando se produce una

teorema de
partición, todos los nodos permanecen disponibles, pero los que

están en el extremo incorrecto de una partición pueden devolver

CAP
una versión de los datos más antigua que los otros.

BASE DE DATOS CA
Una base de datos CA ofrece coherencia y disponibilidad en

todos los nodos. Sin embargo, no podrá hacerlo si hay una

partición entre dos nodos en el sistema; por lo tanto, no puede

ofrecer tolerancia a errores.

Bases de datos 2 | 2021


MongoDB y el
teorema de
CAP (CP)
MONGODB ES UN POPULAR SISTEMA DE GESTIÓN DE BASES DE DATOS NOSQL QUE

ALMACENA DATOS COMO DOCUMENTOS BSON (JSON BINARIO). SE UTILIZA CON

FRECUENCIA PARA APLICACIONES DE BIG DATA Y EN TIEMPO REAL QUE SE EJECUTAN EN

VARIAS UBICACIONES DIFERENTES. EN RELACIÓN CON EL TEOREMA DE CAP, MONGODB ES

UN ALMACÉN DE DATOS DE CP: RESUELVE LAS PARTICIONES DE RED MANTENIENDO LA

COHERENCIA A EXPENSAS DE LA DISPONIBILIDAD.


MongoDB y el
teorema de
CAP (CP)
MONGODB ES UN SISTEMA MAESTRO INDIVIDUAL DONDE CADA CONJUNTO DE RÉPLICAS (ENLACE

EXTERNO A IBM) SOLO PUEDE TENER UN NODO PRIMARIO QUE RECIBA TODAS LAS OPERACIONES DE

ESCRITURA. LOS DEMÁS NODOS DEL MISMO CONJUNTO DE RÉPLICAS SON NODOS SECUNDARIOS

QUE REPLICAN EL REGISTRO DE OPERACIONES DEL NODO PRIMARIO Y LO APLICAN A SU PROPIO

CONJUNTO DE DATOS. DE FORMA PREDETERMINADA, LOS CLIENTES TAMBIÉN LEEN EN EL NODO

PRIMARIO, PERO TAMBIÉN PUEDEN ESPECIFICAR UNA PREFERENCIA DE LECTURA (ENLACE EXTERNO

A IBM) QUE LES PERMITE LEER EN NODOS SECUNDARIOS.


MongoDB y el
teorema de
CAP (CP)
CUANDO EL NODO PRIMARIO DEJA DE ESTAR DISPONIBLE, EL NODO SECUNDARIO CON EL REGISTRO

DE OPERACIONES MÁS RECIENTE SE ELEGIRÁ COMO EL NUEVO NODO PRIMARIO. UNA VEZ QUE LOS

DEMÁS NODOS SECUNDARIOS SE ACTUALIZAN CON EL NUEVO MAESTRO, EL CLÚSTER VUELVE A

ESTAR DISPONIBLE. COMO LOS CLIENTES NO PUEDEN REALIZAR SOLICITUDES DE ESCRITURA EN

ESTE INTERVALO, LOS DATOS PERMANECEN COHERENTES EN TODA LA RED.


Las operaciones de creación o

inserción agregan nuevos

documentos a una colección. Si la

colección no existe actualmente,

las operaciones de inserción

crearán la colección. MongoDB

proporciona los siguientes

métodos para insertar documentos

en una colección:

db.collection.insertOne ()

db.collection.insertMany ()

En MongoDB, las operaciones de

inserción tienen como objetivo una

sola colección. Todas las

Crear operaciones de escritura

MongoDB son atómicas al nivel de


en

un solo documento.
Las operaciones de lectura

recuperan documentos de una

colección; es decir, consultar una

colección de documentos.

MongoDB proporciona los

siguientes métodos para leer

documentos de una colección:

db.collection.find ()

Puede especificar filtros de

consulta o criterios que

identifiquen los documentos a

Leer
devolver.
Las operaciones de actualización

modifican los documentos existentes

en una colección. MongoDB

proporciona los siguientes métodos

para actualizar documentos de una

colección:

db.collection.updateOne ()

db.collection.updateMany ()

db.collection.replaceOne ()

En MongoDB, las operaciones de

actualización tienen como objetivo

una sola colección. Todas las

operaciones de escritura en

MongoDB son atómicas al nivel de un

solo documento. Puede especificar

criterios o filtros que identifiquen los

Actualizar documentos a actualizar. Estos filtros

utilizan la misma sintaxis que las

operaciones de lectura.
Las operaciones de eliminación

eliminan documentos de una

colección. MongoDB proporciona los

siguientes métodos para eliminar

documentos de una colección:

db.collection.deleteOne ()

db.collection.deleteMany ()

En MongoDB, las operaciones de

eliminación tienen como objetivo una

sola colección. Todas las operaciones

de escritura en MongoDB son

atómicas al nivel de un solo

documento. Puede especificar

criterios o filtros que identifiquen los

documentos que se eliminarán. Estos

Borrar filtros utilizan la misma

las operaciones de lectura.


sintaxis que
¿Preguntas? GRACIAS POR SU ATENCIÓN
SHORETOWN
SISTEMAS DE BASES DE DATOS 2

CLASE 15
JEANNIRA SIC
AGENDA DE HOY

Introducción al modelado de datos


Esquema flexible
Estructura del documento
Datos incrustados
Atomicidad de las operaciones de escritura
Validación de esquema
Patrón de documento incrustado
INTRODUCCIÓN AL MODELADO DE DATOS

EL DESAFÍO CLAVE EN EL MODELADO DE DATOS ES EQUILIBRAR LAS


NECESIDADES DE LA APLICACIÓN, LAS CARACTERÍSTICAS DE
RENDIMIENTO DEL MOTOR DE LA BASE DE DATOS Y LOS PATRONES DE
RECUPERACIÓN DE DATOS. AL DISEÑAR MODELOS DE DATOS, SIEMPRE
TENGA EN CUENTA EL USO DE LOS DATOS POR PARTE DE LA APLICACIÓN
(ES DECIR, CONSULTAS, ACTUALIZACIONES Y PROCESAMIENTO DE LOS
DATOS), ASÍ COMO LA ESTRUCTURA INHERENTE DE LOS DATOS EN SÍ.
SHORETOWN ESQUEMA FLEXIBLE

A diferencia de las bases de datos SQL, donde debe determinar y declarar el esquema de una tabla antes de insertar
datos, las colecciones de MongoDB, por defecto, no requieren que sus documentos tengan el mismo esquema. Es
decir:

No es necesario que los documentos de una sola colección tengan el mismo conjunto de campos y el tipo de
datos de un campo puede diferir entre los documentos de una colección.
Para cambiar la estructura de los documentos en una colección, como agregar nuevos campos, eliminar campos
existentes o cambiar los valores de campo a un nuevo tipo, actualice los documentos a la nueva estructura.

Esta flexibilidad facilita la asignación de documentos a una entidad o un objeto. Cada documento puede coincidir con
los campos de datos de la entidad representada, incluso si el documento tiene una variación sustancial de otros
documentos de la colección. Sin embargo, en la práctica, los documentos de una colección comparten una estructura
similar y puede hacer cumplir las reglas de validación de documentos para una colección durante las operaciones de
actualización e inserción.
ESTRUCTURA DEL DOCUMENTO

La decisión clave en el diseño de modelos de datos para


aplicaciones MongoDB gira en torno a la estructura de los
documentos y cómo la aplicación representa las relaciones entre
los datos. MongoDB permite incrustar datos relacionados en un solo
documento.
SHORETOWN
DATOS INCRUSTADOS

Los documentos integrados capturan


las relaciones entre los datos al
almacenar los datos relacionados en
una estructura de documento única. Los
documentos de MongoDB permiten
incrustar estructuras de documentos en
un campo o matriz dentro de un
documento. Estos modelos de datos
desnormalizados permiten que las
aplicaciones recuperen y manipulen
datos relacionados en una sola
operación de base de datos.
SHORETOWN
REFERENCIAS
Las referencias almacenan las
relaciones entre los datos al incluir
enlaces o referencias de un documento
a otro. Las aplicaciones pueden resolver
estas referencias para acceder a los
datos relacionados. En términos
generales, estos son modelos de datos
normalizados.
ATOMICIDAD DE LAS OPERACIONES DE ESCRITURA

(ATOMICIDAD DE DOCUMENTO ÚNICO)

EN MONGODB, UNA OPERACIÓN DE ESCRITURA ES ATÓMICA AL NIVEL DE


UN SOLO DOCUMENTO, INCLUSO SI LA OPERACIÓN MODIFICA VARIOS
DOCUMENTOS INCRUSTADOS DENTRO DE UN SOLO DOCUMENTO.

UN MODELO DE DATOS DESNORMALIZADO CON DATOS INCRUSTADOS


COMBINA TODOS LOS DATOS RELACIONADOS EN UN SOLO DOCUMENTO EN
LUGAR DE NORMALIZARLOS EN MÚLTIPLES DOCUMENTOS Y COLECCIONES.
ESTE MODELO DE DATOS FACILITA LAS OPERACIONES ATÓMICAS.
ATOMICIDAD DE LAS OPERACIONES DE ESCRITURA

(TRANSACCIONES DE VARIOS DOCUMENTOS)

CUANDO UNA SOLA OPERACIÓN DE ESCRITURA (POR EJEMPLO,


DB.COLLECTION.UPDATEMANY ()) MODIFICA VARIOS DOCUMENTOS, LA
MODIFICACIÓN DE CADA DOCUMENTO ES ATÓMICA, PERO LA OPERACIÓN
EN SU CONJUNTO NO ES ATÓMICA. AL REALIZAR OPERACIONES DE
ESCRITURA DE VARIOS DOCUMENTOS, YA SEA A TRAVÉS DE UNA SOLA
OPERACIÓN DE ESCRITURA O DE VARIAS OPERACIONES DE ESCRITURA,
OTRAS OPERACIONES PUEDEN INTERCALARSE. PARA SITUACIONES QUE
REQUIEREN ATOMICIDAD DE LECTURAS Y ESCRITURAS EN MÚLTIPLES
DOCUMENTOS (EN UNA O VARIAS COLECCIONES), MONGODB ADMITE
TRANSACCIONES DE MÚLTIPLES DOCUMENTOS
SHORETOWN VALIDACIÓN DE ESQUEMA
Las reglas de validación se basan en cada colección. Para especificar reglas de validación al crear
una nueva colección, use db.createCollection () con la opción de validación.

Para agregar validación de documentos a una colección existente, use el comando collMod con la
opción de validación. MongoDB también proporciona las siguientes opciones relacionadas:

opción validationLevel, que determina cuán estrictamente MongoDB aplica las reglas de
validación a los documentos existentes durante una actualización.
opción validationAction, que determina si MongoDB debe generar errores y rechazar los
documentos que violan las reglas de validación o advertir sobre las violaciones en el registro
pero que permiten documentos no válidos.
SHORETOWN
ÍNDICES
Utilice índices para mejorar el rendimiento de las consultas habituales. Cree índices en los campos
que aparecen con frecuencia en las consultas y para todas las operaciones que devuelven
resultados ordenados. MongoDB crea automáticamente un índice único en el campo _id. Al crear
índices, tenga en cuenta los siguientes comportamientos de los índices:

Cada índice requiere al menos 8 kB de espacio de datos.


Agregar un índice tiene un impacto negativo en el rendimiento de las operaciones de escritura.
Para colecciones con una alta proporción de escritura a lectura, los índices son costosos ya
que cada inserción también debe actualizar los índices.
Las colecciones con una alta proporción de lectura a escritura a menudo se benefician de
índices adicionales. Los índices no afectan las operaciones de lectura no indexadas.
Cuando está activo, cada índice consume espacio en disco y memoria. Este uso puede ser
significativo y debe rastrearse para la planificación de la capacidad, especialmente por
preocupaciones sobre el tamaño del conjunto de trabajo.
SHORETOWN
PATRÓN DE DOCUMENTO

INCRUSTADO (UNO A UNO)

Considere el siguiente ejemplo que mapea las


relaciones entre usuarios y direcciones. El
ejemplo ilustra la ventaja de incrustar sobre las
referencias si necesita ver una entidad de datos
en el contexto de la otra. En esta relación de uno
a uno entre el usuario y los datos de la dirección,
la dirección pertenece al usuario. En el modelo
de datos normalizado, el documento de dirección
contiene una referencia al documento del
usuario.
SHORETOWN
Si los datos de la dirección se recuperan con
frecuencia con la información del nombre,
entonces, con la referencia, su aplicación debe
emitir varias consultas para resolver la
referencia. El mejor modelo de datos sería
incrustar los datos de la dirección en los datos
del usuario. Con el modelo de datos integrado,
su aplicación puede recuperar la información
completa del usuario con una sola consulta.
SHORETOWN PATRÓN DE

SUBCONJUNTO

Un problema potencial con el patrón de


documento incrustado es que puede
generar documentos grandes que contienen
campos que la aplicación no necesita. Estos
datos innecesarios pueden causar una carga
adicional en su servidor y ralentizar las
operaciones de lectura. En su lugar, puede
utilizar el patrón de subconjunto para
recuperar el subconjunto de datos al que se
accede con más frecuencia en una única
llamada a la base de datos.
Actualmente, la colección de películas contiene varios campos que
la aplicación no necesita para mostrar una descripción general
simple de una película, como la trama completa y la información de
clasificación. En lugar de almacenar todos los datos de la película
en una sola colección, puede dividir la colección en dos colecciones
SHORETOWN
La colección de películas contiene
información básica sobre una película.
Estos son los datos que carga la
aplicación por defecto.
SHORETOWN
La colección movie_details contiene
datos adicionales a los que se accede
con menos frecuencia para cada
película.
Este método mejora el rendimiento de lectura porque requiere que
la aplicación lea menos datos para cumplir con su solicitud más
común. La aplicación puede realizar una llamada adicional a la base
de datos para recuperar los datos a los que se accede con menos
frecuencia si es necesario.
SHORETOWN
PATRÓN DE DOCUMENTO

INCRUSTADO

(UNO A MUCHOS)

Considere el siguiente ejemplo que mapea las


relaciones entre usuarios y direcciones múltiples.
El ejemplo ilustra la ventaja de incrustar sobre
las referencias si necesita ver muchas entidades
de datos en el contexto de otra. En esta relación
de uno a muchos entre el usuario y los datos de
la dirección, el usuario tiene varias entidades de
dirección. En el modelo de datos normalizado,
los documentos de dirección contienen una
referencia al documento del usuario.
SHORETOWN
Si su aplicación recupera con frecuencia
los datos de la dirección con la
información del nombre, entonces su
aplicación necesita emitir múltiples
consultas para resolver las referencias.
Un esquema más óptimo sería incrustar
las entidades de datos de direcciones
en los datos del usuario. Con el modelo
de datos integrado, su aplicación puede
recuperar la información completa del
usuario con una sola consulta.
SHORETOWN PATRÓN DE

SUBCONJUNTO

Un problema potencial con el patrón de


documento incrustado es que puede
dar lugar a documentos grandes,
especialmente si el campo incrustado
no está acotado. En este caso, puede
utilizar el patrón de subconjunto para
acceder solo a los datos que requiere la
aplicación, en lugar del conjunto
completo de datos incrustados.
Las reseñas están ordenadas en orden cronológico inverso. Cuando
un usuario visita la página de un producto, la aplicación carga las
diez reseñas más recientes.

En lugar de almacenar todas las reseñas con el producto, puede


dividir la colección en dos colecciones
SHORETOWN
La colección de productos almacena
información sobre cada producto,
incluidas las diez revisiones más
recientes del producto.
SHORETOWN
La colección de reseñas almacena
todas las reseñas. Cada reseña contiene
una referencia al producto para el que
fue escrita.
Al almacenar las diez revisiones más recientes en la colección de
productos, solo el subconjunto requerido de los datos generales se
devuelve en la llamada a la colección de productos. Si un usuario
desea ver reseñas adicionales, la aplicación realiza una llamada a la
colección de reseñas.
SHORETOWN

¿PREGUNTAS?
Gracias por su atención

También podría gustarte