Cuáles de las siguientes características definen un servicio de almacén de datos moderno totalmente administrado y sin servidor (serverless)? (Respuesta Múltiple)
A. Está optimizado principalmente para el procesamiento de datos por lotes (batch data).
B. Automatiza la gestión del envejecimiento de los datos y el almacenamiento.
C. Necesita personal especializado (DBAs) para las tareas operacionales continuas.
D. Ofrece una base para la inteligencia artificial (IA) y proporciona información en tiempo real
B y D
En una arquitectura de datos en la nube que busca la máxima flexibilidad y escalabilidad, ¿cuál es el principio de diseño fundamental implementado?
A. El uso de ETL complejo para la entrega de datos.
B. La co-localización estricta del cómputo y el almacenamiento.
C. La dependencia de un único nodo raíz para el procesamiento de consultas.
D. La separación del almacenamiento y el cómputo (Decoupled storage and compute).
D
Dentro de una arquitectura distribuida de alta disponibilidad, ¿qué componente es el responsable de la durabilidad extrema y el almacenamiento replicado y distribuido de los datos?
A. El cluster de alta disponibilidad de cómputo (Dremel).
B. Un sistema de archivos distribuido diseñado para almacenamiento masivo (Colossus).
C. El motor de consultas (Query engine).
D. La capa de shuffle o intercambio de memoria distribuida
B
Por qué la B es CORRECTA
La clave de la pregunta está en los términos “durabilidad extrema” y “almacenamiento replicado y distribuido”. En cualquier arquitectura moderna de nube (como la que usa BigQuery, por ejemplo), las tareas de cómputo y almacenamiento están separadas.
B. Sistema de archivos distribuido (Colossus): Esta es la capa de almacenamiento. Colossus (el sucesor de Google File System o GFS) es el servicio que físicamente almacena tus datos. Su único trabajo es tomar tus datos, partirlos en pedazos, replicar esos pedazos en múltiples discos y centros de datos, y garantizar que nunca se pierdan (durabilidad extrema) y que siempre estén disponibles (alta disponibilidad). Es la base sobre la que se asientan los demás servicios.
Por qué las otras opciones son INCORRECTAS
A. El cluster de alta disponibilidad de cómputo (Dremel): Dremel es un motor de cómputo (un motor de consultas). Es la parte que procesa los datos, pero no los almacena. Dremel lee los datos desde Colossus (B), ejecuta la consulta (el SELECT, GROUP BY, etc.) y te da el resultado. Si apagas el clúster de Dremel, tus datos siguen seguros en Colossus.
C. El motor de consultas (Query engine): Esta es solo la descripción genérica de la opción A (Dremel). Es la capa de cómputo, no de almacenamiento.
D. La capa de shuffle o intercambio de memoria distribuida: Esta es una capa temporal que solo se usa mientras una consulta se está ejecutando. Cuando Dremel (A) necesita hacer una operación compleja (como un JOIN o GROUP BY masivo), usa esta capa de “shuffle” para que los diferentes nodos de cómputo se pasen datos intermedios. No tiene nada que ver con el almacenamiento permanente o la durabilidad de los datos.
La organización de datos para consultas analíticas a gran escala se realiza típicamente en una jerarquía. ¿Qué unidad es la que organiza y agrupa tablas, similar a un data mart tradicional?
A. Fragmentos de datos (Shards).
B. Proyectos.
C. Vistas (Views).
D. Datasets
D
¿Cuál es una ventaja clave del almacenamiento orientado a columnas sobre el almacenamiento orientado a filas en sistemas de análisis de petabytes?
A. Requiere la lectura completa de todas las filas para procesar una columna.
B. Permite omitir columnas no utilizadas, leyendo menos datos y más rápido.
C. Soporta indexación o claves de fila, pero no compresión.
D. Está optimizado para transacciones de baja latencia (OLTP).
B
¿Qué características críticas debe soportar el sistema de metadatos físicos de almacenamiento en un almacén de datos moderno? (Respuesta Múltiple)
A. Viajes en el tiempo (Time travel) por un período definido (ej: 7 días).
B. Realización de streaming y compromisos ACID.
C. Limitación de consultas concurrentes a un máximo de diez.
D. Particionamiento y clustering
A, B y D
En la ejecución de consultas distribuidas, si se realiza una agregación con alta cardinalidad (muchos valores únicos en el campo de agrupación), ¿qué mecanismo se utiliza para evitar que el nodo raíz se sobrecargue?
A. El sistema de archivos distribuido (Colossus).
B. El mecanismo de shuffle (intercambio) que agrupa valores similares en el mismo nodo para procesamiento intermedio.
C. El servidor de metadatos (Metadata server).
D. La optimización estática de consultas basada en costes
B
El Problema: La Sobrecarga en Agregaciones de Alta Cardinalidad 🤯
Imagina que tienes miles de millones de registros de ventas y quieres calcular las ventas totales por cada ID_de_cliente. Como hay millones de clientes únicos, esto es una agregación de alta cardinalidad.
En un sistema distribuido, el trabajo se divide entre muchos nodos “trabajadores”. Un enfoque simple sería:
Cada trabajador calcula las ventas para los clientes que ve en su porción de datos.
Luego, todos los trabajadores envían sus resultados parciales (millones de filas de ID_de_cliente y suma_parcial) a un único nodo “raíz” para que este haga la suma final.
El problema es que este nodo raíz se vería inundado con una cantidad masiva de datos de todos los trabajadores, colapsando su memoria y capacidad de procesamiento. Se convertiría en un cuello de botella monumental.
La Solución: El Mecanismo de Shuffle (Intercambio) Shuffle Dance
Aquí es donde entra en juego el mecanismo de shuffle (también conocido como intercambio o reordenación). Es una fase intermedia fundamental en los sistemas de procesamiento distribuido como Spark o BigQuery (Dremel).
El shuffle resuelve el problema de la siguiente manera:
Agregación Local (Etapa 1): Cada nodo trabajador sigue calculando sus sumas parciales como antes.
Shuffle (La Magia Ocurre Aquí): En lugar de enviarlo todo al nodo raíz, el sistema redistribuye los datos entre los propios nodos trabajadores. Usando una función (normalmente un hash sobre el campo de agrupación), se asegura de que todos los registros para el mismo ID_de_cliente terminen en el mismo nodo trabajador.
Por ejemplo, todos los datos del cliente_A van al trabajador_1, todos los del cliente_B al trabajador_2, etc.
Agregación Distribuida (Etapa 2): Ahora, cada nodo trabajador puede calcular la suma final para el subconjunto de clientes que le ha sido asignado.
Resultado Final: El nodo raíz solo necesita recopilar los resultados ya finalizados de cada trabajador, que es una cantidad de datos muchísimo menor y totalmente manejable.
Este proceso de dos etapas evita por completo la sobrecarga del nodo raíz, permitiendo que las agregaciones masivas se realicen de manera paralela y escalable.
Por qué las Otras Opciones son Incorrectas ❌
A. El sistema de archivos distribuido (Colossus): Es donde se almacenan los datos (el “disco duro” del sistema). Es fundamental para que los nodos accedan a la información, pero no es el mecanismo activo que realiza la agregación y evita el cuello de botella.
C. El servidor de metadatos (Metadata server): Almacena información sobre los datos (esquemas, ubicaciones de archivos, etc.). Es el “catálogo”, pero no participa en el procesamiento de los datos en sí.
D. La optimización estática de consultas basada en costes: Este es el “cerebro” que planifica la consulta antes de ejecutarla. El optimizador decide que usar un shuffle es la mejor estrategia, pero el shuffle en sí mismo es el mecanismo que se ejecuta para llevar a cabo ese plan. La opción B describe la acción, no la planificación.
En el diseño arquitectónico de un servicio distribuido de múltiples regiones y zonas, ¿qué capa es responsable de gestionar la capacidad, los datos y la redundancia de metadatos dentro de una región específica?
A. La Capa Global (Global layer).
B. La Capa de Enrutamiento (Routing layer).
C. La Capa Zonal (Zonal layer).
D. La Capa Regional (Regional layer)
D
Por qué la opción D es la correcta
Pensemos en la arquitectura de la nube como una jerarquía de contenedores:
Global: El nivel más alto. Gestiona cosas que son universales, como el enrutamiento de usuarios a la región más cercana o la gestión de identidades de usuario (IAM).
Regional: El nivel medio. Una “Región” (ej. us-central1) es un área geográfica independiente que contiene múltiples “Zonas”.
Zonal: El nivel más bajo. Una “Zona” (ej. us-central1-a) es básicamente un centro de datos. Si una zona falla (ej., se inunda o se queda sin energía), las otras zonas de la misma región no deberían verse afectadas.
La pregunta pide saber quién gestiona la capacidad, los datos y la redundancia de metadatos dentro de una región específica.
La Capa Regional es la respuesta. Su trabajo es precisamente ese: actuar como el “cerebro” de esa región, gestionando la capacidad total (la suma de sus zonas) y asegurándose de que si la Zona A falla, los datos y metadatos estén replicados en las Zonas B y C para que el servicio siga funcionando.
Por qué las otras opciones son incorrectas
A. La Capa Global (Global layer): Es de un nivel demasiado alto. A la capa global le importa la comunicación entre regiones (ej. replicar datos de us-central1 a europe-west1), no la gestión interna de us-central1.
B. La Capa de Enrutamiento (Routing layer): El enrutamiento es una función, no un nivel jerárquico de gestión. Es el mecanismo que usa la capa global (para enviar tráfico a la región) o la capa regional (para balancear la carga entre zonas), pero no es la capa responsable de gestionar la redundancia de datos y la capacidad.
C. La Capa Zonal (Zonal layer): Es de un nivel demasiado bajo. La capa zonal solo “sabe” lo que pasa dentro de su propio centro de datos. No puede gestionar la redundancia fuera de sí misma. De hecho, es la capa regional la que orquesta y gestiona a las capas zonales.
El formato de almacenamiento columnar propietario Capacitor implementado en el sistema está diseñado para: (Respuesta Múltiple)
A. Mantener la estructura óptima de fragmentación (sharding).
B. Utilizar únicamente codificación de diccionario (dictionary encoding).
C. Implementar sugerencias de metadatos lógicos como particionamiento y clustering.
D. Estar profundamente ligado al motor de ejecución de consultas.
A, C y D
Por qué las Opciones A, C y D son CORRECTAS
A. Mantener la estructura óptima de fragmentación (sharding).
Por qué es bueno: BigQuery funciona dividiendo los datos en miles de pequeños “fragmentos” o “shards”. El formato Capacitor es precisamente el que define cómo se estructuran los datos dentro de esos fragmentos. Su diseño permite que Dremel (el motor de consulta) lea y procese estos fragmentos en paralelo de forma masiva, lo cual es la base de su velocidad.
C. Implementar sugerencias de metadatos lógicos como particionamiento y clustering.
Por qué es bueno: El particionamiento y el clustering no son solo ideas abstractas; deben implementarse físicamente en el almacenamiento. El formato Capacitor está diseñado para que, cuando clusterizas una tabla (por ejemplo, por customer_id), los datos se almacenen físicamente ordenados por esa columna. Esto permite al motor de consulta saltarse enormes bloques de datos que no son relevantes, mejorando drásticamente el rendimiento y reduciendo costos.
D. Estar profundamente ligado al motor de ejecución de consultas.
Por qué es bueno: Esta es la ventaja más importante. Capacitor no es un formato genérico (como Parquet u ORC). Fue diseñado a medida para Dremel (el motor de consultas de BigQuery). Dremel sabe exactamente cómo están comprimidos los datos en Capacitor y puede realizar operaciones directamente sobre los datos comprimidos sin necesidad de descomprimirlos por completo. Esta profunda integración entre el almacenamiento (Capacitor) y el cómputo (Dremel) es la clave del rendimiento de BigQuery.
Por qué la Opción B es INCORRECTA
B. Utilizar únicamente codificación de diccionario (dictionary encoding).
Por qué es malo: La palabra clave aquí es “únicamente”. Si bien Capacitor usa la codificación por diccionario (es muy buena para columnas con baja cardinalidad, como “País”), no es la única técnica que usa. Utiliza un conjunto adaptativo de métodos de compresión (como Run-Length Encoding (RLE) para datos repetidos, compresión delta para timestamps, etc.) y elige el mejor para cada columna. Limitarse a una sola técnica sería ineficiente.
El proceso de shuffle (intercambio) es el mecanismo de transferencia de datos entre los trabajadores en la ejecución de consultas. ¿Qué función de planeación y optimización permite este mecanismo?
A. Permite la planificación de consultas estática y predefinida.
B. Actúa como un área de preparación o un mecanismo de particionamiento.
C. Permite la optimización de consultas mediante la ejecución dinámica, reaccionando rápidamente a la observación de la ejecución.
D. Solo maneja la transferencia de datos de salida final.
C
Por qué la opción C es la correcta
En un sistema de consultas distribuidas, una consulta compleja se divide en múltiples “etapas” (stages). El shuffle (intercambio) es lo que ocurre entre estas etapas.
Piénsalo como una línea de ensamblaje en una fábrica:
Etapa 1: Un grupo de trabajadores (workers) lee los datos iniciales y hace un filtrado.
Shuffle: Los trabajadores de la Etapa 1 pasan sus piezas (datos) a los trabajadores de la Etapa 2, pero no de forma aleatoria. Los tienen que reorganizar (particionar) para que el siguiente trabajador reciba todas las piezas que necesita.
Etapa 2: El siguiente grupo de trabajadores recibe los datos ya organizados y hace una agregación (ej. GROUP BY).
La opción C es correcta porque los motores modernos (como el de BigQuery) usan el shuffle como un punto de control. El planificador no decide todo el plan de antemano. En su lugar:
Ejecuta la Etapa 1.
En el shuffle, observa cuántos datos realmente se produjeron (ej. “¡Uy! Esta etapa generó 10TB de datos, no los 10GB que estimé”).
Basado en esa observación, puede cambiar el plan dinámicamente para la Etapa 2 (ej. “Necesito asignar 1000 workers más para la Etapa 2 y cambiar el algoritmo de JOIN”).
Por lo tanto, el shuffle es el mecanismo que habilita esta optimización dinámica al actuar como una barrera donde el sistema puede pausar, observar y reaccionar.
Por qué las otras opciones son incorrectas
A. Permite la planificación de consultas estática y predefinida: Esto es lo opuesto a la respuesta correcta. Un plan estático se decide antes de la ejecución y no cambia. El shuffle es solo un paso en ese plan rígido. En cambio, la arquitectura moderna usa el shuffle para evitar ser puramente estática.
B. Actúa como un área de preparación o un mecanismo de particionamiento: Esto es técnicamente cierto, pero incompleto. El shuffle es un mecanismo de re-particionamiento que usa un área de preparación temporal (staging). Sin embargo, esta respuesta describe lo que es el shuffle, no la función de optimización que permite. La opción C describe por qué ese mecanismo es clave para la optimización (porque permite la reacción dinámica).
D. Solo maneja la transferencia de datos de salida final: Esto es falso. El shuffle ocurre entre las etapas intermedias de la consulta. Por ejemplo, antes de un JOIN o un GROUP BY, mucho antes de que se calcule el resultado final que se le mostrará al usuario.
¿Cuál de las siguientes afirmaciones describe mejor un servicio serverless?
A) Requiere aprovisionamiento manual de servidores antes de usarlo
B) Escala automáticamente y no requiere gestión de infraestructura
C) Solo puede ejecutarse en entornos locales
D) Necesita configuración manual de recursos de red
B
¿Qué característica es típica de un data warehouse moderno en la nube?
A) Dependencia de hardware físico dedicado
B) Optimización exclusiva para cargas batch
C) Separación entre almacenamiento y cómputo
D) Requiere intervención constante de administradores de bases de datos
C
Un sistema que organiza los datos en columnas en lugar de filas obtiene como ventaja principal:
A) Menor latencia en escritura
B) Mayor rendimiento en consultas analíticas
C) Mayor complejidad en lectura secuencial
D) Imposibilidad de compresión de datos
B
Cuál de las siguientes opciones representa un beneficio clave de un formato de almacenamiento columnar propietario?
A) Dificulta la integración con motores externos
B) Mejora la optimización de ejecución mediante metadatos físicos
C) Reduce la escalabilidad horizontal
D) Impide la compresión eficiente
B
¿Cuál de los siguientes mecanismos permite dividir y distribuir datos para ejecutar operaciones en paralelo?
A) Caching distribuido
B) Particionamiento y sharding
C) Compresión en bloque
D) Replicación síncrona
B
En una arquitectura distribuida, ¿qué rol cumple el scheduler dentro del procesamiento de consultas?
A) Almacenar los datos en formato columnar
B) Orquestar la ejecución y asignación de tareas a los workers
C) Mantener los índices de la tabla
D) Realizar backups automáticos
B
¿Qué beneficio ofrece un enfoque de dynamic query execution frente a un cost-based optimizer estático?
A) Permite ignorar la planificación inicial
B) Ajusta la ejecución en tiempo real según observaciones
C) Elimina la necesidad de particionar los datos
D) Reduce el tiempo de compilación de la consulta
B
Selecciona todas las características propias de un servicio de almacenamiento distribuido moderno:
A) Alta durabilidad
B) Replicación entre zonas
C) Escalabilidad automática
D) Dependencia de servidores físicos fijos
A, B y C
¿Qué elemento actúa como capa de intercambio de datos entre nodos en un entorno distribuido?
A) Buffer local
B) Shuffle
C) Cache
D) Queue Manager
B
En un sistema con arquitectura por capas, ¿qué capa se encarga típicamente del enrutamiento global y la localización de regiones?
A) Capa de almacenamiento
B) Capa zonal
C) Capa regional
D) Capa global
D
Por qué la D es CORRECTA
D) Capa global: Esta capa es la responsable de los servicios que operan a escala mundial, por encima de las regiones individuales. El “enrutamiento global” (como un balanceador de carga global) es la tecnología que recibe una solicitud de un usuario (en cualquier parte del mundo) y la dirige a la región más cercana o más saludable que pueda atenderla. Por lo tanto, esta capa es la única que tiene la visión y la responsabilidad de “localizar regiones” y enrutar el tráfico entre ellas.
Por qué las otras opciones son INCORRECTAS
A) Capa de almacenamiento: Esta capa (como Colossus o Cloud Storage) se encarga de almacenar los datos de forma duradera y replicada. Aunque es un sistema distribuido globalmente, su trabajo principal no es el enrutamiento de solicitudes de usuario, sino el almacenamiento de los bits.
B) Capa zonal: Esta es la capa más específica. Gestiona los recursos dentro de una sola zona (un único centro de datos). No tiene ninguna visibilidad ni control sobre otras zonas o regiones.
C) Capa regional: Esta capa gestiona y coordina los recursos dentro de una región específica (compuesta por varias zonas). Puede manejar el enrutamiento dentro de esa región, pero no tiene la capacidad de realizar un enrutamiento global hacia otras regiones.
¿Cuál de las siguientes características es típica en un sistema de almacenamiento columnar?
a) Almacena datos por filas
b) Permite leer solo las columnas necesarias
c) Requiere índices complejos para acceder a los datos
d) No permite la compresión de datos
B
¿Qué principio suele aplicarse para optimizar la ejecución de consultas en arquitecturas distribuidas?
a) Ejecutar todo en un nodo central
b) Paralelizar la ejecución entre múltiples nodos
c) Limitar el uso de memoria
d) Procesar datos secuencialmente
B
¿Qué ventaja clave tiene el procesamiento columnar sobre el procesamiento por filas?
a) Permite compresión por columnas
b) Reduce la necesidad de backups
c) Hace que la actualización de registros sea más rápida
d) Incrementa la latencia
A
Por qué la A es CORRECTA
Esta es la ventaja clave (junto con la capacidad de leer solo las columnas que necesitas).
En un sistema por filas, los datos se guardan así: [Fila1: Juan, 30, España], [Fila2: Ana, 25, México], [Fila3: Pedro, 42, España]
En un sistema columnar, los datos se guardan así: [Nombres: Juan, Ana, Pedro], [Edades: 30, 25, 42], [Países: España, México, España]
Como puedes ver, en el formato columnar, todos los datos de la columna “Países” están juntos. Dado que los datos son del mismo tipo y a menudo se repiten (“España”, “España”), el sistema puede aplicar algoritmos de compresión (como Run-Length Encoding) de forma extremadamente eficiente.
Comprimir los datos reduce el espacio que ocupan en disco y, lo que es más importante, significa que se leen muchos menos datos del disco, haciendo que las consultas analíticas (OLAP) sean muchísimo más rápidas.
Por qué las otras opciones son INCORRECTAS
b) Reduce la necesidad de backups: Incorrecto. El formato de almacenamiento (filas o columnas) no tiene ninguna relación con la necesidad de tener copias de seguridad. La necesidad de backups es una política de negocio para protegerse contra la pérdida de datos.
c) Hace que la actualización de registros sea más rápida: Incorrecto. De hecho, es todo lo contrario. Esta es la principal desventaja del almacenamiento columnar. Para actualizar un solo registro (ej. cambiar a “Pedro” a “Argentina”), el sistema tiene que ir a varios archivos de columna diferentes para modificar cada valor. Un sistema por filas es mucho más rápido para esto, ya que todos los datos de Pedro están en un solo lugar.
d) Incrementa la latencia: Incorrecto. El objetivo y la ventaja principal del procesamiento columnar es reducir drásticamente la latencia (el tiempo de respuesta) en consultas analíticas, no incrementarla.
En un sistema de carga de datos masivos, ¿qué función realiza la partición de datos?
a) Dividir los datos para procesarlos en paralelo
b) Aumentar la redundancia de los datos
c) Eliminar duplicados
d) Limitar el acceso de usuarios
A