Está en la página 1de 63

© Universidad Estatal de Milagro – UNEMI

0
DESARROLLO

Inducción

Se incorpora una breve descripción de cómo está estructurada la unidad que tiene
una duración de 12 horas de trabajo acompañamiento docente, 6 horas de
componente práctico y 18 horas de aprendizaje autónomo semanal durante 4
semanas.

Se debe indicar las estrategias de desarrollo (talleres), el trabajo práctico y el trabajo


final del módulo como un proyecto áulico presentado como un plan de acción con
objetivo o finalidad real integrando los contenidos desarrollados promoviendo los
aprendizajes significativos con los estudiantes de su contexto laboral.

Recuerde:

Este compendio puede recoger textualmente documentos e información de varias


fuentes debidamente citadas, como referencias elaboradas por el autor para
conectar los diferentes temas que aporten al trabajo final del módulo por unidad de
desarrollo.
© Universidad Estatal de Milagro – UNEMI

1
Enfoque epistemológico del conocimiento de la asignatura

Incorporar los aportes epistemológicos científicos y académicos que aportan a la


asignatura: conceptos, teorías; recursos; investigaciones y otros.

Recuerde:

Este compendio puede recoger textualmente documentos e información de varias


fuentes debidamente citadas, como referencias elaboradas por el autor para
conectar los diferentes temas que aporten al trabajo final del módulo por unidad de
desarrollo.
© Universidad Estatal de Milagro – UNEMI

2
NOMBRE DE LA UNIDAD
Introducción al diseño y captura de los datos masivos

Resultados de Aprendizajes:
Diseñar modelos de captura, almacenamiento orientado al procesamiento para BI y
analítica de datos masivos con apoyo de herramientas tics especializadas.

Objetivos de aprendizajes:
 Introducir al diseño y captura de los datos masivos.

Temas y Subtemas
Tema 1: Origen y calidad de los datos
Tema 2: Organización de los datos
Tema 3: Métodos de captura de información Extracción, Transformación y Carga
Tema 4: Diferencias entre ELT y ET

Estrategias de aprendizajes
 Lectura comprensiva

 Taller
© Universidad Estatal de Milagro – UNEMI

3
DESARROLLO DE LA UNIDAD 1

UNIDAD 1: Introducción al diseño y captura de los


datos masivos.

Tema 1: Origen y calidad de los datos

El término "base de datos" se ha convertido desde hace mucho tiempo en parte


del vocabulario cotidiano de las personas, tanto para gerentes y empleados como
para estudiantes de la mayoría de las materias. Lo usan para describir una
colección organizada de manera lógica de datos almacenados electrónicamente
que se pueden buscar y ver directamente. Sin embargo, generalmente están más
que felices de dejar los porqués y los cómo de su funcionamiento interno a los
expertos.

En general, se sabe que la tecnología de la información está sujeta a un rápido


desarrollo, produciendo nuevas tecnologías a un ritmo increíble. Sin embargo,
esto es solo superficialmente el caso. Muchos aspectos de la informática no
cambian esencialmente en absoluto. Esto incluye no solo los conceptos básicos,
como los principios funcionales de las máquinas informáticas universales,
procesadores, compiladores, sistemas operativos, bases de datos y sistemas de
información y sistemas distribuidos, sino también tecnologías de lenguaje
© Universidad Estatal de Milagro – UNEMI

informático como C, TCP / IP o HTML. , que tienen décadas de antigüedad, pero


que en muchos sentidos proporcionan un fundamento estable del sistema de
información global conocido como World Wide Web. Asimismo, el lenguaje SQL
se ha utilizado durante más de cuatro décadas y seguirá siéndolo en el futuro
previsible. La teoría de los sistemas de bases de datos relacionales fue iniciada
en la década de 1970 por Codd (modelo de relación y formas normales), Chen
(modelo de entidad y relación) y Chamberlin y Boyce (SEQUEL).

4
Sin embargo, estas tecnologías tienen un gran impacto en la práctica de la
gestión de datos en la actualidad. Especialmente, con la revolución de Big Data
y el uso generalizado de métodos de ciencia de datos para el soporte de
decisiones, las bases de datos relacionales y el uso de SQL para el análisis de
datos se están volviendo realmente más importantes. Aunque las estadísticas
sofisticadas y el aprendizaje automático están mejorando las posibilidades de
extracción de conocimientos de los datos, muchos, si no la mayoría, de los análisis
de datos para el apoyo a la toma de decisiones se basan en estadísticas
descriptivas que utilizan SQL para la agregación agrupada. En ese sentido,
aunque la tecnología de bases de datos SQL está bastante madura, hoy es más
relevante que nunca.

Sin embargo, muchas cosas han cambiado en el área de los sistemas de bases
de datos últimamente a lo largo de los años. Especialmente los desarrollos en el
ecosistema de Big Data trajeron nuevas tecnologías al mundo de las bases de
datos, a las que prestamos suficiente atención. Las tecnologías de bases de datos
no relacionales, que encuentran cada vez más campos de aplicación bajo el
término genérico NoSQL, difieren no solo superficialmente de las bases de datos
relacionales clásicas, sino también en los principios subyacentes. Las bases de
datos relacionales se desarrollaron en el siglo XX con el propósito de permitir
formas operativas de gestión de datos estrechamente organizadas, lo que
proporcionaba estabilidad, pero una flexibilidad limitada. Por el contrario, el
movimiento de bases de datos NoSQL surgió a principios del siglo actual,
centrándose en la partición horizontal y la flexibilidad del esquema, y con el
© Universidad Estatal de Milagro – UNEMI

objetivo de resolver los problemas de volumen, variedad y velocidad de Big Data,


especialmente en datos a escala web. Esto tiene consecuencias de gran alcance
y ha llevado a un nuevo enfoque en la gestión de datos, que se aparta
significativamente de las teorías anteriores sobre el concepto básico de bases de
datos: la forma en que se modelan los datos, cómo se consultan y manipulan los
datos, cómo se obtiene la consistencia de los datos manejado, y la arquitectura
del sistema.

5
La evolución de una sociedad industrial a una sociedad de la información y el
conocimiento está representada por la valoración de la información como factor
de producción. Las siguientes características distinguen la información de los
bienes materiales:

• Representación: la información se especifica mediante datos (signos,


señales, mensajes o elementos del lenguaje).
• Procesamiento: la información se puede transmitir, almacenar,
categorizar, encontrar o convertir a otros formatos de representación
utilizando algoritmos y estructuras de datos (reglas de cálculo).
• Combinación: la información se puede combinar libremente. No se puede
rastrear el origen de las partes individuales. La manipulación es posible en
cualquier momento.
• Edad: la información no está sujeta a procesos de envejecimiento físico.
• Original: la información se puede copiar sin límite y no distingue entre
original y copia.
• Vaguedad: la información no es clara, es decir, a menudo imprecisa y de
diferente validez (calidad).
• Medio: la información no requiere un medio fijo y, por tanto, es
independiente de la ubicación.

Considerar los datos como base de la información como factor de


producción en una empresa tiene consecuencias importantes:
© Universidad Estatal de Milagro – UNEMI

• Base para la toma de decisiones: los datos permiten tomar decisiones


bien informadas, por lo que son vitales para todas las funciones
organizacionales.
• Nivel de calidad: los datos pueden estar disponibles en diferentes
fuentes; La calidad de la información depende de la disponibilidad,
exactitud e integridad de los datos.
• Necesidad de inversiones: la recopilación, el almacenamiento y el
procesamiento de datos ocasionan trabajo y gastos.

6
• Grado de integración: Los campos y los titulares de funciones dentro de
cualquier organización están conectados por relaciones informativas, por
lo que el cumplimiento de dichas funciones depende en gran medida del
grado de integración de los datos.

Una vez que los datos se consideran un factor de producción, deben


planificarse, gobernarse, monitorearse y controlarse. Esto hace necesario
ver la gestión de datos como una tarea para el nivel ejecutivo, induciendo
un cambio importante dentro de la empresa: además de la función técnica
de operar la infraestructura de información y comunicación (producción),
planificación y diseño de flujos de datos (cartera de aplicaciones) son
cruciales.

Los datos en las sociedades de la información y del conocimiento, se clasifican


principalmente como sigue:

- No estructurado: los datos no estructurados se encuentran en correos


electrónicos, documentos sin procesar, artículos de revistas, portales de
intranet corporativos, especificaciones de productos, material de
marketing y archivos PDF.
- Transaccional: los datos transaccionales están relacionados con ventas,
entregas, facturas, tickets de problemas, reclamaciones y otras
interacciones monetarias y no monetarias.
- Metadatos: los metadatos son datos sobre otros datos y pueden residir
© Universidad Estatal de Milagro – UNEMI

en un repositorio formal o en varias otras formas, como documentos XML,


definiciones de informes, descripciones de columnas en una base de datos,
archivos de registro, conexiones y archivos de configuración.

7
- Jerárquico: los datos jerárquicos almacenan las relaciones entre otros
datos. Puede almacenarse como parte de un sistema de contabilidad o por
separado como descripciones de relaciones del mundo real, como las
estructuras organizativas de la empresa o las líneas de productos. Los
datos jerárquicos a veces se consideran un dominio super MDM, porque
son fundamentales para comprender y, a veces, descubrir las relaciones
entre los datos maestros.

- Maestro: los datos maestros son los “sustantivos” críticos de una


empresa y generalmente se dividen en cuatro grupos: personas, cosas,
lugares y conceptos. Las categorizaciones adicionales dentro de esas
agrupaciones se denominan áreas temáticas, áreas de dominio o tipos de
entidad. Por ejemplo, dentro de las personas, hay clientes, empleados y
vendedores. Ejemplos de cosas son productos, repuestos, tiendas y
activos. Ejemplos de conceptos son cosas como contratos, garantías y
licencias.

Tema 2: Organización de los datos

2.1. Data Warehouse

El almacenamiento de datos entró en escena al mismo tiempo que la inteligencia


empresarial, y las dos disciplinas crecieron juntas. El chisporroteo detrás de esta
combinación fue el procesamiento analítico en línea (OLAP), que se basa en gran
© Universidad Estatal de Milagro – UNEMI

medida en el análisis dimensional de los datos. Si estuviera utilizando una


herramienta de inteligencia empresarial para acceder a un almacén de datos,
haría preguntas como "¿Cuáles fueron nuestros ingresos por ventas el mes
pasado, desglosados por segmento de clientes, por línea de productos y por
territorio?".

8
Para admitir OLAP, organizaría los datos en su almacén de datos de acuerdo con
las medidas (comúnmente conocidas como hechos) y las diversas dimensiones
que se aplican a cada medida. Si estuviera usando una base de datos relacional,
construiría un esquema en estrella o tal vez un esquema de copo de nieve.
© Universidad Estatal de Milagro – UNEMI

9
La idea original detrás de un almacén de datos era "una ventanilla única" para
los datos analíticos, y este concepto estaba respaldado por una única base de
datos relacional centralizada. Con el tiempo, el almacenamiento de datos
evolucionó hacia un enfoque más basado en componentes, con múltiples
mercados de datos subyacentes vinculados e intercambiando datos de una
manera diseñada.

Con el tiempo, a medida que las bases de datos relacionales se volvieran más
poderosas, "volvería al futuro" y construiría un almacén de datos de última
generación de manera centralizada, utilizando una única base de datos relacional
en lugar de una serie de mercados de datos integrados.

La creación de una capa de data mart requerirá recursos adicionales para


establecer hardware e integrar esas bases de datos con el resto de la plataforma
de datos. Pero este enfoque resuelve el problema de las consultas: cada
© Universidad Estatal de Milagro – UNEMI

departamento accederá a los datos requeridos más fácilmente porque un


mercado determinado contendrá solo información específica del dominio.
Además, los mercados de datos limitarán el acceso a los datos para los usuarios
finales, lo que hará que EDW sea más seguro.

10
2.2. Data Lake
En un lago de datos, es posible que aún tenga algunos de sus datos organizados
dimensionalmente. Pero la mayoría de sus datos, especialmente los datos
semiestructurados y no estructurados, se almacenarán utilizando algún otro
modelo.

Por ejemplo, si un lago de datos utiliza Hadoop como plataforma, la mayoría de


sus datos se almacenarán en el sistema de archivos distribuido de Hadoop
(HDFS). Si crea su lago de datos en el entorno de Amazon Web Services (AWS),
gran parte de sus datos estarán en depósitos de Amazon Simple Storage Service
(S3), al menos inicialmente, antes de que lleguen a otros servicios de datos.
© Universidad Estatal de Milagro – UNEMI

11
Los lagos de datos, sin embargo, están intrínsecamente descentralizados y
distribuidos. Esta descentralización se debe en gran parte a las plataformas en la
nube subyacentes. Incluso los componentes que pueden parecer lógicamente
centralizados tienen sus datos distribuidos en decenas o cientos o incluso miles
de servidores.

Tema 3: Métodos de captura de información Extracción,


Transformación y Carga.

3.1. ETL

Carga y actualiza un almacén de datos mediante extracción, transformación y


carga (ETL). ETL requiere un importante análisis de datos por adelantado para
© Universidad Estatal de Milagro – UNEMI

que pueda comprender completamente las estructuras, las reglas comerciales y


otros matices que vienen con los datos que va a almacenar. Debe tener todas
sus bases de datos configuradas para recibir los datos entrantes, con todos sus
campos configurados con los tipos y tamaños de datos adecuados.

12
Por lo general, ejecuta su ETL para su almacén de datos en algún tipo de modo
por lotes: todos los días, cada dos horas, cada 20 minutos o en algún otro
intervalo de tiempo. En cada punto de actualización, traerá datos nuevos y
modificados desde la actualización anterior del almacén de datos.

Con un almacén de datos, primero debe comprender los datos que desea agregar
para poder configurar las tablas de la base de datos relacional donde se
almacenarán y accederán a los datos. ¿Por qué? Por el modelo ETL que utiliza el
almacén de datos. No puede simplemente "cargar y listo" con un almacén de
datos.

3.2. ELT
Carga y actualiza un lago de datos mediante extracción, carga y transformación
(ELT). Con el modelo ELT, transfiere tantos datos al lago de datos tan rápido
como puede, sin tener que preocuparse por el análisis inicial y la configuración
de los campos de su base de datos. Aún tendrá que hacer ese análisis
eventualmente como parte del paso T (transformación), pero puede esperar
hasta más tarde y hacerlo cuando los datos ya estén almacenados en su lago de
datos.

El modelo ELT de lagos de datos le permite transmitir, o enviar, datos tan rápido
como se crean en algún sistema de origen. Con los lagos de datos, normalmente
tiene menos latencia (retraso de tiempo) que con un almacén de datos, lo que
significa que los datos están disponibles más rápidamente para el análisis, la
© Universidad Estatal de Milagro – UNEMI

toma de decisiones basada en datos y luego la realización de acciones basadas


en datos.

El modelo ELT permite identificar una nueva fuente de datos y cargar


rápidamente los datos sin procesar en la zona bronce del lago de datos. No es
necesario que primero perfile y comprenda los datos; puede simplemente
transmitir o enviar los datos al lago de datos, y estará todo listo para cuando
quiera limpiarlos y refinarlos para sus análisis.

13
Tema 4: Diferencias entre ELT y ETL

● ETL es el proceso de extracción, transformación y carga de datos. ELT es


el proceso de extracción, carga y transformación de datos.
● En ETL, los datos se mueven desde la fuente de datos a la puesta en
escena en el almacén de datos.
● ELT aprovecha el almacén de datos para realizar transformaciones básicas.
No hay necesidad de almacenar datos.
● ETL puede ayudar con la privacidad y el cumplimiento de los datos al
limpiar los datos confidenciales y seguros incluso antes de cargarlos en el
almacén de datos.
● ETL puede realizar transformaciones de datos sofisticadas y puede ser más
© Universidad Estatal de Milagro – UNEMI

rentable que ELT.

14
Resumen y conclusiones

Desde principios de 1980 se ha producido un desarrollo de tecnologías de


almacenamiento para promocionar el manejo de la información y del
conocimiento. En el siguiente gráfico tomado de NGram, en donde se presenta
el uso en libros el uso de los términos: data mart, data warehouse y data lake,
podemos tener en cuenta cómo ciertos términos han sido usados y dejado de ser
usados.

Actividad asincrónica (talleres)

Descripción de las actividades

Actividad 1.- Definir un data mart de ventas


© Universidad Estatal de Milagro – UNEMI

1. Determine las tablas dimensionales relacionadas a la facturación


ecuatoriana.
2. Determine las tablas de hechos en donde se encuentre dos indicadores:
ventas totales y cantidad por producto.

15
Siguiendo la metodología de copo de nieve, determine las tablas. Use una
herramienta CASE de diseño de base de datos.

Actividad 2.- Definir los procesos de movimiento de datos

Parte A: Definir el ELT del datamart de ventas


1. Indique las actividades de Extracción
2. Indique las actividades de Carga
3. Indique las actividades de Transformación

Parte b: Definir el ETL del datamart de ventas


1. Indique las actividades de Extracción
2. Indique las actividades de Transformación
3. Indique las actividades de Carga

Nota: Se recuerda que las actividades aportan al proyecto de fin de módulo

Actividad sincrónica (trabajo fin de módulo)

Avance al Proyecto final del módulo a partir del proyecto Pronóstico de ventas de
comestibles de Corporación Favorita, que se encuentra en Kaggle:
https://www.kaggle.com/c/favorita-grocery-sales-forecasting.

Identifique:
© Universidad Estatal de Milagro – UNEMI

¿Cuáles son las tablas dimensionales del Data Warehouse?


¿Cuáles con las tablas hechos?
Obtenga el diccionario de datos de este modelo

16
Bibliografía

Meier, Andreas; · Kaufmann, Michael (2019) SQL & NoSQL Databases Models,
Languages, Consistency Options and Architectures for Big Data Management,
Springer.
Chodorow, Kristina; (2019) MongoDB: The Definitive Guide; O’Reilly
© Universidad Estatal de Milagro – UNEMI

17
© Universidad Estatal de Milagro – UNEMI

18
NOMBRE DE LA UNIDAD

Bases de datos NoSQL

Resultados de Aprendizajes:

Diseñar modelos de captura, almacenamiento orientado al procesamiento para BI y


analítica de datos masivos con apoyo de herramientas tics especializadas.

Objetivos de aprendizajes:

 Identificar las diferentes bases de datos noSQL


 Introducir a la infraestructura de las bases de datos noSQL.

Temas y Subtemas

Tema 1: Diferencias entre SQL y NoSQL


Tema 2: Descripción de bases noSQL: Documentales, Key-Value, Column-Family y
Graph Tema 3: Carga de Datos usando SQL.
Transformación y Carga
Tema 4: Carga de Datos usando noSQL

Estrategias de aprendizajes

 Lectura comprensiva
© Universidad Estatal de Milagro – UNEMI

 Taller

19
DESARROLLO DE LA UNIDAD 2

UNIDAD 2: Bases de datos NoSQL

Tema 1: Diferencias entre bases de datos SQL y NoSQL

Relacional y NoSQL son dos tipos de sistemas de bases de datos que se


implementan comúnmente en aplicaciones nativas de la nube. Están construidos
de manera diferente, almacenan datos de manera diferente y se accede a ellos
de manera diferente.

Las bases de datos relacionales han sido una tecnología predominante durante
décadas. Son maduros, probados y ampliamente implementados. Abundan los
productos, las herramientas y la experiencia de bases de datos de la
competencia. Las bases de datos relacionales proporcionan un almacén de tablas
de datos relacionados. Estas tablas tienen un esquema fijo, utilizan SQL (lenguaje
de consulta estructurado) para administrar los datos y son compatibles con las
garantías ACID.

Las bases de datos sin SQL se refieren a almacenes de datos no relacionales de


alto rendimiento. Se destacan por sus características de facilidad de uso,
escalabilidad, resistencia y disponibilidad. En lugar de unir tablas de datos
normalizados, NoSQL almacena datos no estructurados o semiestructurados, a
© Universidad Estatal de Milagro – UNEMI

menudo en pares clave-valor o documentos JSON. Las bases de datos sin SQL
generalmente no brindan garantías ACID más allá del alcance de una sola
partición de base de datos. Los servicios de gran volumen que requieren un
tiempo de respuesta inferior a un segundo favorecen los almacenes de datos
NoSQL.

20
El teorema de CAP
Como una forma de entender las diferencias entre estos tipos de bases de datos,
considere el teorema CAP, un conjunto de principios aplicados a sistemas
distribuidos que almacenan estado.

El teorema establece que los sistemas de datos distribuidos ofrecerán un


equilibrio entre consistencia, disponibilidad y tolerancia a la partición. Y que
cualquier base de datos sólo puede garantizar dos de las tres propiedades:
© Universidad Estatal de Milagro – UNEMI

● Consistencia. Todos los nodos del clúster responden con los datos más
recientes, incluso si el sistema debe bloquear la solicitud hasta que se
actualicen todas las réplicas. Si consulta un "sistema coherente" para un
elemento que se está actualizando actualmente, esperará esa respuesta
hasta que todas las réplicas se actualicen correctamente. Sin embargo,
recibirá los datos más actualizados.

21
● Disponibilidad. Cada nodo devuelve una respuesta inmediata, incluso si
esa respuesta no es la información más reciente. Si consulta un "sistema
disponible" para un elemento que se está actualizando, obtendrá la mejor
respuesta posible que el servicio puede proporcionar en ese momento.

● Tolerancia de partición. Garantiza que el sistema siga funcionando incluso


si un nodo de datos replicado falla o pierde la conectividad con otros nodos
de datos replicados.

Las bases de datos relacionales generalmente brindan consistencia y


disponibilidad, pero no tolerancia a la partición. Por lo general, se aprovisionan
en un solo servidor y se escalan verticalmente agregando más recursos a la
máquina.

Muchos sistemas de bases de datos relacionales admiten funciones de replicación


integradas en las que se pueden realizar copias de la base de datos primaria en
otras instancias de servidor secundario. Las operaciones de escritura se realizan
en la instancia principal y se replican en cada una de las secundarias. En caso de
falla, la instancia principal puede conmutar por error a una secundaria para
brindar alta disponibilidad. Los secundarios también se pueden utilizar para
distribuir operaciones de lectura. Si bien las operaciones de escritura siempre van
en contra de la réplica principal, las operaciones de lectura se pueden enrutar a
cualquiera de las secundarias para reducir la carga del sistema.
© Universidad Estatal de Milagro – UNEMI

Los datos también se pueden dividir horizontalmente en varios nodos, como con
la fragmentación. Pero la fragmentación aumenta drásticamente la sobrecarga
operativa al escupir datos en muchas partes que no se pueden comunicar
fácilmente. Puede ser costoso y lento de administrar. Las características
relacionales que incluyen combinaciones de tablas, transacciones e integridad
referencial requieren fuertes penalizaciones de rendimiento en implementaciones
fragmentadas.

22
La coherencia de la replicación y los objetivos del punto de recuperación se
pueden ajustar configurando si la replicación se produce de forma sincrónica o
asincrónica. Si las réplicas de datos perdieran la conectividad de red en un clúster
de base de datos relacional "altamente consistente" o sincrónico, no podría
escribir en la base de datos. El sistema rechazará la operación de escritura ya
que no puede replicar ese cambio en la otra réplica de datos. Cada réplica de
datos debe actualizarse antes de que se complete la transacción.

Las bases de datos NoSQL suelen admitir alta disponibilidad y tolerancia a la


partición. Se escalan horizontalmente, a menudo en servidores de productos
básicos. Este enfoque proporciona una gran disponibilidad, tanto dentro como
entre regiones geográficas a un costo reducido. Usted particiona y réplica datos
en estas máquinas o nodos, lo que proporciona redundancia y tolerancia a fallas.
La coherencia se ajusta normalmente a través de protocolos de consenso o
mecanismos de quórum. Proporcionan más control al navegar por las
compensaciones entre el ajuste de la replicación sincrónica y asincrónica en
sistemas relacionales.

Si las réplicas de datos perdieran la conectividad en un clúster de base de datos


NoSQL "de alta disponibilidad", aún podría completar una operación de escritura
en la base de datos. El clúster de la base de datos permitiría la operación de
escritura y actualizará cada réplica de datos cuando esté disponible. Las bases
de datos NoSQL que admiten múltiples réplicas grabables pueden fortalecer aún
más la alta disponibilidad al evitar la necesidad de conmutación por error al
© Universidad Estatal de Milagro – UNEMI

optimizar el objetivo de tiempo de recuperación.

23
Las bases de datos NoSQL modernas generalmente implementan capacidades de
partición como una característica del diseño de su sistema. La administración de
particiones a menudo está integrada en la base de datos y el enrutamiento se
logra a través de sugerencias de ubicación, a menudo llamadas claves de
partición. Un modelo de datos flexible permite que las bases de datos NoSQL
reduzcan la carga de la administración de esquemas y mejoren la disponibilidad
al implementar actualizaciones de aplicaciones que requieren cambios en el
modelo de datos.

La alta disponibilidad y la escalabilidad masiva suelen ser más críticas para el


negocio que las uniones de tablas relacionales y la integridad referencial. Los
desarrolladores pueden implementar técnicas y patrones como Sagas, CQRS y
mensajería asincrónica para adoptar la consistencia final.

Tema 2: Descripción de bases noSQL: Documentales, Key-


Value, Column-Family y Graph.
© Universidad Estatal de Milagro – UNEMI

El término NoSQL se utiliza ahora para cualquier enfoque de gestión de datos no


relacional que cumpla con dos criterios:

• Primero: los datos no se almacenan en tablas.


• En segundo lugar: el lenguaje de la base de datos no es SQL.

24
Tipos de Bases de Datos NoSQL

● Bases de datos de documentos: los datos se almacenan en un documento


similar a los objetos JSON (JavaScript Object Notation). Cada uno de los
documentos contiene pares de campos y valores correspondientes. El
valor es de diferentes tipos como cadena, número, booleano, matriz,
objeto, etc. Debido a la flexibilidad para almacenar una variedad de tipos
de datos y un poderoso lenguaje de consulta, es una base de datos NoSQL
de uso general ampliamente utilizada. Ejemplo: MongoDB, CouchDB, etc.
● Bases de datos de grafos: en esta base de datos, los datos se almacenan
como nodos y bordes siguiendo la estructura de un grafo. Por lo general,
los datos almacenados en un nodo con información sobre personas,
lugares y cosas, mientras que el almacenamiento de datos en los bordes
es un atributo de relación entre los nodos. Este tipo de base de datos se
usa ampliamente para almacenar datos para una red social, motor de
recomendaciones, motor de búsqueda, etc. Ejemplos: Neo4j, JanusGraph,
etc.
● Bases de datos de clave-valor: es un tipo simple de base de datos donde
cada elemento contiene un par de claves y valores. Debido a su estructura
más simple, puede almacenar una gran cantidad de datos y recuperar
datos con consultas básicas. Se utiliza principalmente para almacenar
preferencias de usuario y datos de caché. Ejemplos: Redis, Memcached,
DynamoDB, etc.
● Base de datos de familia de columnas: en esta base de datos, los datos se
© Universidad Estatal de Milagro – UNEMI

almacenan en tablas, filas y columnas dinámicas. Proporciona mucha


flexibilidad sobre las bases de datos relacionales, ya que no es necesario
que cada fila tenga las mismas columnas. Estas bases de datos se utilizan
ampliamente para almacenar datos de Internet de las cosas y datos de
perfil de usuario. Ejemplos: Cassandra, Hbase, etc.

25
Tema 3: Estructura de Datos usando SQL

Como se explica, el modelo relacional presenta información en forma de tabla,


donde cada tabla es un conjunto de tuplas (o registros) del mismo tipo. Ver todos
los datos como conjuntos hace posible ofrecer opciones de consulta y
manipulación basadas en conjuntos.

El resultado de una operación selectiva, por ejemplo, es un conjunto, es decir, el


sistema de gestión de la base de datos devuelve cada resultado de búsqueda
como una tabla. Si ninguna tupla de la tabla escaneada muestra las propiedades
respectivas, el usuario obtiene una tabla de resultados en blanco. Las operaciones
de manipulación se dirigen de manera similar a conjuntos y afectan a una tabla
completa o secciones individuales de la tabla.

Las operaciones para crear tablas se utiliza las sentencias DDL:

Create CREATE TABLE people (id MEDIUMINT NOT NULL


AUTO_INCREMENT, user_id Varchar(30), age Number, status
char(1), PRIMARY KEY (id))

Alter ALTER TABLE people

ADD join_date DATETIME


© Universidad Estatal de Milagro – UNEMI

Drop DROP TABLE people

26
Tema 4: Estructura de Datos usando noSQL

Documentos

En el corazón de MongoDB está el documento: un conjunto ordenado de claves


con valores asociados.

La representación de un documento varía según el lenguaje de programación,


pero la mayoría de los lenguajes tienen una estructura de datos que se ajusta de
forma natural, como un mapa, un hash o un diccionario.

En JavaScript, por ejemplo, los documentos se representan como objetos:

{"greeting" : "Hello, world!"}

La mayoría de los documentos serán más complejos que este simple contendrán
múltiples pares clave / valor:

{"greeting" : "Hello, world!", "views" : 3}

Colecciones
Una colección es un grupo de documentos. Si un documento es el análogo
MongoDB de una fila en una base de datos relacional, entonces una colección se
© Universidad Estatal de Milagro – UNEMI

puede considerar como el análogo a una tabla.

Las colecciones tienen esquemas dinámicos. Esto significa que los documentos
de una sola colección pueden tener cualquier número de "formas" diferentes. Por
ejemplo, los dos documentos siguientes podrían almacenarse en una sola
colección:

27
Bases de datos
Además de agrupar documentos por colección, MongoDB agrupa colecciones en
bases de datos. Una sola instancia de MongoDB puede albergar varias bases de
datos, cada una de las cuales agrupa cero o más colecciones. Una buena regla
general es almacenar todos los datos de una sola aplicación en la misma base de
datos. Las bases de datos independientes son útiles al almacenar datos para
varias aplicaciones o usuarios en el mismo servidor MongoDB.

Comparando las operaciones DDL entre SQL y noSQL

CREATE TABLE people (id MEDIUMINT NOT db.createCollection("people")


NULL AUTO_INCREMENT, user_id
Varchar(30), age Number, status
char(1),PRIMARY KEY (id))

ALTER TABLE people db.people.updateMany(

ADD join_date DATETIME { },

{ $set: { join_date: new Date() }


}

DROP TABLE people db.people.drop()


© Universidad Estatal de Milagro – UNEMI

Los escenarios de modelado pueden diferir en situaciones según los requisitos.


Al modelar un esquema, debe tenerse en cuenta que MongoDB administra
documentos con un tamaño máximo de 16 MB.

En NoSQL, defina una colección de objetos anidados o varias colecciones donde


cada una contenga una definición de objeto simple. En los siguientes casos,
analizamos la transformación de esquemas de SQL a NoSQL.

28
Caso A: Dirección de usuario:

Explicación del diseño:


● La dirección se ha movido ya que una matriz es lo suficientemente flexible
para acomodar entradas adicionales en el futuro.
● Cada elemento de la matriz de direcciones tiene un número limitado de
campos, no es necesario crear una colección separada.
© Universidad Estatal de Milagro – UNEMI

29
Caso B: Modelo de región, país, estado y ciudad - Enfoque I:

Explicación del diseño:


Se recomienda que las relaciones 1-M se manejen en un solo modelo donde el
tamaño de los datos no aumenta drásticamente. Por lo tanto, la región, el país y
el estado se manejan en un solo documento que es una especie de conjunto
definido de datos.
© Universidad Estatal de Milagro – UNEMI

● Las ciudades se mantienen en una colección separada por 2 razones:


● Para algunos países, el número de ciudades es enorme y esto hará que el
tamaño del documento sea mucho mayor.
● Para evitar el modelado anidado y complejo innecesario de la región.

30
Esquema: A frente a B: mejor rendimiento de las consultas:
● La recopilación de ciudades proporciona una gama más amplia de
opciones para consultar datos de la recopilación de regiones de manera
eficiente y rápida, en función de "region_id", "country_id" y "state_id".
● Las ciudades se pueden agrupar fácilmente en función de "region_id",
"country_id" o "state_id" de manera más eficiente.

Caso C: Modelo de región, país, estado y ciudad - Enfoque II:

Explicación del diseño:


● Este esquema tiene menos objetos anidados para mayor claridad.
● Es mucho más fácil para aplicaciones como las aplicaciones NodeJS
© Universidad Estatal de Milagro – UNEMI

manejar consultas basadas en esquemas predefinidos.


Esquema: A frente a B: mejor rendimiento de las consultas:
● B contiene redundancia, pero en NoSQL, se prefiere el rendimiento a la
normalización.
● Los datos en el ejemplo anterior son relativamente limitados, pero
considerando un caso de negocios en el que están involucrados millones
de documentos, el rendimiento de Schema-A no es rival para el
rendimiento de Schema-B.

31
Usuarios, productos y pedidos de Case Online:
Las referencias de país y ciudad se omiten en el siguiente esquema de direcciones
por motivos de simplicidad, centrándose en la relación M: M:

Explicación del diseño:


M: La relación M de pedido y producto es manejada solo por una colección.
Conclusión:
● No complique demasiado una estructura con objetos anidados extensos
● Las relaciones (1: M) y (M: M) son más fáciles de transformar en una sola
colección si los tamaños de los documentos son razonables.
● Divida los objetos anidados en colecciones separadas, ya sea por
simplicidad o tamaño
● La normalización no es una prioridad en NoSQL. Su poder viene con su
flexibilidad. NoSQL es la mejor opción para datos no estructurados, su
enfoque está en cómo responder con un rendimiento rápido.
© Universidad Estatal de Milagro – UNEMI

32
Resumen y conclusiones

Las bases de datos noSQL han conseguido ampliar el alcance de las aplicaciones,
permitiendo que la estructura de los datos no sean obligados a ser almacenados
en bases de datos relacionales.

Al momento de escribir este compendio, el top ten del ranking de bases de datos
https://db-engines.com/en/ranking, se encuentra:

Las posiciones del ranking 5,6,7,8 y 10, pertenecen a los modelos de bases de
datos noSQL, estudiados en esta unidad.

Actividad asincrónica

Descripción de las actividades


© Universidad Estatal de Milagro – UNEMI

Actividad 1.- Creación de un Data Mart usando una base de datos relacional
1. Utilice una base de datos relacional
2. Cree las tablas dimensionales del datamart de ventas
3. Cree las tablas de hechos del datamart de ventas

33
Actividad 2.- Creación de un Data Mart usando una base de datos
noSQL(MongoDB).
1. Utilice una base de datos relacional
2. Cree las tablas dimensionales en colecciones del datamart de
ventas.
3. Cree las tablas de hechos en colecciones del datamart de ventas

Nota: Se recuerda que las actividades aportan al proyecto de fin de módulo

Actividad sincrónica

A partir del Pronóstico de ventas de comestibles de Corporación Favorita de


Kaggle:

1. Cree las colecciones necesarias qué definan las estructuras de datos en


MongoDB.
2. Para el punto anterior determine, los tipos de datos que deben de utilizar
en cada columna.
3. Determinen el ELT de los datos que se encuentran en el portal de Kaggle
a la base de datos noSQL MongoDB.
4. Determine el tamaño total usado en la base de datos MongoDB

Bibliografía
© Universidad Estatal de Milagro – UNEMI

Meier, Andreas; · Kaufmann, Michael (2019) SQL & NoSQL Databases Models,
Languages, Consistency Options and Architectures for Big Data Management,
Springer.
Chodorow, Kristina; (2019) MongoDB: The Definitive Guide; O’Reilly

34
© Universidad Estatal de Milagro – UNEMI

35
NOMBRE DE LA UNIDAD

CRUD Bases de Datos Documentales

Resultados de Aprendizajes:

Diseñar modelos de captura, almacenamiento orientado al procesamiento para BI y


analítica de datos masivos con apoyo de herramientas tics especializadas.

Objetivos de aprendizajes:

 Determinar las operaciones CRUD de una base documental.

Temas y Subtemas

Tema 1: MongoDB, Software de apoyo Create


Tema 2: MongoDB, Software de apoyo Read
Tema 3: MongoDB, Software de apoyo Update
Tema 4: MongoDB, Software de apoyo Delete

Estrategias de aprendizajes

 Lectura comprensiva
 Taller
© Universidad Estatal de Milagro – UNEMI

36
DESARROLLO DE LA UNIDAD 3

UNIDAD 3: CRUD de Bases de Datos Documentales


Tema 1: MongoDB Create

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.insertOne(
<document>,
{
writeConcern: <document>
}
)

db.collection.insertMany()
© Universidad Estatal de Milagro – UNEMI

db.collection.insertMany(
[ <document 1> , <document 2>, ... ],
{
writeConcern: <document>,
ordered: <boolean>
}
)

37
En MongoDB, las operaciones de inserción tienen como objetivo una sola
colección. Todas las operaciones de escritura en MongoDB son atómicas al nivel
de un solo documento.

Tema 2: MongoDB Read


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 devolver.
© Universidad Estatal de Milagro – UNEMI

38
Comparación de SQL y NoSql

Declaraciones SQL Declaraciones find () de MongoDB


SELECT

SELECT * db.people.find()

FROM people

SELECT id, db.people.find(

user_id, { },

status { user_id: 1, status: 1 }

FROM people )

SELECT user_id, status db.people.find(

FROM people { },

{ user_id: 1, status: 1, _id: 0 }

)
© Universidad Estatal de Milagro – UNEMI

SELECT * db.people.find(

FROM people { status: { $ne: "A" } }

WHERE status != "A" )

39
SELECT * db.people.find(

FROM people { status: "A",

WHERE status = "A" age: 50 }

AND age = 50 )

SELECT * db.people.find(

FROM people { $or: [ { status: "A" } , { age: 50 } ] }

WHERE status = "A" )

OR age = 50

SELECT * db.people.find(

FROM people { age: { $gt: 25 } }

WHERE age > 25 )


© Universidad Estatal de Milagro – UNEMI

SELECT * db.people.find(

FROM people { age: { $lt: 25 } }

40
WHERE age < 25 )

SELECT * db.people.find(

FROM people { age: { $gt: 25, $lte: 50 } }

WHERE age > 25 )

AND age <= 50

SELECT * db.people.find( { user_id: /bc/ } )

FROM people

WHERE user_id like


"%bc%"

SELECT * db.people.find( { user_id: /^bc/ } )

FROM people

WHERE user_id like


"bc%"

SELECT * db.people.find( { status: "A" } ).sort( { user_id: 1 } )

FROM people

WHERE status = "A"


© Universidad Estatal de Milagro – UNEMI

ORDER BY user_id ASC

SELECT * db.people.find( { status: "A" } ).sort( { user_id: -1 } )

FROM people

WHERE status = "A"

ORDER BY user_id DESC

41
SELECT COUNT(*) db.people.count()

FROM people

SELECT COUNT(user_id) db.people.count( { user_id: { $exists: true } } )

FROM people

SELECT COUNT(*) db.people.count( { age: { $gt: 30 } } )

FROM people

WHERE age > 30

SELECT DISTINCT(status) db.people.distinct( "status" )

FROM people

SELECT * db.people.find().limit(1)

FROM people

LIMIT 1

SELECT * db.people.find().limit(5).skip(10)

FROM people

LIMIT 5

SKIP 10

EXPLAIN SELECT * db.people.find( { status: "A" } ).explain()


© Universidad Estatal de Milagro – UNEMI

FROM people

WHERE status = "A"

42
Tema 3: MongoDB Update

Actualizar operaciones

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.updateMany(
<filter>,
<update>,
{
upsert: <boolean>,
writeConcern: <document>,
collation: <document>,
arrayFilters: [ <filterdocument1>, ... ],
hint: <document|string> // Available starting in MongoDB 4.2.1
}
)
db.collection.replaceOne()
© Universidad Estatal de Milagro – UNEMI

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.

43
Puede especificar criterios o filtros que identifican los documentos a actualizar.
Estos filtros utilizan la misma sintaxis que las operaciones de lectura.

Tema 4: MongoDB Delete

Eliminar operaciones
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 identifican los documentos que se


eliminarán. Estos filtros utilizan la misma sintaxis que las operaciones de lectura.
© Universidad Estatal de Milagro – UNEMI

44
Resumen y conclusiones

Las operaciones CRUD sirven para realizar las operaciones básicas de


manipulación de datos. Las cuales pueden ser utilizadas en diferentes lenguajes.

Actividad asincrónica

Descripción de las actividades

Actividad 1.- Operaciones Read en MongoDB


a) Realice una consulta con los datos cargados para determinar el precio
promedio de los productos.
b) Realice una consulta para determinar dónde están los datos faltantes
c) Realice una consulta que haga un join entre todas las tablas

Actividad 2.- Operaciones de Create, Update y Delete


a) Realice una operación que cree un supermercado nuevo en la ciudad de
“Guayaquil”.
b) Realice una operación que actualice los precios en 2.74%
c) Realice una operación que elimine los registros que no tienen valores en
sus columnas.

Nota: Se recuerda que las actividades aportan al proyecto de fin de módulo


© Universidad Estatal de Milagro – UNEMI

45
Actividad sincrónica

Avance al Proyecto final del módulo


Dentro de la base de datos MongoDB, realice del Datamart de Ventas
1. Defina las operaciones necesarias para llenar las colecciones (tablas) de
dimensiones.
2. Defina las operaciones necesarias para llenas las colecciones (tablas) de
hecho.
3. Baje el ODBC de MongoDB
4. Configure el ODBC de MongoDB para que lo pueda utilizar en Excel
5. Haga join en excel, para extraer la consulta y póngalo en una tabla
dinámica.

Bibliografía

Meier, Andreas; · Kaufmann, Michael (2019) SQL & NoSQL Databases Models,
Languages, Consistency Options and Architectures for Big Data Management,
Springer
Chodorow, Kristina; (2019) MongoDB: The Definitive Guide; O’Reilly
© Universidad Estatal de Milagro – UNEMI

46
© Universidad Estatal de Milagro – UNEMI

47
NOMBRE DE LA UNIDAD

UNIDAD 4: Extracción de datos

Resultados de Aprendizajes:

Diseñar modelos de captura, almacenamiento orientado al procesamiento para BI y


analítica de datos masivos con apoyo de herramientas tics especializadas.

Objetivos de aprendizajes:

 Introducir al diseño y captura de los datos masivos.

Temas y Subtemas

Tema 1: Introducción a la extracción de datos


Tema 2: Aggregation Framework
Tema 3: Gestión de MongoDB, Seguridad, Respaldo y Rendimiento
Tema 4: Sharding – Drivers, Referencias: dónde consultar cada driver

Estrategias de aprendizajes

 Lectura comprensiva
 Taller
© Universidad Estatal de Milagro – UNEMI

48
DESARROLLO DE LA UNIDAD 4

UNIDAD 4: Extracción de datos


Tema 1: Introducción a la extracción de datos

Las herramientas / aplicaciones de extracción, transformación y carga (ETL) que


brindan soporte para MongoDB deben cumplir con las siguientes Mejores
prácticas:

Conexiones
La aplicación debe conectarse a las implementaciones de MongoDB utilizando el
formato de URI de cadena de conexión estándar. La aplicación debe admitir la
capacidad de conectarse a (i) un proceso mongod individual, (ii) un conjunto de
réplicas de MongoDB (mediante el descubrimiento automático) o (iii) un mongos
como interfaz para un clúster fragmentado.

Tras la construcción de la conexión, la aplicación debería exponer todas las


posibles preferencias de lectura de MongoDB al usuario final.

La aplicación debe funcionar como se espera al autenticarse como un usuario con


roles / permisos de solo lectura.

Extraer, transformar
© Universidad Estatal de Milagro – UNEMI

La aplicación debe proporcionar a los usuarios la capacidad de mapear fácilmente


elementos JSON dentro de documentos a estructuras de datos posteriores.
Específicamente, la aplicación debe admitir la capacidad de desenrollar matrices
simples o representar documentos incrustados utilizando relaciones de datos
adecuadas (por ejemplo, uno a uno, uno a muchos, muchos a muchos).

La aplicación debe inferir la información del esquema examinando un


subconjunto de documentos dentro de las colecciones de destino.

49
La aplicación debe permitir a los usuarios agregar campos al modelo de datos
descubierto que pueden no haber estado presentes dentro del subconjunto de
documentos usados para la inferencia de esquemas.

La aplicación debe inferir información sobre los índices existentes para las
colecciones que se van a consultar.

La aplicación debe solicitar y / o advertir a los usuarios sobre consultas que no


contengan campos indexados. Nota: la coincidencia de campos simple es
apropiada, no es necesario ejecutar un plan de explicación de consulta en
segundo plano.

La aplicación debe admitir la capacidad de devolver un subconjunto de campos


de documentos utilizando proyecciones de consultas.

Para consultas en conjuntos de réplicas de MongoDB, la aplicación debe admitir


la capacidad de especificar preferencias de lectura de MongoDB personalizadas
para operaciones de consulta individuales.

La aplicación debe inferir información sobre las implementaciones de clústeres


fragmentados y anotar los campos clave de fragmentación para cada colección
fragmentada.

Para las consultas contra los clústeres fragmentados de MongoDB, la aplicación


© Universidad Estatal de Milagro – UNEMI

debe advertir al usuario sobre las consultas que no utilizan el aislamiento de


consultas adecuado. Las consultas de difusión en un clúster fragmentado pueden
tener un impacto negativo en el rendimiento de la base de datos.

Carga
La aplicación debe admitir la capacidad de escribir datos en cualquier
implementación de MongoDB, ya sea un solo nodo, un conjunto de réplicas o un
clúster fragmentado.

50
Para las escrituras en un clúster fragmentado de MongoDB, la aplicación debe
informar y / o mostrar un mensaje de error al usuario si los documentos no
contienen una clave fragmentada.

La aplicación debe permitir a los usuarios establecer un WriteConcern


personalizado para todas y cada una de las operaciones de escritura en una
implementación de MongoDB en ejecución.

Para operaciones de carga masiva, la aplicación debe admitir la escritura de


documentos en lotes utilizando el método insert ().

Para operaciones de actualización masiva con MongoDB 2.6 y superior, la


aplicación debe admitir el comando de base de datos de actualización masiva
(que admite operaciones ordenadas y no ordenadas).

Para la carga masiva en una implementación fragmentada de MongoDB, la


aplicación debe aprovechar las mejores prácticas para inserciones masivas en
una colección fragmentada. Específicamente, esto incluye dividir previamente la
clave de fragmento de la colección e insertarla a través de múltiples procesos de
mongos.
© Universidad Estatal de Milagro – UNEMI

51
Tema 2: Aggregation Framework

Las características declarativas y funcionales del Aggregation Framework, en


última instancia, lo hacen especialmente poderoso para procesar conjuntos de
datos masivos. Los usuarios se centran más en definir "el qué" en términos del
resultado requerido de forma declarativa. Los usuarios se centran menos en "el
cómo" de especificar la lógica exacta a aplicar para lograr cada transformación.
Usted proporciona un propósito publicitario específico y claro para cada etapa del
proceso. En tiempo de ejecución, el motor de la base de datos puede comprender
la intención exacta de cada etapa. Por ejemplo, el motor de la base de datos
puede obtener respuestas claras a las preguntas que hace, tales como, "¿esta
etapa es para realizar un filtro o es esta etapa para agrupar en algunos campos?".
Con este conocimiento, el motor de la base de datos tiene la oportunidad de
optimizar la canalización en tiempo de ejecución.

El siguiente diagrama muestra un ejemplo de la base de datos que realiza una


optimización de canalización. Puede decidir reordenar las etapas para aprovechar
de manera óptima un índice al tiempo que se asegura de que la salida no cambie.
O bien, puede optar por ejecutar algunos pasos en paralelo contra subconjuntos
de datos en diferentes fragmentos, lo que reduce el tiempo de respuesta y, al
mismo tiempo, garantiza que la salida nunca cambie.
© Universidad Estatal de Milagro – UNEMI

52
Las operaciones de agregación procesan registros de datos y devuelven
resultados calculados. Las operaciones de agregación agrupan valores de varios
documentos y pueden realizar una variedad de operaciones en los datos
agrupados para devolver un único resultado. MongoDB proporciona tres formas
de realizar la agregación: la canalización de agregación, la función de reducción
de mapa y los métodos de agregación de propósito único.

Canalización de agregación
El marco de agregación de MongoDB se basa en el concepto de canalizaciones
de procesamiento de datos. Los documentos ingresan a una tubería de múltiples
etapas que transforma los documentos en un resultado agregado. Por ejemplo:

db.orders.aggregate([
{ $match: { status: "A" } },
{ $group: { _id: "$cust_id", total: { $sum: "$amount" } } }
])

Operaciones de agregación de propósito único


MongoDB también proporciona db.collection.estimatedDocumentCount(),
db.collection.count() and db.collection.distinct().

Todas estas operaciones agregan documentos de una sola colección. Si bien


estas operaciones brindan acceso simple a procesos de agregación comunes,
carecen de la flexibilidad y las capacidades de una canalización de agregación.
© Universidad Estatal de Milagro – UNEMI

53
Map-reduce es un paradigma de procesamiento de datos para condensar grandes
volúmenes de datos en resultados agregados útiles. Para realizar operaciones de
reducción de mapas, MongoDB proporciona el mapReduce comando de la base
de datos.

Considere la siguiente operación de reducción de mapa:

En esta operación de reducción de mapa, MongoDB aplica la fase de mapa a cada


documento de entrada (es decir, los documentos de la colección que coinciden
© Universidad Estatal de Milagro – UNEMI

con la condición de consulta). La función de mapa emite pares clave-valor. Para


aquellas claves que tienen varios valores, MongoDB aplica la fase de reducción,
que recopila y condensa los datos agregados. Luego, MongoDB almacena los
resultados en una colección. Opcionalmente, la salida de la función de reducción
puede pasar a través de una función de finalización para condensar o procesar
aún más los resultados de la agregación.

54
Tema 3: Gestión de MongoDB, Seguridad, Respaldo y
Rendimiento.

Seguridad:

1. Cree credenciales de seguridad independientes: Para habilitar la autenticación,


© Universidad Estatal de Milagro – UNEMI

cree credenciales de inicio de sesión para cada usuario o proceso que acceda a
MongoDB.

Suponga que varios usuarios necesitan acceso administrativo a la base de datos.


En lugar de compartir credenciales, lo que aumenta la probabilidad de que la
cuenta se vea comprometida, emita a cada persona su propia credencial y
asignarles privilegios de acuerdo con sus roles, que se describen a continuación.

55
2. Utilice el control de acceso basado en roles: En lugar de otorgar autorizaciones
a usuarios individuales, asocie las autorizaciones con roles como servidor de
aplicaciones, administrador de base de datos, desarrollador, herramienta de BI y
más. Los roles predefinidos están disponibles de fábrica, como dbAdmin,
dbOwner, clusterAdmin y más. Esos roles se pueden personalizar aún más para
satisfacer las necesidades de equipos y áreas funcionales particulares, al tiempo
que se garantizan políticas coherentes en toda la organización.

3. Limite las conexiones a la base de datos: Una forma en que ocurren las
filtraciones de datos es que un intruso obtiene acceso remoto a la base de datos.
Al limitar las conexiones remotas a la base de datos, reduce este riesgo. La mejor
práctica es permitir conexiones sólo desde direcciones IP específicas, una práctica
conocida como lista blanca.

4. Cifre sus datos: En la mayoría de las filtraciones de datos, los datos son legibles
por usuarios no autorizados. Cifrar datos los hace ilegibles para quienes no tienen
las claves para descifrarlos.

5. Agregue cifrado adicional para datos confidenciales

La mayor parte del cifrado se aplica en el servidor. Esto significa que, si alguien
tiene acceso al servidor, es posible que pueda leer esos datos. El cifrado a nivel
de campo del lado del cliente garantiza que solo las partes relevantes puedan
leer sus propios datos en el lado del cliente utilizando su clave de descifrado
© Universidad Estatal de Milagro – UNEMI

única.

6. Auditoría y registros
Las pistas de auditoría deben rastrear quién realizó cambios en la configuración
de la base de datos, cuáles fueron esos cambios y cuándo se realizaron.

56
7. ¿Community Edition o Enterprise Server?
MongoDB Community Edition es la versión abierta y gratuita de MongoDB.
MongoDB Enterprise Server ofrece funciones adicionales de seguridad y
rendimiento para casos de uso empresarial a escala. Una comparación de las dos
ediciones está disponible aquí, junto con instrucciones para actualizar de
Community Edition a Enterprise Server.

Pero si está a punto de considerar Enterprise Server para funciones como la


integración LDAP y el cifrado en reposo, ¿por qué no evaluar MongoDB Atlas, la
base de datos totalmente administrada como un servicio que ofrece todas las
bondades de MongoDB Enterprise Server junto con las mejores prácticas de
seguridad? ¿fuera de la caja? MongoDB Atlas está disponible y es seguro de forma
predeterminada en las tres principales nubes públicas: AWS, Microsoft Azure y
GCP.

Respaldo
© Universidad Estatal de Milagro – UNEMI

Herramienta de exportación mongoexport


La herramienta mongoexport en Mongodb puede exportar una colección a un
archivo en formato JSON o CSV. Puede especificar los elementos de datos
exportados a través de parámetros o puede exportar los datos de acuerdo con
las condiciones especificadas.

57
Importar herramienta mongoimport
La herramienta mongoimport en Mongodb puede importar el contenido de un
archivo de formato específico a la colección especificada. La herramienta puede
importar datos en formato JSON o en formato CSV.

Tema 4: Sharding – Drivers, Referencias: dónde consultar


cada driver.

Sharding significa "partición" y es una de las principales características de


MongoDB.
En MongoDB cada documento estará en un "shard" o partición. Una partición no
se debe entender como un solo servidor, sino como un conjunto réplica (tema
anterior).

Particionado: dividir los datos entre múltiples máquinas:

● Permite almacenar más información y soportar más carga sin


necesidad de máquinas más potentes, sino una mayor cantidad
de máquinas más modestas (y mucho más baratas).
● Fragmenta los datos de la base de datos horizontalmente
agrupándolos de algún modo que tenga sentido y que permite
un direccionamiento más rápido.
● Los shards (fragmentos) pueden estar localizados en diferentes
© Universidad Estatal de Milagro – UNEMI

bases de datos y localizaciones físicas.

58
Elementos del Sharded Cluster
● Shards: Cada una de las máquinas del cluster
● Almacena un subconjunto de los datos de la colección.
● Cada shard es una instancia de mongod o un conjunto de
réplicas.
● Servidor de configuración: Instancia de mongodb que almacena
metadatos sobre el cluster.
● Mapean los trozos con los shards, definiendo qué rangos de
datos definen un trozo (chunk) de la colección, y qué trozos se
encuentran en un determinado shard.
● Enrutador: Instancia mongos que enruta las lecturas y
© Universidad Estatal de Milagro – UNEMI

escrituras de las aplicaciones a los shards.


● Las aplicaciones no acceden directamente a los shards, sino al
router.
● Una vez recopilados los datos de los diferentes shards, se
fusionan y se encarga de devolverlos a la aplicación.

59
Hay dos métodos para abordar el crecimiento del sistema: escalamiento vertical
y horizontal.

El escalado vertical implica aumentar la capacidad de un solo servidor, como usar


una CPU más potente, agregar más RAM o aumentar la cantidad de espacio de
almacenamiento. Las limitaciones en la tecnología disponible pueden impedir que
una sola máquina sea lo suficientemente potente para una carga de trabajo
determinada. Además, los proveedores basados en la nube tienen límites
máximos basados en las configuraciones de hardware disponibles. Como
resultado, existe un máximo práctico para el escalado vertical.

El escalamiento horizontal implica dividir el conjunto de datos del sistema y la


carga en varios servidores, agregando servidores adicionales para aumentar la
capacidad según sea necesario. Si bien la velocidad o capacidad general de una
sola máquina puede no ser alta, cada máquina maneja un subconjunto de la
© Universidad Estatal de Milagro – UNEMI

carga de trabajo general, lo que potencialmente proporciona una mayor eficiencia


que un solo servidor de alta capacidad y alta velocidad. Expandir la capacidad de
la implementación solo requiere agregar servidores adicionales según sea
necesario, lo que puede tener un costo general más bajo que el hardware de alta
gama para una sola máquina. La compensación es una mayor complejidad en la
infraestructura y el mantenimiento de la implementación.

60
Resumen y conclusiones

Las actividades de administración de la arquitectura hacen parte de las


actividades de los ingenieros de datos, que se ven obligados a realizar actividades
de operación y control.
Este tipo de actividades se hace más complicadas debido a la variedad de
arquitecturas que existen, por lo que es prudente conocer cuáles son las
actividades más importantes, para formar planes de operaciones.

Actividad asincrónica

Descripción de las actividades

Actividad 1.- Identificar los elementos de la arquitectura de MongoDB


1. Cuáles son los elementos más importantes de la arquitectura de MongoDB
2. Cuáles son los procesos más importantes de MongoDB
3. Cuáles son las formas de conectarse desde un cliente de MongoDB

Actividad 2.- Plan de Mantenimiento de Backup


1. Identifique cuáles son las operaciones necesarias para hacer un backup
2. Determine la frecuencia de los tipos de respaldos
3. Cómo se recupera un respaldo en MongoDB
© Universidad Estatal de Milagro – UNEMI

Nota: Se recuerda que las actividades aportan al proyecto de fin de módulo

61
Evaluación

Proyecto final del módulo


Plan de Operaciones de MongoDb para la base de datos del Caso La Favorita

1. Identifique y configure los usuarios que se deben de poner en MongoDB


2. Debe de utilizar un usuario especial para las operaciones de ELT o ETL
3. Identifique y realice un plan de backup de MongoDb para el caso
4. Debe de utilizar un usuario especial para las operaciones de BackUp

Bibliografía

Meier, Andreas; · Kaufmann, Michael (2019) SQL & NoSQL Databases Models,
Languages, Consistency Options and Architectures for Big Data Management,
Springer.
Chodorow, Kristina; (2019) MongoDB: The Definitive Guide; O’Reilly

COM I TÉ ACADÉM I CO EVALUADOR

FECHA FIRMA DIGITAL


© Universidad Estatal de Milagro – UNEMI

62

También podría gustarte