Está en la página 1de 489

Examen Ref DP-900 Conceptos

básicos de datos de Microsoft Azure


Daniel A. Seara
Francesco Milano
Contenido de un vistazo
Introducción

Capítulo 1 Describir los conceptos básicos de datos

Capítulo 2 Describir cómo trabajar con datos relacionales en


Azure

Capítulo 3 Describir cómo trabajar con datos no relacionales


en Azure

Capítulo 4 Describir una carga de trabajo de análisis en


Azure

Índice
Contenido
Introducción
Organización de este libro
Preparándose para el examen
Certificaciones de Microsoft
Acceso rápido a referencias en línea
Erratas, actualizaciones y soporte de libros
Mantente en contacto

Capítulo 1 Describir los conceptos básicos de datos


Habilidad 1.1: Describir tipos de cargas de trabajo de datos centrales
Describe la transmisión de datos
Describe los datos del lote
Describir la diferencia entre datos por lotes y de transmisión
Describe las características de los datos relacionales.
Habilidad 1.2: Describir los conceptos básicos del análisis de datos.
Describir las técnicas de análisis.
Describir los conceptos de ETL, ELT y procesamiento de datos.
Describir la visualización de datos y los tipos de gráficos básicos.
Resumen del capítulo
Experimento mental
Respuestas del experimento mental

Capítulo 2 Describir cómo trabajar con datos relacionales en


Azure
Habilidad 2.1: Describir cargas de trabajo de datos relacionales
Identifique la oferta de datos adecuada para una carga de trabajo
relacional
Describir estructuras de datos relacionales.
Habilidad 2.2: describir los servicios de datos relacionales de Azure
Describir y comparar modelos de entrega de PaaS, IaaS y SaaS
Describir la base de datos SQL de Azure
Describir Azure Synapse Analytics
Describir SQL Server en la máquina virtual de Azure
Describir Azure Database for PostgreSQL, Azure Database for MariaDB
y Azure Database for MySQL
Describir la instancia administrada de Azure SQL
Habilidad 2.3: Identificar tareas de gestión básicas para datos
relacionales
Describir el aprovisionamiento y la implementación de servicios de
datos relacionales.
Describir el método de implementación, incluidas las plantillas ARM y
Azure Portal.
Identificar los componentes de seguridad de los datos (p. Ej., Firewall,
autenticación)
Identificar problemas básicos de conectividad (p. Ej., Acceso desde las
instalaciones, acceso con redes virtuales de Azure, acceso desde
Internet, autenticación, firewalls)
Identificar herramientas de consulta (por ejemplo, Azure Data Studio,
SQL Server Management Studio, utilidad sqlcmd, etc.)
Habilidad 2.4: Describir técnicas de consulta para datos usando
lenguaje SQL.
Comparar DDL versus DML
Consultar datos relacionales en PostgreSQL, MySQL y Azure SQL
Database
Resumen del capítulo
Experimento mental
Respuestas del experimento mental

Capítulo 3 Describir cómo trabajar con datos no relacionales


en Azure
Habilidad 3.1: Describir cargas de trabajo de datos no relacionales
Describir las características de los datos no relacionales.
Describir los tipos de datos no relacionales y NoSQL.
Elija el almacén de datos correcto
Determine cuándo usar datos no relacionales
Habilidad 3.2: describir ofertas de datos no relacionales en Azure
Identificar los servicios de datos de Azure para cargas de trabajo no
relacionales
Describir la API de Azure Cosmos DB
Describir Azure Storage
Describir el almacenamiento de Azure Table
Describir Azure Blob Storage
Describir el almacenamiento de archivos de Azure
Habilidad 3.3: Identificar tareas de gestión básicas para datos no
relacionales
Describir el aprovisionamiento y la implementación de servicios de
datos no relacionales.
Describir el método de implementación, incluido el portal de Azure, las
plantillas de Azure Resource Manager, Azure PowerShell y la interfaz
de línea de comandos (CLI) de Azure.
Identificar los componentes de seguridad de los datos (p. Ej., Firewall,
autenticación, cifrado)
Identificar problemas básicos de conectividad (p. Ej., Acceso desde las
instalaciones, acceso con redes virtuales de Azure, acceso desde
Internet, autenticación, firewalls)
Identificar herramientas de gestión para datos no relacionales.
Resumen del capítulo
Experimento mental
Respuestas del experimento mental

Capítulo 4 Describir una carga de trabajo de análisis en


Azure
Habilidad 4.1: Describir cargas de trabajo analíticas
Habilidad 4.2: Describir los componentes de un almacén de datos
moderno.
Describir la carga de trabajo y la arquitectura moderna de
almacenamiento de datos.
Describir los servicios de datos de Azure para el almacenamiento de
datos moderno, como Azure Data Lake, Azure Synapse Analytics, Azure
Databricks y Azure HDInsight.
Habilidad 4.3: describir la ingestión y el procesamiento de datos en
Azure
Describir los componentes de Azure Data Factory (p. Ej., Canalización,
actividades, etc.)
Describir las opciones de procesamiento de datos (por ejemplo, Azure
HDInsight, Azure Databricks, Azure Synapse Analytics, Azure Data
Factory)
Describir prácticas comunes para la carga de datos.
Habilidad 4.4: Describir la visualización de datos en Microsoft Power
BI
Describir el flujo de trabajo en Power BI
Describir el papel de los informes interactivos.
Describir la función de los paneles.
Describir la función de los informes paginados.
Resumen del capítulo
Experimento mental
Respuestas del experimento mental
Índice
Sobre los autores
Daniel A. Seara es un desarrollador de software
experimentado. Tiene más de 20 años de experiencia como instructor
técnico, desarrollador y consultor de desarrollo.
Daniel ha trabajado como consultor de software en una amplia gama de
empresas en Argentina, España y Perú. Microsoft Consulting Services
de Perú le ha pedido que ayude a varias empresas en su camino de
migración al desarrollo de .NET Framework.
Daniel fue Director Regional de Microsoft en Argentina durante 4 años
y fue el primer Director Regional Global nominado, cargo que ocupó
durante dos años. También fue gerente del programa Desarrollador
Cinco Estrellas I (Five-Star Developer), uno de los proyectos de
capacitación más exitosos en América Latina. Daniel tuvo el estatus de
MVP de Visual Basic durante más de 10 años, así como el estatus de
MVP de SharePoint Server desde 2008 hasta 2014. Además, Daniel es
el fundador y "Decano" de la Universidad .NET, el sitio en español más
visitado en el que aprender .NET.
En 2005, se incorporó a Lucient, la empresa líder mundial en Microsoft
Data Platform, donde ha trabajado como formador, consultor y
mentor.

Francesco Milano trabaja con tecnologías de Microsoft desde 2000.


Francesco se especializa en la plataforma .NET Framework y SQL
Server, y se centra principalmente en el desarrollo de back-end,
soluciones de integración, diseño e implementación de modelos
relacionales.
Desde 2013, Francesco también ha estado explorando tendencias y
tecnologías emergentes pertenecientes al mundo de big data y analítica
avanzada, consolidando su conocimiento de productos como Azure
HDInsight, Databricks, Azure Data Factory y Azure Synapse Analytics.
Francesco es ponente en importantes conferencias y talleres de
plataformas de datos italianas.
En 2015, se incorporó a Lucient, la empresa global líder en Microsoft
Data Platform, donde ha trabajado como formador, consultor y
mentor.
Introducción
En esta era conectada, es importante determinar cómo y cuándo se
pueden almacenar sus datos en la nube. Este libro, tanto una referencia
como un tutorial, cubre los diferentes enfoques para almacenar
información en el entorno de Microsoft Azure. El libro analiza y
compara varias opciones de almacenamiento, lo que lo ayuda a tomar
mejores decisiones en función de cada necesidad particular y lo guía a
través de los pasos para preparar, implementar y asegurar el entorno
de almacenamiento más apropiado.
Este libro cubre todas las áreas temáticas principales que se encuentran
en el examen, pero no cubre todas las preguntas del examen. Solo el
equipo de examen de Microsoft tiene acceso a las preguntas del
examen, y Microsoft agrega periódicamente nuevas preguntas al
examen, lo que hace imposible cubrir preguntas específicas. Debe
considerar este libro como un complemento de su experiencia relevante
en el mundo real y otros materiales de estudio. Si encuentra un tema en
este libro con el que no se siente completamente cómodo, use la opción
"¿Necesita más revisión?" enlaces que encontrará en el texto para
encontrar más información y tomarse el tiempo para investigar y
estudiar el tema. Hay gran información disponible en MSDN, TechNet,
blogs y foros.

ORGANIZACIÓN DE ESTE LIBRO


Este libro está organizado por la lista de "Habilidades medidas" publicada
para el examen. La lista "Habilidades medidas" está disponible para cada
examen en el sitio web de Microsoft Learn: http://aka.ms/examlist . Cada
capítulo de este libro corresponde a un área temática principal de la lista,
y las tareas técnicas de cada área temática determinan la organización de
un capítulo. Si un examen cubre seis áreas temáticas principales, por
ejemplo, el libro contendrá seis capítulos.

PREPARÁNDOSE PARA EL EXAMEN


Los exámenes de certificación de Microsoft son una excelente manera de
crear su currículum y dejar que el mundo conozca su nivel de
experiencia. Los exámenes de certificación validan su experiencia en el
trabajo y su conocimiento del producto. Aunque no hay sustituto para la
experiencia en el trabajo, la preparación a través del estudio y la práctica
pueden ayudarlo a prepararse para el examen. Este libro no está diseñado
para enseñarle nuevas habilidades.
Le recomendamos que amplíe su plan de preparación para el examen
utilizando una combinación de cursos y materiales de estudio
disponibles. Por ejemplo, puede usar la Referencia de examen y otra guía
de estudio para su preparación "en casa" y tomar un curso del plan de
estudios oficial de Microsoft para la experiencia en el aula. Elija la
combinación que crea que funciona mejor para usted.Obtenga más
información sobre la capacitación presencial disponible y encuentre
cursos en línea gratuitos y eventos en vivo
en http://microsoft.com/learn . Las pruebas de práctica oficiales de
Microsoft están disponibles para muchos exámenes
en http://aka.ms/practicetests .
Tenga en cuenta que esta referencia de examen se basa en información
disponible públicamente sobre el examen y la experiencia de los
autores. Para salvaguardar la integridad del examen, los autores no tienen
acceso al examen en vivo.

CERTIFICACIONES DE MICROSOFT
Las certificaciones de Microsoft lo distinguen al demostrar su dominio de
un amplio conjunto de habilidades y experiencia con los productos y
tecnologías actuales de Microsoft. Los exámenes y las certificaciones
correspondientes se desarrollan para validar su dominio de las
competencias críticas a medida que diseña y desarrolla, o implementa y
brinda soporte, soluciones con productos y tecnologías de Microsoft tanto
en las instalaciones como en la nube. La certificación aporta una variedad
de beneficios para el individuo y para los empleadores y las
organizaciones.
Más información Todas las certificaciones de Microsoft
Para obtener información sobre las certificaciones de Microsoft, incluida una lista completa
de las certificaciones disponibles, visite http://www.microsoft.com/learn .

¡Vuelve a menudo para ver qué hay de nuevo!


ACCESO RÁPIDO A REFERENCIAS EN LÍNEA
A lo largo de este libro hay direcciones de páginas web que el autor le ha
recomendado que visite para obtener más información. Algunos de estos
enlaces pueden ser muy largos y laboriosos de escribir, por lo que los
hemos reducido para que sea más fácil visitarlos. También los hemos
compilado en una sola lista a la que los lectores de la edición impresa
pueden consultar mientras leen.
Descargue la lista
en MicrosoftPressStore.com/ExamRefDP900AzureFundamentals/download
s.
Las URL están organizadas por capítulo y encabezado. Cada vez que
encuentre una URL en el libro, busque el hipervínculo en la lista para ir
directamente a la página web.

ERRATAS, ACTUALIZACIONES Y SOPORTE DE


LIBROS
Hemos hecho todo lo posible para garantizar la precisión de este libro y
su contenido complementario. Puede acceder a las actualizaciones de este
libro, en forma de lista de erratas enviadas y sus correcciones
relacionadas, en:
MicrosoftPressStore.com/ExamRefDP900AzureFundamentals/errata
Si descubre un error que aún no está en la lista, envíenoslo en la misma
página.
Para obtener ayuda e información adicional sobre libros,
visite http://www.MicrosoftPressStore.com/Support .
Tenga en cuenta que el soporte de productos para software y hardware
de Microsoft no se ofrece a través de las direcciones anteriores. Para
obtener ayuda con el software o hardware de Microsoft, vaya
a http://support.microsoft.com .

MANTENTE EN CONTACTO
¡Sigamos con la conversación! Estamos en
Twitter: http://twitter.com/MicrosoftPress .
Capítulo 1
Describir los conceptos básicos
de datos.
Tener un conocimiento sólido de los tipos más comunes de carga de
trabajo de datos es crucial para la entrega de proyectos exitosos.
Cada carga de trabajo tiene su enfoque particular y las mejores
prácticas establecidas. Además, debe elegir cuidadosamente qué motor
se adapta mejor a sus necesidades para evitar tener que reconstruir el
proyecto desde cero en medio del desarrollo o para evitar incurrir en
costos no planificados y revisiones presupuestarias.
En este capítulo, primero comparamos varios tipos de carga de trabajo
de datos para comprender las diferencias clave entre ellos. Luego,
presentamos los conceptos básicos detrás del análisis y la visualización
de datos.

Habilidades cubiertas en este capítulo:


• Habilidad 1.1: Describir tipos de cargas de trabajo de datos
centrales
• Habilidad 1.2: Describir los conceptos básicos del análisis de
datos.
Nota Cuenta de prueba gratuita
Si no tiene una cuenta de Azure, puede seguir las prácticas y ejercicios de este libro
obteniendo una cuenta gratuita de 12 meses en https://azure.microsoft.com/en-us/free .

HABILIDAD 1.1: DESCRIBIR TIPOS DE CARGAS


DE TRABAJO DE DATOS CENTRALES
Hoy en día, casi todas las empresas son empresas de datos. Desde la
ingestión hasta la presentación, la capacidad de administrar, transformar
y enriquecer sus datos es una parte esencial de la satisfacción del cliente.
Con el crecimiento de Internet de las cosas (IoT), los dispositivos
conectados se han convertido en una enorme fuente de datos. El cuidado
de la salud, solo por nombrar uno, ha entrado en una edad de oro en la
que incluso un reloj puede convertirse en un salvavidas gracias a su
capacidad para monitorear y analizar los patrones de latidos del
corazón. Las redes sociales siguen produciendo grandes volúmenes de
datos por segundo, y dichos datos deben analizarse tanto en tiempo real,
para delinear los temas de tendencia, como en modo por lotes, para
descubrir tendencias históricas.
Este tipo de fuentes, en formas diferentes o primitivas, existen desde hace
mucho tiempo. Lo nuevo, en los últimos años, es que la flexibilidad de las
plataformas en la nube ha permitido un diseño de arquitectura más
amplio, permitiendo a las empresas construir sistemas complejos donde
coexisten todas estas fuentes. Además, la cantidad de datos está creciendo
a un ritmo muy rápido, lo que plantea nuevos desafíos paraalmacenarlo y
manipularlo. Términos como la arquitectura Lambda , la arquitectura
Kappa , capa, velocidad , capa de carga , capa que sirve , y muchos otros
han llegado a ser muy populares, por lo que es difícil elegir un camino u
otro.
En aras de la simplicidad, nos referiremos a estos escenarios complejos
con un término más general y conceptual: el almacén de datos moderno,
como se muestra en la Figura 1-1 .

Figura 1-1 Arquitectura típica de un almacén de datos moderno


Un almacén de datos moderno reúne datos estructurados,
semiestructurados y no estructurados, almacenando y analizando los
datos al ritmo adecuado y con el motor o la herramienta más
adecuados. Ofrece seguridad a nivel empresarial para que las empresas y
los usuarios finales puedan acceder solo a la información que se les
permite, a través de conjuntos de datos seleccionados e informes
analíticos listos para usar.
En una arquitectura moderna de almacenamiento de datos, los datos sin
procesar también se mantienen en su formato original para proporcionar
a los científicos de datos fuentes profundas y precisas con las que
experimentar, lo que presenta la posibilidad de enriquecer los datos con
técnicas de análisis avanzadas y permite que la empresa se beneficie de
ellas.
Por lo general, la capa de almacenamiento adopta la forma de un lago de
datos , un almacenamiento distribuido y altamente escalable que admite
cargas de trabajo de alto rendimiento listas para usar y, al mismo tiempo,
proporciona un espacio y un crecimiento ilimitados.
Se pueden encontrar tres tipos principales de carga de trabajo en un
almacén de datos moderno típico:
• Transmisión de datos
• Lote de datos
• Datos relacionales
Esta lista no es exhaustiva ya que la arquitectura puede variar, pero le
brindará una descripción general práctica de cómo manejar estas cargas
de trabajo y evitar errores comunes.
Esta habilidad cubre cómo:
• Describe la transmisión de datos
• Describe los datos del lote
• Describir la diferencia entre datos por lotes y de transmisión
• Describe las características de los datos relacionales.
Describe la transmisión de datos
Un flujo de datos es un flujo continuo de información, donde continuo no
significa necesariamente regular o constante .
Un solo fragmento de información sin procesar enviada es
un evento (o mensaje ), y su tamaño rara vez supera unos pocos
kilobytes. Con algunas excepciones, el orden de los eventos es importante,
por lo que los motores de transmisión deben implementar algún tipo de
sistema de conciliación para manejar posibles retrasos en la entrega.
La Figura 1-2 ofrece una descripción general de una tubería de flujo y
parte de la tecnología involucrada.

Figura 1-2 Canal de procesamiento de flujo


Al intentar simplificar y esquematizar un flujo de flujo de datos, puede
identificar las siguientes fases principales:
• Los datos de producción son producidos por varias fuentes,
que generalmente incluyen uno o más tipos de dispositivos como
(pero no limitado a) teléfonos móviles, sensores, grabadoras de
vuelo, turbinas eólicas, líneas de producción, dispositivos
portátiles, GPS, cámaras y aplicaciones de software. Estos son
los productores .
• Adquisición Los datos producidos se envían a uno o varios
puntos finales, donde un motor de procesamiento y / o transporte
de flujo escucha los eventos de datos entrantes. Estos eventos se
ponen a disposición de los clientes intermedios, que son
los consumidores . La fase de adquisición y las consultas de los
consumidores a menudo se denominan fases de entrada y salida,
respectivamente.
Cientos, miles o incluso millones de productores pueden enviar
datos simultáneamente y con una frecuencia muy alta, lo que hace
que sea obligatorio tener un motor escalable y de baja latencia
(como Azure Event Hubs, con o sin una interfaz Kafka, o Apache
Kafka). lado. Los eventos suelen guardarse durante un período de
tiempo configurable y a disposición de los consumidores, no
necesariamente uno a uno sino en pequeños lotes.
• Agregación y transformación Una vez adquiridos, los datos
se pueden agregar o transformar. La agregación generalmente se
realiza a lo largo del tiempo, agrupando eventos por ventanas. Las
ventanas de caída, salto, deslizamiento y sesión se usan
comúnmente para identificar reglas específicas para la agregación
(más sobre eso en un momento). Los datos también pueden sufrir
alguna transformación, como filtrar valores no deseados,
enriquecerlos al unirlos con conjuntos de datos estáticos u otros
flujos, o pasarlos a un servicio de aprendizaje automático para
calificarlos o un objetivo de predicción. Luego, los datos agregados
se almacenan o se envían a una herramienta de panel con
capacidad en tiempo real, como Microsoft Power BI, para
proporcionar a los usuarios una vista actualizada y perspicaz de la
información que fluye.
• Almacenamiento Los datos adquiridos, ya sean brutos,
agregados o ambos, se almacenan finalmente para su posterior
análisis. Los tipos de almacenamiento pueden variar y dependen de
si se ha realizado o no la agregación. Los datos sin procesar
generalmente se envían a carpetas de lago de datos en formato
comprimido o servicios de base de datos NoSQL de alto
rendimiento de ingestión, como Azure Cosmos DB, mientras que los
datos agregados se almacenan la mayor parte del tiempo en
carpetas de lago de datos en formato comprimido o servicios de
bases de datos relacionales como Azure. Base de datos SQL o Azure
Synapse Analytics.
La Figura 1-3 muestra un caso de uso típico de transmisión: análisis de
viajes en vehículos por carretera.

Figura 1-3 Descripción general del procesamiento de secuencias


¿Necesita más revisión? Azure Event Hubs y Apache Kafka
Si es nuevo en la transmisión y desea saber más sobre estos servicios, este es un buen punto
de partida: https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-for-kafka-
ecosystem -Resumen .

Sugerencia para el examen


Por lo general, los motores de ingestión de mensajes no guardan los
eventos para siempre; los eliminan después de un período de
retención configurable . Azure Event Hubs tiene una característica
llamada Event Hub Capture que puede usar para descargar eventos
entrantes a una ubicación de almacenamiento en la nube tan pronto como
lleguen, así como pasarlos por su canalización de flujo. Esta función es útil
cuando necesita ejecutar un trabajo de procesamiento por lotes
posteriormente o desea mantener eventos por razones históricas, lo que
evita la necesidad de construir una tubería de descarga usted mismo. Los
eventos se serializan en Apache Avro, un formato de serialización
compacto y binario que retiene la información del esquema.
Los motores de procesamiento y transporte de secuencias son piezas de
software complejas. Suelen funcionar 24 horas al día, 7 días a la
semana; por lo tanto, la resistencia a fallas es un factor clave. Además,
deben escalar rápidamente tan pronto como aumente el volumen de
datos entrantes, ya que perder eventos no es una opción.
Más adelante en este libro, verá en detalle las ofertas del motor de
transmisión de Azure. Por ahora, basta con decir que desde un punto de
vista de alto nivel suelen venir como un clúster Hadoop clásico, con un
nodo controlador para la coordinación y un número variable de nodos
ejecutores que hacen el trabajo físico. Si opta por utilizar servicios de
plataforma como servicio (PaaS), es probable que esta arquitectura sea
transparente para usted.

Sugerencia para el examen


Una de las métricas más importantes para verificar la riqueza de su
canalización es la tasa de entrada frente al coeficiente de tasa de
procesamiento (InputRate / ProcessingRate) . Muestra la eficacia de su
canalización en la ingesta y la transformación de datos tan pronto como
llegan. Si tiene un valor alto para esta relación, significa que
• Su motor de procesamiento está demasiado bajo presión y
necesita escalar.
• Está haciendo demasiadas transformaciones o demasiado
complejas en sus mensajes entrantes.
Los flujos de datos comparten algunos conceptos que es importante
comprender, considerando que son exclusivos de estas cargas de trabajo
y no tan comunes en otros procesos:
• Marcas de agua
• Grupos de consumidores
• Agregaciones de ventanas de tiempo
Cada motor tiene su propia implementación de estos conceptos, pero
centrémonos en el papel que tienen y por qué son esenciales.
MARCAS DE AGUA
En sistemas tan complejos con tantos actores comunicándose al mismo
tiempo, es casi imposible que no haya fallas o interrupciones. Ya sea un
error de red, un productor que pierde la señal o un nodo del clúster
colapsando, los eventos deben entregarse y mantenerse en orden.
La marca de agua es una técnica utilizada por los motores de
procesamiento de secuencias para hacer frente a los eventos que llegan
tarde. Una marca de agua es básicamente un umbral; cuando se envía un
mensaje, si la diferencia entre el tiempo de llegada y el tiempo de
producción supera ese valor, el mensaje se descarta de la salida y no se
envía al consumidor.

GRUPOS DE CONSUMIDORES
Los grupos de consumidores permiten que los consumidores mantengan
vistas dedicadas y aisladas sobre el flujo de datos. El flujo de origen es
único: cada grupo puede leer datos a su propio ritmo y partiendo de su
propio desplazamiento. Por ejemplo, puede tener un panel en tiempo real
que lee datos cada 5 segundos y un trabajo por horas que realiza
agregaciones históricas sobre eventos de ingreso; ambos están leyendo la
misma transmisión, pero el primero leerá los eventos minutos antes que
el segundo.

AGREGACIONES DE VENTANAS DE TIEMPO


Para comprender mejor la lógica detrás de las agregaciones de ventanas
de tiempo, que se muestra en la Figura 1-4 , echemos un vistazo más de
cerca a los cuatro tipos que puede necesitar aplicar en su canal de
procesamiento. Estos son los que, por ejemplo, están disponibles en el
motor de procesamiento de flujo de PaaS de Microsoft, Azure Stream
Analytics.
Figura 1-4 Agregación de una ventana de flujo

VENTANA GIRATORIA
Una ventana giratoria (consulte la Figura 1-5 ) es un segmento de tiempo
de tamaño fijo que se repite y no se superpone con su predecesor. Los
eventos pueden pertenecer a una sola ventana, y si no ocurren eventos en
una ventana de tiempo específica, la ventana estará vacía.

Figura 1-5 Ejemplo de ventana giratoria


Uno de los usos más típicos de las ventanas giratorias es la agregación de
datos para fines de informes, como contar el número de transacciones
financieras que ocurrieron en la última hora y almacenar el resultado.

VENTANA DE SALTO
Una ventana de salto (ver Figura 1-6 ) tiene dos parámetros: tamaño de
salto y tamaño de ventana. El primero indica cuánto debe avanzar la
ventana en el tiempo, mientras que el segundo indica cuántos segundos
debe retroceder en el tiempo para recopilar eventos. Las ventanas pueden
superponerse, pueden estar vacías y los eventos pueden pertenecer a
varias ventanas.

Figura 1-6 Ejemplo de ventana de salto


Puede pensar en una ventana de salto como una ventana de volteo que
puede superponerse, y cuando el tamaño del salto y el tamaño de la
ventana tienen el mismo valor, su ventana de salto se comporta
exactamente como una ventana de volteo.
Un uso típico de una ventana de salto es el cálculo de la media móvil sobre
los datos entrantes.
VENTANA DESLIZANTE
Como una ventana giratoria, una ventana deslizante (vea la Figura 1-7 )
avanza en el tiempo en intervalos fijos y por un número específico de
segundos. Sin embargo, no producirá ningún resultado si no se
produjeron nuevos eventos.

Figura 1-7 Ejemplo de ventana deslizante


Las ventanas pueden superponerse, no pueden estar vacías y los eventos
pueden pertenecer a varias ventanas.
Al igual que con las ventanas de salto, el uso suele estar relacionado con el
cálculo de la media móvil. La diferencia es que, aunque las ventanas de
salto se calculan a intervalos fijos, las ventanas deslizantes ajustan su
frecuencia con la densidad de los mensajes entrantes, produciendo
resultados más precisos cuando los eventos están muy cerca.
VENTANA DE SESIÓN
Una ventana de sesión tiene tres parámetros: tiempo de espera, duración
máxima y clave de partición. Los dos primeros son obligatorios y el
tercero es opcional.
La Figura 1-8 muestra un comportamiento de la ventana de sesión de
tiempo de espera de 5 minutos y 20 minutos de duración máxima:
• Cuando llega el primer evento, se crea una nueva ventana.
• Un segundo evento se produce antes de que hayan pasado 5
minutos y, dado que la ventana todavía está esperando nuevos
mensajes, se extiende y se restablece el tiempo de espera.
• El motor espera otros 5 minutos y, dado que no se muestran
mensajes nuevos, la ventana se considera cerrada; El valor
agregado de la suma para esta ventana en particular sería 6 (1 + 5).

Figura 1-8 Ejemplo de ventana de sesión


En términos generales, cuando ocurre un evento, se crea una nueva
ventana. Si no llega ningún evento dentro del tiempo de espera
especificado, esa ventana se cierra; de lo contrario, se extiende y sigue
esperando que fluyan otros eventos. Si alcanza su valor de tiempo de
espera o se extiende hasta su duración máxima, esa ventana se cierra. La
duración máxima nunca se alcanza en la Figura 1-8 , ya que en ese caso el
tiempo de espera siempre ocurre antes.
Si se ha especificado una clave de partición, actúa como un límite y el
mismo proceso se aplica a cada valor de partición, sin interferir entre sí.
Las ventanas no pueden superponerse, no pueden estar vacías y los
eventos no pueden pertenecer a varias ventanas.
Las ventanas de sesión son útiles cuando desea analizar juntos eventos
que pueden estar relacionados, como las interacciones del usuario dentro
de un sitio web o una aplicación (páginas visitadas, banners en los que se
hizo clic, etc.).
¿Necesita más revisión? Microsoft Learn: implemente una solución de transmisión
de datos con Azure Streaming Analytics
Aunque se centra principalmente en Azure Stream Analytics en sí, la siguiente ruta de
Microsoft Learn ofrece una buena descripción general de las técnicas de procesamiento de
transmisión: https://docs.microsoft.com/en-us/learn/paths/implement-data-streaming-with-
asa / .

Describe los datos del lote


Mientras que la transmisión es una carga de trabajo muy dinámica,
el procesamiento por lotes se centra en mover y transformar los datos en
reposo . Si alguna vez ha implementado un sistema de inteligencia
empresarial (BI), es muy probable que se haya ocupado de esta carga de
trabajo en particular al menos una vez.
La siguiente es una lista no exhaustiva de dónde puede tener lugar el
procesamiento por lotes:
• Transformación y preparación de conjuntos de datos
• Extraer, transformar y cargar (ETL) cargas de trabajo
• Extraer, cargar y transformar (ELT) cargas de trabajo
• Entrenamiento de modelos de aprendizaje automático
• Aplicar modelos de aprendizaje automático en conjuntos de
datos para puntuar
• La generación del informe
La Figura 1-9 muestra un flujo de trabajo por lotes típico:
1. Los datos de origen se introducen en un almacenamiento de
datos de elección, como Azure Blob Storage, Azure Data Lake
Storage, Azure SQL Database o Azure Cosmos DB.
2. Luego, los datos se procesan mediante un motor con
capacidad por lotes, como Azure Data Lake Analytics, Azure
HDInsight o Azure Databricks, utilizando lenguajes como U-SQL,
Apache Hive o Apache Pig, o Spark.
3. Por último, los datos se almacenan en un almacén de datos
analíticos, como Azure Synapse Analytics, Spark SQL
(principalmente con Delta Lake; más sobre eso en el Capítulo 4 ,
" Describe una carga de trabajo de análisis en Azure "), HBase o
Hive para brindar informes comerciales. .

Figura 1-9 Descripción general del procesamiento por lotes


¿Necesita más revisión? Elección de tecnología por lotes
Capítulos 3 y4 entrar en más detalles sobre estos servicios y el proceso en sí.
Además, para obtener orientación sobre las diferencias entre estos motores, vaya
a: https://docs.microsoft.com/en-us/azure/architecture/data-guide/technology-
choices/batch-processing .

Puede usar Azure Data Factory o Apache Oozie en Azure HDInsight para
organizar todo el proceso.
Sugerencia para el examen
Tanto Azure Synapse Analytics, a través de sus recientes adiciones,
actualmente en versión preliminar pública o privada, como Azure
Databricks tienen como objetivo ser plataformas unificadas para la
ingestión, procesamiento, almacenamiento y entrega de cargas de trabajo
por lotes y en flujo.
Un trabajo por lotes es una canalización de uno o más lotes. Esos lotes
pueden ser en serie, en paralelo o una combinación de ambos, con
complejas restricciones de precedencia.
Los trabajos por lotes generalmente se desencadenan por algún programa
recurrente o en respuesta a eventos particulares, como un nuevo archivo
colocado en una carpeta monitoreada. En su mayoría funcionan fuera de
las horas pico para evitar incurrir en contención de recursos en los
sistemas de producción. De hecho, el volumen de datos que se procesarán
podría ser enorme, especialmente si se encuentra en escenarios que
pertenecen al término (a menudo abusado) de big data .
Dado que no existe una definición clara de big data, estos entornos se
describen generalmente a través de las llamadas 3 V de big data . En
versiones extendidas, puede encontrar una o dos V más. Nos referimos a
esta versión para obtener una descripción general completa:
• Volumen
• Velocidad
• Variedad
• Veracidad
• Valor
Estos rasgos tienen mucho en común con los desafíos a los que se
enfrenta en las cargas de trabajo de datos por lotes, por lo que también
nos brindan un gancho para comprenderlos mejor.

VOLUMEN
Cuando alguien le pregunta a un colega: "¿Qué son los macrodatos en
realidad?" su respuesta típica es: "¡Todo lo que no cabe en una hoja de
Excel!"
Dejando de lado las bromas, de todos los 5 V, el volumen es
probablemente el más complicado de definir. Cuando el volumen
aumenta, puede causar resultados inesperados en sus trabajos por lotes, y
no solo allí. Un trabajo de una hora puede convertirse en un trabajo
interminable sin ninguna razón aparente, pero esto por sí solo no significa
que sea el momento de comprar más hardware o de cambiar el motor por
completo. Las arquitecturas sólidas, las mejores prácticas y las bases de
código bien escritas pueden superar la mayoría de los problemas
relacionados con el volumen de datos, por lo que puede encontrar que los
motores relacionales clásicos como SQL Server pueden manejar incluso
terabytes de datos sin problemas.
Dicho esto, existe un límite más allá del cual los sistemas tradicionales de
multiprocesamiento simétrico (SMP) no pueden ir. En estos sistemas,
como un servidor físico tradicional o una máquina virtual (VM), los
recursos como la memoria o los canales de acceso al disco (por nombrar
algunos) se comparten entre los procesadores. Por lo tanto, aunque la
ampliación podría ayudar, en algún momento chocas contra una pared
cuando, por ejemplo, alcanzas el límite de rendimiento de E / S o RAM.
Las arquitecturas de procesamiento masivo paralelo (MPP) como Azure
Synapse Analytics (consulte la Figura 1-10 ) y los ecosistemas de Hadoop
introdujeron una clara separación entre computación y
almacenamiento.edad, lo que les permite escalar de forma
independiente. Comparten el mismo enfoque de escalamiento horizontal,
con algunas diferencias en la implementación, pero el factor resultante es
una buena flexibilidad en ambos escenarios.
Figura 1-10 Descripción general de la arquitectura de Azure Synapse
Analytics (anteriormente Azure SQL Data Warehouse)
La arquitectura subyacente, similar en ambos escenarios, generalmente
se compone de un nodo de encabezado, que organiza múltiples nodos de
trabajo, dividiendo un solo trabajo por lotes en partes y asignándolas a
cada trabajador. Los datos se almacenan en un sistema de archivos
distribuido, que a su vez está compuesto por uno o más nodos. En estos
nodos residen los datos y también se dividen en trozos. La topografía del
clúster impulsa la elección de en cuántas partes se debe dividir el trabajo,
y la proximidad de la red entre los trabajadores y el almacenamiento
determina qué datos maneja cada trabajador.
Cuando el volumen crece, es más fácil agregar nodos donde sea necesario,
generalmente aumentando la cantidad de trabajadores para paralelizar
más. De esta manera, puede mantener la cantidad de datos que cada
trabajador debe manejar, haciendo que la carga de trabajo sea más
predecible.
Muchos sistemas también implementan una función de escalado
automático, agregando nodos cuando es necesario y eliminándolos
cuando ya no son necesarios. Esta función es útil cuando el volumen de
datos no es constante y desea mantener los costos lo más bajos posible.
Cualquiera que sea el enfoque que siga, un término clave en escenarios de
gran volumen es la virtualización de datos . El concepto detrás de esto es
que hacer que los datos sean accesibles donde están almacenados, sin la
necesidad de moverlos a un repositorio central, ahorra muchos recursos y
permite una especie de análisis de datos bajo demanda .
Microsoft SQL Server 2016 presenta y se integra a la perfección en su
lenguaje de consulta T-SQL , PolyBase , un motor capaz de consultar datos
de fuentes de datos externas. PolyBase también está completamente
integrado en Azure SQL Databases, y en su versión más reciente incluida
en SQL Server 2019, la compatibilidad con fuentes externas se ha
incrementado considerablemente, agregando un conector Open Database
Connectivity (ODBC).

VELOCIDAD
El término velocidad se refiere principalmente a escenarios en tiempo real
o casi en tiempo real donde los datos tienen que fluir rápidamente por la
tubería, experimentando algún enriquecimiento o transformación en el
proceso. Aunque la velocidad está estrechamente relacionada con las
cargas de trabajo de transmisión, generalmente también tiene un efecto
secundario en las cargas de trabajo por lotes.
En los escenarios de almacenamiento de datos modernos, dichos datos a
menudo se almacenan para un análisis más detallado, convirtiéndose en
una de las fuentes de los trabajos por lotes. En este escenario, las dos
rutas diferentes que siguen los datos son la capa de velocidad y la capa por
lotes , como se muestra en la Figura 1-11 .
Figura 1-11 Capa de velocidad frente a capa de lote

VARIEDAD
El manejo de diferentes tipos de datos siempre ha sido un problema
importante en escenarios de lotes, ya que significa que es posible que
deba hacer mucho trabajo para armonizarlos todos de una manera
significativa.
Tener diferentes formatos también podría significar que tendría que usar
motores específicos para leer tipos de archivos particulares, aumentando
la complejidad general de la arquitectura.
Además, los datos suelen ser volátiles ; su esquema podría cambiar con el
tiempo y es posible que deba manejar pequeñas diferencias entre los
datos antiguos y los nuevos, incluso si provienen de la misma fuente. En
tales casos, hablamos de deriva del esquema .
Para comprender mejor lo que puede tener que manejar, utilizamos la
clasificación más tradicional para estructuras de datos:
• Datos estructurados Estos datos suelen estar bien
organizados y son fáciles de entender. Los datos almacenados en
bases de datos relacionales son un ejemplo, donde las filas y
columnas de la tabla representan entidades y sus atributos. La
integridad de los datos también se refuerza mediante
comprobaciones y restricciones, por lo que es poco probable que
obtenga datos con formato incorrecto o huérfanos.
Aunque es posible que tenga que trabajar con muchos motores de
bases de datos relacionales diferentes, los controladores específicos
del proveedor generalmente están disponibles y son muy maduros
en su implementación, lo que lo deja solo con la necesidad de
comprender el modelo de datos y cómo consultarlo de la manera
más eficiente.
• Datos semiestructurados Este dato no suele provenir de
almacenes relacionales, ya que aunque pudiera tener algún tipo de
organización interna, no es obligatorio.
Buenos ejemplos son los archivos XML y JSON. En estos formatos,
tienes una especie de esquema, pero adherirse a él depende del
sistema de producción. Algunas entidades contenidas en este tipo
de estructura pueden tener atributos adicionales o pueden carecer
de otros, por lo que la flexibilidad debe ser un rasgo clave de los
motores capaces de manejar este tipo de datos.
En estos casos, normalmente hablamos de esquema en lectura , lo
que significa que el esquema debe ser aplicado por las aplicaciones
de lectura. Es posible que se requieran algunos atributos, o incluso
subárboles completos de entidades secundarias, de una aplicación
que lea esos datos, pero no de otra. El Listado 1-1 muestra un
archivo JSON de muestra; puede ver que tanto los objetos de nivel
superior como sus hijos relacionados están representados en el
mismo archivo de una manera orientada a objetos, utilizando
diferentes niveles de anidamiento.
Las bases de datos NoSQL como Azure CosmosDB funcionan de
forma nativa con datos JSON y tienen una latencia de ingestión muy
baja. Además, admiten índices para hacer que las consultas y la
recuperación de entidades sean muy eficaces, a costa de una tasa de
ingestión ligeramente reducida. Además, muchos motores
relacionales manejan datos semiestructurados hasta cierto
punto. Microsoft SQL Server 2005, por ejemplo, introdujo el tipo de
datos XML y, más recientemente, Microsoft SQL Server 2016 agregó
compatibilidad con JSON. El objetivo de dichas extensiones es
proporcionar un lugar común para administrar datos estructurados
y no estructurados para escenarios menos complejos, evitando la
necesidad de introducir nuevos motores para manejarlos.
El PolyBase mencionado anteriormente hace un gran trabajo al
permitir que las bases de datos de SQL Server manejen diferentes
fuentes y formatos, brindándonos otra opción para mezclar datos
estructurados y no estructurados en el mismo proceso.

Listado 1-1 Contenido JSON de muestra

Haga clic aquí para ver la imagen del código


{

"Descripción": "Este archivo contiene una serie de revisores con


información personal básica

y una matriz anidada de reseñas realizadas ",

"Valores": [

"FirstName": "Parque",

"Apellido": "Dan",

"Edad": "43",

"Reseñas": [

"Compañía": "La compañía telefónica"

"Calificación": 4.0

},

"Compañía": "Northwind Electric Cars"

"Valoración": 3,7

]
},

"FirstName": "Kelly",

"MiddleName": "Jane",

"LastName": "Weadock",

"Edad": "27",

"Reseñas": [

"Compañía": "Northwind Electric Cars"

"Valoración": 3,7

• Datos no estructurados Al bajar en la lista, encontrará datos


no estructurados como último paso. Los datos sin un modelo de
datos explícito entran en esta categoría. Buenos ejemplos incluyen
formatos de archivos binarios (como PDF, Microsoft Word, MP3 y
MP4), correos electrónicos y tweets.
Por lo general, se utiliza un proceso que involucra capacidades de
predicción de aprendizaje automático para extraer información útil
de estos archivos. Estos procesos se
denominan recuperación de información . El análisis de
sentimientos , por ejemplo, trata de contextualizar un texto para
comprender el tema que trata, identificando mientras tanto qué
sentimiento tiene el autor al respecto. En cambio, el reconocimiento
de formularios intenta extrapolar pares clave-valor de un
documento, devolviendo una tabla de los valores como
salida. Clasificación de imágenesintenta comprender el tema de una
fotografía, comparándolo con una biblioteca de imágenes
etiquetadas. Estos son solo algunos tipos de procesamiento, pero es
importante tener en cuenta que la IA aplicada se está volviendo
muy popular y sus campos de uso son muchos. Las ofertas como
Azure Cognitive Services hacen posible la integración de la
inteligencia artificial en sus canalizaciones con solo llamadas a la
API, lo que le ahorra la carga de crear una plataforma compleja
usted mismo.
Los datos pueden venir con una capa de metadatos junto con su
contenido binario, como atributos de imagen y campos de correo
electrónico, y en tales casos es una combinación de datos
semiestructurados y no estructurados.

VERACIDAD
En casi todas las organizaciones, la veracidad suena como una
advertencia. Tener una gran cantidad de datos provenientes de diferentes
fuentes plantea un gran desafío para garantizar que la calidad de los
datos sea aceptable. La tecnología de la información siempre se ha
ocupado del concepto de entrada y salida de basura (GIGO): las
computadoras elaboran una entrada para producir una salida, pero no
pueden identificar el sesgo si no se les enseña a hacerlo.
Los datos deben conservarse en cada fase de su ciclo de vida, pero en
escenarios del mundo real es muy difícil implementar tal nivel de
control. Además, puede haber situaciones en las que las fuentes
finalmente tengan buena calidad por sí mismas, pero cuando se
combinan, debe realizar un trabajo complejo para que hablen el mismo
idioma.
Tener una salida en la que no confía hace que todo el proceso sea un
fracaso, y esto conduce directamente a la última V.

Sugerencia para el examen


La calidad de los datos es un tema complejo y no se trata en este libro. Sin
embargo, es importante saber qué servicios se pueden utilizar para
verificar y limpiar sus datos.
En las instalaciones, Microsoft SQL Server Enterprise Edition incluye
paquetes de servicios de datos maestros y servicios de calidad de
datos. Introducidos por primera vez en la versión 2008, ambos servicios
encontraron su madurez en la versión 2016. Encontrarás más detalles
aquí:
• Servicios de datos maestros https://docs.microsoft.com/en-
us/sql/master-data-services/master-data-services-overview-
mds?view=sql-server-ver15&viewFallbackFrom=sql-server-
previousversions
• Servicios de calidad de datos https://docs.microsoft.com/en-
us/sql/data-quality-services/data-quality-services?view=sql-server-
ver15
Además, SQL Server Integration Services (SSIS) Enterprise Edition, desde
su versión 2005, ofrece componentes Fuzzy Lookup y Fuzzy Grouping
listos para usar, que puede usar dentro de un flujo de datos para eliminar
los registros de entrada duplicados o para realizar datos. controles de
calidad. Encontrará información detallada
aquí: https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-
2005/administrator/ms345128(v=sql.90)?redirectedfrom=MSDN .
Con Azure, tiene las siguientes opciones:
• Si utiliza la infraestructura como servicio (IaaS; consulte
el Capítulo 2 , “ Describir cómo trabajar con datos relacionales en
Azure ”), una máquina virtual de SQL Server puede alojar Master
Data Services, Data Quality Services y Servicios de integración; aquí
no hay grandes diferencias con las instalaciones locales.
• Si usa Azure Data Factory, puede aprovechar las funciones de
expresión basadas en soundex o expresiones regulares (regex)
como regexMatch , regexExtract , rlike , flujos de datos de mapeo
interno para realizar la deduplicación en función de la similitud de
cadenas, o aún puede usar un on- demande el entorno de
Integration Services mediante SSIS Integration Runtime Enterprise
Edition (consulte el Capítulo 4 para obtener una descripción
general de Azure Data Factory [ADF] Integration Runtimes) para
realizar lógica difusa dentro de los paquetes SSIS. Encontrará más
información aquí: https://docs.microsoft.com/en-us/azure/data-
factory/data-flow-expression-functions .
• Si desea optar por una solución de terceros, Azure
Marketplace ofrece muchas aplicaciones que puede implementar
en su suscripción de Azure. Puede buscarlos
aquí: https://azuremarketplace.microsoft.com/en-
us/marketplace/apps .
• En relación con el gobierno de datos en general, Azure Data
Catalog es un servicio en la nube completamente administrado que
ayuda a los usuarios dentro de una organización a descubrir,
comprender y consumir fuentes de datos disponibles. Cualquier
usuario puede colaborar, agregando metadatos y anotaciones a los
activos de información registrados en el catálogo. Encontrará más
información aquí: https://docs.microsoft.com/en-us/azure/data-
catalog/overview .

VALOR
Cada proceso debe centrarse en extraer valor de los datos, y esto es cierto
desde la fase de diseño hasta el entorno de producción. Los datos sin
valor son solo un costo, mientras que la recopilación de información a
partir de ellos brinda beneficios a todas las empresas.
Tener una gran cantidad de datos a su disposición no significa
necesariamente que sea más fácil encontrar valor en ellos; de hecho, suele
ser todo lo contrario. Debe elegir los datos correctos y más útiles de miles
de archivos o tablas diferentes, tratando de evitar perder un tiempo
precioso buscando contenido fuera de alcance.
Una vez que haya identificado el mejor modelo de datos que se adapte a
las demandas de su negocio, debe crear canalizaciones capaces de
transformar los datos que necesita el modelo de destino.
La visualización juega otro papel clave a la hora de dar valor a sus
datos. Es necesario elegir la mejor herramienta y las imágenes adecuadas
para que los usuarios se sientan cómodos con los resultados y para darles
la flexibilidad de jugar con los datos a su propio ritmo.

EL ENFOQUE DE DATOS POR LOTES


Extraer valor de un lago de datos no es una tarea fácil. El volumen y la
variedad de datos pueden representar un gran desafío para comprender
si tiene el contenido adecuado para responder a las preguntas
comerciales y si el contenido es de buena calidad o necesita pulirse.
Por lo general, el primer paso consiste en explorar los datos a su
disposición. Las herramientas de descubrimiento de datos pueden ayudar
en las primeras fases, lo que le permite explorar rápidamente el
contenido de los datos sin la necesidad de crear canales de
transformación. Después de identificar los datos que satisfacen sus
necesidades comerciales, puede comenzar a investigar para determinar si
los datos están limpios o si deben (y pueden) limpiarse. Los atributos o
valores que faltan, la deriva del esquema y los duplicados son solo
algunos de los problemas que debe buscar. Algunas herramientas o
motores que puede usar para realizar el descubrimiento de datos son
Power BI, Azure Data Studio, Spark, Hive y Azure Synapse Studio (en
versión preliminar pública al momento de escribir este artículo).
Una vez que conozca mejor sus datos, puede elegir un motor que satisfaga
las necesidades de las transformaciones que tenga que realizar y que
sirva como su almacenamiento final. Si sus motores de transformación y
almacenamiento coinciden, probablemente esté optando por un patrón
de extracción-carga-transformación (ELT); de lo contrario, optará por
un patrón de extracción-transformación-carga (ETL) más
tradicional .Presentaremos una descripción general profunda de estos
patrones en la siguiente sección. La selección del motor correcto podría
no ser trivial, pero en términos generales, los factores clave que impulsan
la elección son los siguientes:
• Madurez de la plataforma
• Compatibilidad con formatos de archivo e integración de
fuentes de datos listos para usar
• Facilidad de desarrollo
• Nivel de confianza en su equipo en un motor en particular
• Facilidad de mantenimiento
• Costo
Cualquiera que sea el camino que elija seguir en su proceso por lotes,
generalmente el hogar final para sus datos seleccionados es una base de
datos, generalmente un almacén de datos . Nos centraremos más en los
almacenes de datos más adelante en este capítulo, pero por ahora tenga
en cuenta que esta técnica de modelado en particular, cuando se diseña
correctamente, permite consultas analíticas eficaces incluso con una gran
cantidad de datos.
Al final de la canalización están los usuarios comerciales, que envían
consultas a su modelo de datos para obtener información sobre él. Esto se
puede hacer de manera de autoservicio , donde los usuarios solicitan
acceso a datos más granulares para transformarlos aún más con
herramientas como Power BI, o mediante un informe, por ejemplo, de una
manera más tradicional y preconstruida.
Entre el modelo de datos y los usuarios comerciales, puede
existir una capa de servicio . Esta capa está compuesta por un conjunto de
datos agregados previamente, llamado data mart, y puede contener un
modelo semántico de procesamiento analítico en línea (OLAP) como SQL
Server Analysis Services. El propósito de esta capa es desacoplar datos sin
procesar y análisis para mejorar el rendimiento de las consultas en el lado
del usuario y, al mismo tiempo, proteger el motor relacional de picos de
carga impredecibles debido a la interacción directa con las solicitudes del
usuario.
¿Necesita más revisión? Microsoft Learn: Azure para el ingeniero de datos
La siguiente ruta de aprendizaje de Microsoft explora tareas y desafíos relacionados con la
ingeniería de datos en Azure, y brinda una descripción general de algunos productos que
pueden ayudar en tales escenarios: https://docs.microsoft.com/en-us/learn/paths/azure -
para-el-ingeniero-de-datos / .

Describir la diferencia entre datos por lotes y de


transmisión
Los datos por lotes y de transmisión tienen diferencias importantes en
muchos aspectos, y las secciones anteriores intentan resaltar los rasgos y
desafíos clave de ambas técnicas de procesamiento.
Puede resultar útil resumir algunos de los conceptos expresados en forma
de tabla como referencia. Los valores contenidos en la Tabla 1-
1 representan el escenario más común para cada tipo de proceso.
Tabla 1-1 Lote frente a transmisión
Procesamiento de flujo Procesamiento por lotes

Volumen de entrada Pequeños lotes Lotes grandes


Procesamiento de flujo Procesamiento por lotes

Volumen de salida Pequeños lotes Lotes pequeños Lotes gran


estructurados

Tipo de entrada Muy dinámico Casi estático

Concurrencia Muy alto Muy bajo

Transformaciones Agregaciones de ventanas Transformaciones comple

Latencia Muy bajo Elevado

Tipo de trabajo De funcionamiento rápido De larga duración

Tiempo de actividad Siempre corriendo Ejecuciones programadas

Consumo de memoria Bajo Muy alto

Ingestión de mensajes Azure Event Hubs N/A


Apache Kafka
HDInsight con Kafka

Motores de Azure Stream Analytics Azure Data Factory con m


procesamiento Azure Databricks con Spark de datos
Streaming Azure Data Factory con ca
HDInsight con Spark Streaming de datos
o Storm Azure Synapse Analytics
Azure Data Lake Analytics
Azure Databricks
HDInsight con Hive, Spark
Describe las características de los datos relacionales.
Hay que remontarse al año 1969 para encontrar las raíces del
llamado modelo relacional . En ese momento, el científico informático
inglés Edgar F. Codd comenzó a esbozar un enfoque lógico y matemático
para la gestión de datos, basado en la lógica de predicados de primer
orden.
En 1970, su artículo de investigación “Un modelo relacional de datos para
grandes bancos de datos compartidos” dio origen a la gestión de datos tal
como la conocemos hoy y acuñó el término modelo relacional .
En los años siguientes, otras publicaciones ampliaron y consolidaron la
teoría, al tiempo que proponían nuevos conceptos como la lógica de tres
valores para manejar la información faltante.
Otras contribuciones externas notables al trabajo de Codd son las
extensas publicaciones de Christopher J. Date y Hugh Darwen.

UN POCO DE TEORÍA
Describir en detalle el modelo relacional está más allá del alcance de este
libro, pero presentaremos brevemente sus aspectos centrales. Estos
conceptos son la base de la mayoría de los sistemas modernos
de administración de bases de datos relacionales (RDBMS) que
probablemente usa todos los días, aunque su implementación práctica a
menudo se desvía del paradigma original.
La teoría que describe el modelo relacional establece que los datos se
pueden expresar como relaciones (o tablas ), que son conjuntos
de tuplas (o filas ). Por definición, los conjuntos están desordenados y no
permiten duplicados.
Con una pequeña diferencia con su contraparte matemática, las tuplas
relacionales contienen elementos etiquetados y desordenados
llamados atributos (o columnas ). Un dominio (o tipo de datos ) es el tipo
de valores que acepta un atributo, e incluso puede restringir los valores
posibles dentro de un dominio mediante una restricción . La figura 1-
12 muestra una representación práctica de una relación.
Para ser identificadas de forma única dentro de una relación, las tuplas
pueden especificar uno o más atributos como su clave principal . Una
conexión entre dos relaciones se llama relación .
Figura 1-12 Relación, tuplas y atributos
Los datos se recuperan emitiendo consultas al modelo, utilizando álgebra
relacional y operadores relacionales. Las consultas usan un lenguaje
declarativo, que describe lo que queremos hacer / obtener y no cómo
hacerlo / obtenerlo, y el resultado es una relación en sí misma.
El lenguaje de consulta estructurado (SQL), junto con sus variantes
específicas del proveedor, es un lenguaje de programación popular para
consultar datos almacenados en RDBMS. SQL ha sido un estándar ANSI
desde 1986 y un estándar ISO desde 1987. La implementación específica
de Microsoft usa el nombre Transact Structured Query Language (T-SQL),
y es el lenguaje usado para interactuar con Microsoft SQL Server.
Aquí están los ocho operadores SQL originales, seguidos por el operador
T-SQL correspondiente, entre paréntesis:
• Unión ( UNION)
• Intersección ( INTERSECT)
• Diferencia ( EXCEPT)
• Producto cartesiano ( CROSS JOIN)
• Selección ( WHERE)
• Proyección ( SELECT)
• Unirse ( INNER JOIN)
• División relacional (no implementado)
LA PRÁCTICA
Muchos productos de bases de datos basan su implementación en el
modelo relacional, pero ninguno de los motores empresariales más
populares adopta la teoría completa tal como la define Codd. Los
proveedores generalmente optan por implementar un subconjunto de las
reglas originales, extendiéndolas con reglas personalizadas para agregar
características particulares.
Microsoft SQL Server no hace ninguna excepción. Es la implementación
específica de Microsoft del modelo relacional, y su amplio ecosistema
incluye muchos servicios adicionales, que cubren tareas de
transformación y gestión de datos, entre otros. La implementación de SQL
Server del lenguaje SQL se llama Transact-SQL (T-SQL), y aunque no
implementa el estándar SQL completo, T-SQL lo extiende de muchas
maneras.
Las convenciones de nomenclatura utilizadas en SQL Server son
consistentes en todas sus diversas versiones e implementaciones, por lo
que las usaremos de ahora en adelante. Las relaciones son tablas, las
tuplas son filas, los atributos son columnas y los dominios son tipos de
datos.
La arquitectura de la base de datos generalmente depende del tipo de
carga de trabajo para la que está diseñada. Podemos identificar dos
cargas de trabajo principales:
• Procesamiento de transacciones en línea (OLTP)
• Procesamiento analítico en línea (OLAP)
¿Necesita más revisión? OLTP y OLAP
Tiene un desglose de estas dos cargas de trabajo en la habilidad 2.1 en este libro.

HABILIDAD 1.2: DESCRIBIR LOS CONCEPTOS


BÁSICOS DEL ANÁLISIS DE DATOS.
El análisis de datos es un concepto amplio que abarca muchas etapas del
ciclo de vida de los datos. Antes de que los usuarios puedan visualizar y
analizar los datos, la información debe recopilarse, limpiarse,
transformarse y prepararse.
Los usuarios deben confiar en los datos a su disposición, y plantear la
misma pregunta de diferentes formas o con diferentes herramientas debe
conducir a la misma respuesta. Por esta razón, los almacenes de datos y
su única fuente de información siguen siendo relevantes hoy en día,
aunque de una forma más compleja y empresarial.
Esta skillx cubre cómo:
• Describir las técnicas de análisis.
• Describir los conceptos de ETL, ELT y procesamiento de
datos.
• Describir la visualización de datos y los tipos de gráficos
básicos.

Describir las técnicas de análisis.


Cuando una organización quiere extraer valor de sus datos, el primer
paso es comprender cuál es su madurez analítica. Otra palabra para esto
es la curva de análisis (consulte la Figura 1-13 ), que presenta cuatro tipos
de análisis:

Figura 1-13 La curva de análisis


• Análisis descriptivo Este tipo responde a la pregunta "¿Qué
pasó?" Los datos se recopilan de varias fuentes y están bien
organizados en un repositorio central, generalmente un almacén de
datos. Este proceso facilita el análisis de métricas (hechos) desde
diferentes puntos de vista (dimensiones) consultando el modelo
directamente o mediante un modelo semántico más avanzado
como los cubos OLAP. Los datos históricos permiten a los usuarios
ver cómo cambiaron las métricas a lo largo del tiempo. Con este
tipo de análisis, cualquier perspectiva para el futuro o explicación
de hechos pasados debe hacerse manualmente, posiblemente
introduciendo un sesgo humano en el resultado. Este es el primer
paso para una organización que desea aprovechar al máximo sus
datos, y también es el más fácil, ya que se basa en arquitecturas y
prácticas de inteligencia empresarial conocidas.
• Análisis de diagnóstico Este tipo responde a la pregunta
"¿Por qué sucedió?" Los datos se analizan con algoritmos de
aprendizaje automático que realizan análisis de causa raíz, cuyo
objetivo es encontrar anomalías y patrones sobresalientes que
hayan dado lugar a resultados no deseados. Aunque los expertos en
la materia (PYME) definen rangos de valores aceptados a lo largo
de todos los pasos del proceso, el análisis generalmente se realiza
de forma automática utilizando modelos entrenados y ajustados
por científicos de datos. Le recomendamos que almacene los datos
en un repositorio central, como un almacén de datos. Como puede
ver en la Figura 1-13 , este paso es el primero que se incluye en el
campo Análisis y aporta un poco más de complejidad a la imagen.
• Análisis predictivo Este tipo responde a la pregunta "¿Qué
pasará?" Se aplican técnicas más avanzadas para lograr este
paso. El objetivo aquí es prever el futuro, analizando las tendencias
actuales e históricas para predecir de antemano cuál será la
producción. Esto permite a las organizaciones realizar ajustes
continuos a los procesos actuales o tomar acciones preventivas
para evitar que suceda algo. Aquí están algunos ejemplos:
• Mantenimiento predictivo Al considerar si un dispositivo en
particular podría romperse, tenga en cuenta los parámetros
operativos y las fallas pasadas de otros dispositivos del mismo
tipo.
• Rotación de clientes Cuando un cliente puede cambiar a un
competidor, considere comportamientos similares de clientes
anteriores.
• Detección de fraudes Pregúntese si los patrones de actividad
actuales, como transacciones con tarjetas de crédito, solicitudes
web o reclamaciones de seguros, sugieren comportamientos
sospechosos.
Dependiendo del tipo de respuesta que esté buscando, el análisis
predictivo se puede realizar tanto en forma continua como por
lotes. Ese aspecto, junto con el ajuste no trivial de dichos modelos
para evitar predicciones incorrectas, aumenta la complejidad
general de este tipo de análisis.
• Análisis prescriptivo Este tipo responde a la pregunta
"¿Cómo podemos hacer que suceda?" El objetivo aquí es establecer
un objetivo y encontrar la mejor combinación de parámetros de
entrada para alcanzarlo. Por ejemplo, suponga que planea un
aumento de ingresos del 20 por ciento para el próximo año fiscal y
desea saber qué debe cambiar en su proceso para alcanzar ese
objetivo. El análisis prescriptivo es parte de un proceso que
involucra en gran medida el análisis predictivo, y no es raro verlos
implementados juntos.
Es importante comprender que la mayoría de las técnicas analíticas
avanzadas se benefician de tener datos de entrada extensos y curados,
porque esto hace que su salida sea más confiable. Otro factor importante
es que un modelo bien desarrollado y ajustado no tiene sesgos y puede
descubrir correlaciones entre los atributos de entrada (generalmente
llamados características ) que antes se desconocían. Además, puede
identificar patrones que no dependen de (o no solo de) un atributo
particular que un ser humano consideraría un buen candidato en función
de su conocimiento empresarial.
La analítica avanzada o el proceso de ciencia de datos pueden volverse
rápidamente complejos, ya que implica una gran cantidad de recursos y
es una actividad que requiere mucho tiempo. La figura 1-14 muestra una
de las metodologías más comunes utilizadas para abordar un ciclo de vida
de ciencia de datos, el Proceso de ciencia de datos en equipo (TDSP).
Figura 1-14 El proceso de ciencia de datos en equipo
TDSP es un enfoque ágil para proyectos de ciencia de datos y
generalmente involucra varios roles diferentes. Los más comunes son:
• Expertos en la materia
• Ingeniero de datos
• Científico de datos
• Desarrollador de aplicaciones
TDSP consta de cuatro fases iterativas, con interconexiones
bidireccionales entre la mayoría de ellas:
1. Necesidades comerciales En primer lugar, debe comprender
cuáles son las necesidades comerciales. Diferentes preguntas
conducen a la exploración de diferentes fuentes de datos y, por lo
general, a una elección de algoritmo diferente.
2. Descubrimiento y adquisición de datos En segundo lugar,
debe recopilar y analizar los datos a su disposición para
asegurarse de tener toda la información necesaria. Consulte la
sección " Describir datos de lote " anteriormente en este capítulo
para obtener más detalles sobre este tema.
3. Desarrollo del modelo En tercer lugar está el desarrollo del
modelo real, donde entra en juego el valor agregado de los
científicos de datos. Puede identificar tres subfases aquí:
1. Ingeniería de características Esta subfase consiste en
estudiar los datos de entrada, limpiarlos, seleccionar o
descartar atributos y crear un conjunto de datos que el
modelo pueda comprender.
2. Entrenamiento del modelo El modelo ahora tiene que
aprender de los datos. El conjunto de datos de entrada
suele dividirse aleatoriamente en dos partes: el tren y el
conjunto de datos de prueba. El primero se utiliza para
entrenar el modelo elegido, mientras que el segundo se
utiliza para probar el rendimiento de predicción del
modelo.
3. Evaluación del modelo Finalmente, se puntúa el modelo
para comprobar si se ajusta bien a los datos y si tiene que
adaptarse de forma coherente a las variaciones en los
datos de entrada. Técnicamente hablando, se tiene que
evitar el sobreajuste y underfitting . Si el resultado no es
bueno, la fase de desarrollo del modelo se repite
nuevamente hasta que el modelo cumple con las
expectativas. En esta fase, se exploran otros modelos para
ver si funcionan mejor que el elegido previamente.
4. Implementación del modelo En cuarto lugar, el modelo
finalmente se implementa en producción. Los entornos de
producción pueden variar, pero generalmente la elección se basa
en el tipo de interacción que se requiere. Cuando el modelo es
parte de una canalización que requiere interacción en tiempo
real, se prefiere la implementación de un servicio web. Cuando
un proceso por lotes tiene que utilizar las capacidades de
predicción del modelo en un gran conjunto de datos, el modelo se
puede serializar en el disco después del entrenamiento y
deserializar en tiempo de ejecución cuando sea
necesario. Cualquiera que sea la opción que elija, una parte
importante de esta fase es la capacidad de supervisar
periódicamente el rendimiento del modelo implementado. La
deriva en los datos originales, o los pequeños cambios constantes
a lo largo del tiempo, pueden llevar incluso a un modelo sólido a
un mal rendimiento.
Este proceso no es definitivo y podrían ser necesarias muchas iteraciones
antes de presentar los resultados a su cliente.

Sugerencia para el examen


Un término popular para describir el ciclo de vida del aprendizaje
automático es MLOps, que significa operaciones de aprendizaje
automático. Deriva y completa el ecosistema DevOps bien establecido,
que abarca todas aquellas prácticas, herramientas y metodologías que
hacen que el proceso sea ágil y robusto. Una canalización de MLOps
completamente automatizada puede probar, aceptar e implementar en un
entorno de producción sin tiempo de inactividad, incluso para un
pequeño cambio en el código fuente comprometido por un desarrollador.
Las herramientas y los servicios modernos (especialmente en Azure)
hacen un gran trabajo al facilitar la implementación del proceso. Éstos
son algunos de los más relevantes:
• El aprendizaje automático automatizado
de AutoML (AutoML) proporciona una forma de producir el mejor
modelo sobre un conjunto de datos de entrada sin la interacción de
un científico de datos. Pasos como la ingeniería de características,
la selección de algoritmos, el ajuste, la capacitación y la puntuación
pueden volverse completamente transparentes para el
desarrollador, lo que hace que el aprendizaje automático sea muy
accesible incluso para alguien que no sea un experto en el
campo. AutoML se ha integrado recientemente en Power BI
Premium y Power BI Embedded, ampliando drásticamente las
capacidades de las herramientas para admitir no solo el
descubrimiento, la transformación y la visualización de datos, sino
también pasos más avanzados relacionados con el ciclo de vida del
aprendizaje automático.
• MLFlow Una plataforma de código abierto para el ciclo de
vida del aprendizaje automático, MLFlow permite una experiencia
centralizada de experimentación, reproducibilidad e
implementación. Además, ofrece un registro de modelos que actúa
como un repositorio, lo que permite a los usuarios descubrir,
anotar y administrar modelos rápidamente.
• Azure ML Azure Machine Learning es un servicio PaaS que
cubre la mayoría de los aspectos del TDSP. Proporciona un
ecosistema colaborativo, escalable y de nivel empresarial para
construir, entrenar, implementar y monitorear sus modelos de
aprendizaje automático. Los modelos se pueden desarrollar
mediante código (Python, R) o mediante una interfaz de usuario
intuitiva de arrastrar y soltar (que se muestra en la Figura 1-
15 ). Las capacidades de AutoML y MLFlow están completamente
integradas. Una vez implementados, los modelos pueden exponerse
como servicios web escalables y ser consumidos por aplicaciones a
través de llamadas a la API, lo que hace que Azure ML sea una
buena opción también para escenarios en tiempo real.

Figura 1-15 Azure ML Designer (actualmente en versión


preliminar pública)
• Azure Kubernetes Service Azure Kubernetes Service (AKS)
es un servicio PaaS alojado en Azure que facilita la administración y
el monitoreo de aplicaciones en contenedores. Si es nuevo en este
concepto, piense en un contenedor como un entorno de aplicación
autosuficiente (un pod en AKS) que se puede replicar para escalar
horizontalmente. AKS es una plataforma común para los modelos
ML, ya que la mayoría de los marcos en desarrollo la admiten de
forma nativa como destino cuando un modelo está listo para la
producción y debe implementarse.
• Predicción en el motor de SQL Server A partir de SQL Server
2017 y actualmente disponible en Azure SQL Database, Azure SQL
Managed Instance y Azure Synapse Analytics (en vista previa al
momento de escribir este artículo), T-SQL admite la
nueva PREDICTfunción, que se muestra en el Listado 1 -2 . Ofrece una
buena forma de predecir directamente dónde residen los datos,
utilizando un modelo previamente entrenado y serializado como
fuente. Obviamente, no puede escalar tan bien como una
implementación en Azure ML o AKS, pero puede simplificar sus
canalizaciones de datos en escenarios donde no se necesita escalar.
Listado 1-2PREDICT función T-SQL

Haga clic aquí para ver la imagen del código


// Leyendo el modelo prerregistrado y serializado

DECLARAR @modelo varbinary (max) = (

SELECCIONE

mls.native_model_object

DE

dbo.mymodels AS mls

DÓNDE

mls.model_name = 'mymodel'

mls.model_version = 'v1'
);

// Haciendo la predicción real

SELECCIONE

D.*,

p. puntaje

DE

PREDECIR (

MODELO = @modelo,

DATOS = dbo.mytable AS d

) CON (Puntuación flotante) AS p;

Sugerencia para el examen


ONNX, que significa Open Neural Network Exchange, es un formato
abierto creado para representar modelos de aprendizaje automático. Se
ha convertido rápidamente en un estándar en la industria y está
ampliamente integrado en muchos marcos.
Para obtener más información, visite https://onnx.ai/ .

Describir los conceptos de ETL, ELT y procesamiento de


datos.
Antes de que los datos puedan analizarse, deben recopilarse y combinarse
de manera significativa. El problema es que la recopilación de datos de
diferentes fuentes siempre plantea un desafío difícil.
Las canalizaciones de datos pueden volverse complejas rápidamente, y
los motores que permiten este tipo de procesos deben ser eficientes y
flexibles, y deben venir con conectores de rendimiento listos para
usar. Además, deben ser extensibles ya que pueden ser necesarios
conectores personalizados para fuentes particulares o propietarias.
Las fuentes y destinos habituales pueden incluir lo siguiente:
• Bases de datos relacionales
• Bases de datos NoSQL
• Archivos de texto (como CSV, TSV, JSON, XML)
• Archivos binarios (como Microsoft Excel)
• Servicios web o de aplicaciones
Las transformaciones de datos pueden variar, pero estas son algunas de
las más comunes:
• Filtrar
• Entrar
• Unión
• Clasificar
• Agrupar por
• Agregar o quitar columnas
• Cambio de tipo de datos
Los dos tipos principales de cargas de trabajo son extraer-transformar-
cargar (ETL) y extraer-cargar-transformar (ELT). La elección entre ellos
depende de la cantidad de datos que va a mover y transformar, qué
motores puede usar y en qué entorno está trabajando: local, en la nube o
híbrido.

ETL
ETL es un enfoque tradicional y ha establecido las mejores prácticas. Se
encuentra más comúnmente en entornos locales, ya que existía antes de
las plataformas en la nube. Es un proceso que implica una gran cantidad
de movimiento de datos, que es algo que desea evitar en la nube si es
posible debido a su naturaleza intensiva en recursos.
Muchos proyectos de inteligencia empresarial (BI) adoptan esta carga de
trabajo para sus canales de datos. Las tres fases (consulte la Figura 1-16 )
son las siguientes:
Figura 1-16 flujo de trabajo ETL
• ExtraerLos datos se recopilan de fuentes y se almacenan en
una ubicación (posiblemente) junto al motor de
transformación. Por lo general, esta fase tiene como objetivo
desacoplar las fuentes del proceso real lo más rápido posible. El
trabajo para realizar en los datos puede consumir tiempo y
recursos, y tener transacciones largas en ejecución mientras la
conexión con las fuentes aún está abierta podría bloquear el
sistema de origen por completo. Además, consumir datos a través
de la red en lugar de acceder a ellos localmente puede ralentizar el
proceso de transformación de manera impredecible o, en el peor de
los casos, bloquearlo por completo. Por último, pero no menos
importante, debe garantizar la coherencia de los datos de origen. Si
está leyendo de una base de datos de la aplicación, por ejemplo, es
probable que los registros cambien mientras tanto, introduciendo
inconsistencias entre los registros de las tablas. Por esta razón,
• Transformar Una vez extraídos, los datos pasan por uno o
varios pasos de transformación. Aquí es donde se aplican las reglas
comerciales y la mayor parte de la inteligencia se lleva a cabo. Es
probablemente la fase más importante de todo el proceso y en la
que se preparan los datos para su destino, realizando
procedimientos de limpieza y verificación para evitar que datos
sucios, parciales o inconsistentes lleguen al almacenamiento
designado. Los datos que no superen una verificación de calidad o
coherencia deben informarse a su fuente para que los corrijan y
enviarse a alguien a cargo de realizar un seguimiento del
problema. Además, no es raro que cuando incluso una de las
comprobaciones falla, el trabajo por lotes también falla. Esta fase
generalmente se conoce como la puesta en escena.fase. A menudo
es beneficioso seguir un enfoque de divide y vencerás, dividiendo la
transformación compleja en etapas más pequeñas para mantener el
rendimiento más predecible. Cuando se necesitan varios pasos, la
salida transformada parcial se almacena en tablas de
preparación . El último paso generalmente da forma a los datos
para que se ajusten fácilmente al destino de destino en la fase de
carga.
• Cargar El paso final consiste en cargar los datos preparados
en el repositorio de destino, generalmente un almacén de datos. La
fase de transformación ha preparado nuevos hechos y miembros de
dimensión para cargarlos. Los patrones de carga comunes son:
• El destino completo se vacía y se transfieren todos los datos
listos para la etapa.
• Incremental Solo se agregan datos nuevos a los que ya existen
en el destino.
• Diferencial Se agregan nuevos datos y los datos existentes se
actualizan con nuevos valores. En algunos escenarios, los datos
eliminados en el lado de la fuente se marcan como eliminados
(o con menos frecuencia, eliminados físicamente).
Los componentes relevantes en la plataforma de datos de Microsoft para
ETL son:
• Servicios de integración de Microsoft SQL Server
(principalmente en escenarios locales)
• Azure Data Factory (principalmente en escenarios híbridos o
en la nube)

Sugerencia para el examen


Una técnica muy común utilizada en el almacenamiento de datos es la
partición. La partición horizontal, en particular, resulta útil en los tipos de
carga de trabajo de carga diferencial, ya que permite reemplazar un
subconjunto de una mesa grande con un mínimo de E / S.
Puede encontrar más información aquí: https://docs.microsoft.com/en-
us/azure/architecture/best-practices/data-partitioning .
Microsoft SQL Server Integration Services (SSIS) reemplaza el
componente Data Transformation Service (DTS) en Microsoft SQL Server
2005 y ediciones posteriores. Puede utilizar esta plataforma integral para
crear soluciones de transformación de datos e integración de datos de
nivel empresarial. SSIS proporciona conectores listos para usar para
muchas fuentes y formatos diferentes, pero también puede ampliarlo con
conectores personalizados. Además, SSIS proporciona una gran cantidad
de componentes de tareas y transformación, que cubren las actividades
más comunes en proyectos de integración de datos.
La ejecución del núcleo se basa en paquetes, que se pueden desarrollar
gráficamente en Microsoft Visual Studio a través de una extensión
gratuita. Un paquete tiene dos flujos principales: el flujo de control y el
flujo de datos, que son muy comunes en las canalizaciones de datos.
• Flujo de control Se trata de un conjunto ordenado de tareas a
realizar. Estas tareas tienen un resultado (éxito, fracaso,
finalización) y se pueden conectar a través de la
precedencia.restricciones para crear un flujo de trabajo complejo
de actividades. La Figura 1-17 muestra un flujo de control simple,
donde se iteran los registros resultantes de una consulta en una
base de datos de SQL Server y se ejecuta un paquete secundario
para cada elemento.
Figura 1-17 Panel de flujo de control
• Flujo de datosAquí es donde tienen lugar las
transformaciones reales sobre los datos. El flujo de datos es una
tarea específica en el flujo de control y permite una o más fuentes
de datos, uno o más destinos y cero o más transformaciones
intermedias. El flujo de datos depende en gran medida de los
metadatos del esquema y, cuando ocurren, las desviaciones del
esquema de origen provocan fácilmente un error de validación, lo
que impide que el paquete se ejecute. Esto puede parecer una
limitación, y de alguna manera lo es, pero es necesario para
asegurar un buen desempeño y consistencia de datos, evitando
donde sea posible las conversiones implícitas o truncamientos que
pueden conducir a resultados inesperados. Los flujos de datos, de
hecho, se ejecutan en la memoria y se compilan como ejecutables
de C ++ bajo el capó, por lo que el código resultante no se puede
adaptar muy bien a los cambios en tiempo de ejecución.bloqueando
transformaciones . Piense en Ordenar, por ejemplo: para ordenar
un conjunto de datos, primero debe obtenerlo todo de la fuente, y
solo entonces podrá ordenarlo; en el caso de un gran conjunto de
datos, esto podría provocar problemas de memoria, por lo que es
mejor que evite estas operaciones cuando sea posible. Como regla
general, intente evitar cadenas de transformaciones complejas y
aproveche el motor de SQL Server en su lugar: en el mismo ejemplo
de clasificación, la ordenación se puede realizar en la fuente con
una ORDER BYcláusula simple en la declaración, tal vez mejorándola
con un índice físico de soporte en la tabla subyacente. La figura 1-
18 muestra un flujo de datos de muestra que implementa parte del
proceso de carga de una dimensión que cambia lentamente.
Figura 1-18 Panel de flujo de datos
Desde SQL Server 2012, los proyectos SSIS son de dos tipos: el modelo de
implementación de paquetes y el modelo de implementación de
proyectos. El primero está más centrado en los paquetes, mientras que el
segundo está más centrado en los proyectos. El modelo de
implementación de proyectos es el camino a seguir para nuevos
proyectos, ya que admite muchas características importantes en un
escenario empresarial: parámetros de proyecto y paquete, referencias
relativas en el proyecto entre paquetes (que facilitan la creación de
relaciones maestro-hijo entre paquetes), una base de datos de catálogo
central dedicada y múltiples configuraciones dependientes del entorno,
entre otras características. Además, la salida de la compilación es un solo
archivo (con la extensión .ispac), lo que hace que la integración de
proyectos SSIS con las canalizaciones de DevOps sea más sencilla.
Azure Data Factory v2 (ADF) es un motor de orquestación y
movimiento de datos PaaS, y brilla en escenarios híbridos o en la
nube. Tiene una interfaz de usuario web útil (que se muestra en la Figura
1-19 ) para desarrollar sus canalizaciones (pero también puede usar
herramientas como Visual Studio, si no le importa tener que editar
archivos JSON complejos). ADF tiene una sólida integración con Azure
DevOps, proporciona un amplio conjunto de API REST con las que
interactuar y tiene un panel de supervisión prediseñado que le permite
realizar un seguimiento de los resultados de ejecución y el consumo de
recursos. También puede supervisar las actividades a través del servicio
Azure Monitor.

Figura 1-19 Una canalización de Azure Data Factory


Nota Azure Data Factory v1
Todavía es posible crear una factoría de datos de la versión 1, pero se considera heredada y
no debe usarse para nuevos proyectos.

El motor principal de ADF se basa en tiempos de ejecución y puede tener


tres tipos diferentes:
• Azure Esto es responsable de todos los movimientos de datos
y la orquestación de actividades realizadas en la nube o dentro de
los servicios accesibles desde la nube.
• Autohospedado Esto permite el acceso a recursos detrás de
un firewall, que no son de acceso público desde la nube o que
requieren la consulta de controladores específicos. Después de
descargarlo e instalarlo en una máquina proxy, debe registrarlo en
su factoría de datos y luego puede usarlo sin problemas como si
fuera un tiempo de ejecución de Azure.
• SSIS Esta es probablemente su primera opción cuando desea
elevar y cambiar su carga de trabajo de una instalación local de SQL
Server Integration Services a la nube. Solo es compatible con el tipo
de proyecto del modelo de implementación de proyectos y debe
apuntarlo a una base de datos de Azure SQL existente que servirá
como catálogo SSIS. Cuando ejecuta un paquete en ADF a través de
la actividad Ejecutar paquete SSIS , una o más máquinas virtuales se
aprovisionan a pedido, con el motor de Integration Services
instalado en ellas. Alojan la ejecución del paquete y se desasignan
cuando se completa.
Es posible que haya notado la falta de transformación de palabras en las
capacidades de ADF. La verdad es que, excluyendo la conversión de
formato de archivo y algunas modificaciones menores en el esquema de
archivo (como eliminar columnas no deseadas y aplanar objetos anidados
JSON), ADF no puede realizar ninguna transformación por sí mismo, sino
que depende de servicios externos para realizarlas. Puede realizar
transformaciones de tres formas:
• Servicios externos ADF admite muchos servicios de
proveedores de Azure o de terceros listos para usar, como Azure
SQL Database, Azure Synapse Analytics, Azure Databricks y Azure
HDInsight. Además, puede aprovechar servicios como Azure
Functions para realizar actividades personalizadas o ejecutar
paquetes de Integration Services a través de SSIS Integration
Runtime.
• Asignación de flujos de datos Son muy similares a los flujos
de datos en SSIS y proporcionan una interfaz de usuario
enriquecida para realizar modificaciones de datos comunes, como
unión, unión, agrupación por, etc. Sin embargo, las
transformaciones diseñadas se convierten en código Spark y la
actividad real la realiza un clúster de Azure Databricks a pedido de
forma transparente para el usuario.
• Arreglo de flujos de datos Estos son como el mapeo de flujos
de datos, pero las transformaciones se desarrollan utilizando el
editor visual de Power Query que puede encontrar en Power BI.
Para obtener una descripción general detallada de Azure Data Factory y
tutoriales paso a paso, consulte el Capítulo 4 .

ELT
ELT parece similar a ETL a primera vista (consulte la Figura 1-20 ), pero
se adapta mejor a escenarios de big data ya que aprovecha la
escalabilidad y flexibilidad de motores MPP como Azure Synapse
Analytics, Azure Databricks o Azure HDInsight.

Figura 1-20 Flujo de trabajo de ELT


Mientras que en una carga de trabajo ETL se utiliza un motor
especializado para transformar los datos antes de cargarlos en el
repositorio de destino, en ELT las fases de carga y transformación se
realizan dentro del propio destino, ya que dichos motores son capaces de
manejar grandes volúmenes de datos mediante escalado. Además,
funcionan muy bien con datos estructurados y no
estructurados. Rompamos las dos fases:
• La extracción de datos se recopila de varias fuentes, y
desvincularlos del proceso sigue siendo tan importante como en
ETL. Sin embargo, existen dos diferencias principales:
1. Los datos recopilados se almacenan en un sistema de archivos
escalable y de alto rendimiento basado en Hadoop Distributed File
System (HDFS), como Azure Blob Storage o Data Lake Storage.
2. Es preferible guardar formatos que el motor de destino maneja
mejor. Los formatos de archivo típicos incluyen Parquet, Avro, Optimized
Row Columnar (ORC), CSV. Cuando el archivo esté comprimido, elija un
códec que se pueda dividir. Grandes cantidades de datos dificultan mucho
el trabajo de los nodos de trabajo MPP, ya que limitan el escalado.
• Cargar y transformar Quizás la característica más
importante de los motores MPP es la capacidad de transformar los
datos tanto en el motor como donde residen. Cuando tiene que
manejar cientos de gigabytes, mover todos esos datos solo para
extraer un subconjunto de registros es una pérdida de tiempo y
recursos. El concepto es bastante simple: un motor MPP intenta
mapear el contenido del archivo a un esquema estructurado para
analizarlo en forma tabular. Cuando el motor realmente "toca" los
datos, hace todo lo posible para mover la menor cantidad de datos
posible, omitiendo todos los registros filtrados por predicados o no
pertinentes a los resultados. Técnicas como la poda de
particiones o la inserción de predicadosse hacen cumplir cuando
corresponda. Sin embargo, no hace falta decir que es importante
escribir código que consulte datos y realice transformaciones de
manera consciente del motor para aprovechar sus puntos
fuertes. Además, explorar los datos antes de procesarlos le permite
elegir la mejor manera de abordarlos, aprovechando la estructura
física de los datos.
En algunos casos, los datos no están en una forma que se ajuste al
motor. Como ejemplo, piense en un archivo muy grande pero
comprimido que no se particiona ni se puede dividir; trabajar con él
es un desafío para la mayoría de los motores MPP, por lo que, como
primer paso, podría aplicar una transformación y simplemente
dividir el archivo en partes más pequeñas, y solo luego continuar
con pasos más complejos.

Sugerencia para el examen


La técnica de consumir datos donde residen se llama virtualización de
datos . En una buena arquitectura de virtualización de datos, el
repositorio donde se almacenan los datos debe tener la capacidad de
escalar; de lo contrario, puede convertirse rápidamente en el cuello de
botella de todo el proceso.
Aunque desde un punto de vista superior el enfoque del problema es
similar, bajo el capó los tres motores enumerados aquí actúan de manera
muy diferente cuando se trata de procesar los datos:
Azure HDInsight es un servicio en la nube que le permite implementar,
administrar y monitorear un clúster para Hadoop, Spark, HBase, Kafka,
Storm, Hive LLAP y ML Service de una manera fácil y efectiva. Sus
aplicaciones incluyen procesamiento por lotes y de flujo, ciencia de datos
y consultas interactivas sobre almacenamiento de big data. Desacoplar la
computación del almacenamiento permite el procesamiento a escala.
Azure Databricks es un servicio en la nube de los creadores de Apache
Spark, combinado con una gran integración con la plataforma Azure. Solo
admite clústeres de Spark, pero dado que el marco de Spark viene con
módulos y bibliotecas para procesamiento por lotes, procesamiento de
flujo, datosciencia y bases de datos de gráficos, está creciendo
rápidamente en popularidad. Un clúster Spark en Databricks difiere del
mismo tipo en HDInsight en muchos aspectos, pero quizás los más
importantes son los siguientes:
• El tiempo de ejecución de Spark en Databricks es una versión
de código cerrado y altamente optimizada de su padre de código
abierto, utilizada por HDInsight.
• La administración de clústeres es mucho más fácil en
Databricks, ya que se puede pausar cuando no se necesita; Además,
admite el escalado automático bajo carga pesada y el apagado
automático después de un tiempo de espera inactivo. En HDInsight,
no puede pausar un clúster inactivo; debe destruirlo y volver a
crearlo cuando sea necesario nuevamente; además, HDInsight no
admite la expansión automática; debe escalar hacia arriba y hacia
abajo manualmente.
• Databricks es una plataforma colaborativa, donde los
ingenieros de datos, los científicos de datos y los usuarios
comerciales pueden coexistir y trabajar juntos. Además, tiene una
amplia integración con los servicios de Azure, mientras que
HDInsight lo respalda en ambos aspectos.
Azure Synapse Analytics es el nuevo nombre de Azure SQL Data
Warehouse, pero lo amplía de muchas formas. Su objetivo es ser una
plataforma de análisis integral, desde la ingesta de datos hasta la
presentación, que reúna la exploración de datos con un solo clic,
canalizaciones sólidas, servicio de base de datos de nivel empresarial y
creación de informes. Piense en tener Azure SQL Data Warehouse, Data
Factory, Spark y Power BI juntos, desarrollarlos, administrarlos y
monitorearlos desde una única interfaz de usuario: Azure Synapse
Studio . Aunque al momento de escribir este artículo la mayoría de las
siguientes funciones están en vista previa pública o incluso privada, vale
la pena mencionar algunas de ellas:
• Grupos de SQL Server aprovisionados o bajo demanda (motor
Azure SQL Data Warehouse)
• Grupos de Spark aprovisionados o bajo demanda
• Transmitir capacidades de procesamiento a través de
agregaciones de ventanas
• Integración de modelos de AA a través de
la PREDICTdeclaración
• Integración de Azure DevOps
• Experiencia de desarrollo de pipelines similar a Data Factory
• Integración del editor de informes de Power BI
El Spark que se encuentra en Synapse Analytics es una bifurcación de
Microsoft del proyecto de código abierto, con algo de optimización e
integración temprana como el soporte del lenguaje Spark.NET.
Para obtener más información sobre Azure HDInsight, Azure Databricks y
Azure Synapse Analytics, y para comprender mejor qué debe usar y
cuándo, consulte los Capítulos 3 y4.

Describir la visualización de datos y los tipos de gráficos


básicos.
Ya sea que se encuentre en las primeras etapas de la curva de análisis o en
la parte superior de ella, la visualización de datos es fundamental para
aportar valor a su proceso de análisis. Los usuarios finales, los usuarios
comerciales y los responsables de la toma de decisiones eventualmente
necesitan ver los datos de una manera legible por humanos.
El campo de la analítica es complejo y requiere un conjunto de
habilidades multidisciplinarias para ser realmente dominado. Los
desarrolladores generalmente carecen de los conceptos básicos de
visualización de datos y producen informes que son difíciles de leer; Los
diseñadores gráficos, por otro lado, a menudo diseñan visualizaciones
hermosas que son difíciles de reproducir con las herramientas de
informes a su disposición.
La verdad es que los informes generales no existen, y cada intento de
producir uno generalmente resulta en una pérdida de tiempo y
recursos. Los diferentes usuarios necesitan diferentes tipos de
visualización, y un acceso en capas a los datos suele ser un requisito
comercial que debe cumplir un proyecto de análisis. Puede identificar tres
macrocapas:
• Acceso analítico Aquí, los usuarios pueden acceder incluso a
información granular. Un ejemplo típico es una tabla dinámica de
Excel conectada a un cubo OLAP. El modelo semántico OLAP
permite a los usuarios dividir y dividir rápidamente un valor
agregado en sus partes, excavando de manera efectiva grandes
cantidades de datos con solo arrastrar y soltar. Trabajar en esta
capa requiere una buena comprensión empresarial y un gran
conocimiento de los flujos de trabajo de los procesos de la
organización. La seguridad organizacional se aplica para evitar que
los usuarios accedan a información que no pueden ver.
• Acceso a informes Los usuarios tienen acceso a informes
prediseñados. Dichos informes pueden ser casi estáticos (los
usuarios simplemente establecen valores de filtro y los actualizan
para obtener un resultado actualizado) o dinámicos, donde los
filtros, las segmentaciones y las imágenes están interconectados y
permiten una experiencia más interactiva y llamativa. Los informes
se suelen acceder a través de un portal y se dividen en áreas
temáticas, correspondientes a las Unidades de Negocio internas. La
seguridad organizacional se aplica para evitar que los usuarios
accedan a información que no pueden ver. Los usuarios más
capacitados podrían crear nuevos informes utilizando una
herramienta dedicada y publicarlos en el portal.
• Acceso al tablero Piense en un tablero como la primera
página de un periódico: una descripción general rápida y
actualizada de los temas más relevantes, con referencias
convenientes a contenido más detallado. En las herramientas de
visualización modernas, un tablero es una colección seleccionada
de partes del informe, y su objetivo es mostrar el estado de salud
de la organización y permitir a los usuarios tomar rápidamente
acciones correctivas cuando se detectan malas tendencias. De
hecho, los consumidores habituales de cuadros de mando son los
responsables de la toma de decisiones. La seguridad organizacional
se aplica para evitar que los usuarios accedan a información que no
pueden ver.
Los datos se pueden presentar de muchas formas diferentes, y elegir el
elemento visual correcto no es una tarea fácil. Las visualizaciones
incorrectas pueden dificultar la lectura de un informe o, lo que es peor,
llevar a los usuarios a suposiciones erróneas. Además, debe mantener el
aspecto y los colores de manera uniforme en todos los informes, ya que
no desea que los espectadores se centren en comprender cómo se
muestran los datos en lugar del significado comercial detrás de ellos. Otro
aspecto importante es que los usuarios quieren consumir informes y
cuadros de mando en sus teléfonos móviles y tabletas tal como lo hacen
en sus escritorios, y los motores de visualización deben adaptar
automáticamente la apariencia de los informes según el dispositivo en el
que se muestren. Cuando tiene cientos de informes, desarrollar diferentes
versiones de ellos solo para adaptarse a diferentes tamaños de pantalla
no es una opción.
A continuación, se muestra una lista de los elementos visuales más
básicos que se utilizan en los informes:
• Tabla Una tabla muestra miembros de atributos en filas y
medidas en columnas. Una tabla simple es generalmente fácil de
entender para los usuarios, pero rápidamente puede volverse
difícil de leer a medida que aumenta el número de filas y
columnas. En algunos tipos de informes, una tabla
está paginada para evitar que cruce el límite de una página cuando
no hay más espacio disponible para las filas de la página. La figura
1-21 muestra una tabla visual simple.
Figura 1-21 Visual de tabla
• Matriz Una matriz es una tabla más sofisticada. Permite
atributos también en columnas y puede calcular subtotales
automáticamente. Además, como puede ver en la Figura 1-22 , si
tiene más de un atributo en filas o columnas, puede expandir y
contraer niveles a través del desglose.

Figura 1-22 Matriz visual


• Gráfico de columnas apiladas Un gráfico de
columnas apiladas es útil cuando desea comparar el rendimiento
de los valores de los atributos con una medida común. Además, un
gráfico de columnas apiladas le permite especificar otros atributos
que tienen una relación padre-hijo con el primero; de esta manera,
puede mostrar la contribución de los hijos al valor principal, como
se muestra en la Figura 1-23 .

Figura 1-23 Visual de gráfico de columnas apiladas


• Gráfico de líneas Un gráfico de líneas representa cómo
cambia una medida a lo largo del tiempo. La figura 1-24 muestra
una adición útil a los elementos visuales en Power BI: puede
especificar otras medidas que se mostrarán en una información
sobre herramientas contextual para que pueda mostrar una posible
correlación entre ellas.
Figura 1-24 Gráfico de líneas visual
• Gráfico circular Observe la Figura 1-25 . Si alguien le pide
que clasifique estas tres categorías de productos por orden total sin
mirar los números, probablemente termine adivinando quiénes son
la segunda y la tercera. Lo cierto es que el cerebro humano no está
acostumbrado a la estimación de áreas y ángulos. Los gráficos
circulares son comunes en informes y presentaciones, pero rara
vez se usan de la manera correcta. Una regla general es que un
gráfico circular debemostrar no más de tres valores; dos es incluso
mejor. Para fortalecer este concepto, observe la Figura 1-23 , que
muestra las mismas categorías de productos y la misma medida del
pedido total con una comparación mucho más clara.
Figura 1-25 Gráfico circular visual
• Gráfico de dispersión Un gráfico de dispersión muestra la
posible correlación entre dos medidas. La figura 1-26 muestra las
ventas del modelo de producto y, como puede ver, un aumento en
la cantidad del pedido casi siempre corresponde a un aumento en
el total del pedido. Sin embargo, puede ver que las ventas
del modelo Road-250 han sido buenas a pesar de su baja cantidad
de pedidos, por lo que es un modelo rentable.
Figura 1-26 Gráfico de dispersión visual
• Tarjeta Una tarjeta se enfoca en una sola medida (como se
muestra en la Figura 1-27 ), mostrando su valor de una manera
clara y legible.

Figura 1-27 Visual de la tarjeta


• KPI Un indicador clave de rendimiento (KPI) es una tarjeta
especializada. Como se muestra en la Figura 1-28 , no solo muestra
un valor de medida, sino que también muestra si alcanza un
objetivo específico y la distancia a él. Por lo general, se hace
referencia a dos o tres colores como estándar visual en los KPI:
• Verde: se ha alcanzado el objetivo y posiblemente se ha
superado.
• Rojo: el objetivo aún no se ha cumplido.
• Amarillo / naranja: puede especificar un vecindario alrededor
del objetivo para indicar un área de advertencia, algo como
"Estás muy cerca del objetivo" o "Ya has cumplido con el
objetivo, pero puedes hacerlo aún mejor".

Figura 1-28 visual de KPI


• Gráfico de mapa Un mapa (consulte la Figura 1-29 ) es útil
para mostrar la distribución geográfica de sus datos, por ejemplo,
dónde están sus clientes o dónde han ocurrido eventos
específicos. Hoy en día, las imágenes de mapas son muy
sofisticadas y dependen de servicios de mapas abiertos o gratuitos
para brindarle vistas de carreteras, aéreas o territoriales, y tienen
codificación geográfica incorporada. Cuando sus datos carecen de
información como latitud y longitud, la codificación geográfica se
puede aplicar a traducir una dirección postal a un punto del
mundo. Las direcciones deben estar bien formateadas y ser lo más
completas posible para evitar una decodificación incorrecta y una
mala ubicación de los puntos. Si su campo de búsqueda contiene
solo "Roma", por ejemplo, dependiendo de la salida de la
configuración regional, podría ser la ciudad capital de Italia o una
ciudad pequeña en el este de Australia.
Figura 1-29 Gráfico de mapa visual
En un proceso de análisis, la preparación de la capa de servicio suele ser
un paso adicional al final del proceso. En las arquitecturas modernas, este
paso se puede compartir entre los usuarios de TI y los usuarios
comerciales. Los usuarios de TI diseñan y mantienen el almacén de datos
empresarial (EDW), la canalización de análisis y la preparación de
conjuntos de datos seleccionados (que generalmente son independientes
del consumidor; por ejemplo, extraen entidades como Clientes, Pedidos,
etc.) y usuarios comerciales. consumen estas entidades para crear
informes y cuadros de mando, o los combinan con datos locales que no
merecen el esfuerzo de ser incluidos en la EDW. Las transformaciones
adicionales realizadas directamente por los usuarios comerciales a
menudo se denominan inteligencia empresarial de autoservicio (BI).y se
parecen un poco a los proyectos de BI clásicos. La diferencia radica en las
herramientas utilizadas para lograr el resultado.
En la plataforma de datos de Microsoft, durante años, la plataforma
estándar de facto para la presentación de informes ha sido Microsoft SQL
Server Reporting Services (SSRS). SSRS es un servicio poderoso e incluye
muchas herramientas útiles tanto para el desarrollo como para la
presentación de informes. A pesar de la disponibilidad de una
herramienta de diseño de informes fácil de usar (Generador de informes),
su estrecha integración con Microsoft SharePoint y las adquisiciones
recientes (como Datazen) que le dan un aspecto nuevo y fresco a sus
imágenes, SSRS no ha podido satisfacer las necesidades empresariales de
BI de autoservicio y paneles de control, y su uso está principalmente
dirigido a informes operativos.
Hace unos 10 años, algunas personas del equipo de desarrollo de SSRS
comenzaron un nuevo proyecto que, después de algunas evoluciones, se
lanzó en 2015 como un servicio independiente: Power BI. En la
actualidad, Power BI tiene un ciclo de lanzamiento mensual, con
actualizaciones periódicas y muchas mejoras versión tras versión. Ha
crecido rápidamente en adopción, ya que incluso su nivel gratuito
permite a los usuarios explorar diferentes fuentes de datos,
transformarlas, combinarlas a través de un editor fácil de usar y mostrar
la salida de una manera atractiva e interactiva. Además, integra informes
típicos de Reporting Services, renombrándolos como informes
paginados.y con la incorporación de capacidades de aprendizaje
automático, se ha convertido en una herramienta unificada del tamaño de
un usuario para todo el proceso de análisis. En el corazón de Power BI se
encuentra el motor tabular de Analysis Services, que lo convierte no solo
en una herramienta para los usuarios, sino también en una plataforma
empresarial.
¿Necesita más revisión? Servicio Power BI
El servicio Power BI se trata en detalle en el capítulo 4 de este libro.

RESUMEN DEL CAPÍTULO


• Las arquitecturas de datos modernas contienen una
combinación de diferentes tipos de cargas de trabajo.
• La carga de trabajo de transmisión es un procesamiento en
tiempo real de mensajes (o eventos) producidos por sensores,
dispositivos y aplicaciones. Estos mensajes generalmente se
agregan por ventanas de tiempo y se envían a paneles en
vivo. Además, los mensajes sin procesar se almacenan en
almacenes de alta capacidad y bajo costo, como lagos de datos, para
su posterior análisis.
• La carga de trabajo por lotes es una transformación masiva de
datos que generalmente provienen de almacenes relacionales o
lagos de datos. Estos datos pueden pertenecer al dominio de big
data y tienen uno, algunos o todos los siguientes rasgos: volumen,
velocidad, variedad, veracidad y valor. El procesamiento por lotes
puede requerir un motor especializado, como los sistemas basados
en Hadoop o las plataformas MPP, que puedan escalar según sea
necesario.
• Los datos relacionales son una arquitectura sólida y madura
que existe desde hace muchos años. Refuerza la integridad
referencial entre tablas a través de restricciones, por lo que es una
buena opción para almacenar datos estructurados.
• La preparación de las organizaciones para abordar el
procesamiento analítico se puede resumir en cuatro pasos
principales, del más fácil al más difícil: análisis descriptivo, análisis
de diagnóstico, análisis predictivo y análisis prescriptivo. Sin
embargo, el primer paso consiste en recopilar y preparar datos
relevantes.
• La analítica avanzada aprovecha la inteligencia artificial y el
aprendizaje automático (ML) para extraer información valiosa,
predicciones o patrones de los datos. El proceso de ciencia de datos
en equipo es un enfoque ágil del ciclo de vida de la ciencia de datos
que aplica conceptos de DevOps al desarrollo, implementación y
mantenimiento de modelos de aprendizaje automático.
• ETL y ELT son dos patrones comunes para la extracción y
preparación de datos. Comparten los mismos pasos conceptuales
pero terminan con diferentes implementaciones. En ETL, utiliza un
motor especializado para realizar la fase de transformación y luego
cargar los datos en un repositorio de destino. En ELT, el repositorio
de destino también tiene la capacidad de transformar datos de una
manera muy efectiva y mover solo los datos necesarios en él, por lo
que las fases de carga y transformación se realizan dentro del
propio repositorio de destino. ETL es más común en escenarios
locales y ELT es más común en escenarios híbridos o en la nube.
• La visualización de datos es el último paso del proceso de
análisis y permite a los usuarios ver los datos en una forma que
puedan comprender fácilmente. Los usuarios más avanzados
pueden necesitar acceso a los datos de origen para explorar o crear
informes ellos mismos; en ese caso, es importante preparar
conjuntos de datos seleccionados para limitar (o, mejor, evitar) la
posibilidad de extraer resultados incorrectos.
EXPERIMENTO MENTAL
En este experimento mental, puede demostrar sus habilidades y
conocimientos sobre los temas cubiertos en este capítulo. Puede
encontrar las respuestas a este experimento mental en la siguiente
sección.
Usted es un arquitecto de plataforma de datos de una empresa que está
ansiosa por ingresar al mundo de la analítica avanzada. Por el momento,
los datos se almacenan en un almacén de datos de SQL Server local, pero
los recursos se están volviendo escasos, el espacio en disco se está
agotando y el proceso ETL real no puede permanecer dentro de la
ventana nocturna programada y se superpone con las actividades
matutinas, lo que se ralentiza el sistema OLTP.
La compañía está contratando a un científico de datos senior y dos
junior. Formarán el equipo encargado de desarrollar y mantener los
modelos de aprendizaje automático, que como punto de partida, se
utilizará para realizar análisis de causa raíz para entender por qué los
ingresos del último año han estado por debajo de las expectativas.
La plataforma en la nube de destino será Microsoft Azure. El CTO
identificó Azure Synapse Analytics como el repositorio de elección y le
pide que complete el panorama con otros servicios que su empresa
necesitará. Además, debe elegir el tipo de almacenamiento correcto.
Esta es la información que tiene en este momento que guiará su elección:
• El sistema OLTP, que es la principal fuente de datos del
almacén de datos, permanecerá en las instalaciones y no estará
expuesto a Internet.
• A los científicos de datos les gustaría tener acceso a datos
granulares y sin procesar, en lugar de tener que leer los registros
posprocesados del almacén de datos.
• Las entrevistas han demostrado que todos los científicos de
datos tienen experiencia previa con Spark y su objetivo es tener un
enfoque colaborativo para el desarrollo.
• El personal de TI real no tiene experiencia con los sistemas
Hadoop.
• Debe mantener el número total de servicios al mínimo,
reutilizando los servicios cuando sea posible.
Responda las siguientes preguntas sobre los servicios que elige para
satisfacer las necesidades comerciales:
1. ¿Qué almacenamiento elige para almacenar los datos sin procesar y por
qué?
2. ¿Qué servicio elige para la orquestación de la canalización de datos y
por qué?
3. ¿Qué entorno de desarrollo se adapta mejor a las necesidades de los
científicos de datos y por qué?
4. ¿Qué entorno de implementación elige para alojar el modelo y realizar
predicciones reales, y por qué?

RESPUESTAS DEL EXPERIMENTO MENTAL


Esta sección contiene las soluciones al experimento mental. Cada
respuesta explica por qué la opción de respuesta es correcta.
1. Azure Storage es la elección correcta.
Los datos brutos generalmente se almacenan en formato binario
comprimido como Parquet.
2. Azure Data Factory es la elección correcta.
Tiene un conector integrado para Azure Synapse Analytics y, además,
puede acceder a los recursos de la red privada a través del componente
Self-Hosted Integration Runtime. La asignación de flujos de datos se
puede utilizar para realizar transformaciones sobre los datos.
3. Azure Databricks es la elección correcta.
Es un entorno exclusivo de Spark, muy optimizado y su interfaz de
usuario está diseñada teniendo en cuenta la colaboración en
equipo. Tiene integración nativa con Azure Active Directory y muchos
otros servicios, y Azure Storage es uno de ellos. MLOps también está
disponible, lo que facilita el seguimiento de los experimentos y la elección
del modelo de mejor rendimiento. El mantenimiento se reduce
considerablemente en comparación con Spark en HDInsight, y esto da
como resultado una curva de aprendizaje más fluida para el personal
interno. Otra opción podría ser Azure Synapse Analytics y sus grupos de
Spark, pero al momento de escribir estas líneas están en versión
preliminar y los desarrolladores no tienen muchas funciones de
colaboración.
4. Tanto los servicios de Azure Databricks como los de Azure Machine
Learning podrían ser las opciones adecuadas.
Tienen un registro de modelos para realizar un seguimiento de los
modelos implementados y versionarlos, y Azure Data Factory puede
orquestarlos para realizar la puntuación cuando sea necesario. Además,
se pueden automatizar a través de su capa de API. Sin embargo, dado que
para cumplir con el requisito debe introducir la menor cantidad de
servicios posible, Azure Databricks es la mejor opción entre los dos
Capitulo 2
Describir cómo trabajar con
datos relacionales en Azure.
Los datos relacionales son el almacenamiento más utilizado desde el
último cuarto del siglo pasado. Es probable que sea el concepto que la
mayoría de los estudiantes estudian al comienzo de sus
carreras. Encontrará conceptos sobre cómo se almacenan los datos y
las mejores formas de diseñarlos en cientos de
libros. Independientemente del tipo de información que desee
conservar, lo más probable es que una base de datos relacional sea una
buena opción.
Nota Otras opciones
Como leerá en el próximo capítulo, una base de datos relacional no es la única opción y, en
algunos casos, el almacenamiento de datos relacionales no es la mejor opción.

Habilidades cubiertas en este capítulo:


• Habilidad 2.1: Describir cargas de trabajo de datos
relacionales
• Habilidad 2.2: describir los servicios de datos relacionales de
Azure
• Habilidad 2.3: Identificar tareas de gestión básicas para datos
relacionales
• Habilidad 2.4: Describir técnicas de consulta para datos
usando lenguaje SQL.

HABILIDAD 2.1: DESCRIBIR CARGAS DE


TRABAJO DE DATOS RELACIONALES
El almacenamiento de datos relacionales se describe como el
almacenamiento de información basada en una estructura predefinida de
la información. Dependiendo del uso de sus datos y su carga de trabajo,
debe seleccionar la técnica que mejor se adapte a sus
necesidades. Conceptualmente, en las bases de datos relacionales se
intenta definir cosas para representar las entidades en el mundo real,
como personas, empresas, productos, facturas, etc. Usamos el término
“relacional” para describir la relación en los datos que representan a una
entidad, y no solo porque, por ejemplo, una factura podría estar
relacionada con una persona y un cliente y fue generada por una
empresa. Además, puede tener varios productos en los detalles, y todos
estos elementos están relacionados. Toda esta información debe
almacenarse de alguna manera, y eso es lo que cubriremos aquí.
Esta habilidad cubre cómo:
• Identifique la oferta de datos adecuada para una carga de
trabajo relacional
• Describir estructuras de datos relacionales.

Identifique la oferta de datos adecuada para una carga de


trabajo relacional
Si analiza cómo se han gestionado sus datos en el pasado, normalmente
encontrará una o más aplicaciones que almacenan información en un
almacenamiento centralizado, probablemente una única base de datos. A
menos que diferentes procesos comerciales, o diferentes áreas, estén
involucrados con razones específicas de privacidad o seguridad,
encontrará muchas aplicaciones que almacenan toda la información en
una sola base de datos. Sin embargo, durante los últimos años esto ha ido
cambiando. En la actualidad, mucha información se almacena en varios
formatos y lugares en todo el mundo (de hecho, alrededor de la “nube”).
Y este es un asunto importante a considerar. No solo debe administrar los
datos, sino que también debe obtener información de varias fuentes y,
probablemente, adaptarla para que coincida con la forma en que su
empresa utiliza la información.
Nota viaje de información
Considere la información que viaja en una tubería de información, donde cada estación
puede modificar, extraer, cambiar o refinar la información. Esa es la forma en que se
gestiona la información en estos días.
PROCESAMIENTO DE TRANSACCIONES EN LÍNEA (OLTP)
Esta carga de trabajo es la que normalmente obtenemos de las
transacciones comerciales, como transferencias bancarias, compras en
línea y cajeros automáticos, que se conservan en un almacén de datos. Es
el repositorio de cualquier transacción relacionada con las actividades.
En un sistema de salud, la información sobre cada paciente y cada evento
(enfermedad o síntoma, tratamiento, análisis de sangre, rayos X, etc.)
consiste en actividades para el sistema y, por lo general, están
relacionadas para manejar la información con claridad.
Los conceptos sobre OLTP son bien conocidos. La carga de trabajo se ha
analizado en profundidad y se han definido muchas reglas para que OLTP
funcione mejor. Probablemente el más importante sea el concepto de
atomicidad, consistencia, aislamiento, durabilidad (ACID), que define las
propiedades de las transacciones de la base de datos que deben
completarse para garantizar operaciones sostenibles.

Sugerencia para el examen


ACID es un concepto muy importante. En este libro, tiene las definiciones
básicas, pero otros recursos lo elaboran. Como punto de partida, puede
leer el primer artículo sobre este concepto, “Principios de recuperación
de bases de datos orientadas a transacciones”,
en https://dl.acm.org/doi/10.1145/289.291 .

ATOMICIDAD
El nombre "atomicidad" deriva del concepto de átomo. Es algo que deben
estar juntos. Es todo o nada."
Considere este escenario: un paciente requiere tratamiento en la sala de
emergencias. El médico necesita algunos controles de laboratorio con
fines de diagnóstico. El médico realiza algunos procedimientos para curar
la enfermedad diagnosticada.
Cuando se completan los procedimientos, se deben registrar varios datos:
1. Los síntomas del paciente
2. La lista de controles de laboratorio.
3. El resultado de esos controles
4. Cada procedimiento, instrumento médico, medicación y dosis.
5. El cierre: recomendaciones, futuros procedimientos de
seguimiento, etc.
Toda esta información y todos los costos detallados de los procedimientos
deben registrarse como una sola unidad. No es útil, por ejemplo, tener los
síntomas sin los resultados de laboratorio.
Asegurar que toda la información se almacene como un bloque, como un
átomo que incluye todas las partes al mismo tiempo, es la atomicidad .

CONSISTENCIA
La información almacenada en una base de datos relacional generalmente
tiene reglas definidas para asegurar que toda la información tenga
sentido. Usando el ejemplo anterior, no tiene sentido tener los resultados
de laboratorio sin ninguna indicación de a qué paciente pertenecen, o la
definición exacta del procedimiento.
Asegurar que la información pueda relacionarse de una manera específica
en el futuro es coherencia .

AISLAMIENTO
El aislamiento asegura que otros actores del proceso no accedan a
información parcial.
Dos áreas diferentes del hospital que utilizan la misma información deben
acceder a los mismos datos. Si alguien en la oficina de emergencias está
ingresando la información al mismo tiempo que otra persona está
preparando la factura, no será bueno si la segunda persona obtiene los
controles de laboratorio ya almacenados mientras la primera persona aún
está completando el registro de los procedimientos o medicamentos
utilizado para tratar al paciente.
Durante el procedimiento de actualización, hasta que se mantenga la
consistencia, la información para esta transacción específica debe aislarse
de otras.

Sugerencia para el examen


Hay un ajuste fino del aislamiento, los llamados niveles de aislamiento . Es
importante comprender cómo modifican el comportamiento de las
lecturas en un entorno de base de datos. Puede obtener más información
aquí: https://docs.microsoft.com/en-us/sql/connect/jdbc/understanding-
isolation-levels .

DURABILIDAD
La durabilidad garantiza que se pueda acceder a la información más
tarde, incluso después de un bloqueo del sistema. La mayoría de los
sistemas de bases de datos relacionales (RDBS) utilizan un mecanismo
para almacenar rápidamente cada paso de una actividad y luego
confirmarlos todos al mismo tiempo (conocido como compromiso ).
Una vez que la confirmación se realiza correctamente, la información está
segura. Por supuesto, los departamentos de TI deben lidiar con factores
externos, pero desde el punto de vista de una base de datos relacional, la
información está segura.

PROCESAMIENTO ANALÍTICO EN LÍNEA (OLAP)


La carga de trabajo OLAP, incluso cuando todavía es una carga de trabajo
relacional, se desarrolló teniendo en cuenta el análisis de datos. Puedes
pensar en ello como mirar al pasado. El elemento importante aquí es
analizar lo que sucedió en lugar de registrar lo que está sucediendo.
Usando el ejemplo anterior, OLAP se usará para evaluar cuántos pacientes
trató la sala de emergencias en la última semana, mes o año; cuántos
requieren seguimiento; el número medio de procedimientos de
laboratorio por paciente; y así.
La diferencia más importante entre OLTP y OLAP es que OLAP se
implementa para leer grandes cantidades de datos para el análisis de
datos, mientras que OLTP está diseñado para muchas transacciones de
escritura en paralelo.
Otra diferencia que puedes encontrar en las implementaciones OLAP es el
hecho de que, por lo general, los datos OLAP se han reestructurado para
facilitar las consultas.
Mire el diagrama de relación entidad-entidad parcial de productos en la
base de datos OLTP de Adventure Works, que se muestra en la Figura 2-
1 , y compárelo con el diagrama de productos en la base de datos OLAP de
Adventure Works, que se muestra en la Figura 2-2 . El segundo es más
simplista, pero las tablas contienen más columnas. Además, si observa la
tabla Producto en la versión OLAP, verá que tiene columnas que están en
otras tablas relacionadas en el modelo OLTP. Esto se debe a que los datos
OLAP se aplanan varias veces para acelerar las lecturas durante el
proceso de consulta.
Nota Diferentes esquemas
Observe que las entidades en ambos esquemas no tienen coincidencias exactas; se utilizan
solo como ejemplo para ilustrar mejor el diseño de la base de datos OLAP y no
necesariamente coinciden con las reglas de diseño de la base de datos estructurada.

La base de datos OLAP utiliza un modelo semántico en lugar de


un esquema de base de datos . El modelo semántico redefine la
información desde un punto de vista comercial, en lugar de utilizar un
punto de vista estructurado como lo hace el esquema de base de datos
OLTP. Esto se debe a que el usuario comercial, que es el consumidor final
de una implementación OLAP, conoce las entidades comerciales pero no
el esquema de datos subyacente.
El modelo semántico generalmente contiene cálculos ya realizados,
cálculos orientados al tiempo, agregación de diferentes tablas para
facilitar la lectura de la información y, en algunos casos, agregación de
diferentes fuentes.
Figura 2-1 Relaciones de productos de base de datos OLTP
Figura 2-2 Relación de productos de base de datos OLAP
Cuando define una carga de trabajo OLAP, debe decidir qué tipo de
modelo semántico utilizar, como se muestra en la Tabla 2-1 .
Tabla 2-1 Modelos semánticos OLAP
Modelo OLAP Descripción

Tabular Al igual que los modelos OLTP, este modelo utiliza conceptos como
columnas y relaciones.

Multidimensional Se utiliza un enfoque OLAP más tradicional, basado en cubos, dime


medidas.
ALMACENAMIENTO DE DATOS
Utilizar información de diferentes fuentes, durante un largo período de
tiempo, implica mantener la información histórica de forma segura y
coherente. Además, la solución de almacenamiento no debe sobrecargar
las otras cargas de trabajo con el proceso analítico. Aquí es donde entra
en juego un almacén de datos.
Un almacén de datos es el lugar para almacenar información histórica y
actual, preprocesada de manera que facilite las consultas analíticas
comerciales para obtener mejores resultados. En la implementación de un
almacén de datos, se utilizan procedimientos para limpiar los datos y
hacerlos consistentes. Debido a que la información puede provenir de
fuentes dispares, debe procesarse previamente para facilitar mejores
resultados de las consultas analíticas comerciales.
Se encuentran disponibles varias herramientas y procedimientos
diferentes para mantener la información actualizada en un almacén de
datos, pero todos pueden definirse como un proceso de tres partes:
extraer la información de las fuentes; almacenar los resultados en el
almacén de datos; y transformar, procesar y garantizar la calidad de los
datos en algunas partes del proceso.
A veces, prefiere transformar los datos antes de almacenarlos en el
almacén de datos (el proceso de extracción, transformación y carga
[ETL]). En otras circunstancias, podría ser más confiable, más seguro o
simplemente más económico mover toda la información al almacén de
datos y luego procesarla (el proceso de extracción, carga y
transformación [ELT]).
¿Necesita más revisión? Procesos de transformación
Para obtener más información sobre los procesos de transformación, revise la Destreza 1.2 ,
“ Describir los conceptos básicos del análisis de datos ”, en este libro.

Describir estructuras de datos relacionales.


Los datos relacionales se trata de tener la información almacenada de
acuerdo con estructuras específicas y elementos predefinidos. Esto
asegura la calidad de las consultas, las relaciones y la coherencia de la
información. Los siguientes son varios conceptos relacionados con cómo
se estructura la información en estructuras de datos relacionales.
MESAS
Una tabla es la estructura básica donde se almacenan los datos. Una tabla
predefine las partes de los datos y la información almacenada en ella debe
coincidir con el esquema definido.
Una tabla define columnas para identificar cada información sobre la
entidad que almacena. Considere el conjunto de información de la Tabla
2-2 (digamos que es información sobre regiones de ventas).
Tabla 2-2 Muestra de datos de tabla
Nombre País Comienzo VentasÚltimo añ

norte nosotros 01/05/2010 $ 3.298.694,49

Central nosotros 01/06/2012 $ 3,205,014.08

Sur nosotros 01/03/2008 $ 5.366.575,71

Canadá California 01/08/2010 $ 5,693,988.86

Francia FR 01/09/2006 $ 2,396,539.76

Alemania Delaware 01/10/2012 $ 1,307,949.79

Australia AU 01/11/2018 $ 2.278.548,98


Para almacenar la información, una base de datos relacional debe tener
una tabla que defina las columnas, incluidas sus propiedades. La
definición de columna especifica no solo el nombre de cada columna (que
debe ser exclusivo de la tabla), sino también el tipo de información que la
columna contendrá en cada entrada.
En algunos casos, cuando las entidades que desea almacenar tienen
diferentes tamaños, la mayoría de los motores de base de datos le
permiten definir un tamaño específico o máximo.
Además, puede aplicar otro tipo de restricciones. En este ejemplo, solo se
permite que una columna no tenga valor, ya que la primera vez que se
agrega una nueva entrada, no se agrega ningún valor para esa columna
(por ejemplo, una nueva región no tendrá ventas del año anterior, ya que
es nuevo). Este concepto se representa en la Tabla 2-3 .
Tabla 2-3 Columnas de datos y restricciones
Nombre de la columna Tipo Tamaño Permitir

Nombre Caracteres 100 No

País Caracteres 2 No

Comienzo Fecha No

VentasÚltimo año Dinero sí


Cada motor de base de datos tiene sus propias definiciones de tipo de
datos. Sin embargo, la mayoría de ellos define los mismos estándares, a
menudo con diferentes nomenclaturas y algunos tipos de datos
específicos que no se comparten con otros. Pero los tipos más
importantes son los mismos para todos. La Tabla 2-4 muestra los
distintos tipos de datos.
Tabla 2-4 Tipos de datos estándar
Tipo de información Tipos de datos estándar

Caracteres Tamaño Tipos de datos

Longitud fija carbonizarse


nchar (Unicode)

Longitud variable varchar


nvarchar (Unicode

Números Tamaño Tipos de datos

Entero entero
pequeño entero
Tipo de información Tipos de datos estándar

biginteger
pequeño entero

No entero decimal
numérico
flotador
verdadero
doble
dinero

Otros datos Tamaño Tipos de datos

fechas smallDateTime
fecha y hora
hora
espacio de tiempo

Lógico un poco

Otro binario
imagen
Etc.

Sugerencia para el examen


El nombre de nvarchar , o nchar , significa N ational CHAR acters. El uso de
la N al principio del nombre indica que el tipo de datos es para caracteres
Unicode / de doble byte.
ÍNDICES
Cuando tiene mucha información almacenada en una tabla, encontrar una
entrada específica puede llevar mucho tiempo. Imagínese en una
habitación con cientos de miles de carpetas de información, tratando de
encontrar una entrada específica. Sin clasificaciones, le espera mucho
trabajo para encontrar la información que está buscando.
Ahora piense en tener cada carpeta con cientos de páginas. . . tendrás que
levantar cada una de las carpetas para ver si es la correcta. ¡Eso puede ser
un trabajo pesado!
Algo similar ocurre en el motor de la base de datos.
Encontrar su carpeta será mucho más fácil si tiene una colección de
pestañas, con las pestañas ordenadas y solo la información más
importante para identificar cada una de sus carpetas. De esa manera,
puede ubicar rápidamente la carpeta que está buscando en todas sus
bibliotecas.
Ese es el concepto detrás de los índices. En lugar de leer cada fila
completa, una a la vez, para encontrar la entrada que necesita, el sistema
busca en un índice para obtener la ubicación exacta de la información en
la tabla.
En la Figura 2-3 , puede ver cómo funciona la búsqueda de índices.

Figura 2-3 Búsqueda de índice


De manera similar, los índices pueden combinar más de una columna con
fines de búsqueda.
Los índices se pueden utilizar para:
• Asegure la unicidad de cada clave en una tabla, definida como
la clave única.
• Establezca la clave más importante para buscar, llamada clave
primaria.
• Utilice relaciones para acelerar la correlación de búsqueda
entre los datos de las columnas de una tabla y los valores de las
columnas de la clave principal de otra tabla.

PUNTOS DE VISTA
Una vez que tenga los datos almacenados en tablas, probablemente
necesite filtrar o reagrupar la información de diferentes formas para
diferentes usuarios. Y lo que es más importante, a menudo ocurre que no
todos los usuarios pueden ver toda la información almacenada en cada
tabla. Es posible que tenga información confidencial destinada solo a un
subconjunto de usuarios o solo un par de columnas que algunos usuarios
necesitan ver. En ese caso, puede utilizar las vistas para redefinir los datos
y hacerlos accesibles de forma fiable y segura.
Considere una tabla con información de los empleados. Cualquier persona
de la empresa puede necesitar información de esta tabla. Sin embargo, los
salarios no deben ser visibles para nadie excepto para el personal de
Recursos Humanos.
He aquí otro ejemplo. Suponga que la gerencia necesita las ventas totales
por proveedor, empleado, año y mes. En lugar de hacer que la gerencia
realice el cálculo, puede tener la información lista, en una vista ya
preparada.
Tenga en cuenta que la vista no almacena información. Es una definición
virtual de cómo desea ver la información. Cada vez que consulta la vista,
la plataforma de la base de datos consultará las tablas originales para
mostrarle solo la información que necesita.
Una vista es solo una declaración para consultar datos de la (s) tabla (s),
no los datos finales. Para mejorar el rendimiento, cuando el motor de la
base de datos recibe la orden de almacenar una vista, realiza los
siguientes pasos:
1. Comprueba la exactitud de la declaración en sí.
2. Verifica que todas las columnas y tablas en uso estén
presentes en la base de datos
3. Determina el mejor plan para consultar las diferentes partes
de los datos recuperados.
4. Compila la declaración con el mejor plan (generalmente
llamado plan de ejecución o consulta)
Al hacer esto, el motor de la base de datos, una vez ejecutado por primera
vez, tendrá el plan de consulta en la caché y podrá usarlo.

Sugerencia para el examen


Los datos cambian con el tiempo. Cuando el motor estima un plan de
consulta, diferentes tablas pueden tener un número diferente de filas y las
tablas pueden tener diferentes cantidades de datos cuando la vista lo
requiere.
Es por eso que el motor de datos usa estadísticas para evaluar cuánto han
cambiado los datos.
Si se cambian las estadísticas de una o más tablas implícitas en una vista,
el motor recalcula el plan de consulta y almacena el nuevo, antes de
extraer los resultados.
El Listado 2-1 es una muestra de una vista creada para obtener
información de cinco tablas diferentes.

Listado 2-1 Ver muestra

Haga clic aquí para ver la imagen del código


CREAR VISTA [Salestotal]

COMO

SELECCIONE

AÑO ([Soh]. [Fecha de vencimiento]) AS [Año]

, MONTH ([Soh]. [Duedate]) AS [Month]

, [Prod]. [Name] AS [Product]

, [Per]. [Apellido] + ',' + [Per]. [Nombre] AS


[Proveedor]
, SUM ([Sod]. [Orderqty]) AS [Cantidad]

, SUM ([Sod]. [Linetotal]) AS [Total]

DE

[Sales]. [Salesorderdetail] AS [Sod]

UNIR INTERNAMENTE

[Ventas]. [Salesorderheader] AS [Soh]

EN

[Sod]. [Salesorderid]

= [Soh]. [Salesorderid]

UNIR INTERNAMENTE

[Ventas]. [Vendedor] AS [Sp]

EN

[Soh]. [Id. De vendedor]

= [Sp]. [Businessentityid]

[Soh]. [Id. De vendedor]

= [Sp]. [Businessentityid]

UNIR INTERNAMENTE

[Producción]. [Producto] AS [Prod]

EN

[Sod]. [Productid]

= [Prod]. [Productid]

UNIR INTERNAMENTE
[Persona]. [Persona] AS [Per]

EN

[Sp]. [Businessentityid]

= [Per]. [Businessentityid]

AGRUPAR POR

AÑO ([Soh]. [Fecha de vencimiento])

, MONTH ([Soh]. [Duedate])

, [Prod]. [Nombre]

, [Per]. [Apellido] + ',' + [Per]. [Nombre];

Procedimientos

Los procedimientos son otro elemento importante que puede tener en los
motores de bases de datos relacionales. Un procedimiento es una lista de
acciones que ejecutará el motor de la base de datos, como obtener
información, realizar actualizaciones u otras tareas con los datos.
Algunos procedimientos pueden actuar sobre varias tablas, realizar
cambios en ellas, calcular resultados y actualizar los valores en otras
tablas. Cada procedimiento implica al menos una transacción (revise el
concepto ACID).
Nota El beneficio de las vistas y los procedimientos
Las vistas y los procedimientos contienen declaraciones que debe ejecutar el motor de la
base de datos. Puede parecer que tener vistas o procedimientos y crear las declaraciones
cada vez que una aplicación necesita esos resultados es lo mismo. Sin embargo, existe una
diferencia importante. Los pasos para preparar la ejecución se realizarán una vez antes de la
vista o el procedimiento quedará almacenado en la base de datos, como aprendiste cuando
explicamos la descripción de las vistas.

HABILIDAD 2.2: DESCRIBIR LOS SERVICIOS DE


DATOS RELACIONALES DE AZURE
Una infraestructura de tecnología de la información (TI) no consta solo de
computadoras portátiles, impresoras, monitores y cables. Además de los
servidores, conmutadores, enrutadores, cables RJ-45 y conectores, debe
considerar otros aspectos como la fuente de alimentación, el edificio, el
hardware y el mantenimiento del hardware. El costo total de propiedad
(TCO) debe incluir esos elementos, más los costos relacionados con el
mantenimiento, como los salarios del personal de TI, las piezas de
repuesto y el seguro.
Por supuesto, el hardware debe estar incluido en el TCO. En algunos
casos, los requisitos de hardware varían con el tiempo. Una empresa que
vende luces navideñas no necesitará el mismo hardware en junio que en
noviembre-diciembre. Pero deben tener el hardware adecuado para los
meses de vacaciones, incluso si durante el resto del año el hardware será
un desperdicio de recursos.
Tarde o temprano, la empresa puede considerar arrendar el hardware
para esos períodos de alto consumo, pero el resto de la implementación
también debe llevarse a cabo. La instalación del sistema operativo, la
configuración de la conectividad de la red, la instalación e
implementación de los servicios y aplicaciones requeridos, etc., requieren
licencias, tiempo de trabajo y otros factores. SeríaSería mejor si la
empresa pudiera alquilar toda la plataforma ya preparada. Y esa fue la
idea original detrás de Microsoft Azure.
Azure libera a las empresas y organizaciones de la responsabilidad de
preparar y mantener la infraestructura básica. Azure tiene varios centros
de datos en todo el mundo, con la infraestructura, protección, seguridad y
confiabilidad adecuadas. Puede usar Azure para preparar todo el
hardware, las redes, la seguridad y los firewalls necesarios para proteger
su información. Luego, puede usar Azure para configurar servidores y
hardware de almacenamiento y configurarlos para completar un centro
de datos funcional.
Piense en términos enormes. Un centro de datos de Azure podría
contener miles de servidores y discos.
La Figura 2-4 es una representación gráfica de un centro de datos de
Azure y muestra cómo los servicios de la plataforma se integran dentro de
edificios seguros.
Figura 2-4 Dibujo del centro de datos de Azure
Tenga en cuenta la distribución global de Azure
Para obtener una vista detallada del mapa de distribución global actualizado, vaya
a https://map.buildazure.com .

Luego, puede arrendar los servicios requeridos en cualquier momento,


con el costo exacto para cada período.
Esta habilidad cubre cómo:
• Describir y comparar modelos de entrega de PaaS, IaaS y SaaS
• Describir la base de datos SQL de Azure
• Describir Azure Synapse Analytics
• Describir SQL Server en la máquina virtual de Azure
• Describir Azure Database for PostgreSQL, Azure Database for
MariaDB y Azure Database for MySQL
• Describir la instancia administrada de Azure SQL

Describir y comparar modelos de entrega de PaaS, IaaS y


SaaS
Existen tres especificaciones de servicio que Azure ofrece a los clientes,
según sus necesidades: IaaS, PaaS y SaaS.

INFRAESTRUCTURA COMO UN SERVICIO


La infraestructura como servicio (IaaS) es la parte básica de los servicios
de Azure. Incluye lo siguiente:
• La planta física para el centro de datos, el centro de datos en
sí mismo y la gestión de recursos para el centro de datos, como
suministro de energía, control de temperatura, seguridad física.
• El servicio de red y el hardware necesarios para mantener las
cosas conectadas, los firewalls necesarios para proteger la red de
ataques externos y la seguridad de conectividad correspondiente.
• El hardware para servidores y medios de almacenamiento, la
relación entre ellos y los servidores, y la plataforma de redundancia
para asegurar la persistencia de la información.
IaaS está diseñado para proporcionar a los clientes entornos de
plataformas principales que suelen ser difíciles y costosos de
implementar. Características como estabilidad, confiabilidad y
compatibilidad se incluyen en el contrato cuando utiliza acuerdos de
proveedor de servicios que cumplen con acuerdos de nivel de servicio
(SLA).
No es necesario invertir en todos los componentes de hardware al
principio, lo que reduce drásticamente la inversión. Cualquier aumento en
los requisitos y el costo continuo se reducirá, lo que la convierte en una
excelente opción para empresas emergentes y nuevas implementaciones,
incluidos escenarios de prueba. Además, cualquier cambio de requisitos
se puede lograr muy rápidamente, ya que IaaS tiene recursos que se
pueden agregar a su implementación casi instantáneamente.

Sugerencia para el examen


La capacidad de aumentar los recursos cuando sea necesario y de
reducirlos cuando la utilización disminuye es un concepto conocido
como elasticidad y se administra en todas las plataformas de Azure.
IaaS garantiza alta disponibilidad y recuperación ante
desastres. Cualquier implementación solicitada por un cliente tiene una o
más copias de seguridad para mantener los datos y el proceso siempre
activos.
El objetivo principal de IaaS es brindar a los clientes servidores casi
instantáneamente y con los recursos que necesitan. Una vez que se
alcanza ese objetivo, el recurso principal que ofrece IaaS es la máquina
virtual (VM).
Se requieren tres componentes para proporcionar máquinas virtuales:
• Computación: una cantidad predefinida de procesadores
asignados a la VM
• Networking: comunicación entre la VM, otros recursos y el
exterior, principalmente, pero no exclusivamente, Internet
• Almacenamiento: almacenamiento para el disco del sistema
operativo y otros discos para datos, documentos, contenido,
medios, etc. almacena los datos de la aplicación y los recursos que
necesita el servidor
Para cada uno de estos elementos, Azure tiene tamaños estándar que,
cuando se combinan, se ajustan a las diversas plantillas de VM estándar.
¿Necesita más revisión? Plantillas de máquinas virtuales
Puede ver la lista actualizada de plantillas de máquinas virtuales para Azure
aquí: https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sizes .

PLATAFORMA COMO SERVICIO


Los requisitos de la empresa no son solo la infraestructura difícil de
implementar. Por lo general, se requieren sistemas operativos, servicios y
otros recursos, así como herramientas de desarrollo y sistemas de
gestión.
La plataforma como servicio (PaaS) proporciona todos estos elementos
en cualquier combinación que necesite, sin administrar licencias e
infraestructura de servicio. Tiene la opción de invertir solo en los
recursos que utiliza en forma de pago por uso .
En lugar de tener una o más máquinas virtuales, su equipo de TI es
responsable de lo siguiente:
• Mantener el sistema saludable, actualizado y seguro
• Instalación y mantenimiento de cada uno de los servicios
requeridos
Simplemente compre los servicios que necesita, en la cantidad y el nivel
que necesita, y los ingenieros de Azure trabajarán para usted,
manteniendo los sistemas actualizados, seguros y disponibles.
Teniendo en cuenta cómo funcionan las ubicaciones distribuidas y
remotas, PaaS permite que sus equipos trabajen a través de Internet, sin
importar dónde se encuentren en cualquier momento. Los
desarrolladores que crean aplicaciones pueden utilizar marcos y
herramientas diseñados para escalabilidad, alta disponibilidad y
distribución global. Puede comprar almacenamiento de datos en función
de sus requisitos, sin adquirir recursos en exceso y en función de
períodos cortos de alta utilización.
Algo similar ocurre con el análisis de datos, la inteligencia empresarial, el
big data o el aprendizaje automático. Todos ellos son servicios PaaS,
disponibles para usar cuando los necesite, y solo paga por lo que usa.
Nota Principio de elasticidad y PaaS
La infraestructura de PaaS sigue el principio de elasticidad: si en un momento determinado
necesita más recursos, Azure puede proporcionárselos. Si no hay más necesidad de todos
los recursos, entonces puede reducirlos. Además, el proceso se puede automatizar por
completo.
Tenga en cuenta que la implementación de pago por uso comienza con una base mínima, es
decir, un procesador para una base de datos pequeña con solo un par de consultas por día, a
un costo muy bajo. El costo aumentará dependiendo de su uso diario.

SOFTWARE COMO SERVICIO


El software como servicio (SaaS) es el nivel de servicio más alto que
puede utilizar. Usted compra un servicio y luego lo usa tal cual, sin
instalación, sin preparación de la plataforma y sin tareas de
mantenimiento.
Cada vez que revisa su correo electrónico usando un navegador, está
usando SaaS, sin importar qué proveedor de correo electrónico esté
usando. Los correos electrónicos están en los servidores del proveedor, y
la aplicación que prepara y envía el contenido a su navegador es una
aplicación web alojada en servidores del proveedor. Simplemente
identifíquese y utilícelos.
Puede adquirir algunos tipos de servicios para tener toda la plataforma de
gestión esencial lista y lista. Los elementos más comunes requeridos en
las tareas de administración, como redacción de documentos, cálculos de
hojas de cálculo, administración de correo electrónico, almacenamiento
de documentos y trabajo en equipo, se incluyen en Office 365.
Nuevamente, esto es maravilloso para las empresas emergentes, ya que
no necesitan tener una ubicación física para tener los servidores, las
licencias de software y la implementación de ningún tipo de recursos
compartidos.
En la Figura 2-5 , puede ver la pantalla que ve un usuario de Office 365
cuando accede a la página de inicio de www.office.com utilizando su
cuenta de empresa.

Figura 2-5 Office 365 SaaS


Los servicios prestados incluyen servidor de correo electrónico
empresarial, Exchange 365, planificación de recursos empresariales
(ERP) de Dynamics 365 y gestión de relaciones con el cliente (CRM), entre
otros. La oferta se expande con productos de socios y cada vez se agregan
más servicios. Otros servicios no están directamente relacionados con el
trabajo de oficina, como los aceleradores de soluciones Azure Internet of
Things (IoT), que se utilizan para capturar, almacenar y analizar datos de
dispositivos conectados.
En la Figura 2-6 , puede ver cómo los diferentes servicios de Azure
satisfacen las necesidades típicas de una empresa.

Figura 2-6 Componentes de los servicios de Azure


Describir la base de datos SQL de Azure
Uno de los servicios disponibles en el grupo PaaS es Azure SQL
Database. Azure SQL Database se basa en el motor de base de datos de
Microsoft SQL Server y tiene casi las mismas capacidades que SQL Server
local.
Puede tener una base de datos SQL lista para funcionar en solo un par de
minutos, sin el proceso de instalación y configuración del servidor.
La plataforma Azure verifica la disponibilidad de la base de datos, la
redundancia y el mantenimiento del back-end de SQL, asegurando que su
base de datos estará siempre actualizada. Puede definir el tamaño y los
recursos informáticos que se utilizarán para cada base de datos, lo que
repercute en los costes finales.
Azure SQL Database sigue el principio de elasticidad y puede realizar y, lo
que es más importante, automatizar cambios de escala para su base de
datos.
Estas son las características más importantes que debe considerar:
• Tecnologías en memoria En las últimas versiones, cada vez
se mueven más procesos para ejecutarse en la memoria para
acelerar el rendimiento. En el caso de Azure SQL Database, dado
que hay menos operaciones de lectura y escritura para almacenar,
esto puede reducir potencialmente el costo. Los escenarios de
actualizaciones rápidas, como los supermercados, la ingestión de
datos de dispositivos de IoT, la carga de datos masivos, etc., son
buenos candidatos para la mejora.
El uso de tablas temporales y variables de tabla en consultas es otro
escenario en el que el uso de tecnologías en memoria es una buena
mejora.
• Índices de almacén de columnas agrupados Esta función se
aplica principalmente a tablas grandes en almacenes de
datos. Tradicionalmente, la información se almacena fila por
fila. Internamente, SQL Server agrupa filas para llenar páginas, que
son la unidad mínima de almacenamiento físico para la base de
datos. En las implementaciones de SQL Data Warehouse, puede
utilizar el formato de datos del almacén de columnas para
cualquier tabla que contenga hechos . Finalmente, el concepto de
índices agrupados especifica que un conjunto de datos se
almacenará físicamente de acuerdo con el índice. En este escenario,
un índice de almacén de columnas agrupado permite al motor
recuperar información rápidamente como un conjunto de datos
para una columna específica. El motor puede recuperar
información hasta 10 veces más rápido que el almacenamiento
estándar basado en filas.
¿Necesita más revisión? Implementación de almacén de columnas
Puede encontrar más información sobre índices de almacén de columnas
en https://docs.microsoft.com/en-us/sql/relational-databases/indexes/columnstore-indexes-
overview .

En Azure SQL Database, puede definir cómo escalar y usar los recursos
según dos modelos de compra:
• Basado en vCore El nombre corresponde a núcleo
virtual. Este modelo define varios niveles de servicio, cada uno de
ellos con una capacidad de almacenamiento específica, operaciones
de entrada-salida (E / S) por segundo (IOPS), implementación de
disponibilidad, procedimientos de respaldo, etc.
• Basado en DTU La unidad de transacción de la base de datos
(DTU) es un conjunto de recursos asignados a una base de datos
única o múltiple, estimado como una combinación de tasas de CPU,
memoria y (E / S). Existe un conjunto de combinaciones
predefinidas para cada rango de límites de DTU y, en función de
ellas, puede elegir la que mejor se adapte a sus necesidades.
Si considera migrar una base de datos ya implementada localmente
a Azure SQL Database, puede usar las herramientas disponibles en
línea para estimar su necesidad de DTU. La mayoría de ellos
requieren que cargue una captura de la utilización actual de su base
de datos / servidor con los valores para calcular las DTU. Si ya tiene
una base de datos hospedada por Azure SQL, puede usar Query
Performance Insight para ver si necesita cambiar el nivel de
servicio en uso.
¿Necesita más revisión? Uso de Query Performance Insight
Puede encontrar más información y formas de utilizar Query Performance Insight
aquí: https://docs.microsoft.com/en-us/azure/azure-sql/database/query-performance-
insight-use .
Aquí están las diversas segmentaciones que tiene disponibles para los
servicios de base de datos:
1. Niveles de servicio
Los niveles de servicio se definen por sus modelos de compra:
1. vCore
Los servicios basados en núcleos virtuales (vCores) se
clasifican como se muestra en la Tabla 2-5 .
Tabla 2-5 Niveles de servicio de vCore

Propósito general Crítico para el Hiper


negocio

Almacenamiento Utiliza Almacenamiento SSD


almacenamiento SSD local alma
remoto 5 GB hasta 4 TB para
5 GB hasta 4 TB largo
Hast

IOPS Depende de las generaciones de hardware Arqu


(ver más abajo) nivel
está
relac
traba

Disponibilidad 1 réplica sin 3 réplicas, 1 1 rép


réplica a escala de lectura; escala-más escri
lectura zona-redundante répli

Copias de Acceso de lectura al almacenamiento geo Insta


seguridad redundante de 7 (predeterminado) a 35 alma
días

En memoria No soportado Soportado No s


2. DTU
Los servicios basados en unidades de transacción de base
de datos (DTU) se clasifican como se muestra en la Tabla 2-
6.
Tabla 2-6 Niveles de servicio de DTU

Básico Estándar

Retención máxima de 7 días 35 días


copias de seguridad

UPC Bajo Bajo medio alto

Rendimiento de E / S 1-5 IOPS por DTU

Latencia de E / S 5 ms (lectura), 10 ms (escritura)

Indexación de almacén de No Depende de la generació


columnas soportado de hardware

OLTP en memoria No soportado

2. Calcular niveles
Los niveles de computación definen cómo se proporciona el
servicio:
0. El modelo de núcleo virtual tiene dos opciones de computadora,
definidas en la Tabla 2-7 .
Tabla 2-7 Niveles de cómputo de núcleos virtuales
Opción Descripción

Computación Especifique una cantidad de recursos informátic


aprovisionada dependa de las cargas de trabajo. En este caso, el
una proporción por hora.

Computación sin En este caso, los recursos se asignan en función d


servidor carga de trabajo y los costos utilizan un cálculo d
segundo.

1. El modelo DTU usa una tabla de diferentes


configuraciones para calcular los precios, como se muestra
en la Tabla 2-8 .
Tabla 2-8 Niveles de cómputo de DTU

DTU Almacenamiento incluido Almacena

B (básico) 5 2 GB 2 GB

Estándar

S0 10 250 GB 250 GB

S1 20 250 GB 250 GB

S2 50 250 GB 250 GB

S3 100 250 GB 1 TB

S4 200 250 GB 1 TB

S6 400 250 GB 1 TB
DTU Almacenamiento incluido Almacena

S7 800 250 GB 1 TB

S9 1.600 250 GB 1 TB

S12 3000 250 GB 1 TB

Prima

P1 125 500 GB 1 TB

P2 250 500 GB 1 TB

P4 500 500 GB 1 TB

P6 1 500 GB 1 TB

P11 1,75 4 TB 4 TB

P15 4 4 TB 4 TB

3. Generaciones de hardware
Las generaciones de hardware especifican las combinaciones de
hardware y software proporcionados, que, nuevamente, varían
según el modelo de compra:
0. vCore Basado en conjuntos de combinaciones de hardware. Gen4 y
Gen5 son los más utilizados, pero nuevos, como la serie Fsv2 (alto
rendimiento de CPU, menor costo) y la serie M (memoria optimizada con
29 GB por núcleo, hasta 128 núcleos; no está disponible en todas las
regiones ) están en vista previa.
1. DTU Cada nivel de servicio tiene subconjuntos de configuraciones
de hardware según las generaciones de computadoras.
4. Piscina elástica
El grupo elástico es un recurso compartidomodelo. Tiene todas
sus bases de datos en el grupo y comparten el mismo conjunto de
recursos. Las bases de datos pequeñas, las aplicaciones migradas
heredadas y algunos software como servicio (SaaS) pueden
beneficiarse de estos escenarios y reducir el TCO. Existen
diferentes modelos de compra para el grupo elástico vCore y el
grupo elástico DTU, por lo que puede elegir su mejor sabor a
juego. Es importante considerar los grupos elásticos cuando, en
un escenario de múltiples bases de datos, algunas bases de datos
se utilizan más durante diferentes períodos de tiempo que
otras. Luego, se comparte el mismo grupo de recursos y el costo
final será menor. Al mismo tiempo, si sus procesos requieren más
recursos en un solo momento, el concepto de elasticidad sigue
funcionando. Los recursos aumentan según sea necesario y,
cuando se completa la carga de trabajo, se reducen los recursos.

Sugerencia para el examen


Las generaciones, los niveles, los tamaños y los precios varían con el
tiempo. Consulte los valores actuales
aquí: https://azure.microsoft.com/en-us/pricing/details/sql-database .

CÓMO ELEGIR EL MODELO DE SERVICIO ADECUADO


El proceso de elección de un modelo de servicio es más difícil de
definir. Debes considerar qué quieres hacer con tus datos y, al mismo
tiempo, con qué facilidad puedes estimar los recursos que
necesitarás. Por supuesto, el costo es otro factor importante.
El modelo de servicio DTU es fijo. Pagará el monto del nivel que compre, y
eso es todo hasta que decida cambiar de modelo (y decidir qué modelo de
servicio se adapta mejor a las necesidades del usuario siempre será una
apuesta). Y los precios de DTU pueden ser bajos en configuraciones
básicas o incluso estándar en comparación con vCore.
Por otro lado, el modelo de servicio vCore te permite refinar con mayor
precisión los recursos que usas, lo que puede ser una buena opción,
dependiendo del tipo de trabajo que realices con las bases de datos. Y, si
tiene Microsoft Software Assurance (SA), puede usar una de sus licencias
de SA con Azure Hybrid Benefit, que disminuirá el costo (30-40 por
ciento).
Por último, si necesita varias bases de datos, con diferencias de uso
significativas a lo largo del tiempo o entre ellas, considere la posibilidad
de utilizar grupos elásticos. Las bases de datos comparten recursos de
forma dinámica, lo que puede reducir sus costos.
Nota Cambio a otro modelo
Tenga en cuenta que todas estas opciones están relacionadas con la utilización y el trabajo,
que pueden variar con el tiempo. Como verá más adelante en este capítulo, Microsoft Azure
le proporciona herramientas para evaluar la utilización de sus recursos y, en cualquier
momento, puede cambiar el nivel de modelo. Y si desea mover una base de datos a un
grupo elástico, puede hacerlo, incluso creando un nuevo grupo, directamente desde la base
de datos en el portal de Azure o mediante el uso de otras herramientas.
Por supuesto, cambiar una base de datos a otro modelo no es instantáneo. Puede esperar
entre 60 y 90 minutos por cada 100 GB de datos.

Cuando crea una base de datos, necesita una instancia de SQL Server para
administrarla. Esto significa que debe crear un nuevo servidor SQL la
primera vez que define una base de datos, pero luego puede usar el
mismo para administrar otras bases de datos. También tenga en cuenta
que puede crear más de una instancia de SQL Server.
Para crear una base de datos SQL de Azure mediante el portal de Azure,
debe seleccionar su suscripción (puede hacer que se seleccione una
automáticamente). Luego sigue estos pasos:
1. Ingrese Bases de datos SQL en el área de búsqueda en la
parte superior de la página.
2. En la página de recursos , haga clic en Agregar .
3. El portal muestra un asistente con cinco pestañas:
1. En la página Básicos , seleccione su suscripción y grupo de
recursos. Luego ingresa un nombre único para su base de datos y
selecciona un servidor SQL o crea uno nuevo (que explicamos más
adelante). Cuando comienza a escribir el nombre, la página muestra un
cuadro de validación que lo ayuda a ingresar un nombre apropiado, como
se muestra en la Figura 2-7 . Despuésselecciona un servidor, puede
especificar si desea utilizar grupos elásticos de SQL Database. Un nivel de
servidor ya está seleccionado (Uso general, Gen5, 2 núcleos virtuales, 32
GB de almacenamiento), con un enlace para acceder a la configuración de
su servidor, donde puede seleccionar el apropiado y ver los costos
estimados al mismo tiempo.
2. En la página Configurar , puede elegir si el servidor de Azure SQL
Database se aprovisionará (establecido como predeterminado) o no
tendrá servidor. Hay un enlace para cambiar la configuración del
hardware de la computadora, así como otras opciones, como núcleos
virtuales y memoria, con controles deslizantes para seleccionar los
valores deseados. Cambiar cualquiera de esos valores actualizará el
resumen de costos a la derecha de la página.

Figura 2-7 Validación del nombre de la base de datos


3. En la página Redes , selecciona el tipo de conectividad
que permite la base de datos. Con Sin acceso, debe activar
alguna conectividad más tarde para llegar al
servidor. Cuando elige Punto de conexión público, puede
permitir el acceso desde otros recursos de Azure y puede
agregar su dirección IP actual a las reglas de firewall del
servidor para conectarse a la base de datos mediante el
protocolo TCP / IP. Finalmente, si selecciona Punto final
privado, debe crear un punto final privado para conectarse
con una de sus redes virtuales privadas predefinidas en la
misma suscripción y región.
4. La configuración adicional le permite especificar si
desea usar datos existentes, usando una muestra, o su
propia copia de seguridad de Azure, o simplemente crear
una base de datos vacía. Luego, puede seleccionar la
intercalación para la base de datos y si desea activar
Advanced Data Security para recibir informes de
evaluación de vulnerabilidades sobre su base de datos.
5. En la página Etiquetas , puede agregar o seleccionar las
etiquetas que desee. Las etiquetas son pares de nombre /
valor que se utilizan para la consolidación de facturación,
en caso de que tenga muchos recursos para
administrar. Puede definir un conjunto de nombres para
las etiquetas de todos sus recursos y asignar valores a las
etiquetas en cada recurso para filtrar los costos cuando lo
necesite.
6. En la página Revisar y crear , verá la configuración
completa de su base de datos, incluidos los costos
estimados, y el botón Crear, en el que debe hacer clic para
completar la operación.
4. La página muestra una lista de validación y luego procede a
crear la base de datos. Cuando finaliza el proceso de creación,
aparece una página de resultados, con un enlace que apunta a la
página de resumen del recurso.
Nota Usar un nuevo servidor SQL
Para agregar un nuevo servidor SQL cuando está creando una base de datos, haga clic en el
enlace Crear nuevo debajo de la lista desplegable de selección de servidor y complete la
información requerida. Nuevamente, durante la entrada, aparecerán cuadros de diálogo de
validación indicando restricciones específicas. La Figura 2-8 muestra el cuadro de diálogo
para crear un nuevo servidor.
Figura 2-8 Parámetros de creación del servidor SQL

Describir Azure Synapse Analytics


Azure Synapse Analytics es la plataforma OLAP de Microsoft en línea, que
puede utilizar para realizar análisis de datos y administrar grandes
volúmenes de información desde diferentes puntos de vista. Esta sección
describe los orígenes de la plataforma.

SERVICIOS DE ANÁLISIS DE SQL SERVER


Microsoft agregó un nuevo servicio a su paquete de SQL Server local
llamado SQL Server Analysis Services en 2000. Originalmente, el producto
se basaba en el concepto de bases de datos multidimensionales . Una base
de datos multidimensional utiliza una estructura de cubo y dimensiones
para definir las consultas aplicadas a sus datos.
En la Figura 2-9 , el eje del color azul cielo representa diferentes fechas, el
eje del color amarillo representa los continentes y el eje rojo representa
las diferentes categorías. Esas se llaman dimensiones , mientras que los
números en cada cubo pequeño se llaman hechos . Por lo general, un
hecho tiene una o más medidas y las dimensiones pueden tener una o más
jerarquías.
En nuestro ejemplo, suponga que desea obtener información sobre las
pruebas realizadas el 14 de junio en Europa. Una vez que tenga esa
información, desea refinar la consulta para ver solo la información de
España e Italia, y solo para las pruebas positivas. Te encuentras
navegando por las jerarquías. Entonces, desea ver no la cantidad de
pruebas positivas sino el promedio del valor real de las medidas; estás
mirando una medida.
Un cubo multidimensional obtiene información de otras fuentes de
datos. Muchas empresas tienen una o más bases de datos OLTP, que
capturan información en todo momento, en la mayoría de los casos,
simultáneamente desde diferentes puntos de entrada. El hecho de que las
consultas analíticas obtengan información de las bases de datos al mismo
tiempo afecta la confiabilidad y el tiempo de respuesta de las operaciones
OLTP críticas. Por eso, debe consolidar su información en bases de datos
separadas. Por lo general, un cubo es un estilo renovado para ver la
información y no coincide exactamente con el OLTP. Para ello, un cubo
contiene fuentes de datos , que definen dónde y cómo recuperar
información; vistas , para remodelar la información de una mejor manera
para consultarla; y procesos, para obtener los resultados de los hechos,
incluida la agregación, y otros cálculos posibles. Eso explica por qué se
debe procesar un cubo para recalcular los valores y todas las relaciones
coincidentes con las dimensiones y sus categorías.
Figura 2-9 Representación de la estructura del cubo
El objetivo final de un cubo multidimensional es tener una fuente única,
consolidada y muy rápida para las consultas.
Más tarde, Microsoft agregó modelos tabulares . El concepto detrás de
ellos es tener almacenamiento en memoria para obtener información
para los usuarios rápidamente.
El modelo tabular se puede almacenar en caché . En tal caso, en el
momento del proceso, la información se recopila de bases de datos
relacionales, texto sin formato u otras fuentes. Luego se comprime y se
guarda en la memoria. Al usar DirectQuery en lugar del modo en caché,
obtiene información actualizada de las bases de datos relacionales en el
momento de la consulta.
Aunque DirectQuery suele ser más rápido ya que los datos ya están en la
memoria, el modo en caché no sufre el límite de RAM disponible en el
sistema. En ambos casos, la misión es la misma: dar a los usuarios
información preprocesada muy rápidamente, evitando retrasos y uso de
recursos en el equipo cliente.
Una vez que se importa la información (o se definen los procesos para
importar información), puede agregar relaciones, medidas, cálculos,
jerarquías o indicadores clave de rendimiento (KPI) para que la
información esté lista para ser consumida. Sin embargo, tenga en cuenta
que el modo DirectQuery impone muchos límites a la extensión del
modelo, ya que la consulta la realiza el motor relacional subyacente y no
el modelo tabular directamente.
Cuando las definiciones de información estén listas, puede implementar el
modelo tabular en una instancia de SQL Server Analysis Services para que
lo consuman los usuarios.
La misma funcionalidad se implementa en la nube; originalmente se llamó
SQL Datawarehouse (SQL DW). Posteriormente, Microsoft lo renombró ya
que los servicios fueron modificados y mejorados, con más funciones y
diferentes paradigmas para el análisis de datos.
La idea es la misma que con Azure SQL Database: tener disponible en la
nube el mismo servicio que tienes localmente, con diferentes modelos de
compra y recursos disponibles, que pueden variar con el tiempo.
La diferencia más importante es la implementación ilimitada debido al
principio de elasticidad de Azure y el multiprocesamiento del servicio.
En la implementación local, debe estimar los recursos máximos
necesarios y comprarlos para realizar el trabajo, incluso si probablemente
no necesite tanta potencia informática todo el tiempo. Synapse utiliza
un modelo de escalamiento horizontal, que tiene la capacidad de agregar
más y más recursos informáticos bajo demanda.
La información se almacena en Azure Storage a partir de una variedad de
fuentes, en diferentes formatos, lo que da como resultado un gran
almacén de datos. Los algoritmos de aprendizaje automático, así como
otras tecnologías de análisis de datos como Hadoop y Spark, procesan y
entrenan los datos para obtener mejores resultados.
Luego, utilizando consultas SQL estándar a través de PolyBase , puede
almacenar la información en tablas de Synapse (conocidas como mesas de
billar ).
¿Necesita más revisión? Definición de PolyBase
PolyBase es un componente agregado a SQL Server que le permite consultar información
de fuentes dispares, como Hadoop, Azure Data Storage, Azure Data Lakes e incluso otras
tecnologías de bases de datos como MongoDB y
Teradata. Consulte https://docs.microsoft.com/en-us/sql/relational-databases/polybase para
obtener información más detallada.

La consolidación, el análisis, las agregaciones y las consultas se realizan


mediante un conjunto de nodos informáticos . Cuando un usuario escribe
una consulta, llega a un nodo de Control. Este nodo, que utiliza un motor
de procesamiento paralelo masivo (MPP), prepara la consulta para el
procesamiento paralelo y la envía a los nodos informáticos. En la Figura
2-10 puede ver un esquema de la arquitectura MPP.
Figura 2-10 Arquitectura MPP
Otras técnicas están funcionando en segundo plano. Los datos
se distribuyen en Azure Storage. Puede haber hasta 60 distribuciones. De
esa forma, una consulta se puede dividir en hasta 60 consultas paralelas,
una para cada distribución.
Puede elegir el patrón de fragmentación de los datos:
• Una función hash divide las filas en varias distribuciones y
solo una fila pertenece a una distribución.
• Round-robin divide una tabla completa en trozos para
distribuirlos a varios nodos.
• Las tablas replicadas mantienen una copia de la tabla para
cada nodo de computadora, y la consulta paralela se define para
obtener solo un segmento de filas en cada nodo de computación.
Dado que hay varios recursos involucrados, incluidos los nodos de
computadora, el almacenamiento y otros servicios, cuando necesita Azure
Synapse, compra un grupo.
Al igual que con otros servicios de Azure, hay varios niveles de
rendimiento disponibles y se miden como unidades de almacenamiento de
datos (DWU). Puede ver cómo se miden las DWU en la Tabla 2-9 .

Sugerencia para el examen


La unidad de almacenamiento de datos es una medida basada en los
valores de CPU, memoria y E / S. Las combinaciones estandarizadas
definen los objetivos de nivel de servicio (SLO).
Tabla 2-9 Unidades de almacenamiento de datos
DWU # de nodos de cómputo # de distribuciones por nodo

DW100c 1 60

DW200c 1 60

DW300c 1 60

DW400c 1 60

DW500c 1 60

DW1000c 2 30

DW1500c 3 20

DW2000c 4 15
DWU # de nodos de cómputo # de distribuciones por nodo

DW2500c 5 12

DW3000c 6 10

DW5000c 10 6

DW6000c 12 5

DW7500c 15 4

DW10000c 20 3

DW15000c 30 2

DW30000c 60 1
Debe agregar el costo de Azure Storage (que varía según la capacidad) al
costo de la DTU, pero puede reducir los costos pausando Synapse cuando
no lo esté usando.
En cualquier caso, probablemente no necesitará todo el conjunto de
recursos todo el tiempo. Puede cambiar dinámicamente y, mejor aún,
automáticamente, entre SLO según sus cargas de trabajo.

Sugerencia para el examen


No es necesario que memorice los tamaños, tablas, objetivos, etc. El
examen evalúa conceptos , no datos .
Para crear un grupo de Synapse en Azure Portal, escriba Azure Synapse
Analytics en el cuadro de búsqueda y selecciónelo en los
resultados. Luego sigue estos pasos:
1. En la página de Synapse, haga clic en Agregar .
2. En el nuevo Asistente para grupos de SQL, encontrará cuatro
páginas:
1. Conceptos básicos Como de costumbre, debe
seleccionar su suscripción y grupo de recursos. Luego debe
definir un nombre de grupo, que será validado, y
seleccionar o crear un nuevo servidor. La última opción en
esta página es el nivel de rendimiento; elija uno de los SLO
predefinidos.
2. Configuraciones adicionales Aquí puede definir si
comenzará con una estructura vacía, usará una copia de
seguridad de otra implementación o incluso usará una
muestra (en ese caso, la agrupación contendrá una copia
de la muestra AdventureWorksDW). Luego, puede
configurar la clasificación para el grupo.
3. Etiquetas Como se explicó anteriormente, cualquier
recurso puede tener etiquetas asignadas para la
consolidación de facturación.
4. Revisar + Crear Aquí tiene la descripción completa de
la configuración y hace clic en Crear para confirmar la
creación del recurso. El portal generará la plantilla, la
enviará para que se cree y mostrará una página que le
indicará que su implementación se encuentra actualmente
en la fase de creación.

Describir SQL Server en la máquina virtual de Azure


Puede encontrar situaciones en las que necesite ser más preciso de lo
habitual o perfeccionar su servidor SQL en condiciones específicas. O tal
vez simplemente necesita actualizar su servidor SQL y no puede
actualizar sus aplicaciones y debe mantener su servidor en su red local. O
tal vez tenga dependencias externas, como un servidor vinculado, que
debe crearse o una funcionalidad no compatible con bases de datos SQL,
instancias administradas de SQL u otros servicios externos. Algunas
circunstancias pueden requerir que administre un servicio de SQL Server
por su cuenta.
En esos casos, puede implementar su servidor SQL dentro de una
máquina virtual (VM), hospedada por Azure, y transmitir el
mantenimiento del hardware a los Servicios de Azure. Este es un ejemplo
perfecto de IaaS.
Necesitará tres servicios de Azure para implementar su servidor SQL
dentro de una máquina virtual:
• Azure Storage, para contener los discos virtuales
• Azure Virtual Network (VNet), para conectividad informática,
que usará Azure Firewall y le permitirá crear diferentes estilos de
redes privadas virtuales (VPN), en caso de que necesite conexiones
en túnel entre su infraestructura local y el servidor.
• El servicio Azure Compute, que ejecutará la máquina virtual,
actuando como hipervisor
Puede elegir diferentes cantidades de procesadores virtuales, diferentes
tamaños de memoria y diferentes espacios de disco disponibles. La
combinación de ellos define la tabla de tamaños de máquina.
Además, dispone de distintos tipos de hardware para agruparlos. Algunos
usan HDD, otros usan SSD, algunos usan 8 núcleos virtuales y otros 16, y
así sucesivamente.
Nota Tamaños y tipos de máquinas virtuales
Los tamaños de las VM cambian con el tiempo y hay muchas combinaciones. Consulte esta
URL para obtener información actualizada: https://azure.microsoft.com/en-
us/pricing/details/virtual-machines/linux/#Windows .

Hay varias opciones de compra disponibles para VM. Puede utilizar la


opción de pago por uso, que le facturará exactamente los recursos
utilizados. O tal vez prefiera la opción de Instancias de máquinas virtuales
reservadas, en la que se registra para usar una o más VM durante un
período prolongado, hasta tres años, lo que reducirá el costo hasta en un
70 por ciento.
Por último, existe la opción de comprar capacidad informática no
utilizada cuando su servicio no necesita estar en funcionamiento en
momentos específicos o durante períodos prolongados. En este caso,
aprovecha los recursos liberados por otros, hasta que el sistema de
administración de Azure le avisa que ya no los tendrá disponibles, lo que
pasará 30 segundos antes de que se apague la máquina virtual.
Después de decidir el tamaño de su máquina virtual, necesitará un
sistema operativo para ella, así como la versión específica de SQL Server
que desea implementar. Para facilitar su decisión, Azure le ofrece un gran
conjunto de combinaciones de sistema operativo / SQL Server para elegir,
de modo que pueda seleccionar la que mejor se adapte a sus
necesidades. La selección del sistema operativo incluye diferentes
versiones de Windows Server y diferentes distribuciones de Linux.

Sugerencia para el examen


Puede ver qué combinación de sistema operativo y versiones de SQL
están disponibles en una región mediante el siguiente script de
PowerShell:
Haga clic aquí para ver la imagen del código
Import-Module -Name Az

$ Location = '<Inserte-su-ubicación-deseada-aquí>'

Connect-AzAccount

Get-AzVMImageOffer -Location $ Location -Publisher


'MicrosoftSQLServer'

Si lo prefiere, puede seleccionar solo el sistema operativo e instalar su


propia copia con licencia de SQL Server en la máquina virtual, una vez que
esté en funcionamiento. O simplemente puede seleccionar uno de los
ajustes preestablecidos de máquina virtual de SQL Server, de acuerdo con
sus necesidades. También puede aplicar su propia licencia comprada para
reducir los costos en una compra de pago por uso. Finalmente, puede usar
su propia imagen de disco de VM cuando necesite replicar varias VM
idénticas o necesite configuraciones, software,u otros problemas. Creas tu
VM localmente y, cuando esté lista, la preparas como una imagen y luego
la cargas como una imagen de VM personalizada.
¿Necesita más revisión? Creando tus propias imágenes de disco
Puede ver los detalles sobre la creación de su propio disco de imágenes utilizando
Deployment Image Servicing and Management (DISM)
aquí: https://docs.microsoft.com/en-us/azure/virtual-machines/windows/capture-image-
resource .

Otra característica importante le permite apagar la máquina virtual en


horas específicas para evitar el consumo durante las horas no utilizadas,
como hasta altas horas de la noche o los fines de semana.
Tener su servidor SQL en una máquina virtual le brinda algunas ventajas,
porque está bajo el SLA de Azure Compute:
• Actualizaciones automatizadas Incluso cuando se trata de
su propia máquina virtual, puede configurarla para usar Parches
automatizados para mantener su sistema operativo y sus instancias
de SQL Server actualizadas. Solo las actualizaciones críticas e
importantes se instalan automáticamente.
• Copias de seguridad automatizadas La copia de seguridad
es para toda la VM como parte del SLA para VM y para sus bases de
datos, respaldada en Azure Storage.
• Aprovecha el almacenamiento con redundancia local (LRS),
que te brinda tres copias en el mismo centro de datos, o
el almacenamiento con redundancia geográfica (GRS), que te brinda
tres copias más en otro centro de datos distante.
• Dependiendo del tamaño de VM seleccionado, también puede
tener alta disponibilidad de VM por redundancia.
¿Necesita más revisión? Herramienta de estimación de costos
Recuerde, puede estimar sus costos con Azure Calculator
en https://azure.microsoft.com/en-us/pricing/calculator/ .

La tabla 2-10 es un ejemplo de resultado de un cálculo.


Tabla 2-10 Ejemplo de cálculo del costo de los recursos
Tipo de Nombre Región Descripción
servicio personalizado

Maquinas VM SQL norte de 1 A1 (1 vCPU (s), 1,75 GB de RAM) x 730


virtuales Europa horas; Windows: SQL Server; Pague sobre la
marcha; 2 discos de SO gestionados: E1, 100
unidades de transacción

Apoyo Apoyo

Total

Los precios son solo muestras, ya que cambian entre regiones y con el
tiempo.
Para crear una máquina virtual de SQL Server en el portal de Azure,
puede buscar máquinas virtuales si desea configurar solo el sistema
operativo, o máquinas virtuales de SQL , para obtener una máquina
virtual con el motor de base de datos ya implementado.
Suponiendo que seleccione Máquinas virtuales SQL, una vez que esté en la
página Máquinas virtuales SQL:
1. Haga clic en Agregar . Una nueva página mostrará el conjunto
completo de opciones de la base de datos, incluida la opción de
Máquina virtual a la derecha.
2. En el cuadro Máquina virtual SQL, seleccione de la lista
desplegable la combinación de sistema operativo más la versión
SQL que desea implementar (puede ver los detalles de
configuración haciendo clic en el enlace Mostrar detalles ).
3. Haga clic en Crear .
4. Se inicia un asistente que tiene ocho páginas:
1. Conceptos básicos Aquí define todas las características
principales de la máquina virtual deseada. Debe
seleccionar su suscripción y grupo de recursos, como de
costumbre. Luego, ingrese un nombre para su máquina
virtual y seleccione la región, las opciones de
disponibilidad para la redundancia, la imagen predefinida
para crear su servidor, la opción para crear la máquina
(bajo la opción Spot), la opción para calcular cuando los
recursos no utilizados están disponibles y el tamaño de la
máquina virtual seleccionando la deseada mediante el
enlace Seleccionar tamaño (que le permite ordenar los
tamaños de la máquina virtual por cualquiera de las
columnas, incluida la memoria, la computación o el
precio). Finalmente, debe definir las credenciales de
usuario administrador, ingresando el nombre de usuario y
luego la contraseña dos veces.
2. Discos Aquí puede seleccionar el tipo de disco para
alojar el sistema operativo (HDD, Standard SDD o Premium
SDD) y el tipo de cifrado. Al expandir la opción Avanzado,
puede deshabilitar la implementación de discos
administrados si desea implementar su propio control
sobre los discos, en cuyo caso debe seleccionar una cuenta
de almacenamiento para almacenar los discos. Dado que el
uso de discos administrados permite la tolerancia a fallas,
el 99,99 por ciento de SLA y más escalabilidad, es una
buena opción.
3. Redes Por supuesto, su máquina virtual debe estar
conectada de alguna manera. La página de Redes le
permite seleccionar o crear una red virtual, definir la
subred que desea usar y declarar si desea tener una IP
pública. Puede deshabilitar la IP pública solo si se conecta a
esta VM mediante una VPN. Se puede seleccionar un grupo
de seguridad NIC (de forma predeterminada, ya está
seleccionado un grupo de seguridad básico), así como un
puerto RDP para establecer conexiones de escritorio
remoto a la máquina virtual. De forma predeterminada, el
puerto RDP estándar, 3389, ya está
seleccionado. Dependiendo de la imagen que desee usar
durante la creación de la máquina virtual, puede habilitar
redes aceleradas con baja latencia y alto
rendimiento. Además, puede hacer que esta nueva
máquina virtual forme parte de un grupo de equilibrio de
carga.
4. Administración Aquí se define cómo interactúa Azure
Security Center con la máquina virtual; esta función puede
ser habilitada automáticamente por la suscripción.En
Supervisión, puede definir si Azure Security Center
registrará los diagnósticos en el arranque y cuándo se
inicia el sistema operativo y, en ese caso, qué cuenta de
almacenamiento se usará. Puede asignar una identidad del
sistema (que permite que la máquina virtual se identifique
para llegar a otros recursos de Azure en las suscripciones
sin identificación adicional) y si la máquina puede usar
inicios de sesión de Azure Active Directory, según la
imagen utilizada en la creación de la máquina virtual. La
última configuración en esta página es la opción de
apagado automático, que le permite definir una hora
específica en la que la máquina virtual se puede cambiar a
fuera de línea, y si se debe emitir una notificación antes de
esto, en cuyo caso, debe ingresar una dirección de correo
electrónico. donde desea que se envíen las notificaciones.
5. Avanzado Aquí puede agregar extensiones a la
instalación de su sistema operativo, como monitoreo o
agentes antivirus. Puede ingresar datos personalizados
para el sistema operativo para que pueda enviar
información a la máquina virtual, que se almacenará en %
SYSTEMDRIVE% \ AzureData \ CustomData.bin como un
archivo binario para Windows (que debe ser procesado
por algún código escrito por usted mismo al inicio), o en /
var / lib / waagent para Linux, que puede ser administrado
por Linux Agent. Si una empresa tiene un contrato para
reservar servidores físicos dedicados a las suscripciones,
puede seleccionar el grupo de host y el grupo de ubicación
de proximidad.
6. Configuración de SQL ServerAquí define cómo los
clientes se pondrán en contacto con el servidor SQL. Puede
especificar si desea permitir solo conexiones desde la red
virtual, solo dentro de la propia máquina virtual, o desde
Internet. En cualquier caso, debe definir un puerto, que
está asignado por defecto a 1433. Puede configurar
métodos de autenticación específicos como la
autenticación de SQL o Azure Key Vault. El
almacenamiento de la base de datos se asigna
automáticamente a discos distintos del sistema
operativo. Puede cambiar la configuración de
almacenamiento, seleccionando un tipo de
almacenamiento principal (entre los estilos OLTP y OLAP)
y luego modificar las capacidades de disco y las
asignaciones de unidades. (De forma predeterminada, los
datos van a un disco, los registros a otro y TEMP DB utiliza
el disco del sistema operativo). Aquí tiene la oportunidad
de asignar su propia licencia SQL,
7. Etiquetas Cualquier recurso puede tener etiquetas
asignadas para la consolidación de facturación.
8. Revisar + Crear Aquí se realiza una validación
final; luego, el asistente muestra toda la información de
configuración y le deja crear la máquina virtual haciendo
clic en Crear .
Si observa la Figura 2-11 , notará que se utilizan varios recursos para
crear una máquina virtual. Además de la VM obvia en sí, y los discos para
almacenar el sistema operativo y los datos, debe crear una interfaz de red
y usarla para admitir la red virtual, que expondrá una dirección IP pública
y será controlada y auditada por un grupo de seguridad de la red. Se
requiere una cuenta de almacenamiento para almacenar los archivos del
disco virtual, y el Programa administrará la función de automatización de
apagado.

Figura 2-11 Recursos de la máquina virtual

Describir Azure Database for PostgreSQL, Azure Database


for MariaDB y Azure Database for MySQL
Además de Azure SQL Database, hay otras opciones de almacenamiento
relacional disponibles en la plataforma Azure. En comparación con la base
de datos SQL, cada uno tiene diferencias y similitudes, y algunos de ellos
se pueden utilizar como plataforma de migración desde el
almacenamiento local. En esta sección, encontrará detalles sobre estas
opciones de almacenamiento.
BASE DE DATOS DE AZURE PARA POSTGRESQL
PostgreSQL es parte de la oferta de carga de trabajo relacional en
Azure. PostgreSQL es una base de datos de código abierto orientada a
objetos, y comenzó su vida en Berkeley como el proyecto PostgreSQL en
1986. Se ejecuta sobre todos los sistemas operativos más importantes y
ha alcanzado el cumplimiento de ACID desde 2001.
PostgreSQL usa tipos de datos estándar, además de documentos y datos
de geometría, y le brinda la capacidad de crear elementos compuestos y
sus propios tipos personalizados. Como base de datos relacional,
implementa claves primarias y externas, relaciones, restricciones y
unicidad de claves. Implementa la extensibilidad mediante
procedimientos y funciones almacenados, que podrían estar escritos en
un lenguaje propietario, PL-PGSQL, pero también en otros lenguajes como
Perl y Python. Como un motor de base de datos que respalda los
documentos, implementa expresiones y actualizaciones de ruta de SQL /
JSON.
Varias herramientas de código abierto están habilitadas para trabajar con
este motor de base de datos, como Ruby on Rails, Python con Django, Java
con Spring Boot, PHP, C # / .NET y Node.js. Puede ampliar el motor de la
base de datos utilizando cualquiera de las extensiones disponibles, que
mejoran la capacidad delbase de datos para resolver problemas
específicos, como la estandarización de direcciones, la calculadora de
distancia en datos GIS y la búsqueda de texto sin acentos.
PostgreSQL puede escalar fácilmente sin ningún tipo de fragmentación
manual, incluso a cientos de nodos. Debido a que es una implementación
de código abierto, puede usar Hyperscale (Citus), un proyecto de código
abierto en GitHub para escalar en Azure y distribuir consultas en varios
nodos.
Más adelante en este capítulo, hablaremos sobre herramientas de
datos. Para algunos de ellos, existen extensiones para trabajar con
PostgreSQL y administrar fragmentos, conexiones y consultas.
Para crear una base de datos PostgreSQL en Azure Portal, escriba Azure
Database for PostgreSQL serversen el cuadro de búsqueda y selecciónelo
en los resultados. Al hacer clic en Agregar, se le ofrecen dos opciones:
crear un solo servidor o crear un grupo de servidores de Hiperescala
(basado en Citus).
1. Si decide utilizar la opción de servidor único, verá lo
siguiente:
1. Conceptos básicos Seleccione su suscripción y grupo de
recursos; luego ingrese un nombre de servidor y seleccione la región y la
versión de PostgreSQL. Luego, seleccione el almacenamiento, donde
puede configurar núcleos virtuales, espacio de almacenamiento,
crecimiento automático y retención de respaldo. Finalmente, ingrese las
credenciales de administrador.
2. Etiquetas Cualquier recurso puede tener etiquetas asignadas para
la consolidación de facturación.
3. Revisar + Crear aquí Azure realiza una validación y pone a
disposición el botón Crear , en el que hace clic para completar la
operación.
2. Si configura un grupo de servidores de Hiperescala, el
asistente mostrará lo siguiente:
0. Conceptos básicos Después de seleccionar la
suscripción y el grupo de recursos, debe ingresar un
nombre único para el grupo de servidores y seleccionar la
ubicación. Luego, debe configurar el procesamiento y el
almacenamiento para el grupo de servidores, definiendo
cuántos nodos de trabajo desea, cuántos núcleos virtuales
desea y almacenamiento por nodo (todos los nodos deben
tener la misma configuración). Se debe configurar otro
nodo que actuará como coordinador, recibiendo las
solicitudes de los clientes, retransmitiendo los nodos
trabajadores y agrupando los resultados. Nuevamente,
debe configurar núcleos virtuales y almacenamiento. Por
último, puede habilitar la alta disponibilidad. El nombre de
usuario del administrador se fija como citus , pero debe
ingresar una contraseña adecuada.
1. Redes Aquí puede habilitar el acceso a través de un
punto final público, que usará reglas de firewall para
habilitar la conectividad por IP y permitir el acceso desde
otros servicios de Azure.
2. Etiquetas Como con cualquier otro recurso, puede
agregar sus propias etiquetas aquí.
3. Revisar + Crear Después de una validación final, se
muestra el resumen de la configuración y hace clic
en Crear para finalizar la operación.

Sugerencia para el examen


La alta disponibilidad de PostgreSQL debe solicitarse mediante
suscripción antes de habilitarse en un grupo de servidores.
La Figura 2-12 representa los recursos implícitos en una implementación
de PostgreSQL.

Figura 2-12 Diagrama de grupo de servidores PostgreSQL

BASE DE DATOS DE AZURE PARA MARIADB


Azure Database for MariaDB es otra base de datos de código abierto que
tiene disponible para implementar con el fin de cubrir una carga de
trabajo relacional. Está basado en las versiones 10.2 y 10.3, y puede
obtener la documentación en https://mariadb.org/ .
El motor permite alta disponibilidad, escalabilidad fácil en poco tiempo,
procedimientos de respaldo automatizados e implementación segura
para datos confidenciales.
Al ejecutarse en Azure, el costo de implementación se puede estimar en
función del modelo de compra de pago por uso. Hay tres niveles de
precios estándar disponibles:
• Básico Incluye uno o dos núcleos virtuales, 2 GB de memoria
por núcleo, de 5 a 1000 GB de almacenamiento
• Uso general Incluye 2 a 64 núcleos virtuales, 5 GB de
memoria por núcleo, 5 a 4.000 GB de almacenamiento
• Memoria optimizada Incluye 2 a 32 núcleos virtuales, 10 GB
de memoria por núcleo, 5 a 4.000 GB de almacenamiento
Como de costumbre, puede comenzar su implementación con un nivel
básico, evaluar la utilización de recursos y escalar según sus necesidades.
Nota El almacenamiento solo se amplía
Puede escalar hacia arriba y hacia abajo en el nivel de precios, pero el almacenamiento
siempre se ampliará.

Como alternativa, la capacidad reservada se puede pagar por adelantado,


de uno a tres años, lo que reducirá el precio.
Azure Database for MariaDB cubre diferentes áreas de seguridad:
• SSL / TLS habilitado en todas las comunicaciones de forma
predeterminada
• Cifrado de almacenamiento automático mediante un módulo
criptográfico FIPS 140-2
• Reglas de firewall de IP
• Reglas de firewall de red virtual
• Auditoría opcional
• Protección contra amenazas opcional
Azure Database for MariaDB puede ser usado por los lenguajes de
desarrollo más importantes, ya que usa los mismos controladores que
MySQL. Hay controladores para lo siguiente:
• PHP
• .NETO
• Node.js
• Ir
• Pitón
• Java
Para crear una base de datos de Azure para MariaDB en el portal de
Azure, escriba Azure Database for MariaDB servers en el cuadro de
búsqueda y selecciónelo en los resultados. En la página Azure Database
for MariaDB Servers, haga clic en Agregar para iniciar un asistente con
tres páginas:
1. Conceptos básicos Aquí selecciona su suscripción y grupo de
recursos, y luego ingresa toda la información de configuración
requerida, incluido el nombre que desea usar para el servidor, ya
sea que comience con una base de datos vacía u obtenga una
copia de seguridad, la ubicación y la versión de MariaDB . Luego,
configure el almacenamiento Compute +, que incluye opciones de
redundancia de respaldo para niveles de uso general y de
memoria optimizada, lo que le permite mantener copias de
respaldo redundantes en ubicaciones locales o distribuidas
geográficamente. Finalmente, ingrese las credenciales de
administrador.
2. Etiquetas Puede agregar sus propias etiquetas aquí.
3. Revisar + Crear Después de una validación final, se muestra
el resumen de la configuración y puede hacer clic en Crear para
crear su base de datos MariaDB.
Nota MariaDB no es solo la base de datos
Azure Database for MariaDB se implementa mediante la creación de una máquina virtual o
un contenedor para ejecutar el motor.

BASE DE DATOS DE AZURE PARA MYSQL


Azure Database for MySQL es la implementación en la nube de la
plataforma de Microsoft para la edición MySQL Community
( www.mysql.com/products/community/ ). La implementación de Azure le
permite elegir la versión 5.6, 5.7 u 8.0, y habilita la base de datos casi sin
tareas de administración.
Como MariaDB, el motor permite alta disponibilidad, escalado fácilmente
en poco tiempo, procedimientos de respaldo automatizados e
implementación segura para datos confidenciales.
MySQL admite funciones como replicación, particionamiento,
enrutamiento y otras funciones directamente relacionadas con las
implementaciones de bases de datos relacionales, como vistas,
procedimientos almacenados y disparadores.
Hay tres niveles de precios estándar disponibles:
• Básico Incluye uno o dos núcleos virtuales, 2 GB de memoria
por núcleo, de 5 a 1000 GB de almacenamiento
• Uso general Incluye 2 a 64 núcleos virtuales, 5 GB de
memoria por núcleo, 5 a 16 000 GB de almacenamiento
• Memoria optimizada Incluye 2 a 32 núcleos virtuales, 10 GB
de memoria por núcleo, 5 a 16 000 GB de almacenamiento
Puede escalar hacia arriba y hacia abajo, pero solo entre los niveles de
Uso general y Optimizado para memoria. Sin embargo, puede escalar
hacia arriba y hacia abajo dentro del nivel Básico (y los otros niveles
también) sin cambiar el nivel. Puede escalar hacia arriba, pero no hacia
abajo, en el almacenamiento.
En cuanto a precios, puedes solicitar capacidad reservada prepago de uno
a tres años. Si tiene una suscripción Enterprise, puede habilitar la
capacidad reservada prepaga en Azure Portal. En otros casos, como las
suscripciones individuales, debe solicitar capacidad reservada prepaga a
un agente de ventas.
Hablando de seguridad, las mismas características que se encuentran en
las bases de datos MariaDB están disponibles para Azure Database for
MySQL (MariaDB es una rama del desarrollo original de MySQL).
Si desea crear una base de datos de Azure para MySQL, en la parte
superior del portal de Azure, escriba Base de datos de Azure para
servidores MySQL en el cuadro de búsqueda y selecciónela de los
resultados. Una vez que esté en la página MySQL, haga clic en el botón
Agregar. El asistente es exactamente como el asistente de MariaDB y
solicita los mismos parámetros.

Describir la instancia administrada de Azure SQL


Para aquellos clientes que necesitan una herramienta de migración para
numerosas aplicaciones sin riesgos, o proveedores de software
independientes (ISV) que desean trasladar toda su plataforma a SaaS en
Azure, Microsoft ofrece Azure SQL Managed Instance (SQL-MI). A veces,
hay aplicaciones con un par de bases de datos necesarias en la misma
instancia pero con muchos trabajos que deben ejecutarse en ellas. Este
podría ser otro uso de SQL-MI.
Esta es una implementación especial de Azure SQL, preparada para servir
como una nueva ubicación para grandes centros de datos locales, basada
en las últimas versiones de SQL Server Enterprise Edition. Estos incluyen
todos los servicios relacionados con una implementación para brindar
servicio a su gran almacenamiento de datos trasladado a la nube.
Dado que podría tener varias bases de datos que deba migrar, las
opciones especiales del Servicio de migración de base de datos de Azure
le permiten definir todo el proceso y probarlo antes de la
implementación. Cuando la prueba sea exitosa, puede usar la herramienta
para continuar con la migración de producción.
Nota Migrar sus datos con DMS
Azure Database Migration Service (DMS) es un asistente multifuncional que puede usar
para migrar bases de datos locales a cargas de trabajo relacionales de Azure para cualquiera
de las tecnologías y servicios de bases de datos que describimos en este capítulo.
Puede preparar su plan de migración e iniciarlo cuando esté listo para cambiar su
entorno. Cuando necesite una ruta de migración continua, puede usar un nivel Premium,
que tiene un costo por hora, aplicado mediante cuatro núcleos virtuales. El uso del nivel
Estándar es gratuito, pero solo permite la migración sin conexión, lo que significa
desconectar la base de datos durante el proceso de migración.

La siguiente es una lista parcial de las características más importantes


cubiertas por SQL-MI:
• Parcheo automático de software
• Monitoreo y métricas integradas de instancias y bases de
datos
• Características más recientes del motor de base de datos
• Copias de seguridad automatizadas gestionadas
• Varias cantidades de archivos de datos por base de datos
• VNet: implementación de Azure Resource Manager
Hay dos niveles de servicio disponibles:
• Uso general Use Azure Blob Storage de alto rendimiento, con
un límite de 8 TB. Los archivos de registro y de datos se almacenan
directamente en un repositorio de blobs.
• Business Critical Utiliza almacenamiento SSD local, hasta 1
TB o 4 TB, según la generación de servidor utilizada, con grupos de
disponibilidad Always On, réplica de base de datos de solo lectura y
compatibilidad con OLTP en memoria.

Sugerencia para el examen


Los grupos de disponibilidad Always On son una solución de SQL Server
implementada para alta disponibilidad y recuperación. Utiliza un clúster
de conmutación por error de Windows Server e implementa réplicas
entre los miembros del clúster. Las réplicas se pueden confirmar de forma
asincrónica cuando se deben cubrir largas distancias, pero normalmente
se utiliza el método sincrónico.
Debe considerar muchas métricas al diseñar una implementación de
instancia administrada de Azure SQL, y los límites de recursos varían con
el tiempo, ya que se agregarán progresivamente nuevos tamaños, rangos
y funcionalidades. Le recomendamos que mida la implementación local
real y use Azure Calculator para evaluar la mejor combinación para sus
necesidades. Una vez que se implementa SQL-MI, un seguimiento
frecuente del uso de recursos puede ayudar a refinar la implementación.
La construcción de un SQL-MI es un proceso que lleva tiempo. Deben
realizarse varios pasos, cada uno con procesos de larga duración. La tabla
2-11 le da una idea de las tareas y su duración.
Tabla 2-11 Calendario para procesos largos en la implementación de
SQL-MI
Acción Hora

Creación de clústeres virtuales Hast

Cambio de tamaño del clúster virtual (agregando nodos) Hast

Escalado ascendente / descendente del cálculo de instancias Hast

Siembra de base de datos / Siembra siempre activa 220


Otras operaciones, como adjuntar una base de datos desde Azure Storage,
solo toman unos minutos. Sin embargo, considere el tiempo que puede
necesitar para cargar los archivos (o el sistema de administración de
datos necesario para cargar los archivos).
SQL-MI es PaaS . Eso significa que la administración del hardware,
software, actualizaciones, mantenimiento, etc. es responsabilidad de
Microsoft. Como tal, el cliente no tiene acceso directo a los servidores
usando RDP o cualquier otro protocolo.
Por supuesto, deberá realizar algunas tareas "administrativas", como
crear una nueva base de datos o elegir un espacio de almacenamiento
diferente o una combinación de computadora. Sin embargo, solo podrá
realizar todas esas tareas mediante el portal de Azure u otras
herramientas de administración general que verá más adelante en este
capítulo, como la CLI, PowerShell u otros mecanismos para la
automatización de procesos.
Todas las operaciones que emita deben utilizar el protocolo de capa de
aplicación Tabular Data Stream (TDS), lo que significa utilizar sentencias
SQL para almacenar o recuperar datos. La conexión entre las aplicaciones
del cliente y la instancia administrada debe ser a través de la propia red
virtual, a través de una máquina virtual conectada a la misma red virtual,
oa través de una conexión VPN o Azure ExpressRoute. Como verá durante
el procedimiento de configuración, puede configurar un punto final de
conexión, pero es solo para datos y no se puede utilizar para la
administración.
En cualquier caso, todas las comunicaciones están encriptadas y la
comunicación interna entre las partes de la instancia administrada está
encriptada y firmada mediante certificados. La comunicación con los
servicios externos de Azure, como Azure Key Vault y Azure Active
Directory, también está cifrada y firmada.
Para crear un SQL-MI en Azure Portal, escriba instancias administradas
de SQL en el cuadro de búsqueda y selecciónelo en los resultados. Haga
clic en Agregar para abrir un asistente con las siguientes páginas:
1. Conceptos básicos Seleccione su suscripción y grupo de
recursos. Luego ingrese el nombre de la instancia, seleccione la
región, configure el proceso y el almacenamiento, e ingrese las
credenciales de administrador. La regla de restricción para la
contraseña de administrador en este caso es más fuerte; requiere
al menos 16 caracteres.
2. Conexión en red SQL-MI requiere una red virtual y ofrece la
posibilidad de crear una nueva para usted, o puede seleccionar
una de sus redes virtuales ya creadas. Sin embargo, el proceso de
creación necesita modificar la configuración de VNet,
preguntando si debe realizar los cambios automáticamente o
guiarlo en el proceso de hacerlo usted mismo. Debe seleccionar
un tipo de conexión (proxy o redirección), que afecta la forma en
que las aplicaciones se conectan al SQL-MI. Finalmente, puede
optar por habilitar un punto final público, que se usará solo para
la comunicación de datos cuando lo necesite sin usar una VPN.
3. Configuraciones adicionales Aquí puede seleccionar la
colación y la zona horaria para SQL-MI, que no se puede cambiar
después de la implementación. Además, puede agregar SQL-MI
durante el proceso de creación como una conmutación por error
secundaria para un SQL-MI existente.
4. Etiquetas Como con cualquier otro recurso, puede agregar
sus propias etiquetas aquí.
5. Revisar + Crear Después de la validación, la página muestra
su configuración, el costo estimado y el límite superior para el
proceso de creación en horas.
Después de la creación, las redes virtuales, los grupos de seguridad de la
red, las tablas de rutas y los clústeres virtuales se agregarán al grupo de
recursos. La Figura 2-13 muestra el recurso involucrado en una
implementación de SQL-MI.
Figura 2-13 Recursos básicos de SQL-MI

HABILIDAD 2.3: IDENTIFICAR TAREAS DE


GESTIÓN BÁSICAS PARA DATOS
RELACIONALES
Todos los servicios de datos relacionales deben implementarse,
administrarse y protegerse para funcionar de la manera más eficiente. Y a
veces, aparecerán problemas, y tendrá que identificarlos y
solucionarlos. Además, probablemente tendrá que recuperar y actualizar
datos.
Esta habilidad cubre cómo:
• Describir el aprovisionamiento y la implementación de
servicios de datos relacionales.
• Describir el método de implementación, incluidas las
plantillas ARM y Azure Portal.
• Identificar los componentes de seguridad de los datos (p. Ej.,
Firewall, autenticación)
• Identificar problemas básicos de conectividad (p. Ej., Acceso
desde las instalaciones, acceso con redes virtuales de Azure, acceso
desde Internet, autenticación, firewalls)
• Identificar herramientas de consulta (por ejemplo, Azure Data
Studio, SQL Server Management Studio, utilidad sqlcmd, etc.)

Describir el aprovisionamiento y la implementación de


servicios de datos relacionales.
Ahora que tiene una idea de las diversas cargas de trabajo relacionales
que proporciona Azure, veamos las razones que podrían hacer que decida
cambiarse a una solución de Azure y cómo seleccionar la opción que
mejor se adapte a sus necesidades.
Costo . Esta es probablemente la razón más importante. Por supuesto, si
realiza una inversión en hardware y software, desea obtener el mejor
rendimiento, pero ¿qué sucede si necesita migrar o actualizar su
implementación? Si considera el hardware, el software y el
mantenimiento, la seguridad, la redundancia y la confiabilidad, es posible
que la migración a Azure sea la mejor opción.
Piense en los pros y los contras de las opciones disponibles. Si no necesita
su carga de trabajo relacional en funcionamiento todo el tiempo, IaaS
probablemente será una mejor opción que PaaS, ya que puede apagar su
servidor no utilizado y traerlo de vuelta cuando sea necesario. Sin
embargo, tener SQL Server en una máquina virtual requerirá un mayor
esfuerzo de administración por parte de su equipo.
En esta sección, analizamos las medidas y los niveles utilizados para
estimar los costos del servicio, basados en DTU, vCores y niveles de nivel,
entre otros factores. Tenga en cuenta que hay otros costos a
considerar. Uno es el tráfico de la red; todo el tráfico entrante es gratuito,
pero se facturará cualquier tráfico saliente que supere una cantidad
inicial gratuita.
Además, los costos varían según la región. La Tabla 2-12 muestra algunas
de las diferencias, con precios a junio de 2020.
Tabla 2-12 Costos comparativos en el tráfico de red entre regiones
Dólar por GB
Proporción nosotros Europa Corea S

Primeros 5 GB Libre Libre Libre L

5 GB - 10 TB $ 0.087 $ 0.087 $ 0.120 $

10 - 50 TB 0,083 USD 0,083 USD 0,085 USD 0

50 - 150 TB 0,070 USD 0,070 USD 0,082 USD 0

150 - 500 TB $ 0.050 $ 0.050 0,080 USD 0

Más de 500 TB Pedir Pedir Pedir P


Nivel de servicio . Tener una plataforma confiable es costoso. Tener sus
bases de datos en PaaS le da un 99,99 por ciento de SLA, mientras que
IaaS le da un 99,95 por ciento. La diferencia entre IaaS y PaaS se puede
cubrir si realiza algunas tareas adicionales, como agregar una segunda
instancia de máquina virtual o implementar SQL Always On para
garantizar la disponibilidad.
Administración . PaaS reducirá el tiempo que su equipo dedica a
administrar su infraestructura relacional, ya que la administración de
Azure realiza la mayor parte del trabajo. Por otro lado, debe considerar
otros posibles problemas al utilizar algunos de los servicios.
Veamos un caso probable: si tiene algunos procedimientos CLR, no están
disponibles en PaaS en absoluto. Si debe mantenerlos implementados, su
elección debe ser IaaS (o SQL-MI).
Algo similar sucede con OPENROWSET, OPENQUERY, flujos de archivos,
consultas entre bases de datos, etc.
Ruta de migración . Se trata tanto de oportunidades como de
procedimientos. Debes seleccionar el mejor momento para realizar una
migración, según tus necesidades y la forma en que lo haces.
Veamos algunos ejemplos:
• Tiene una aplicación web que usa información de una base de
datos, o más de una, no interconectada. Puede cambiar fácilmente
la cadena de conexión en la aplicación web.
• Pasar a PaaS probablemente sería la mejor opción, utilizando
el Asistente de migración de datos u otra herramienta para mover
datos rápidamente y cambiar la cadena de conexión solo al final del
movimiento.
• Su aplicación usa diferentes bases de datos, donde necesita
actualizar la información en más de una de ellas al mismo tiempo, y
usa referencias cruzadas de bases de datos, usando nombres de
objetos completamente calificados (<database>. <schema>.
<object> nomenclature) para realizar las consultas. O su base de
datos utiliza almacenamiento binario externo para mejorar la
gestión de documentos, lo que le permite utilizar el
almacenamiento binario desde fuera de la base de datos.
En estos casos, está limitado a utilizar IaaS para que siga
funcionando. Habrá una preparación inicial de la plataforma, donde usted
define y crea una o más máquinas virtuales en IaaS, y luego planifica y
ejecuta la migración, exactamente de la misma manera que puede usar la
migración a un nuevo servidor local.

QUÉ SABOR DE SQL SERVER USAR


Cuando mueve sus datos a la nube, es importante elegir la mejor
implementación para sus necesidades. A continuación, se ofrecen algunas
pautas que le ayudarán a decidir cuál es la mejor opción en diferentes
casos.
Base de datos SQL de Azure . Como servicio PaaS, Azure SQL Database le
libera de las tareas administrativas y de mantenimiento, le garantiza un
SLA del 99,99 por ciento, automatiza los procedimientos de copia de
seguridad y puede crecer verticalmente bajo demanda.
Puede definir una sola base de datos , que es un concepto similar a la base
de datos contenida utilizada en la versión de SQL Server 2012. La idea es
tener menos dependencias en el servidor subyacente. Los metadatos, la
seguridad de acceso del usuario y las estadísticas están aislados del
servidor.
La autenticación en este tipo de base de datos, incluida la autenticación de
Windows, es administrada por la base de datos sin la participación del
servidor.
Por supuesto, se puede permitir que los inicios de sesión de SQL Server
lleguen a la base de datos, pero esto disminuye la "contención" de la
propia base de datos.
Si desea reducir los costos, puede elegir una implementación sin servidor,
con una facturación de costo por uso más detallada y la capacidad de
detener automáticamente el uso de recursos cuando no está usando la
base de datos. Alternativamente, puede usar Hiperescala para un mayor
rendimiento; una gran base de datos, hasta 100 TB; una copia de
seguridad casi instantánea; restauración rápida; y escalamiento rápido
(horizontal y vertical), todo aplicado a una sola base de datos. Un
escenario para esto podría ser una implementación en la que solo tenga
una base de datos que requiera todas estas capacidades especiales y otras
bases de datos con requisitos significativamente menores. Puede definir
cada uno como una única base de datos y refinar la configuración de cada
uno.
Instancia administrada de Azure SQL . Como comentamos
anteriormente, para grandes servidores con varias bases de datos,
centros de datos y proveedores de ISV, SQL-MI puede ser una buena
opción para automatizar el movimiento de local a la nube. Un conjunto de
servidores SQL con alta disponibilidad, replicación (local y
geográficamente dispersa) y agrupación en clústeres basados en
características Always On le brinda la confiabilidad y disponibilidad que
necesita. Si tendrá consultas entre bases de datos, esa es otra razón para
usar SQL-MI.
SQL Server en la máquina virtual de Azure . Este servicio IaaS es su
elección cuando necesita un control detallado sobre la configuración, el
mantenimiento y la aplicación de parches del servicio; tiene que mover el
servidor SQL de local a la nube sin realizar ningún cambio en su base de
datos o aplicación; tiene código CLR dentro de su base de datos; o
utilizará consultas entre bases de datos o vistas vinculadas. Otro
escenario es cuando está preparando un entorno de prueba o desarrollo
para el diseño de la base de datos antes de moverlo a un entorno de
producción. En una implementación de tres capas, puede proporcionar un
servidor SQL en una máquina virtual a su equipo de desarrollo y tener un
entorno de ensayo y producción utilizando otras opciones de Azure SQL
Database.
En cualquier caso, Azure le entrega un muy buen conjunto de
herramientas para ver qué está sucediendo con las cargas de trabajo de
su base de datos relacional, medirlas y refinar el diseño de su entorno.
Además, puede cambiar el tamaño y escalar hacia arriba o hacia abajo en
cualquier momento, automáticamente en función del consumo de
recursos o de acuerdo con su propio programa basado en su experiencia
personal de su aplicación y el uso de la base de datos.

Describir el método de implementación, incluidas las


plantillas ARM y Azure Portal.
Cuando describimos las diversas opciones de almacenamiento,
explicamos los procedimientos paso a paso para implementarlas. Sin
embargo, puede elegir entre otros métodos de implementación y, mejor
aún, la implementación automatizada. En esta sección, discutimos estos
métodos en detalle.
OTRA VISITA AL PORTAL AZURE
Repasemos el portal de Azure y luego el proceso de creación de cargas de
trabajo relacionales.
Cuando acceda al portal de Azure en https://portal.azure.com , se le
solicitarán sus credenciales (personales o de la empresa). Después de
ingresar sus credenciales, aparecerá el panel principal del portal (o la
página de inicio predeterminada, si ya la ha configurado). Verá la
información de una o más suscripciones . La suscripción es su punto de
entrada raíz para todos sus recursos de Azure.
En la esquina superior derecha de la página, a la izquierda de su nombre
de usuario e ícono, verá algunos íconos. El icono que parece un cuaderno
con un embudo le permite seleccionar su (s) suscripción (es), como puede
ver en la Figura 2-14 .

Figura 2-14 Selector de suscripciones de Azure Portal


Una nueva suscripción muestra un tablero vacío, lo que le permite
agregar elementos que desea mantener bajo control cada vez que visita el
portal. La Figura 2-15 muestra cómo se ve el tablero cuando no se han
creado recursos en una nueva cuenta.
Figura 2-15 Panel predeterminado de Azure Portal
En la cinta en la parte superior de la página, aparece el cuadro de
búsqueda, donde puede buscar cualquier cosa que necesite usar o crear.
El concepto de grupo de recursos . Al principio, Azure vincula las
diferentes implementaciones de recursos directamente a la suscripción,
sin opción de tener ningún recurso fuera de una suscripción (que sigue
siendo el caso). Sin embargo, algunos clientes afirman que es casi
imposible gestionar el consumo por diferentes áreas de costes. Las
grandes empresas necesitan una comprensión clara de qué
departamentos están utilizando qué recursos y el costo de su
operación. Lo peor es la situación para los proveedores de ISV que se
trasladan a la nube para proporcionar sus servicios directamente desde
Azure. ¿Cómo pueden calcular los costos de facturación a cada
cliente? Esas son las razones básicas para tener recursos vinculados, no
para otorgar permisos o conectividad, sino solo para administrar y
relacionar costos. Estos grupos se denominan grupos de recursos .
La mayoría de los recursos de Azure deben estar vinculados a un solo
grupo de recursos, pero hay algunos recursos específicos que pueden
existir fuera de los grupos de recursos, pertenecientes al inquilino, un
grupo de administración o la suscripción. Puede tener varios recursos
bajo el mismo grupo de recursos, incluso recursos de diferentes tipos,
pero no existe la opción de tener un recurso en más de un grupo de
recursos. Puede mover un recurso de un grupo de recursos a otro, si es
necesario.
El grupo de recursos controla todos sus recursos y también recopila
información sobre todos ellos. Puede filtrar o agrupar la información
recopilada por el grupo de recursos.

Sugerencia para el examen


Recuerde, el grupo de recursos administra todos los recursos. Si decide
eliminar el grupo de recursos (por ejemplo, cuando un ISV elimina a un
cliente), todos los recursos que pertenecen al grupo se eliminarán sin
ninguna opción de restauración.
Practique la creación de una base de datos SQL de Azure
Nota Reducir los costos de facturación de sus prácticas
Siga este procedimiento y, al mismo tiempo, estará creando una base de datos para futuras
prácticas. Los parámetros de este procedimiento crearán la base de datos menos costosa
posible, y con la opción Desconexión automática, puede evitar el uso de recursos cuando no
está accediendo a la base de datos.

Si aún no tiene un grupo de recursos creado en su suscripción, cree


uno. Utilice DP-900 como nombre del grupo de recursos a seguir junto
con este procedimiento paso a paso. Utilice los valores de la Tabla 2-
13 como referencia para la práctica.
Tabla 2-13 Parámetros predeterminados
Pestaña Parámetro Valor

Lo esencial Suscripción Debe especificar la suscripción que está


tiene más de uno, puede cambiarlo aqu
Pestaña Parámetro Valor

Grupo de recursos DP-900

Nombre de la base de datos DP900_1

Servidor Cree un nuevo servidor, con un nombre


apropiado, nombre de usuario de admi
contraseña de su elección.

Computación + Haga clic en el enlace Configurar base d


Almacenamiento seleccione:
Sin servidor
Max vCores = 1
VCores mínimo = 0,5
Habilitar la pausa automática en 1 hora
Tamaño máximo de datos = 6 GB

Redes Método de conectividad Punto final público

Permitir que los servicios y Activado


recursos de Azure accedan a
este servidor

Agregar dirección IP de Activado


cliente actual

Ajustes Usar datos existentes Muestra


adicionales

Colación SQL_Latin1_General_CP1_CI_AS (tenga


esto no se puede cambiar con datos de
Pestaña Parámetro Valor

Habilitar seguridad de datos Iniciar prueba


avanzada

EJERCICIO 2-1 Crear servicios de datos relacionales


La mayoría de los asistentes de creación siguen la misma interfaz de
usuario:
1. Los conceptos básicos se agrupan en:
1. Detalles del proyecto Seleccione la suscripción y el grupo de
recursos.
2. Detalles del servicio Esto incluye detalles de la base de datos,
detalles del grupo y otra información específica del servicio que está
creando: nombre, región, tamaño y otras configuraciones.
2. Networking Le permite definir la conectividad del
servicio. También define la seguridad de la red, como permitir el
acceso desde otros recursos de Azure a este, firewalls, VPN, etc.
3. Configuraciones adicionales Aquí puede inicializar el
servicio, definir parámetros de servicio y habilitar componentes
adicionales.
4. Etiquetas Aquí se asigna información de agrupación.
5. Revisar + Crear Aquí es donde ocurre la validación final y
usted confirma la creación del servicio.
Ya ha visto cómo crear instancias de servicio para la mayoría de los
servicios de datos relacionales. Exploremos la base de datos de Azure SQL
en detalle y veamos qué sucede después de que se crea.
Una vez que el asistente haya creado la base de datos, recibirá un mensaje
que le indicará que su implementación está completa y le indicará que
vaya al recurso. Si regresa a su tablero, verá tres nuevos recursos, como
se describe en la Tabla 2-14 .
Tabla 2-14 Recursos creados para una base de datos SQL de Azure
Recurso Nombre

La base de datos SQL DP900_1


Recurso Nombre

El servidor SQL El nombre de su servidor

Una cuenta de almacenamiento Un nombre generado automáticamente


Nota: sus bases de datos deben almacenarse
Por supuesto, no es necesario crear una cuenta de almacenamiento. Sin embargo, lo
necesita para mantener los archivos de su base de datos, y esa es la razón por la que se crea
la cuenta.

Si hace clic en el nombre de la base de datos, que es un enlace, el portal


navega a una página con información de la base de datos. La figura 2-
16 muestra la página de descripción general de una base de datos.
Es importante comprender que el nombre del servidor es un nombre de
dominio completo (FQDN), en este
caso, dp900sqlserver.database.windows.net , y debe ser único. Azure
genera automáticamente este nombre usando el nombre de su servidor y
agregando database.windows.net para completar el FQDN. Eso explica
por qué debe usar un nombre único para su servidor para que no se
confunda con otro servidor.
Un enlace importante en esta página es Mostrar cadenas de conexión de
base de datos. El enlace lo envía a una página con varios ejemplos de
cadenas de conexión para diferentes tecnologías de desarrollo como
ADO.NET, JDBC, ODBC (que incluye Node.js), PHP y Go.
Figura 2-16 Descripción general de la base de datos SQL de Azure
En la barra de menú de la izquierda, tiene enlaces como Registro de
actividad, Etiquetas y Diagnosticar y resolver problemas. En otra sección
del menú de la izquierda, tiene Configuración, que incluye Configurar
(incluida la realización de cambios en el estado del servidor, especificar
Hiperescala o Crítico para el negocio y mover la base de datos a otro
nivel), Replicación geográfica, Sincronizar con otras bases de datos,
Propiedades, y cerraduras.
Otras secciones incluyen Seguridad, Monitoreo, Soporte y Solución de
problemas.

PLANTILLAS DE AZURE RESOURCE MANAGER (ARM)


El portal de Azure es una herramienta excelente para crear casi cualquier
servicio de Azure, pero ¿qué sucede si debe crear más de dos o tres
servicios cada vez? Esto es algo que un proveedor de ISV o un proveedor
de servicios de Azure debe hacer repetidamente. Para esos casos, existen
procedimientos automatizados. Puede usar Azure Resource
Manager (ARM) para realizar sus tareas administrativas. ARM es el
servicio que utiliza el portal para realizar las tareas. Las acciones y los
parámetros que elija se envían de vuelta a ARM para que el portal realice
el trabajo. La Figura 2-17 muestra los componentes básicos de
ARM. Como puede ver, el portal es solo una interfaz de usuario.

Figura 2-17 Esquema de Azure Resource Manager


ARM usa proveedores de recursos para administrar los diversos recursos
en Azure. Los proveedores de recursos encapsulan todos los elementos
necesarios para realizar las acciones contra los servicios, la validación de
la configuración y otras necesidades de
recursos. Microsoft.Storage y Microsoft.Compute son dos ejemplos de
proveedores de recursos.
Los proveedores de recursos se configuran mediante suscripción. Siga
estos pasos para ver los proveedores de recursos disponibles para su
suscripción y cómo administrarlos:
1. Vaya a https://portal.azure.com/#allservices .
2. En el cuadro de búsqueda, escriba Suscripciones y haga clic
en el enlace Suscripciones.
3. Seleccione la suscripción deseada.
4. En la barra de menú de la izquierda, en el grupo
Configuración, haga clic en la opción Proveedores de recursos
para mostrar una lista de todos los proveedores. Para habilitar
uno, simplemente selecciónelo y haga clic en el botón Registrarse
en la parte superior de la lista. El proveedor aparecerá como
"Registrando", como puede ver en la Figura 2-18 , y después de
unos minutos, estará disponible.

Figura 2-18 Habilitación de un proveedor de recursos


Puede cancelar el registro de un proveedor de servicios, pero solo cuando
no se esté utilizando ningún recurso administrado por el proveedor.

Sugerencia para el examen


Necesita los permisos adecuados para administrar proveedores de
recursos, que están automáticamente activos en los roles de Colaborador
y Propietario.
Tener proveedores de recursos disponibles es la base para tener una
forma declarativa de definir recursos: plantillas ARM. Las plantillas
ARM son archivos con JavaScript Object Notation (JSON), que describen el
servicio que se pretende crear o administrar. Usando una plantilla, puede
definir en detalle la combinación de recursos y su configuración, con
parámetros para valores específicos, como nombres y grupos de
recursos. El siguiente código detalla el esquema básico de una plantilla
ARM.
Esquema simplificado para una plantilla ARM
Haga clic aquí para ver la imagen del código
{

"$ esquema":
"https://schema.management.azure.com/schemas/2019-04-01/
deploymentTemplate.json # ",

"contentVersion": "",

"apiProfile": "",

"parámetros": {},

"variables": {},

"funciones": [],

"recursos": [ ],

"salidas": {}

La Tabla 2-15 describe las entradas más importantes en una plantilla


ARM e indica cuál de ellas debe estar presente.
Tabla 2-15 Definiciones de esquemas ARM
Nombre Obligatorio Descripción

$ esquema ✓ Defina el esquema específico para la plantilla. El esquem


editores realizar la validación de las definiciones para ev
errores. Solo se pueden usar las partes definidas en el es
en los lugares adecuados.
Se definen diferentes esquemas para diferentes usos.
Para la administración general de recursos, aplique el es
04-01/deploymentTemplate.json# (para algunos editore
permite una versión anterior, 2015-01-01 / deploymentT
#).
Para la administración de inquilinos, debe usar /2019-08
01/tenantDeploymentTemplate.json#.
Para la administración de gestión, /2019-08-
01/managementGroupDeploymentTemplate.json#.
Para suscripciones, /2018-05-
01/subscriptionDeploymentTemplate.json#.
Nombre Obligatorio Descripción
Todas las URL de los esquemas comienzan
con https://schema.management.azure.com/schemas .

contentVersion ✓ Esta es la versión para toda la plantilla, con el valor que d


recomienda un formato "1.0.0.0").
Más adelante, cuando implemente con esta plantilla, pue
está usando la versión adecuada.

apiProfile Con este elemento, puede definir qué versión de API se u


todos los proveedores de servicios, sin tener que agregar
cada uno. Cualquier declaración de proveedor de servicio
versión utilizará este valor de forma predeterminada.

parámetros Aquí declaras qué parámetros espera usar la plantilla pa


personalizar la implementación. Verá esto en detalle en u

variables Estos son contenedores de valor que utiliza la plantilla d


implementación. Un ejemplo es cuando define un nombr
SQL para una base de datos; cuando crea la base de datos
puede tener una variable donde concatenar el nombre de
datos (que podría ser un parámetro) con una cadena fija
"servidor" para construir el nombre del servidor.

funciones Normalmente, puede utilizar funciones para evaluacione


expresiones complejas. Existen algunas limitaciones para
declaración de funciones; por ejemplo, todos los parámet
función deben ser obligatorios (no pueden usar valores
predeterminados) y ninguna función puede llamar a otra
expresiones de sintaxis son simples pero útiles en alguno

recursos ✓ Esta es la sección específica para las declaraciones de im


de recursos. Discutiremos esto en un momento.
Nombre Obligatorio Descripción

salidas Se trata de un conjunto de valores que debe devolver la e


despliegue, como la lista de recursos desplegados, con o
detalles para cada uno.
Ahora, profundicemos en los detalles.
• Parámetros Se utilizan para definir marcadores de posición
para los valores que desea asignar durante el proceso de
implementación (consulte la Tabla 2-16 ).
Esquema de parámetros
Haga clic aquí para ver la imagen del código
"parámetros": {

"<nombre-parámetro>": {

"tipo": "<tipo-de-valor-parámetro>",

"defaultValue": "<valor-predeterminado-de-
parámetro>",

"allowValues": ["<array-of-valores-
permitidos>"],

"minValue": <valor-mínimo-por-int>,

"maxValue": <valor-máximo-por-int>,

"minLength": <minimum-length-for-string-or-
array>,

"maxLength": <maximum-length-for-string-or-
array-parameters>,

"metadatos": {

"descripción": "<descripción-del-parámetro>"

}
}

Tabla 2-16 Propiedades de los parámetros


Nombre Obligatorio Descripción

tipo ✓ Este es el tipo de datos esperado para el parámetro.


Debe ser uno de los tipos de datos habilitados en esta list
• cuerda
• asegurar
• En t
• bool
• objeto
• SecureObject
• formación

valor por El valor a asignar al parámetro, cuando no se recibe uno


defecto

allowValues Esta es una matriz con los valores aceptados para el parám
asigna esta propiedad, solo se permiten valores coinciden

minValue El valor mínimo aceptado para un parámetro int.

valor máximo El valor máximo aceptado para un parámetro int.

longitud La longitud mínima para un tipo de parámetro de cadena


mínima segura o matriz

longitud La longitud máxima para un tipo de parámetro de cadena


máxima segura o matriz

metadatos Permite comentarios al parámetro. El aceptado es "descri


un valor de cadena.
"Descripción": "<descripción-del-parámetro>"
• Recursos Esta es la sección más importante de la plantilla
ARM; contiene la definición de los recursos que desea implementar.
Esquema JSON para la sección Recursos de la plantilla ARM
Haga clic aquí para ver la imagen del código
"recursos": [

"condición": "<verdadero-para-despliegue-
este-recurso>",

"tipo": "<espacio de nombres-proveedor-


recurso / nombre-tipo-recurso>",

"apiVersion": "<api-version-of-resource>",

"nombre": "<nombre-del-recurso>",

"comentarios": "<sus-notas-de-referencia>",

"ubicación": "<ubicación-de-recurso>",

"depende de": [

"<array-of-related-resource-names>"

],

"etiquetas": {

"<nombre-etiqueta1>": "<valor-
etiqueta1>",

"<nombre-etiqueta2>": "<valor-
etiqueta2>"

},

"sku": {

"nombre": "<nombre-sku>",

"tier": "<sku-tier>",
"size": "<sku-size>",

"familia": "<sku-familia>",

"capacidad": <sku-capacity>

},

"tipo": "<tipo-de-recurso>",

"Copiar": {

"nombre": "<nombre-de-copia-loop>",

"recuento": <número-de-iteraciones>,

"modo": "<serial-o-paralelo>",

"batchSize": <number-to-deploy-serially>

},

"plan": {

"nombre": "<nombre-del-plano>",

"PromotionCode": "<plan-promotion-
code>",

"editor": "<plan-publisher>",

"producto": "<plan-product>",

"versión": "<versión-plan>"

},

"propiedades": {

"<configuración-para-el-recurso>",

"Copiar": [

"nombre": ,
"contar": ,

"aporte": {}

},

"recursos": [

"<array-of-child-resources>"

La Tabla 2-17 describe la sección Recursos de una plantilla ARM.


Tabla 2-17 Detalles de la sección Recursos de una plantilla ARM
Nombre Obligatorio Descripción

condición Este valor verdadero / falso indica si se debe implement


recurso. Imagine un ARM con varios recursos y algunos d
deshabilitados, dependiendo de la condición de un parám

tipo ✓ El tipo de recurso. El proveedor de recursos debe definir


con una parte, que se denomina espacio de nombres; un
nombre del recurso que desea crear, como Microsoft.Sq
/bases de datos .

apiVersion Esta es la versión de la API REST que desea utilizar. Por


versión es una fecha en formato IS0 8601 ( yyyy-mm-dd). P
ampliarse con algunos otros datos, como la última versió
REST para bases de datos ( 2019-06-01-preview). Si no se p
ningún valor, apiVersionse utilizará el valor de la propied
la plantilla.
Nombre Obligatorio Descripción

nombre ✓ El nombre del recurso que desea crear. Este nombre tien
restricciones. Debe definirse como un URI, siguiendo la e
RFC3986, ya que podría exponerse públicamente y debe
las reglas. Además, durante la implementación de recurs
validará la singularidad del nombre dentro y fuera de los
Azure, si se expondrá públicamente.

comentarios Solo para tu documentación.

localización Varios recursos, pero no todos, requieren la ubicación ge


Obviamente, este es un valor que preferirá hacer coincid
misma ubicación de otros recursos, en la misma suscripc
de recursos, o para hacer coincidir otros recursos que se
frecuentemente con este nuevo.
A modo de ejemplo, puede definir la ubicación como par
plantilla ARM y establecer su valor predeterminado para
mismo que el del grupo de recursos:
Haga clic aquí para ver la imagen del código
"defaultValue": "[resourceGroup (). location]"

depende de A veces, utilizará la misma plantilla ARM para implemen


recursos. Si este recurso necesita que se creen otros recu
declarados en la plantilla ARM antes de hacerlo, puede d
aquí como una lista separada por comas de nombres de r
identificadores de recursos.
Este atributo se usa para indicar otros recursos en el mis
deben crear otros recursos, externos a la plantilla, antes
esta plantilla, ya que ARM no puede verificarlos fuera de
esta ejecución.
El proceso de implementación analiza el dependsOnatribu
los recursos definidos y los ordena para crear primero a
dependencia (en paralelo), y luego, para seguir las caden
dependencia para finalizar la implementación sin fallas.
Nombre Obligatorio Descripción

etiquetas Una matriz con las etiquetas deseadas y sus valores para
en el siguiente formato:
{

"<nombre-etiqueta1>": "<valor-etiqueta1>",

"<nombre-etiqueta2>": "<valor-etiqueta2>"

sku La unidad de mantenimiento de existencias define la ver


específico del recurso que desea crear. Por ejemplo, en u
datos, puede definir la versión y el nivel de esta manera:
{

"nombre": "S0",

"tier": "Estándar"

amable Aquí puede definir otros recursos específicos. Algunos re


requieren este valor para su definición.

Copiar Cuando necesite más de una instancia del mismo recurso


el copyatributo para definir la cantidad, el nombre, el mo
paralelismo de la implementación con esta estructura:
Haga clic aquí para ver la imagen del código
{

"nombre": "<nombre-de-copia-loop>",

"recuento": <número-de-iteraciones>,

"modo": "<serial-o-paralelo>",
Nombre Obligatorio Descripción
"batchSize": <number-to-deploy-serially>

plan Algunos de los recursos tienen planes predefinidos, com


virtuales. En esos casos, aquí es donde se asigna la propi
configuración.

propiedades En este atributo se definen valores específicos para el re


recurso tendrá su propio esquema. Por ejemplo, la creac
base de datos SQL tendrá estas propiedades:
Haga clic aquí para ver la imagen del código
"propiedades": {

"collation": "cadena",

"createMode": "cadena",

"sourceDatabaseId": "cadena",

"sourceDatabaseDeletionDate": "cadena",

"restorePointInTime": "cadena",

"recoveryServicesRecoveryPointResourceId": "cad

"edición": "cadena",

"maxSizeBytes": "cadena",

"requiredServiceObjectiveId": "cadena",

"requiredServiceObjectiveName": "cadena",

"elasticPoolName": "cadena",

"readScale": "cadena",
Nombre Obligatorio Descripción
"sampleName": "cadena",

"zoneRedundant": "booleano"

recursos Aquí se definen los recursos que dependen de este a cre


contrario dependsOn, pero más específico para ciertas situ
redes virtuales, subredes y políticas de red.
Como puede ver en la Tabla 2-17 , hay muchas combinaciones, valores,
etc. diferentes en una plantilla ARM. La mayoría de los recursos tienen sus
propias variaciones y es imposible conocerlos todos.
Afortunadamente, hay un atajo. Para cualquier proceso de creación de
recursos, en la última página tiene un enlace para descargar la plantilla
ARM generada. Además, puede obtener la plantilla para un recurso ya
creado.
Mirando cualquier página de recursos, en la barra de herramientas
izquierda en el grupo Configuración, tiene un enlace para exportar la
plantilla y obtener su definición. Si tomamos la plantilla para nuestra base
de datos SQL ya creada, obtenemos aproximadamente 160 líneas de
código. (Consulte el ejemplo de código fuente Ch2-SQLDatabase-
ARM.json ).
La siguiente es la sección de parámetros de ese archivo. Puede ver cómo
se ha definido el nombre del servidor y se ha asignado un valor
predeterminado.
Sección de parámetros ARM de la muestra de base de datos SQL
Haga clic aquí para ver la imagen del código
"parámetros": {

"servers_dp900sqlserver_name": {

"defaultValue": "dp900sqlserver",

"tipo": "Cadena"

}
}

Si miras la linea
Haga clic aquí para ver la imagen del código
"nombre": "[concat (parámetros
('servers_dp900sqlserver_name'), '/ DP900_1 ')]",

notará que el nameargumento para la creación de la base de datos se fija al


nombre que le asignamos cuando la creamos: DP900_1. Sin embargo,
sería mejor si el nombre de la base de datos también se pudiera asignar
mediante parámetros. Entonces agregamos un nuevo parámetro a la
sección de parámetros con el siguiente código:
Parámetro ARM para el nombre de la base de datos agregado
Haga clic aquí para ver la imagen del código
"parámetros": {

"servers_dp900sqlserver_name": {

"defaultValue": "dp900sqlserver",

"tipo": "Cadena"

},

"nombre de la base de datos": {

"defaultValue": "DP900_1",

"tipo": "Cadena"

},

Y cambiamos la línea 19 para usar el nuevo parámetro:


Haga clic aquí para ver la imagen del código
"nombre": "[concat (parámetros
('servers_dp900sqlserver_

nombre '),' / ', parámetros (' nombre_base_datos '))] "


Estos cambios no funcionarán, ya que se requieren otros cambios para
aplicar correctamente el nombre de la base de datos. Revise la plantilla
completa, localice los lugares apropiados y realice los
cambios. Probablemente identificará otra información que podría
asignarse mediante parámetros. Por supuesto, tiene una solución en Ch2-
SQLDatabase-ARM_Modified.json .
Practique el uso de una plantilla ARM en el portal
Una vez que tenga lista una plantilla ARM, puede iniciar una
implementación basada en ella. Puede escribir implementación de
plantilla en el cuadro de búsqueda de Azure Portal o navegar al centro
Crear recurso en https://portal.azure.com/#create/hub y
seleccionar Implementación de plantilla (implementar con plantillas
personalizadas) .
1. Al hacer clic en Crear , Azure muestra una lista de vínculos
con información útil.
2. Haga clic en el enlace "Cree su propia plantilla en el
editor". Aparece un editor de plantillas.
3. Puede escribir su plantilla desde cero o cargar una
previamente guardada haciendo clic en el botón Cargar
archivo . El editor mostrará los segmentos en el árbol a la
izquierda de la página, y el número de elementos en cada uno,
similar a lo que puede ver en la Figura 2-19 .

Figura 2-19 Árbol del editor de plantillas ARM


4. Cuando hace clic en Guardar en la parte inferior de la página,
se le dirige a la página de Compra (está a punto de comprar uno
o un grupo de recursos aplicando la plantilla).
5. En la página Comprar , debe seleccionar el grupo de recursos
si los recursos definidos en su plantilla lo requieren. Aparecerán
cuadros de texto para cada parámetro con valores
predeterminados, lo que le permitirá ingresar los valores
deseados. Ingrese el nombre del servidor que ya creó en la
práctica anterior e ingrese DP900_2 como el nombre de la base
de datos.
6. Una vez creada la base de datos, navegue hasta
la página Descripción general de la base de datos . No es
necesario mantener activa esta base de datos, por lo que puede
eliminarla.
¿Necesita más revisión? Esquema ARM completo
Puede encontrar información detallada sobre la sintaxis de la plantilla ARM
en https://docs.microsoft.com/en-us/azure/templates/ .

USAR POWERSHELL PARA ADMINISTRAR LA IMPLEMENTACIÓN


Azure tiene muchas API para usar con PowerShell. No los cubriremos en
detalle aquí, pero veremos los elementos necesarios para realizar
implementaciones de bases de datos relacionales.
Para el trabajo con Azure de PowerShell, es necesario instalar
la azextensión, una nueva biblioteca que sustituye a la
anterior, AzureRM. Aún puede usarlo, AzureRMpero tenga en cuenta que
quedará obsoleto y perderá algunas de las nuevas funciones.
Para asegurarse de tener la extensión correcta, puede ejecutar el
siguiente código de PowerShell, que se incluye en el contenido
complementario como Install az Module.ps1 :

Verifique la versión anterior e instale la extensión az PowerShell


Haga clic aquí para ver la imagen del código
$ versión = $ PSVersionTable.PSVersion.ToString ()

if ($ versión-lt'5.1.0 ') {

Write-Warning -Message ('El módulo az requiere Powershell


versión 5.1 o superior.' +
'Su versión es $ versión. '+

'Vaya a https://docs.microsoft.com/en-
us/powershell/scripting/install/installing-

powershell para instalar la última versión ')

demás {

if ($ PSVersionTable.PSEdition -eq 'Escritorio' -y (Get-


Module -Name AzureRM

-ListAvailable)) {

Write-Warning -Message ('Módulo Az no instalado.


Tener tanto AzureRM como'

'Los módulos Az instalados al mismo tiempo no son


compatibles.' +

'Siga las instrucciones en' +

'https://docs.microsoft.com/en-
us/powershell/azure/uninstall-az-ps?view=azps-

4.3.0 # desinstalar-azure-powershell-msi '+

'para eliminarlo antes de instalar el Módulo az')

demás {

Install-Module -Name Az -AllowClobber -Scope


CurrentUser

}
El azmódulo requiere al menos la versión 5.1 de PowerShell, que es la
primera comprobación que ejecuta el script. Luego, si tiene la versión
adecuada, este script verifica si tiene la AzureRMextensión y, si la tiene,
indica dónde puede encontrar los pasos para eliminarla.
Finalmente, si se cumplen todas las condiciones, el script instala el
módulo.
Con el módulo instalado, puede usar este código, que puede encontrar en
el archivo Deploy ARM Template To Resource Group.ps1 .

Código para implementar una plantilla ARM usando PowerShell


Haga clic aquí para ver la imagen del código
Param (

[Parámetro (Obligatorio = $ false, HelpMessage =


'Nombre para el proceso de implementación')]

[cadena] $ Nombre,

[Parámetro (Obligatorio = $ false, HelpMessage =


'Grupo de recursos donde desea

ejecutar la plantilla ')]

[cadena] $ ResourceGroup,

[Parámetro (Obligatorio = $ false, HelpMessage =


'ruta y nombre de archivo para la plantilla

[C. \ carpeta \ nombrearchivo.josn] ')]

[string] $ TemplateFile,

[Parámetro (Obligatorio = $ false, HelpMessage =


'Nombre de la base de datos')]

[cadena] $ database_name,

[Parámetro (Obligatorio = $ false, HelpMessage =


'Ubicación')]

[cadena] $ database_location

)
#Antes de cualquier acción de Azure, debe autenticarse para
conectarse con la plataforma Azure

Connect-AzAccount

#Obtener las suscripciones pertenecientes al usuario


autenticado

$ subscriptions = Get-AzSubscription

if ($ subscriptions.Count -gt 1) #Si hay más de uno, permita


que el usuario seleccione

la suscripción

$ resp = 0

while ($ resp -lt 1 -o $ resp -gt $ subscriptions.count)

$ contador = 1

foreach ($ s en $ suscripciones)

Write-Host $ contador, $ s.Name

$ contador + = 1

$ resp = Read-Host 'Seleccione su suscripción deseada'

Set-AzContext $ suscripciones [$ resp-1]

# Defina un objeto de parámetros, que es una tabla hash en


PowerShell
$ paramObject = @ {

'database_name' = $ database_name

'database_location' = $ database_location

#Ejecuta el despliegue

New-AzResourceGroupDeployment -Name $ Name `

-ResourceGroupName $
ResourceGroup `

-TemplateUri $ TemplateFile
`

-TemplateParameterObject $
paramObject

El script comienza definiendo los parámetros y pidiéndole que ingrese los


valores. Luego, se conecta a Azure y solicita sus credenciales. El siguiente
paso es activar la suscripción (en caso de que tenga más de una). En caso
contrario, la suscripción única está activada de forma
predeterminada. Luego, se define una tabla hash con los parámetros que
desea enviar a la plantilla. Finalmente, el script ejecuta la
implementación.

USAR LA CLI DE AZURE PARA ADMINISTRAR LA


IMPLEMENTACIÓN
Azure CLI (interfaz de línea de comandos) es otro método que puede usar
para administrar Azure desde su escritorio. Puede instalar la CLI de Azure
en Windows, Linux o macOS y tener la misma funcionalidad. Busque la
última versión y las instrucciones de instalación
aquí: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli .
Después de instalar la CLI de Azure, abra una ventana del símbolo del
sistema (cmd). Como alternativa, puede usar PowerShell o Windows
Terminal con la CLI de Azure. En Linux, puede usar el shell Bash; para los
usuarios de macOS, PowerShell es una buena opción.
Una vez en la consola, debe conectarse a Azure. Escriba el siguiente
comando en una ventana de cmd o PowerShell:
Az iniciar sesión

Este comando abre su explorador predeterminado, donde inicia sesión.


Una vez que lo hace, la CLI de Azure muestra una lista de sus
suscripciones.
Luego, puede usar un comando como el comando de PowerShell. La
diferencia más importante es el hecho de que los parámetros deben
pasarse uno por uno:
Haga clic aquí para ver la imagen del código
az deployment group create --name < Name_of_the_Deployment >
--resource-

group < Resource_Group_name > --template-file <


Path_and_File_name > --parameters

< ParameterName_1 > = < Value_1 > < ParameterName_2 > = <
Value_2 >

Si desea crear una nueva base de datos llamada DP900_2 en la misma


región y suscripción, el comando tiene este aspecto:
Haga clic aquí para ver la imagen del código
az deployment group create --name NewDep --resource-group
"DP-900" --template-

archivo "Ch2-SQLDatabase-ARM_Modified.json" --parámetros


database_name = DP900_2 database_

ubicación = noreste de Europa

Puede usar la CLI de Azure directamente desde el portal, donde ya estará


autenticado, mediante Cloud Shell . En la barra superior de Azure Portal,
a la derecha cerca de su identificación de usuario, verá algunos
iconos. Hablamos de esos íconos anteriormente en este capítulo cuando
discutimos la selección de suscripciones. El ícono más a la izquierda en
esa mini barra de herramientas es Cloud Shell. Cuando hace clic en él por
primera vez, aparece un panel en la parte inferior de la página del portal,
donde debe seleccionar su preferencia de entorno de shell, ya sea Bash o
PowerShell. Puede cambiarlo más tarde, desde dentro de Cloud Shell,
pero debe elegir un entorno de shell para comenzar.
A continuación, se le pedirá que seleccione una suscripción en la que
Cloud Shell creará un área de tienda (una cuenta de almacenamiento)
para que la use el shell. Cuando seleccione la suscripción, Azure creará la
cuenta de almacenamiento con un nombre generado automáticamente.
Nota Establezca su lugar de almacenamiento personalizado
Puede hacer clic en el enlace Configuración avanzada para definir su grupo de recursos,
ubicación y nombres personalizados para la cuenta de almacenamiento y el recurso
compartido de archivos.

En este caso, el shell no tendrá acceso a su unidad local, por lo que debe
cargar su plantilla en algún lugar de Azure. Esa es una de las razones por
las que ha creado un recurso compartido de archivos.
1. En el portal, ubique la cuenta de almacenamiento creada para
su Cloud Shell. Si usó la configuración predeterminada, se
llamará cloud-shell-storage- <region>.
2. Haga clic en el mosaico Contenedores .
3. Una vez en la lista de Contenedores, haga clic en
el botón Contenedor para agregar un contenedor nuevo.
4. Escriba un nombre (Plantillas es una buena opción) y
seleccione el nivel de acceso. Tenga en cuenta que configurar el
nivel de acceso como Privado no permitirá que Cloud Shell lea el
contenido, por lo que debe elegir otra opción. Puede elegir el
acceso privado, pero debe asegurarse de haber leído el acceso
anónimo para cada archivo dentro del contenedor.
5. Una vez creado el contenedor, haga clic en Cargar para
agregar su plantilla.
6. Para usar una plantilla del contenedor, haga clic en los puntos
suspensivos a la derecha del archivo y
seleccione Propiedades . En el panel resultante, copie la URL del
archivo.

Sugerencia para el examen


La configuración de Cloud Shell crea la cuenta de almacenamiento y un
archivo compartido. Sin embargo, no puede usar un recurso compartido
de archivos para almacenar sus plantillas, ya que la tienda envía los
archivos de una manera diferente. Debe crear un contenedor que
entregue el contenido en formato binario.
Con la plantilla en el almacenamiento de Azure, puede usar el
mismo azcomando que usó en CLI Shell pero cambiar el template-
fileparámetro template-uricon la URL que copió de DP900_2 como su
valor.
Haga clic aquí para ver la imagen del código
az deployment group create --name <New_Deploy_name> --
resource-group "<your_

resource_Group_name> "--template-uri" https: //


<yourcloudshellstorage> .blob.core.

windows.net/<Your_Container_Name>/ <ARM_TemplateFileName>
.json "--parameters database_

nombre = <nombre_base_datos> ubicación_base_datos =


<ubicación>

Identificar los componentes de seguridad de los datos (p.


Ej., Firewall, autenticación)
Asegurar su información es una de las preocupaciones más importantes al
almacenar datos en la nube. Azure implementa una estructura de
seguridad multicapa para proteger su información del acceso no
autorizado, representada gráficamente en la Figura 2-20 .
Figura 2-20 Capas seguras de datos

PROTECCIÓN DE LA INFORMACIÓN
Estos son los métodos que utiliza Azure para proteger su información a
nivel de almacenamiento:
1. Cifrado físico La información almacenada físicamente está
cifrada de forma predeterminada. Esto asegura que incluso en el
caso muy raro de que alguien pueda alcanzar el almacenamiento
físico, no podrá leerlo.
2. Azure SQL Database e Azure SQL Managed
Instance Aplican el cifrado transparente de datos (TDE)
mediante el algoritmo Advanced Encryption Standard (AES), que
se aplica directamente a cada proceso de creación de la base de
datos. El algoritmo utiliza un certificado generado
automáticamente, que se rota según sea necesario, y no hay
necesidad de administrarlo por su parte. Si prefiere usar sus
propios certificados, puede administrarlos en Azure Key
Vault . Este enfoque es útil si necesita separar las
responsabilidades de administración de la base de datos del área
de seguridad.
¿Necesita más revisión? Usando su propia clave de encriptación
Para obtener una comprensión más profunda de cómo proteger los datos con sus
propios certificados en Azure Key Vault, lea sobre Bring Your Own Key
(BYOK) en https://docs.microsoft.com/en-us/azure/azure-sql/database/
resumen-byok-de-cifrado-de-datos-transparente .
3. Siempre encriptadoPuede configurar un cifrado a nivel de
columna para datos confidenciales, que incluye cualquier
información personal. Hacerlo es un requisito para algunos
escenarios y / o países que tienen leyes que protegen los datos
personales. O tal vez desee proteger la información, como los
números de tarjetas de crédito en las bases de datos de los sitios
de comercio electrónico. El cifrado se produce en el lado del
cliente, por lo que cualquier administrador de base de datos que
acceda a los datos no podrá leer las columnas siempre cifradas
como texto sin formato. Dado que el proceso de cifrado /
descifrado se produce en el nivel del controlador, la aplicación en
ejecución necesita acceder al almacén de certificados para poder
realizar las tareas. La tienda podría ser una tienda local, como la
tienda de certificados para un usuario, o una computadora, o un
almacenamiento remoto como Azure Key Vault.
4. Enmascaramiento dinámico de datos Otra característica
que puede aplicar a los datos es la capacidad de enmascarar
parte de la información en ciertas columnas, como números de
tarjetas de crédito, según algunas reglas y niveles de
permiso. Puede aplicar diferentes máscaras, incluso una máscara
personalizada, por columna para mostrar solo una parte de la
información a los usuarios. Los miembros de los roles permitidos
podían ver toda la información, pero el resto de los usuarios
siempre obtendría la versión enmascarada. Aún mejor, cuando
algún usuario quiere "investigar" datos filtrando filas por
columnas enmascaradas, la información mostrada siempre será
inespecífica.
PROTECCIÓN CONTRA AMENAZAS
Azure proporciona los siguientes métodos para ayudarlo a evitar
amenazas y proteger sus datos:
• Los registros de Azure Monitor y Event Hubs Audit SQL
Database, SQL Managed Instance y Azure Synapse se pueden
configurar para habilitar la auditoría a nivel de base de datos o
servidor. De esta manera, puede rastrear cualquier acción en la
base de datos. Puede enviar los resultados de la auditoría a una
cuenta de almacenamiento (Blob Storage) o usar un par de
servicios de auditoría como Event Hub o Log Analytics, donde
puede obtener estadísticas directamente desde Azure. Sin embargo,
el uso de Event Hub requiere que tenga algún procedimiento de
transmisión para capturar los eventos. Para configurar la auditoría,
vaya a la base de datos deseada en Azure Portal y, en el grupo
Seguridad en la barra de herramientas de la izquierda, haga clic en
la opción Auditoría . Allí puedes seleccionar tus repositorios
(puedes seleccionar más de uno) y configurar las propiedades para
cada uno.
• Protección contra amenazas avanzada Esta función analiza
todas las comunicaciones con su base de datos y es capaz de enviar
alertas en situaciones específicas, como una posible inyección de
SQL, un inicio de sesión fallido, un intento de inicio de sesión desde
un dominio inusual, una ubicación de exportación inusual,
etc. Además de las alertas, puede analizar la información recopilada
explorando las alertas en Azure Portal. La característica de
Protección contra amenazas avanzada es parte del Centro de
seguridad de Azure, donde puede ver las alertas de seguridad de
todos los recursos de su suscripción. Para configurar la función
Protección avanzada contra amenazas, debe seleccionar la base de
datos deseada y, en el grupo Seguridad en la barra de herramientas
de la izquierda, haga clic en Seguridad avanzada .

GESTIÓN DE ACCESO
Azure proporciona varios procedimientos que puede utilizar para
permitir el acceso a sus recursos:
1. Autenticación El acceso a los recursos de datos requiere la
identificación de los usuarios, es decir, autenticación. La base de
datos de SQL Server, la instancia administrada de SQL y Azure
Synapse utilizan dos tipos de métodos de autenticación:
1. Autenticación SQL Con este método, los usuarios se registran en
una ubicación de base de datos / servidor, y es el propio motor el que
realiza la identificación del usuario. Existe al menos un usuario
administrador, que se crea durante el proceso de creación de la base de
datos. Es una buena práctica definir uno o más usuarios diferentes para
realizar las tareas diarias, reservando el usuario administrador solo para
el trabajo de gestión.
2. Autenticación de Azure Active Directory Con este método, el
usuario debe ser reconocido por Azure Active Directory, que puede
sincronizarse con su Active Directory local, en caso de que tenga un back-
end híbrido. La infraestructura de Azure SQL Server y Azure Synapse
permite la creación de inicio de sesión desde un proveedor externo. El
usuario puede iniciar sesión con tres métodos de autenticación de Active
Directory:
1. Active Directory: universal
con compatibilidad con MFA cuando se requiere
autenticación multifactor (MFA) para el usuario.
2. Active Directory: contraseña , por lo que el
usuario debe ingresar el nombre de inicio de sesión y la
contraseña de Active Directory.
3. Active Directory: integrado , utilizando el
mismo SID asignado al usuario actual que inició sesión
en la computadora cliente. El uso de este método de
autenticación le permite definir límites de seguridad
por grupos de Active Directory, mediante la creación de
inicios de sesión SQL para el grupo, en lugar de para los
usuarios uno por uno. De esta forma, los
administradores de Active Directory podrían asignar o
revocar permisos de acceso, gestionando las
membresías del grupo directamente.
2. Autorización Una vez que el usuario accede a la base de
datos, puede administrar los niveles de acceso para los usuarios y
grupos utilizando los procedimientos estándar para las bases de
datos de SQL Server, agregándolos a los roles de la base de datos
o otorgando permisos específicos a algunos usuarios. Aquí aplica
las mismas mejores prácticas recomendadas para la
administración de permisos, especialmente si habilita la
autenticación de Active Directory. Deje la membresía en el lado
de Active Directory y otorgue permisos a la cuenta de grupos de
Active Directory. De esta manera, el equipo de seguridad puede
administrar fácilmente los permisos en Active Directory, en un
solo paso, sin tener que administrar la seguridad de la base de
datos cada vez.
Practique la habilitación de la autenticación de Azure Active Directory
En esta práctica, permitirá el acceso a ciertos usuarios de Active Directory
y configurará sus permisos.
Si es necesario, descargue e instale SQL Server Management Studio
(SSMS) desde aquí: https://docs.microsoft.com/en-us/sql/ssms/download-
sql-server-management-studio-ssms .
EJERCICIO 2-2 Conéctese a su base de datos
1. Haga clic en el enlace Mostrar cadenas de conexión de la
base de datos en la página Descripción general de su base de
datos. Busque la cadena de conexión ADO.NET.
2. Copie el serverargumento de la cadena de conexión.
3. Abra SSMS y, cuando le solicite que se conecte a una base de
datos, pegue el serverargumento copiado ; luego seleccione
Autenticación SQL, ingrese un nombre de usuario y contraseña, y
haga clic en Conectar .
4. Una vez que esté conectado, expanda el nodo Nombre del
servidor, expanda Bases de datos y seleccione la base de
datos DP900_1 .
EJERCICIO 2-3 Agregue la cuenta de Active Directory para administrar su
base de datos
1. En la página de descripción general de la base de datos ,
haga clic en el nombre del servidor, que lo enviará a la página de
descripción general del servidor.
2. En el grupo Configuración en la barra de herramientas de la
izquierda, haga clic en la opción de administración de Active
Directory . Esto le permitirá definir un administrador de Active
Directory que controlará los inicios de sesión de otros usuarios
en el futuro (esta cuenta debe consultar Active Directory para
buscar validaciones y membresías de grupos).
3. Haga clic en Establecer administrador y, en la lista de
usuarios, seleccione el usuario que desea asignar como
administrador para las autorizaciones de Active Directory al
servidor SQL. Debe seleccionar una cuenta que no pertenezca a
los dominios públicos de Microsoft,
como outlook.com , live.com , Hotmail.com u onmicrosoft.com (@
<Su nombre de dominio> .onmicrosoft.com).
4. Haga clic en Guardar y espere a que finalice el proceso.
EJERCICIO 2-4 Agregar cuentas de grupo o usuario
1. Vaya a SSMS y conéctese a la base de datos utilizando el
usuario administrador de Active Directory asignado en
el ejercicio 2-2 con el método de autenticación de Azure
Directory: contraseña.
2. Expanda el árbol y, con su base de datos seleccionada, haga
clic en Nueva consulta en la barra de herramientas, o haga clic
con el botón derecho en la base de datos y seleccione Nueva
consulta en el menú contextual.
3. Escriba la siguiente declaración para crear un nuevo usuario
para la base de datos. Esto creará un usuario contenido para la
base de datos, no un usuario del servidor.
CREAR USUARIO [<Azure_AD_principal_name> ] DEL PROVEEDOR EXTERNO;

Nota Evitar errores de sintaxis en las convenciones de SQL Server


Dado que el símbolo @ se usa para identificadores de variables en SQL Server, debe incluir
el nombre de usuario entre corchetes. Puede usar la misma sintaxis para agregar un grupo
de Active Directory para permitir el acceso a todos sus miembros.

SEGURIDAD DE LA RED
La siguiente capa de seguridad está diseñada para proteger las
comunicaciones de red y utiliza los siguientes elementos:
1. Cortafuegos En varios asistentes que ha visto en este
capítulo, aparece una opción para agregar la IP del cliente a la
seguridad de la red. Este es el mecanismo automatizado que
utiliza Azure para garantizar que su computadora acceda a la
base de datos. La configuración del firewall es para el servidor
SQL, no para cada base de datos. En la página Descripción general
de su servidor SQL, haga clic en el enlace Mostrar configuración
del firewall . Luego, puede ver, agregar y eliminar reglas para
direcciones IP o rangos de IP específicos. Le recomendamos que
limite los rangos tanto como sea posible para evitar
intrusiones. La dirección IP automatizada se agrega cuando crea
el recurso. O si hace clic en el botón Agregar dirección IP del
cliente , use una nomenclatura como ClientAccess <Fecha y
hora>. Le sugerimos que cambie el nombre del acceso de cliente
que creó para identificarlo fácilmente por usuario. Al hacerlo,
sabrá quién se está conectando a cada servidor. Puede incluir
rangos de IP de VPN para facilitar la conexión desde la ubicación
local o mediante usuarios conectados a VPN.
2. Redes virtuales En la misma página donde configura las
reglas de firewall, puede configurar el acceso otorgado para
redes virtuales desde cualquier suscripción a la que tenga
acceso. Durante el proceso de selección de la red virtual, puede
seleccionar una subred específica por nombre o prefijo de
dirección.

Identificar problemas básicos de conectividad (p. Ej.,


Acceso desde las instalaciones, acceso con redes virtuales
de Azure, acceso desde Internet, autenticación, firewalls)
A veces, tendrá que resolver problemas con las conexiones de la base de
datos. Los problemas dependen de fallas generales o configuraciones
incorrectas, o son fallas transitorias, como las generadas por cambios en
la implementación, como actualizaciones automáticas, aumento o
reducción de tamaño o acciones similares. Debe realizar diferentes
acciones para fallas transitorias que para otros problemas, ya que puede
tomar acciones preventivas para el primer grupo, pero debe solucionar
los problemas para el segundo.
Estos son los problemas comunes y cómo solucionarlos o (para fallas
transitorias) cómo estar preparado para reaccionar ante ellos:
1. Se produjo un error relacionado con la red o específico de
la instancia al establecer una conexión con su servidor. Este
es un error que podría generar la aplicación. Por lo general, hay
algún problema en la conexión entre la aplicación y la base de
datos. Las razones más comunes son:
1. La cadena de conexión no usa el protocolo correcto, que es 1433.
Verifique la cadena de conexión en la aplicación y compárela con la
estándar que ve en el vínculo Cadenas de conexión en la página
Información general de su base de datos en Azure Portal.
2. La conexión no está configurada para utilizar TCP / IP. El protocolo
de comunicación único habilitado en Azure SQL Database es TCP /
IP. Verifique para asegurarse de que esté habilitado
usando cliconfg.exeen la computadora cliente.
3. Ocurre un tiempo de espera para la conexión. A veces, las
conexiones a Internet de baja velocidad pueden hacer que la conexión se
interrumpa cuando se agota el tiempo de espera. Si observa la cadena de
conexión predefinida, establece el tiempo de espera en 30 segundos, que
solía ser suficiente. Sin embargo, puede aumentar esta configuración si es
necesario.
4. Se producen problemas de conexión no relacionados con el motor
de la base de datos. Verifique los problemas de conectividad de bajo nivel
mediante el uso de herramientas de diagnóstico de red. O simplemente
intente conectarse desde otras computadoras y ubicaciones para
identificar el problema.
5. Un firewall ha bloqueado la IP. Como describimos más adelante, el
servidor de seguridad del servidor debe tener la dirección IP en una "lista
blanca" de las direcciones IP de los clientes a las que se les permite
conectarse. Asegúrate de que así sea. Recuerde que el proveedor de
Internet puede cambiar la dirección IP pública a menos que se asigne una
IP fija a su punto de conexión externo.
2. No se puede abrir la base de datos "maestra" solicitada
por el inicio de sesión. El inicio de sesión falló. Este error
aparece cuando se establece una conexión sin una base de datos
predeterminada. Si el usuario que se conecta es el usuario
administrador del servidor SQL, puede acceder a la base de datos
maestra. Sin embargo, se pueden crear otros usuarios como
usuarios contenidos y no tendrán derechos de lectura en el
maestro. Para solucionar este problema, debe establecer la base
de datos predeterminada, que normalmente puede definir
directamente en la cadena de conexión. Si el problema aparece
cuando está intentandoconectarse desde SSMS, debe definir la
base de datos predeterminada en la pestaña Propiedades de
conexión en el cuadro de diálogo Conectar a la base de datos
(haga clic en el botón Opciones para abrir este cuadro de
diálogo). Observe la Figura 2-21 .

Figura 2-21 Propiedades de la conexión SSMS


3. No se puede iniciar sesión en el servidor. Este es un error
de autenticación / autorización. Además de los obvios errores de
escritura para el nombre de usuario o contraseña, o la ausencia
de la cuenta específica, si el inicio de sesión es una cuenta SQL, un
administrador debe consultar la tabla sys.logins de la base de
datos maestra si la cuenta no ha sido deshabilitada (tal vez para
varios intentos mal escritos). En ese caso, puede volver a
habilitar la cuenta. Si la autenticación de Azure Active Directory
está en uso, la seguridad podría depender de los cambios de AD,
el movimiento del usuario de un grupo o el hecho de que no haya
una cuenta de AD para el usuario, o cualquier grupo al que
pertenezca el usuario, que permita al usuario para llegar a la base
de datos. Puede utilizar el siguiente código para buscar el estado
de un nombre de usuario:
Buscar al usuario para una cuenta deshabilitada
Haga clic aquí para ver la imagen del código
DECLARAR @nombredeusuario VARCHAR (100);

SET @username = '<type_the_user_name_here_here>';

SELECCIONAR nombre,

está desactivado

DESDE sys.sql_logins

DONDE nombre COMO '%' + @nombredeusuario + '%';

4. Errores de recursos. Azure SQL Database, Azure Synapse y


otras implementaciones de bases de datos se definen con ciertos
límites de tamaño, memoria, núcleos virtuales, etc. Si se alcanzan
algunos de los límites, los errores específicos generarán errores
sobre transacciones de larga duración o consultas de alto
consumo; También se activarán los enclavamientos. El
administrador debe evaluar estos problemas y tomar las medidas
adecuadas para solucionarlos.
¿Necesita más revisión? Encontrar recursos sobreutilizados
Para obtener información detallada sobre los errores de uso excesivo de recursos
más comunes, vaya a https://docs.microsoft.com/en-us/azure/azure-
sql/database/troubleshoot-common-errors-issues#resource-governance-errors .
5. Fallos transitorios. Como ya se describió, se trata de fallas
que ocurren durante períodos cortos de tiempo, generalmente
unos segundos, generados por algún cambio en el lado del
servidor / base de datos SQL o por algunos eventos imprevistos
en la base de datos. Estas situaciones podrían mitigarse de forma
preventiva emitiendo procedimientos específicos para
comprobarlas y reintentar la conexión. Puede hacer esto
estableciendo la conexión en un bucle de reintento hasta que se
alcance el número máximo de intentos o la conexión sea
exitosa. Los errores transitorios se limitan a una pequeña lista de
códigos de error. Puede verificar los códigos de error en la
propiedad Number de SQLExceptioncuando una aplicación intenta
establecer una conexión, y luego reintentar solo uno de los
errores transitorios y generar el error en cualquier otro.
¿Necesita más revisión? Buscando errores transitorios
Puede obtener la lista de códigos de error transitorios y aprender a definir el
código para administrarlos en https://docs.microsoft.com/en-us/azure/azure-
sql/database/troubleshoot-common-errors- Issues # transient-failure-error-
messages-40197-40613-and-others .

Identificar herramientas de consulta (por ejemplo, Azure


Data Studio, SQL Server Management Studio, utilidad
sqlcmd, etc.)
Por lo general, se accederá a las bases de datos desde aplicaciones y sitios
web personalizados. Sin embargo, hay muchas tareas administrativas u
otras situaciones en las que necesita una herramienta para ejecutar
consultas en la base de datos. A continuación, se ofrece una breve
descripción general de las herramientas más importantes.

EDITOR DE CONSULTAS
En la página Descripción general de su base de datos, en la barra de
herramientas de la izquierda, hay un enlace al Editor de consultas, que
cuando se activa, le pedirá las credenciales para conectarse a la base de
datos.
Nota Este es un componente de vista previa y podría cambiar
En el momento de escribir estas líneas, el Editor de consultas es una versión preliminar. Por
lo tanto, es posible que observe algunos cambios entre lo que se explica aquí y lo que ve.

Después de abrir el editor, muestra un árbol a la izquierda, donde puede


ver los objetos (tablas, vistas, procedimientos) en su base de datos. A la
derecha, tiene una ventana en la que puede escribir su consulta. En esta
ventana, IntelliSense está disponible para ayudarlo a elegir nombres de
objetos como nombres de tablas, pero no hay funcionalidad de arrastrar y
soltar desde el árbol al editor. Una barra de herramientas en la parte
superior del editor le permite ejecutar la consulta, cancelarla, guardarla o
exportar el resultado a un archivo CSV, JSON o XML.
Cuando hace clic en el botón Ejecutar consulta, el resultado aparece en la
parte inferior del editor, utilizando un formato de tabla, en una pestaña
titulada Resultados. Otra pestaña, Mensajes, permite ver otra información
sobre la consulta, como la cantidad de filas obtenidas o mensajes de error
o advertencia.
Finalmente, otro botón Mostrar en la barra de herramientas le permite
cambiar los elementos mostrados entre el editor y el resultado (Mostrar
todo), solo el editor Mostrar solo el editor), o solo los resultados (Mostrar
solo resultados).

UTILIDAD SQLCMD
Esta utilidad de línea de comandos es una utilidad liviana que se usa para
ejecutar consultas. Históricamente, sqlcmd fue una de las primeras
herramientas de consulta para SQL Server en sus versiones iniciales. Sin
embargo, la herramienta no es heredada. Las últimas versiones, a partir
de la 13.1, pueden usar la autenticación de Azure AD, incluido el método
MFA; puede ejecutar la mayoría de las consultas que desee; y son capaces
de utilizar comunicaciones totalmente cifradas durante toda la sesión.
Nota Descargue la herramienta sqlcmd
Puede descargar sqlcmd para plataformas 64x
en https://go.microsoft.com/fwlink/?linkid=2082790 y la misma herramienta para
plataformas x32 aquí: https://go.microsoft.com/fwlink/?linkid=2082695 .

Para usar la herramienta, abra un símbolo del sistema en su sistema


operativo y ejecute sqlcmdcon la información adecuada sobre el servidor,
el método de autenticación y las credenciales:
Haga clic aquí para ver la imagen del código
sqlcmd -S < server > .database.windows.net -d < database > -U
< user-name > -G

Una vez conectado, la utilidad le permite ingresar una o más


declaraciones T-SQL y ejecutarlas escribiendo GO para finalizar el
lote. Los resultados aparecerán en la misma ventana. Debe
escribir quit para salir de la aplicación. La Tabla 2-18 describe los
conmutadores comunes para sqlcmd.
Tabla 2-18 Conmutadores comunes para sqlcmd
Cambiar Usar para
-C
Certificado de servidor de confianza

-d
Nombre de la base de datos

-E
Utilice una conexión de confianza

-g
Habilitar el cifrado de columnas

-G
Use Azure Active Directory para la autenticación

-H
Nombre de host

-l
Se terminó el tiempo para la autenticación

-N
Cifrar conexión

-P
Contraseña

-q
"consulta cmdline"

-Q
"cmdline query" y salir

-S
Servidor

-t
Tiempo vencido de consulta

-U
Ingresar identificación
Tenga en cuenta que sqlcmd distingue entre mayúsculas y minúsculas,
por lo que el modificador -Dno es el mismo -dy no funcionará.

AZURE DATA STUDIO


Esta es una aplicación de código abierto que se puede utilizar en
Windows, Linux o macOS. Dado que es de código abierto, puede obtener
el código y modificarlo para satisfacer sus necesidades específicas. La
licencia no le permite redistribuir sus cambios alojando su versión en la
nube.
La herramienta es multilingüe y configurable, y puede mejorarla
instalando extensiones disponibles de Microsoft y otros autores.
Nota Última versión de Azure Data Studio
Puede descargar Azure Data Studio en https://docs.microsoft.com/en-us/sql/azure-data-
studio/download y el código fuente desde
aquí: https://github.com/microsoft/azuredatastudio .

Una vez instalado e iniciado, Azure Data Studio muestra una página de
bienvenida con las acciones de inicio más utilizadas, como conectarse a
una base de datos o abrir un archivo.
Para conectarse a su base de datos, haga clic en el enlace Abrir
conexión. Esto mostrará una ventana a la derecha, pidiéndole los
parámetros de conexión (vea la Figura 2-22 ).
Figura 2-22 Ventana Detalles de conexión de Azure Data Studio
Cuando complete la información requerida para la conexión y haga clic en
el botón Conectar, la conexión se guardará. Puede agregar un nombre
específico a la conexión para identificarla fácilmente más adelante.
El cuadro de diálogo tiene un botón Avanzado. Haga clic en él para definir
otras propiedades de conexión, como Tiempo de espera de conexión y
Procesamiento asincrónico.
El uso de Azure Active Directory requerirá que agregue la cuenta que
desea usar, en lugar de solicitar el nombre de usuario y la
contraseña. Cuando agregue la cuenta, será redirigido a una página de
inicio de sesión de Azure y la cuenta se agregará a Azure Data Studio si la
autenticación es correcta.
Una vez conectado, Azure Data Studio muestra información sobre la base
de datos, incluida la edición, el nivel de precios y una lista de los objetos
de la base de datos, como puede ver en la figura 2-23 .
Figura 2-23 información de la base de datos de Azure Data Studio
Como puede ver en la Figura 2-23 , una barra de herramientas en la parte
superior del área de información de la base de datos le permite crear una
nueva consulta o un nuevo cuaderno (explicado en un momento), realizar
una copia de seguridad o una restauración (en vista previa a partir de este
momento). escritura) y otras tareas.
Cuando crea una nueva consulta en la ventana de consulta, tendrá soporte
IntelliSense para objetos de base de datos, como puede ver en la Figura 2-
24 .

Figura 2-24 IntelliSense en Azure Data Studio


Después de ejecutar la consulta, los resultados aparecen como una tabla
en la parte inferior de la ventana y una segunda pestaña, como en el
Editor de consultas en Azure Portal, muestra mensajes e información
sobre la ejecución.
Nota ayudante de sintaxis T-SQL con IntelliSense
Además de IntelliSense para tablas y vistas, Azure Data Studio ofrece IntelliSense para
nombres de columna. Hablaremos sobre la sintaxis SQL más adelante en este capítulo.

Azure Data Studio también puede conectarse y consultar bases de datos


de PostgreSQL. Puede ser una herramienta valiosa cuando trabaja con
diferentes tecnologías de conjuntos de datos al mismo tiempo. Es posible
instalar solo la extensión PostgreSQL.
Dado que Azure Data Studio es un desarrollo de código abierto, es posible
que tengamos más soporte de idiomas en un futuro próximo.
Otra característica interesante es la capacidad de administrar el control
de código fuente utilizando repositorios GIT, por lo que puede
administrar el control de versiones, el intercambio y todas las
características que tienen los repositorios GIT directamente desde la
herramienta.
El concepto de Notebook . Una de las excelentes características que
ofrece Azure Data Studio es la compatibilidad con Jupyter
Notebook. Jupyter significa tres lenguajes de programación: Julia , Python ,
y R . Jupyter Notebook puede mezclar texto, gráficos y código en el mismo
cuaderno, mejorando la experiencia del lector. Más adelante en este
capítulo, verá la sintaxis SQL en detalle y usará un cuaderno como un
conjunto de ejemplos para explorar la experiencia.
El cuaderno original fue desarrollado para mezclar texto con código
Python, pero los conceptos funcionales implicaban el uso de una interfaz
o kernel para procesar el lenguaje. Era solo cuestión de tiempo antes de
que más kernels, como SQL Server, comenzaran a usar el mismo principio.

ESTUDIO DE ADMINISTRACIÓN DE SQL SERVER


SSMS es la herramienta que utilizan los DBA de SQL Server para la
administración y el mantenimiento de bases de datos y los
desarrolladores para diseñar objetos y consultas y analizar el
comportamiento de las consultas y optimizarlas. Esta herramienta solía
ser parte del medio de instalación de SQL Server hasta que fue renovada
como descarga independiente para permitir su uso, precisamente, para
administrar Azure SQL Databases. Es la herramienta oficial de Microsoft.
Nota Última versión de SQL Server Management Studio
Puede descargar SSMS aquí: https://docs.microsoft.com/en-us/sql/ssms/download-sql-
server-management-studio-ssms .

Al igual que Azure Data Studio, SSMS le permite conectarse a varios


servidores en diferentes ubicaciones. Ya discutimos la conexión a bases
de datos usando SSMS en este capítulo, pero revisemos el procedimiento
aquí.
Después de abrir SSMS, la aplicación le pide que se conecte a una base de
datos:
• Debe usar los datos del servidor, incluido el protocolo (tcp :) y
el puerto (: 1433), en la cadena de conexión ADO.NET que definió
en el vínculo Cadenas de conexión de la página de su base de datos
en Azure Portal.
• Luego, elija el método de autenticación e ingrese las
credenciales apropiadas.
• Si el usuario es un usuario de base de datos contenido, debe
ingresar el nombre de la base de datos en la pestaña Propiedades
de conexión. Consulte la Figura 2-21 para obtener una explicación
del mismo paso.
SSMS es más que un ejecutor de consultas. Con él, un DBA puede
gestionar la seguridad, las tareas administrativas, las tareas de
mantenimiento, etc. Algunas de estas tareas no están habilitadas para las
bases de datos de Azure, ya que las realiza automáticamente la
plataforma Azure, pero la herramienta tiene más funcionalidades para
mejorar el rendimiento de la base de datos:
1. Diagramas de base de datos Esta herramienta SSMS le
permite ver y diseñar las relaciones entre las tablas de su base de
datos. Puede crear nuevas tablas en el diseñador y luego realizar
cambios en las columnas de cada tabla, agregarlas, cambiarlas o
eliminarlas. Puede agregar una tabla en el diseñador y luego
hacer clic con el botón derecho en ella para agregar las tablas
relacionadas de modo que pueda ver fácilmente las relaciones
(consulte la Figura 2-25 ).
Figura 2-25 Diagrama de la base de datos SSMS
2. Generación de scripts SSMS tiene una opción para generar el
script para uno, varios o incluso todos los objetos de la base de
datos, para reconstruirlos en la misma o en otra base de datos. El
Asistente para generar secuencias de comandos comienza con la
página Elegir objetos, donde puede elegir qué objetos desea
generar la secuencia de comandos (consulte la Figura 2-
26 ). Luego, la página siguiente le pide que indique dónde desea
generar el script (en el portapapeles, un archivo o una nueva
ventana de consulta). Además, puede hacer clic en Avanzado y en
la ventana resultante, definir varias opciones:
1. Si desea que la secuencia de comandos suelte, cree o suelte y cree
los objetos
2. Si desea incluir índices
3. Si desea el script para un motor de SQL Server independiente o una
base de datos de Azure SQL
4. Otras propiedades específicas
Figura 2-26 Asistente para generar scripts de SSMS
3. Plan de ejecución SSMS consulta al motor subyacente los
pasos del plan de consulta y los representa gráficamente.
El gráfico es interactivo; le permite hacer clic en cualquiera de los
pasos y ver exactamente el costo estimado de ese paso en la
ejecución final, lo que le ayuda a refinar la consulta. En la Figura
2-27 puede ver la información que se muestra cuando mueve el
puntero del mouse sobre uno de los pasos del plan de ejecución.
Figura 2-27 plan de consultas SSMS
4. Implementación de la base de datos En el menú Tareas,
cuando hace clic con el botón derecho en la base de datos, tiene
varias acciones que puede realizar. Una opción abre el Asistente
de implementación de la base de datos, que le permite copiar
toda la base de datos a otro servidor, incluida una base de datos
SQL de Azure. Este proceso se puede realizar moviendo la base
de datos físicamente, cuando el origen y el destino son servidores
locales, o generando un script que crea los objetos e inserta los
datos. Este proceso puede llevar mucho tiempo, dependiendo de
la cantidad de datos que contenga la base de datos.
5. Otros Con el mismo menú Tareas, puede actualizar una
aplicación de nivel de datos, cifrar columnas, importar archivos
planos e importar o exportar datos. Las últimas versiones
incluyen administración para portátiles Jupyter como Azure Data
Studio.

OTRAS HERRAMIENTAS DE CONSULTA


Varias herramientas para desarrolladores tienen capacidades de consulta
de bases de datos.
Por ejemplo, Visual Studio Code puede agregar la extensión SQL Server
( mssql ), que tiene capacidades de diseño y consulta. Una vez que se
agrega, puede definir perfiles de conexión y navegar por los objetos; cree
algunas consultas sencillas, como seleccionar las primeras 1000 filas; o
generar un script para la creación o eliminación de objetos (eliminar).
Con Visual Studio (cualquier edición), la herramienta Explorador de
servidores administra las conexiones de la Base de datos SQL, como
puede ver en la Figura 2-28 , donde puede agregar bases de datos, mirar
sus objetos, obtener datos de ellos, definir consultas, crear nuevos
objetos, y otras tareas.

Figura 2-28 Explorador de servidores de Visual Studio

HABILIDAD 2.4: DESCRIBIR TÉCNICAS DE


CONSULTA PARA DATOS USANDO LENGUAJE
SQL.
El lenguaje de consulta estructurado (SQL) es un conjunto de comandos,
modificadores y definiciones que componen un lenguaje, centrado en
recuperar información de almacenamientos de datos
relacionales. Apareció a principios de la década de 1970 y actualmente se
reconoce como un lenguaje estándar bajo las regulaciones ISO y ANSI.
La estandarización ISO es la ISO / IEC 9075 y se revisó por última vez en
2011, cuando agregó detalles para el uso de XML.
La última revisión de ANSI fue en 1992, y obviamente no incluyó muchas
de las nuevas características, estándares y definiciones que ya se
consideraban estándares “de facto”, como XML, JSON, inclusiones de
binarios y muchos otros. Sin embargo, en sincronía con las revisiones de
ISO, se escribieron “modificadores” para el estándar ANSI SQL hasta 2011.
Todas las empresas de motores de base de datos "adaptan" ANSI SQL para
obtener mejores resultados con sus procesos de base de datos y mejorar
el lenguaje. Sin embargo, todos cumplen con la estructura básica del
lenguaje y la amplían para sus propias necesidades.
Es por eso que puede encontrar otros nombres para el lenguaje como T-
SQL, para Microsoft SQL Server y PostQUEL, para PostgreSQL (que fue
renombrado como lenguaje de consulta Postgres).
No importa de qué versión específica de SQL estemos hablando, todas
coinciden con las mismas definiciones básicas.
Esta habilidad cubre cómo:
• Comparar DDL versus DML
• Consultar datos relacionales en PostgreSQL, MySQL y Azure
SQL Database

Comparar DDL versus DML


Podemos agrupar los comandos en SQL por su función principal. Algunos
de ellos administran datos, algunos definen objetos y algunos
reconfiguran la base de datos o el motor.

LENGUAJE DE DEFINICIÓN DE DATOS


El lenguaje de definición de datos (DDL) proporciona los comandos
para administrar los objetos dentro de la base de datos. Los objetos
pueden ser tablas, columnas o índices; otras restricciones sobre tablas,
columnas o índices; o sus propiedades y atributos.
Dado que las declaraciones DDL manipulan objetos, no puede estar
seguro de que una declaración no eliminará un objeto afectado por las
declaraciones que siguen. Por lo tanto, una declaración DDL generalmente
debe colocarse al final de un lote o grupo de declaraciones. Sin embargo,
hay algunos casos en los que puede haber más de una instrucción DDL en
el mismo lote.
En Transact SQL (T-SQL), una declaración DDL puede ir seguida de
la GOdeclaración, que significa “El lote termina aquí. Ejecutar."
Aquí está la estructura básica de una declaración DDL:
Haga clic aquí para ver la imagen del código
<Acción > – <afectada Tipo de objeto > – <nombre del objeto> –
<required parameters>.
Y los verbos para las acciones son los siguientes:
• CREATE
• ALTER
• DROP
• RENAME
• TRUNCATE
La siguiente declaración crea una tabla:

Crear declaración de tabla


Haga clic aquí para ver la imagen del código
CREAR TABLA dbo.Address

(AddressID INT IDENTITY (1, 1) NOT NULL,

AddressLine1 NVARCHAR (60) NOT NULL,

AddressLine2 NVARCHAR (60) NULL,

Ciudad NVARCHAR (30) NOT NULL,

StateProvince dbo.Name NOT NULL,

CountryRegion dbo.Name NOT NULL,

PostalCode NVARCHAR (15) NO NULO,

ModifiedDate DATETIME NOT NULL,

CONSTRAINT PK_Address CLAVE PRINCIPAL CLÚSTER (AddressID


ASC)

)
EN [PRIMARIO];

Como puede ver, la parte que enumera los parámetros requeridos


(comenzando con AddressID) es una sintaxis compleja que describe cada
una de las columnas de la tabla. Cada motor de base de datos tiene sus
propias palabras reservadas para este propósito. Por lo general, los
motores de base de datos respetan el estándar ANSI sobre tipos de datos,
y un número entero también se puede nombrar int, entero1 como tinyint,
moneda como money, etc. Tenga en cuenta que existen diferencias en
algunos tipos de datos, como los tipos de datos utilizados para almacenar
cadenas y que, como en el ejemplo, algunos motores son capaces de
administrar tipos de datos definidos por el usuario, como el nametipo de
datos para las columnas StateProvince y CountryRegion. .
El ALTERverbo cambia parte de la definición de un objeto, pero no se
permiten todos los cambios. Si agrega una columna a una tabla,
el ALTERcomando funcionará, pero no puede cambiar el tipo de una
columna existente de un stringtipo a uno numérico, si los datos contienen
caracteres que no sean números. Si no se pueden convertir todos los
valores, primero cambie los valores o agregue una nueva columna,
actualícela con los valores correctos, elimine la columna anterior y
cambie el nombre de la nueva columna a sp_rename .
El DROPcomando elimina físicamente un objeto de la base de datos, sin
posibilidad de reversión. Existen algunas limitaciones, ya que un objeto
puede tener dependencias. Una tabla puede tener otras tablas que utilicen
su información como restricciones de clave externa. En ese caso, no puede
descartar esa tabla; debe eliminar las relaciones antes de eliminar el
objeto en sí. Otros objetos dependientes, como índices, restricciones o
valores predeterminados, se eliminarán automáticamente cuando suelte
una tabla.
Otro factor que debe tener en cuenta es que el código puede hacer
referencia a una tabla en otros objetos, como vistas o procedimientos
almacenados. Algo complicado podría pasar con esos objetos. Una vista
que depende de la tabla no se puede eliminar si SCHEMABINDINGse usa un
modificador especial como en la definición de la vista. Sin embargo, puede
definir un procedimiento almacenado incluso cuando algunos de los
elementos utilizados por el procedimiento no existan. Eso es porque un
procedimiento puede actuar después del procedimiento que crea la
tabla. Cuando suelta una tabla, no se verifica la relación con el
procedimiento y luego, cuando se ejecuta el procedimiento, se genera un
error.
En SSMS, antes de soltar una tabla, puede ver sus dependencias haciendo
clic con el botón derecho en la tabla y seleccionando Ver dependencias
para abrir el cuadro de diálogo Dependencias del objeto, que se muestra
en la Figura 2-29 .

Figura 2-29 dependencias de objetos SSMS


El RENAMEcomando cambia el nombre de un objeto. Tenga cuidado al
utilizar este comando, ya que no puede revisar las vistas y los
procedimientos almacenados como puede hacer cuando suelta un objeto.
Nota sp_rename
En T-SQL no hay ningún RENAMEcomando. En cambio, hay un procedimiento almacenado
del sistema sp_rename, que le alerta sobre un posible problema.

LENGUAJE DE MANIPULACIÓN DE DATOS


La otra gran parte del lenguaje SQL es el lenguaje de manipulación de
datos (DML), el conjunto de comandos que trabajan con los datos de la
base de datos. El esquema de sintaxis básico es similar al DDL, pero los
verbos son diferentes y hay más opciones y combinaciones.
Haga clic aquí para ver la imagen del código
<acción > -[<propiedades específicas >] - [<acción modificador
>] - <objeto afectado > - [<acción
modifier2>] - [<action modifiers>]
Si desea seleccionar información de la base de datos, la declaración se
parece a esto:

Seleccione la estructura básica de la declaración


Haga clic aquí para ver la imagen del código
SELECCIONE

< Lista de columnas >

DE

< nombre de la tabla >

DÓNDE

< condición >

PEDIR POR

< Lista de columnas por ordenar >

Y aquí están las estructuras básicas para Insert, Updatey Delete:

Insertar estructura de declaración


Haga clic aquí para ver la imagen del código
INSERT INTO < nombre de la tabla >

< Lista de columnas para agregar valores >

VALORES

< Lista de valores para agregar >

);

Actualizar la estructura de la declaración


Haga clic aquí para ver la imagen del código
ACTUALIZAR < nombre de la tabla >

SET < Lista de <Columna para actualizar > = < Valor nuevo
>,
< Columna para actualizar > = < valor nuevo >

>

Eliminar estructura de declaración


Haga clic aquí para ver la imagen del código
ELIMINAR DE < nombre de la tabla >

DÓNDE

(< lista de condiciones de filtro >)

A veces, verá otras nomenclaturas para declaraciones SQL, como Lenguaje


de control de datos para comandos que administran seguridad
como GRANTo REVOKE, que encajan perfectamente con el concepto DDL
porque usted administra la seguridad del objeto.
Algo similar ocurre con otras declaraciones como condicionales, bucles y
declaraciones de variables en DML.

Consultar datos relacionales en PostgreSQL, MySQL y Azure


SQL Database
En esta sección, revisaremos la sintaxis para manipular datos en las
diversas soluciones de almacenamiento relacional. Los almacenes
relacionales son similares en la mayoría de los casos, ya que se basan en
la especificación estándar de SQL.

CONSULTAR DATOS EN BASES DE DATOS DE SQL SERVER


Primero, veamos varias declaraciones de T-SQL. Tenga en cuenta que no
mostraremos los resultados aquí, ya que pueden requerir mucho
espacio. En su lugar, puede encontrarlos como parte de los archivos que
acompañan a este libro, en un Jupyter Notebook llamado Ch2 Query data
en SQL Server Databases.ipynb. Puede abrir este cuaderno con Azure Data
Studio o SSMS y probar las declaraciones usted mismo.
Todos los ejemplos de esta sección se aplican a la base de datos de
ejemplo AdventureWorksLT, que puede seleccionar al crear una base de
datos de Azure.

Selección simple
Haga clic aquí para ver la imagen del código
SELECCIONE

DE

[SalesLT]. [Producto]

La SELECTdeclaración es la consulta más simple que puede escribir. El


símbolo de asterisco ( *) significa "todas las columnas" y es útil cuando
necesita una forma de recuperar todas las columnas a la vez. Sin embargo,
casi nunca necesita todas las columnas. No recuperar todas las columnas
reduce el tráfico de la red. Además, cuando se agregan nuevas columnas,
la consulta devuelve resultados diferentes, lo que podría interrumpir la
aplicación. Siempre es mejor definir las columnas que necesita en cada
consulta.

Seleccionar con lista de columnas


Haga clic aquí para ver la imagen del código
SELECCIONAR [ProductID],

[Nombre],

[Número de producto],

[Color],

[Costo estándar],

[Precio de lista],

[Tamaño],

[Peso]

DESDE [SalesLT]. [Producto];

Seleccionar con ordenar por dos columnas


Haga clic aquí para ver la imagen del código
SELECCIONAR [ProductID],
[Nombre],

[Número de producto],

[Color],

[Costo estándar],

[Precio de lista],

[Tamaño],

[Peso]

DESDE [SalesLT]. [Producto]

ORDEN POR [Nombre],

[Tamaño];

ORDER BYordena los datos, tomando la columna que sigue al ORDER


BYmodificador como el primer nivel para ordenar y siguiendo la lista en
orden, de izquierda a derecha.

Seleccione con ordenar por dos columnas, excluyendo filas sin


tamaño definido
Haga clic aquí para ver la imagen del código
SELECCIONAR ProductID,

Nombre,

Número de producto,

Color,

Costo estándar,

Precio de lista,

Tamaño,

Peso

DESDE SalesLT.Product
DONDE (el tamaño NO ES NULO)

ORDEN POR [Nombre],

Tamaño;

En este caso, WHEREse ha aplicado un predicado que examina los valores de


la columna Tamaño. Aquellas filas sin un valor (la columna contiene un
valor nulo) se excluyen del conjunto de resultados.

Seleccione entre dos tablas relacionadas, ordenando por dos


columnas, de diferentes tablas
Haga clic aquí para ver la imagen del código
SELECCIONE

PC.Name AS Categoría,

P. Nombre,

SUM (SOD.OrderQty) AS [Total pedido],

COUNT (SOD.SalesOrderID) COMO Órdenes

DE

SalesLT.Product AS P

UNIR INTERNAMENTE

SalesLT.ProductCategory COMO PC

ON P.ProductCategoryID = PC.ProductCategoryID

UNIR INTERNAMENTE

SalesLT.SalesOrderDetail AS SOD

ON P.ProductID = SOD.ProductID

AGRUPAR POR

PC.Name,

P. Nombre
PEDIR POR

Categoría,

P.Name;

Nota Aliasing de nombres largos


Como puede ver en la FROMparte del SELECT, cada tabla va seguida de la ASexpresión con
una letra o un par de letras. Eso hace que sea más fácil identificar las tablas por el
en ALIASlugar del nombre completo.
Observe que la FROMcláusula se relaciona con la tabla Productos con una
tabla ProductCategory, utilizando la INNER JOINcláusula, que significa
"Todas las filas donde se ONevalúa la condición true".
El establecimiento de una combinación generalmente requiere especificar
qué columna o columnas deben coincidir con una tabla con la otra, pero
ese no es siempre el caso. En este caso, los valores de ProductCategoryID
en la tabla Products deben coincidir con ProductCategoryID en la tabla
ProductCategory. Sin embargo, puede utilizar otros operadores y otros
tipos de evaluación de condiciones.
No es necesario que los nombres de las columnas coincidan. Las columnas
pueden tener diferentes nombres, mientras que el tipo de datos es el
mismo. Por supuesto, la coherencia lógica de los datos es importante,
pero no se trata en absoluto de nombres de columnas.

Seleccione entre tres tablas, con clasificación por dos columnas, de


diferentes tablas, y agregue los grupos aplicados de funciones por
las columnas ordenadas
Haga clic aquí para ver la imagen del código
SELECCIONE

PC.Name AS Categoría,

P. Nombre,

SUM (SOD.OrderQty) AS [Total pedido],

COUNT (SOD.SalesOrderID) COMO Órdenes

DE

SalesLT.Product AS P
UNIR INTERNAMENTE

SalesLT.ProductCategory COMO PC

ON P.ProductCategoryID = PC.ProductCategoryID

UNIR INTERNAMENTE

SalesLT.SalesOrderDetail AS SOD

ON P.ProductID = SOD.ProductID

AGRUPAR POR

PC.Name,

P. Nombre

PEDIR POR

Categoría,

P.Name;

La declaración relaciona tres tablas con join y agrupa los resultados por el
nombre de categoría y el nombre del producto. Los otros valores son un
recuento de los pedidos y un total de la cantidad de todos los pedidos
para cada categoría y producto.

Seleccione entre tres tablas, con clasificación por dos columnas, de


diferentes tablas, y agregue los grupos aplicados a las funciones por
las columnas ordenadas, incluidas las filas que no coinciden
Haga clic aquí para ver la imagen del código
SELECCIONE

PC.Name AS Categoría,

P. Nombre,

SUM (SOD.OrderQty) AS [Total pedido],

COUNT (SOD.SalesOrderID) COMO Órdenes

DE
SalesLT.Product AS P

UNIR INTERNAMENTE

SalesLT.ProductCategory COMO PC

ON P.ProductCategoryID = PC.ProductCategoryID

IZQUIERDA COMBINACIÓN EXTERNA

SalesLT.SalesOrderDetail AS SOD

ON P.ProductID = SOD.ProductID

AGRUPAR POR

PC.Name,

P. Nombre

PEDIR POR

Categoría,

P.Name;

En esta declaración, la relación entre la tabla SalesOrderDetails y la tabla


Product usa a LEFT OUTER JOIN, que significa "Todas las filas de la tabla a la
izquierda de la combinación (Productos) sin importar si hay filas
coincidentes en la tabla de la derecha ( SalesOrdersDetails) ”. Esto incluye
todos los productos, incluso aquellos sin pedidos, y devuelve 0 para el
recuento de pedidos y nulo para el total de la cantidad, ya que no hay
ningún pedido.

CONSULTAR DATOS EN BASES DE DATOS POSTGRESQL


Ahora que tiene las muestras de T-SQL, podemos ver las mismas muestras
pero en una base de datos PostgreSQL.

Selección simple
Haga clic aquí para ver la imagen del código
Seleccione *

de public.product
Observe que la consulta es casi idéntica a la de SQL Server.

Seleccionar con lista de columnas


Haga clic aquí para ver la imagen del código
seleccionar productid

,nombre

,Número de producto

,color

,Talla

,peso

, productcategoryid

de public.product

Seleccionar con ordenar por dos columnas


Haga clic aquí para ver la imagen del código
seleccionar productid

,nombre

,Número de producto

,color

,Talla

,peso

, productcategoryid

de public.product

ORDEN POR Nombre,

Tamaño
El ORDER BYordena los datos, tomando la columna que sigue al ORDER
BYmodificador como el primer nivel para ordenar y siguiendo la lista en
orden, de izquierda a derecha.

Seleccione entre dos tablas relacionadas, ordenando por dos


columnas, de diferentes tablas
Haga clic aquí para ver la imagen del código
seleccionar productid

, ProductCategory.Name AS Categoría

,nombre del producto

,Número de producto

,color

,Talla

,peso

de public.product

INNER JOIN ProductCategory ON Product.ProductCategoryID


= ProductCategory.

ProductCategoryID

PEDIR POR Categoría,

Nombre del producto;

Seleccione con ordenar por dos columnas, excluyendo filas sin


tamaño definido
Haga clic aquí para ver la imagen del código
seleccionar productid

, ProductCategory.Name AS Categoría

,nombre del producto

,Número de producto
,color

,Talla

,peso

de public.product

INNER JOIN ProductCategory ON Product.ProductCategoryID


= ProductCategory.

ProductCategoryID

DONDE (NO (El tamaño ES NULO))

PEDIR POR Categoría,

Nombre del producto;

Seleccione entre tres tablas, con clasificación por dos columnas, de


diferentes tablas, y agregue los grupos aplicados de funciones por
las columnas ordenadas
Haga clic aquí para ver la imagen del código
SELECCIONE ProductCategory.Name AS Category,

Nombre del producto,

SUM (SalesOrderDetail.OrderQty) AS Total_Ordered,

COUNT (SalesOrderDetail.SalesOrderID) COMO Pedidos

DESDE Producto

INNER JOIN ProductCategory ON Product.ProductCategoryID


= ProductCategory.

ProductCategoryID

INNER JOIN SalesOrderDetail ON Product.ProductID =


SalesOrderDetail.ProductID

AGRUPAR POR ProductCategory.Name,

Nombre del producto


PEDIR POR Categoría,

Nombre del producto;

Seleccione entre tres tablas, con clasificación por dos columnas, de


diferentes tablas, y agregue los grupos aplicados a las funciones por
las columnas ordenadas, incluidas las filas que no coinciden
Haga clic aquí para ver la imagen del código
SELECCIONE ProductCategory.Name AS Category,

Nombre del producto,

SUM (SalesOrderDetail.OrderQty) AS Total_Ordered,

COUNT (SalesOrderDetail.SalesOrderID) COMO Pedidos

DESDE Producto

INNER JOIN ProductCategory ON Product.ProductCategoryID


= ProductCategory.

ProductCategoryID

LEFT OUTER JOIN SalesOrderDetail ON Product.ProductID =


SalesOrderDetail.ProductID

AGRUPAR POR ProductCategory.Name,

Nombre del producto

PEDIR POR Categoría,

Nombre del producto;

Si compara los dos grupos de declaraciones para SQL Server y para


PostgreSQL, son muy similares, excepto por algunos nombres de
objeto. Pero la forma en que escribes las consultas es casi la misma.

CONSULTAR DATOS EN MYSQL


Las consultas realizadas contra MySQL son copias casi exactas de las que
acabamos de revisar.
Por supuesto, debe establecer la conexión adecuada a la base de
datos. Existen varias herramientas para hacerlo, como MySQL Workbench
del equipo de MySQL, o herramientas de inteligencia empresarial como
Microsoft Power BI, entre otras.
La sintaxis de MySQL y MariaDB también es compatible y no se detallará
aquí.

RESUMEN DEL CAPÍTULO


• El procesamiento de transacciones en línea (OLTP) es la
implementación de la base de datos para almacenar información
sobre cada cambio en el conjunto de entidades administradas por
una aplicación, en el momento preciso en que se registra el cambio.
• El procesamiento analítico en línea (OLAP) es la forma en que
la información recuperada de OLTP se agrupa, recalcula y procesa
para obtener información general, lo que permite a los usuarios ver
más detalles.
• Una tabla es la estructura donde se almacena la
información. Se define por columnas, que establecen el tipo de
datos que puede almacenar, y puede tener otras restricciones como
nulabilidad, rangos de datos aceptados y valores predeterminados
para cada nueva fila. Estas restricciones se conocen como
restricciones.
• Los índices facilitan la clasificación y búsqueda de
información en grandes conjuntos de datos y reducen el consumo
de recursos.
• IaaS es el servicio de Azure a cargo de la infraestructura física
básica, como el edificio, la fuente de energía, el hardware, la red, la
conectividad externa y la seguridad física y de Internet, y permite a
los clientes de Azure montar servidores como máquinas virtuales,
asegurando así una alta disponibilidad y recuperación de desastres.
• PaaS es el servicio de Azure que se encarga de poner a
disposición servicios como el almacenamiento y el alojamiento sin
la implementación ni la gestión de la plataforma por su
parte. Utiliza lo que necesita, cuando lo necesita, y lo configura de la
manera que lo necesita. El equipo de Azure administra la
configuración de bajo nivel. Incluye una gama de servicios como
cuentas de almacenamiento, servicios de bases de datos, servicios
de flujo de trabajo y alojamiento web y de aplicaciones.
• SaaS es el servicio de Azure para usuarios finales. Por
ejemplo, una organización compra el SaaS que necesita, como un
servidor de correo electrónico, una plataforma de documentos o un
transmisor de video, y luego permite a sus empleados usar los
servicios proporcionados por Azure SaaS por usuario (o por
grupo). Microsoft y otros proveedores ofrecen más servicios cada
año.
• Las DTU y DWU son unidades destinadas a medir el uso de
recursos transaccionales y analíticos para estimar la mejor
implementación para el almacenamiento relacional, OLTP u OLAP,
respectivamente.
• Instancia administrada de SQL (PaaS) le permite tener varias
o incluso muchas bases de datos administradas por el mismo
servicio, con alta disponibilidad, recuperación ante desastres y alto
rendimiento.
• Los proveedores de recursos son los componentes básicos de
PaaS. Interactuar con los proveedores es una forma de crear y
administrar sus recursos, y más proveedores agregan ofertas como
bloques de construcción.
• Varias herramientas, como PowerShell, Azure CLI y Azure
Cloud Shell, son capaces de usar proveedores de recursos
administrados a través de plantillas ARM.
• Cuatro capas protegen sus datos: protección de la
información, protección contra amenazas, administración de
acceso y seguridad de la red.
• El lenguaje de definición de datos (DDL), parte del lenguaje de
consulta estructurado, se utiliza para manipular objetos en una
base de datos. Los objetos incluyen tablas, índices, vistas, etc. Los
comandos más importantes son CREATE, DROPy ALTER.
• El lenguaje de manipulación de datos (DML) se utiliza para la
manipulación de datos almacenados en una base de datos. Los
comandos de este grupo incluyen SELECT, INSERT, UPDATE, y DELETE.
EXPERIMENTO MENTAL
En este experimento mental, puede demostrar sus habilidades y
conocimientos sobre los temas cubiertos en este capítulo. Puede
encontrar las respuestas a este experimento mental en la siguiente
sección.
Como consultor, ha sido llamado para diseñar una solución para una
empresa que aloja sitios web para equipos deportivos. La empresa tiene
un contrato con la asociación deportiva para proporcionar sitios
independientes para que cada uno de los socios del club administre a las
personas asociadas a cada club, equipos, partidos, horarios y estadísticas
de cada uno.
Además, la aplicación administrativa de la asociación está alojada por el
mismo proveedor.
El proveedor necesita un diseño para migrar toda la información a Azure
para reducir los costos de bajo nivel, como centros de datos, fuentes de
alimentación, redes y proveedores de Internet.
Esta es la información que tienes:
• La asociación incluye a todos los equipos, sin importar el
tamaño. Hay equipos grandes, medianos y muchos clubes
pequeños.
• Las competiciones y actividades más importantes ocurren
durante la primavera y el verano.
• Algunos campeonatos pequeños se juegan en salas en lugar de
campos.
• La empresa desarrolladora responsable de la aplicación
administrativa de la asociación le dijo que utilizan algunos
procedimientos de .NET Common Language Runtime (CLR) dentro
de la base de datos.
• Todas las aplicaciones son aplicaciones web y también se
migrarán a Azure.
¿Cuáles son los recursos que decide proponer para cada uno de estos
requisitos y por qué?
1. Almacenamiento de la base de datos de cada club
2. Almacenamiento para aplicaciones asociadas
3. Almacenamiento de estadísticas mundiales históricas
4. Configuración de redes

RESPUESTAS DEL EXPERIMENTO MENTAL


Esta sección contiene las soluciones al experimento mental. Cada
respuesta explica por qué la opción de respuesta es correcta.
1. Con diferentes clubes, diferentes cantidades de datos y diferentes usos,
un grupo elástico podría ser la mejor opción. Con algunas de las
herramientas diseñadas para usar Azure Resource Manager, puede
programar la supervisión y el escalado automático (hacia arriba y hacia
abajo), según la utilización de recursos.
2. Tener procedimientos CLR en una base de datos evita la migración a
PaaS. Debe migrar su base de datos a una máquina de Azure SQL Server.
3. Synapse será la mejor opción. Se deben considerar otros servicios para
la ejecución de extracción, transformación y carga (ETL), incluido SaaS
disponible en Azure, como Azure Data Factory.
4. Dado que todas las aplicaciones se migrarán a Azure PaaS, no hay
necesidad de conexiones externas. Bastará con habilitar todas las
conexiones desde dentro de los Servicios de Azure, incluida la VM, y si
necesitas administrar una de las bases de datos, puedes hacerlo
conectándote mediante Remote Desktop Protocol (RDP) a la VM y, desde
allí, alcanzando la base de datos deseada.
Capítulo 3
Describir cómo trabajar con
datos no relacionales en Azure.
Mucha información que existe no se puede almacenar de forma
estructural. Considere el documento original que escribimos para este
capítulo. Es un documento y no tiene elementos estructurales en
común con otros documentos entregados para este libro, como scripts,
datos de planos y cuadernos. Almacenar estos documentos en la misma
tabla no es la mejor opción, a menos que nuestra tabla tenga una
columna para el título y otra para el contenido, una estructura
realmente pobre para una base de datos relacional.
En este capítulo, cubriremos otros tipos de repositorios para datos no
relacionales.

Habilidades cubiertas en este capítulo:


• Habilidad 3.1: Describir cargas de trabajo de datos no
relacionales
• Habilidad 3.2: describir ofertas de datos no relacionales en
Azure
• Habilidad 3.3: Identificar tareas de gestión básicas para datos
no relacionales

HABILIDAD 3.1: DESCRIBIR CARGAS DE


TRABAJO DE DATOS NO RELACIONALES
En el capítulo anterior, hablamos sobre cargas de trabajo relacionales y
los diferentes sabores que tiene en Azure para administrarlas.
Ahora es el momento de aprender sobre la otra forma de administrar el
almacenamiento: cargas de trabajo no relacionales.
Esta habilidad cubre cómo:
• Describir las características de los datos no relacionales.
• Describir los tipos de datos no relacionales y NoSQL.
• Recomendar el almacén de datos correcto
• Determine cuándo usar datos no relacionales

Describir las características de los datos no relacionales.


El término "NoSQL" se utilizó por primera vez alrededor de 1998 para
describir un almacenamiento de datos que no utiliza ninguna forma de
SQL para obtener la información. La denominada base de datos NoSQL es
una base de datos relacional, pero no utiliza lenguaje de consulta
estructurado. Quizás un término más preciso para los datos de
almacenamiento para información no relacional sería "No-REL" en lugar
de "NoSQL" para describir mejor la ausencia de relación en los datos, pero
el término que se popularizó fue "NoSQL".
Suponiendo que disfruta de la música, navegue hasta la carpeta de su
disco donde la guarda. Esa es información NoSQL. Cada archivo puede
tener algunos atributos, como título, género, intérprete, álbum y año. Pero
todos sus archivos de música no necesariamente tienen todos los
atributos, o algunos de ellos podrían tener más atributos que otros. De
alguna manera, cada archivo es una pieza de información, pero no está
estructurado ni relacionado con otros archivos. Puede agruparlos en
carpetas o utilizar un lenguaje de programación para recuperar los
atributos y crear algún tipo de agrupación, pero siguen siendo archivos
aislados.
Los documentos que administran las aplicaciones Microsoft Excel o
Microsoft Word son ejemplos de otros tipos de datos estructurados pero
no relacionados. En el siglo pasado, estos eran documentos COM, pero
luego se rediseñaron como un conjunto de subdocumentos XML,
contenidos en un archivo comprimido.
Nota La estructura de un documento de Word
Puede ver la estructura de un documento de Word si toma uno y cambia la extensión de
.docx a .zip. Luego puede abrir el archivo y mirar la estructura interna en carpetas y los
documentos XML que componen el documento de Word.

Estas son las características más importantes de las bases de datos


NoSQL:
• La mayoría de ellos no se adhieren al principio ACID
(atomicidad, consistencia, aislamiento, durabilidad). Sin relación
entre los datos, no es un objetivo mantener la coherencia o la
atomicidad.
• Por lo general, son fáciles de diseñar ya que no hay
estructuras complejas, relaciones, índices, etc. para definir.
• Pueden escalar horizontalmente más fácilmente que las bases
de datos relacionales. Esta es una característica importante para las
redes sociales, principalmente porque no se ajustan a las reglas de
ACID, lo que dificulta la ampliación de forma horizontal.
• Pueden replicar la información geográficamente muy rápido,
otra característica importante para las redes sociales.
• Algunos de ellos pueden tener pérdida de datos, al menos en
algunas de las réplicas, lo que aumenta el trabajo de
mantenimiento necesario para mantener la coherencia entre las
copias.
• No son buenos para administrar transacciones distribuidas.
• En muchos casos, no existe una interfaz estándar para la
manipulación de datos, lo que dificulta la creación de aplicaciones
para usarlos.

Describir los tipos de datos no relacionales y NoSQL.


Hay varios tipos diferentes de estilos para el almacenamiento de datos
NoSQL. Cada estilo tiene varias implementaciones por diferentes
empresas o grupos de código abierto, y la metodología evoluciona
continuamente. Los estilos de almacenamiento se pueden agrupar en las
siguientes definiciones básicas.

ALMACÉN DE VALORES-CLAVE
Este tipo de almacenamiento utiliza el principio de una tabla hash ,
también llamada diccionario . No importa cuál sea el contenido de valor,
debe ser solo un valor y puede combinarse con una clave única.
Usando este concepto, el almacenamiento orientado a objetos entra en
esta categoría, ya que el “valor” podría ser un objeto, con diferentes
atributos. Esto significa que en un repositorio puedes almacenar
elementos con diferentes estructuras, y el almacenamiento solo se
encargará de administrarlos por sus claves.
Algunos de estos tipos de almacenamiento utilizan la manipulación en
memoria, lo que los hace muy rápidos. Cuando el repositorio administra
grandes volúmenes, generalmente usa discos SDD para reducir la latencia
de E / S del disco.
En otros casos, el almacenamiento está siempre en disco y la optimización
de una búsqueda se implementa mediante el uso de algunos de los
algoritmos de hash extensible, o árbol B, para buscar claves
específicas. En la Tabla 3-1 , tiene una representación de un árbol B,
donde encontrar, digamos, la entrada 23, primero va a la fila superior
para encontrar el grupo "20", y luego mira dentro de él para encontrar el
entrada.
Tabla 3-1 Representación del almacenamiento de árboles B
10 20 30

11 <datos> 21 <datos> 31

12 <datos> 22 <datos> 32

13 <datos> 23 <datos> 33

14 <datos> 24 <datos> 34

15 <datos> 25 <datos> 35

dieciséis <datos> 26 <datos> 36

17 <datos> 27 <datos> 37

18 <datos> 28 <datos> 38

19 <datos> 29 <datos> 39
La idea es gestionar las claves en grupos para encontrar fácilmente lo que
buscas. Este algoritmo es incluso más rápido que la búsqueda de
burbujas, que también se implementó en algunos de los almacenamiento
de pares clave-valor.
Existen variaciones en el modo de almacenamiento, incluido el valor-
clave ordenado, el almacenamiento de tuplas y la caché del valor-clave .
En el almacenamiento de valores clave, el motor es completamente
independiente del contenido y no puede hacer nada con las entradas,
excepto enviar el contenido al solicitante.
¿Necesita más revisión? Árbol B y valor-clave ordenado
Para obtener detalles sobre la búsqueda del árbol B, vaya aquí para ver buenos
ejemplos: http://maf.directory/btp/algo . Para obtener detalles de valores-clave ordenados,
vaya aquí: http://highscalability.com/blog/2007/7/31/berkeleydb-other-distributed-high-
performance-keyvalue-datab.html .

ALMACÉN DE DOCUMENTOS
Esta es una extensión de la implementación de clave-valor. Almacena
información en una estructura hash, pero en este caso, el valor es un
documento.
Incluso cuando los documentos son completamente diferentes, tener
documentos con las mismas propiedades o atributos, como título, autor y
fecha de creación, permite que el motor busque dentro del contenido, lo
que no es posible en bases de datos simples de valor-clave.
Los tipos de documentos más habituales que se almacenan en este tipo de
tiendas son:
• Documentos XML (Extensible Markup Language) Un
subconjunto específico de motores de almacenamiento de
documentos está orientado a administrar estos
documentos. Existen varios esquemas estándar para archivos XML,
que facilitan su análisis y consistencia.
• Documentos YAML (YAML Ain't Markup
Language) Utilizada para administrar archivos de configuración, la
estructura permite almacenar cualquier tipo de información,
incluidas cadenas, matrices y colecciones.
¿Necesita más revisión? YAML
Puede encontrar la definición de estructura completa de YAML
en https://yaml.org/refcard.html .

• JSON (JavaScript Object Notation) Confirmado como


estándar en 2013, JSON es uno de los formatos más populares para
intercambiar y almacenar información en la era Web 2.0. En el
capítulo anterior hablamos de las plantillas ARM, que son archivos
JSON con solo estandarización del contenido. La plantilla utiliza la
notación JavaScript, pero no está vinculada al lenguaje de
programación de secuencias de comandos. Hay más de cien
bibliotecas de interfaz de programación de aplicaciones (API) para
administrar archivos JSON de varios lenguajes de
programación. JSON admite la esquematización como XML, lo que
garantiza que los documentos coincidan con estructuras
específicas.
Haga clic aquí para ver la imagen del código
Muestra JSON

"$ esquema": "http://schema.management.azure.com/schemas/2015-01-


01/

deploymentTemplate.json ",

"contentVersion": "1.0.0.0",

"parámetros": {

"clusterLocation": {

"tipo": "cadena",

"defaultValue": "southcentralus",

"metadatos": {

"description": "Ubicación del clúster"

}
},

"clusterName": {

"tipo": "cadena",

"metadatos": {

"description": "Nombre de su clúster"

• BSON (JSON binario) Una extensión de JSON destinada a


evitar el uso de caracteres no permitidos y mejorar el
almacenamiento y la transmisión de la información. BSON fue
implementado originalmente por uno de los motores de base de
datos NoSQL, MongoDB, y almacena la información utilizando una
estructura específica y marcadores binarios para identificar las
diferentes partes.
Con la capacidad de administrar estos diversos formatos, el
beneficio más importante de todos estos motores de
almacenamiento es el hecho de que no es necesario mantener todos
los documentos con el mismo esquema o estilo. Podían almacenar
documentos en diferentes formatos y diferentes esquemas sin
problemas.
Sin embargo, esta tecnología de almacenamiento de documentos
presenta una dificultad. El desarrollador de la aplicación es
responsable de detectar el tipo de documento y luego identificar
cualquier esquema aplicado y actuar en consecuencia.

ALMACÉN DE DATOS EN COLUMNAS


El almacén de datos en columnas sigue el mismo principio que el
almacenamiento de clave-valor. Sin embargo, existen dos diferencias
importantes:
• El valor es accesible por el motor. Esto significa que el motor
podría encontrar información dentro de los valores, como valores
específicos para cualquier atributo, como ocurre con los
documentos.
• La parte de valor contiene varios atributos relacionados de
alguna manera entre ellos, para definir una entidad.
El almacén de datos en columnas es como un almacén de tablas
relacionales, donde no todas las entidades tienen la misma
estructura. Imagine un fabricante de teléfonos móviles que almacena
información sobre sus productos. En la tienda de una columna, utilizando
el código del modelo como clave, almacenan las especificaciones de venta,
como el tamaño de la pantalla, la resolución de la cámara y las bandas
4G. En otra tienda de columnas, utilizando la misma clave, tienen los
números de pieza utilizados para construir el teléfono.
El almacenamiento gestiona la información mediante su clave, en lugar de
generar un hash como el almacenamiento de documentos, y permite al
usuario localizar una entrada directamente mediante su clave o mediante
la obtención de entradas para un rango de valores clave.
En algunos motores, se pueden crear índices adicionales en función de los
valores de los atributos.
Incluso cuando utiliza el almacenamiento de tablas relacionales, esta
implementación no le obliga a tener la misma estructura para cada
entidad. Una entidad se puede almacenar en estructuras de
almacenamiento de tres columnas, mientras que otra se puede almacenar
en solo dos o incluso en una, ya que no hay restricciones sobre qué
columnas deben usarse. En algunos casos, como los modelos más
antiguos, el teléfono celular no necesita la tienda de columnas para las
ventas, ya que es un modelo descontinuado, pero desea conservar los
números de pieza por razones de soporte al cliente.
Como otro ejemplo, una persona podría tener una entrada para su
información personal y, en otra columna de la tienda, otra entrada sobre
sus hijos. Pero una persona que no tiene hijos no tiene información para
ingresar en ese almacén de columnas.
TIENDA DE GRÁFICOS
Usado para almacenar la representación gráfica, este tipo de base de
datos administra la lista de adyacencia o la matriz de adyacencia para
representar la información. Un buen ejemplo son las relaciones en una
red social. Usted, como persona, probablemente tenga amigos o personas
conocidas a las que siga o haya marcado como amigos (o familiares). Esto
forma un gráfico, contigo en el centro.
Dado que usted es quien reconoce a esas personas como relacionadas con
usted, el gráfico está dirigido por usted. La figura 3-1 muestra una
representación de un gráfico dirigido.

Figura 3-1 Un gráfico dirigido


Cuando la relación representada es bidireccional, se denomina gráfico no
dirigido .
En un gráfico, los elementos se denominan nodos o vértices y las líneas de
conexión son bordes .
La Tabla 3-2 muestra una representación de lista de adyacencia de un
gráfico. La primera columna de cada fila representa un nodo y las
columnas restantes representan los nodos que están relacionados con él.
Tabla 3-2 Representación de la lista de adyacencia
1 2 4

2 1 3 4
1 2 4

3 2

4 1 2
Cuando se usa una matriz de adyacencia, como se muestra en la Tabla 3-
3 , los vértices están en la primera fila y en la primera columna, y se
almacena información booleana que indica si existe o no una relación
entre ellos.
Tabla 3-3 Representación de la matriz de adyacencia
1 2 3 4

1 X X

2 X X X

3 X

4 X X

TIENDA DE SERIES DE TIEMPO


Este tipo de información está relacionada con el registro de eventos, y se
ha incrementado significativamente durante los últimos años, habiendo
muchos datos simples procesados de varias formas.
Las fuentes de datos son pequeñas piezas de información pero en grandes
volúmenes, como las generadas por el geoposicionamiento, los
dispositivos IoT y los micro cambios climáticos. La tabla 3-4 contiene
entradas de diferentes dispositivos, con el sello de tiempo
correspondiente, estructurando una serie de tiempo.
Tabla 3-4 Muestra de serie temporal
Hora ID del dispositivo

1056442: 57: 33 12143


Hora ID del dispositivo

1056442: 57: 33 12144

1056442: 57: 33 12145

1056442: 57: 33 12146

1056442: 57: 33 12147

1056442: 57: 33 12148

1056442: 57: 33 12149

1056442: 57: 33 12150


El sistema de gestión controla varios aspectos: la llegada de mucha
información al mismo tiempo, cómo gestionar la información retrasada en
llegar al repositorio, así como cómo optimizar la indexación y la búsqueda
de datos segmentados para asegurar respuestas rápidas.

ALMACÉN DE DATOS DE OBJETOS


El almacén de datos de objetos se utiliza para grandes volúmenes de
información, que se almacena en formato binario. Cada entrada contiene
tres piezas de información:
• Clave, utilizada para identificar de forma única el artículo
• Contenido binario
• Metadatos, generalmente en formato JSON
Otro uso de este tipo de almacenamiento es como depósito de archivos
para varios archivos.
Piense en el almacén de datos de objetos como una carpeta compartida en
una red local, pero con dos diferencias: tiene metadatos personalizados y
se puede acceder fácilmente a él con los derechos adecuados desde
cualquier lugar a través de Internet.
Elija el almacén de datos correcto
Elegir el almacén de datos adecuado para el almacén de datos no
relacional se trata de hacer coincidir sus necesidades con las capacidades
y evitar la limitación de los diferentes tipos de almacén de datos.
Por ejemplo:
• Si necesita encontrar información sobre las propiedades del
contenido, los datos de clave-valor o de objeto no serán su elección,
ya que ambos tienen solo una clave principal.
• Si necesita almacenar varias propiedades por entidad, los
almacenes de datos de valores clave, gráficos o series de tiempo no
son buenas opciones.
• Dado que se accede a los datos del objeto de forma secuencial,
no será su elección si necesita acceso aleatorio.
El tamaño estimado de cada entidad es otra consideración, porque
algunos de los tipos de almacenamiento no son capaces de administrar
entidades grandes. Si necesita almacenar elementos grandes, los datos en
columnas o los datos de objetos serán su elección.
Los datos que provienen de los dispositivos de medición deben
almacenarse muy rápido para evitar perder datos. La mayor parte de la
información de IoT está directamente relacionada con el momento en que
ocurren las cosas. Dado eso, las series de tiempo son la mejor opción para
este tipo de información.
¿Necesita más revisión? Tiendas y capacidades
Consulte una tabla comparativa de tiendas y capacidades en https://docs.microsoft.com/en-
us/azure/architecture/data-guide/big-data/non-relational-data#typical-requirements .

Determine cuándo usar datos no relacionales


Existen diferentes razones para utilizar el almacenamiento no relacional:
• Volumen Administrar grandes volúmenes de información,
como los que provienen de redes sociales o dispositivos de IoT,
puede resultar difícil para las bases de datos relacionales. Podría
ser peor si la cantidad de información aumenta continuamente. Una
base de datos relacional debe administrar ACID en su totalidad y,
en este tipo de escenario, tiende a tener problemas de bloqueo
cuando se administran varias transacciones al mismo tiempo.
• Tipo de datos En los últimos años, cada vez se transfiere y
almacena más información utilizando la notación JSON. Este tipo de
información, como los datos administrados por lenguajes de
programación orientados a objetos, es difícil de almacenar en bases
de datos relacionales, a menos que interceptes el proceso con
alguna programación enredada en el medio.
Otro motivo para utilizar bases de datos no relacionales es la necesidad
de almacenar información con diferentes estructuras en la misma
solución de almacenamiento. Esto es algo que podría suceder cuando
administra la información de las redes sociales.
Considere una aplicación de análisis de sentimientos, que evalúe cómo
reaccionan las personas a los cambios en su comunicación pública,
cuando establece nuevas condiciones para las ventas o simplemente para
un nuevo producto publicado. Cuanta más información recopile, mejor
evaluación tendrá. Sin embargo, las personas expresan opiniones en
diferentes lugares y en diferentes redes sociales, cada una de ellas con
diferentes estructuras de datos.
Normalizar la información para almacenar en una base de datos
relacional puede resultar costoso y, en cualquier caso, utilizará esa
información con herramientas que realicen análisis de texto. Es mejor
almacenarlo en bases de datos no relacionales.

HABILIDAD 3.2: DESCRIBIR OFERTAS DE


DATOS NO RELACIONALES EN AZURE
Cada tipo de información no relacional puede administrarse mediante
uno o más servicios de Azure. Dependiendo del uso, debes decidir cuál de
ellos implementar. En esta sección, aprenderá sobre estos servicios, cómo
administran la información y sus capacidades y debilidades.
Esta habilidad cubre cómo:
• Identificar los servicios de datos de Azure para cargas de
trabajo no relacionales
• Describir la API de Azure Cosmos DB
• Describir Azure Storage
• Describir el almacenamiento de Azure Table
• Describir Azure Blob Storage
• Describir el almacenamiento de archivos de Azure

Identificar los servicios de datos de Azure para cargas de


trabajo no relacionales
Microsoft Azure le ofrece diferentes soluciones de almacenamiento no
relacional que debe tener en cuenta al diseñar una arquitectura. El
camino correcto para seleccionar el que usará es definir qué tipo de
almacenamiento se adapta mejor a sus necesidades y luego ver qué
servicios e implementaciones tiene en la plataforma Azure.
La Tabla 3-5 contiene el servicio según el tipo de almacenamiento de
datos que tiene disponible.
Tabla 3-5 Tipos de servicios de almacenamiento en Azure
Almacenamiento Servicio Azure

Valor clave Cosmos DB


Azure Cache para Redis

Documento Cosmos DB

Grafico Cosmos DB

Familia de columnas HBase en HDInsight


Cosmos DB (usando la API de Cassandra)

Buscar información indexada Búsqueda cognitiva de Azure

Series de tiempo Perspectivas de series temporales

Objeto Almacenamiento de blobs


Almacenamiento Servicio Azure

Almacenamiento de mesa

Archivos Almacenamiento de archivos


Algunas de las opciones de almacenamiento tienen más de un servicio, lo
que significa que debe revisar exactamente lo que desea hacer con los
datos y determinar qué servicio le brinda la solución más confiable,
efectiva y, al mismo tiempo, menos costosa.
O simplemente puede diferenciar el tipo de datos que necesita
almacenar. Por ejemplo, puede almacenar contenido de gran volumen
como datos de audio o video mediante Azure Blob, o puede almacenar
objetos programáticos, que representan entidades, que se pueden buscar
fácilmente por clave, que se pueden implementar mediante el
almacenamiento de tablas. Analizaremos los servicios de Azure más
importantes y usaremos algunos ejemplos de la vida real para ayudarlo a
comprender cómo se utilizan.

Describir la API de Azure Cosmos DB


Azure Cosmos DB es parte de la oferta de PaaS de Azure. Es la oferta de
almacenamiento de base de datos no relacional de Microsoft, lanzada en
2017. El punto de entrada para un Azure Cosmos DB es una cuenta de
Cosmos DB, que no necesita coincidir con una cuenta de Azure. Una
suscripción de Azure puede contener hasta 100 cuentas de Cosmos
DB. Cada cuenta puede contener varias bases de datos, donde puede
definir diferentes contenedores.
Internamente, Cosmos DB almacena la información de cada contenedor
en particiones lógicas y cada una se puede almacenar en una o más
particiones físicas. La administración de las particiones no es algo de lo
que deba ocuparse: Cosmos DB las administra internamente. Figura 3-
2 muestra cómo Cosmos DB almacena la información en bases de datos
que pueden administrar varios contenedores para ella. Cada contenedor
almacena una o más particiones diferentes para administrar la
información.
Figura 3-2 Almacenamiento de Cosmos DB
Una característica importante de Cosmos DB es la capacidad de
distribuirse globalmente. Tener cada vez más repositorios de aplicaciones
y datos funcionando en todo el mundo, con los datos cerca del usuario, no
es insignificante.
Cosmos DB garantiza alta disponibilidad, alto rendimiento y baja latencia,
lo que significa respuestas rápidas, lo que le permite compartir la misma
información en diferentes centros de datos y tener la misma aplicación
distribuida geográficamente, llegando al contenido de cualquiera de las
réplicas de Cosmos DB.
Al mismo tiempo, Cosmos DB utiliza el principio de elasticidad en todas
las regiones. Las implementaciones elásticas son para operaciones de
lectura y escritura también, de la misma manera. Esto reduce el costo
total, ya que los recursos aumentan solo en la región necesaria en un
momento dado, no en todas las ubicaciones.
Las diferencias geográficas en la utilización, por dependencias culturales
o cualquier otra razón no impactan toda la implementación, sino solo el
área afectada.
Y las diferentes ubicaciones no tienen diferencias en su uso. Todos ellos
son actualizables al mismo tiempo, porque la plataforma Cosmos DB
asegura la replicación distribuida completa en todos los nodos.
Tenga en cuenta que puede agregar o eliminar regiones sin bloquear los
servicios. Además, Cosmos DB implementa la conmutación por error
automática, incluso en todas las regiones, lo que hace que sea casi
imposible perder el servicio.
Basado en estas características, Cosmos DB tiene un SLA del 99,999 por
ciento y garantiza escrituras de 10 milisegundos completadas en
cualquier región.

NIVELES DE CONSISTENCIA
La gestión de datos en todas las regiones, cuando todas las regiones
podrían actualizarse, plantea un problema que siempre es problemático
de tratar: mantener la coherencia entre las réplicas. Esto implica tratar de
asegurarse de que una vez que se escriben nuevos datos, la lectura de
otras regiones recupera la misma información actualizada recientemente.
Por lo general, en este tipo de distribución, solo tiene dos opciones:
• Eventualmente significa que, en algún momento en el futuro,
cualquier lectura probablemente obtendrá la información
actualizada. Sin embargo, existe el riesgo de que no ocurra.
• Strong asegura que las lecturas obtengan la información
actualizada. Para ello, cuando llega una nueva actualización, todos
los dispositivos de almacenamiento distribuidos mantienen en
espera las demás conexiones externas hasta que se completa la
actualización distribuida.
Cosmos DB amplía estas opciones, proporcionándole cinco niveles, como
se explica en detalle en la Tabla 3-6 .
Tabla 3-6 Niveles de coherencia de Cosmos DB
Nivel de Descripción
consistencia

Fuerte Este es el nivel fuerte estándar. Garantiza que todas las lecturas obteng
información más reciente comprometida.

Rancio En este caso, los datos tienen un límite de obsolescencia, que se puede
limitado función de dos parámetros:
• Cantidad de versiones
• Tiempo transcurrido

Dado que se pueden definir ambos parámetros, los datos se confirmará


alcance alguno de los límites.
Nivel de Descripción
consistencia

Cuando los datos se leen de la misma región donde se actualizaron, el m


garantiza una gran consistencia para ellos.
En otros casos, la consistencia varía en función de los parámetros defin

Sesión Un token identifica al escritor y asegura que él y cualquier otro que com
mismo token obtendrán lecturas de prefijo consistentes.
Parte de esta configuración garantiza que cualquier conexión que lea d
región obtendrá la versión más actualizada, incluso cuando no pueda se
conexión, ya que comparten el mismo token.

Prefijo En este nivel, solo se garantizan las actualizaciones ordenadas, lo que s


consistente un lector no puede obtener información actualizada fuera de orden.
Sin embargo, esto no significa que el lector obtendrá todas las escritura
realizadas. Podría formar parte del conjunto de escrituras, pero siempr
orden de escritura.
Por ejemplo, si un proceso escribe tres piezas de información [1001, 10
lector podría recuperar solo 1001, o [1001, 1005] o [1005, 1007], pero
[1001,1007].

Eventual Esto coincide con el nivel de coherencia genérico, lo que significa que,
eventualmente, en algún momento, los datos se sincronizarán entre tod
dispositivos de almacenamiento.
Por supuesto, este ejemplo no se trata de procesos transaccionales, sin
informativos, como los que se utilizan en las redes sociales para almace
publicaciones y respuestas, que no necesitan ninguna agrupación coher
Acceder desde la misma región le permite compartir el token de la sesión,
lo que hace que las llamadas sean más confiables.

Sugerencia para el examen


Usar el mismo token es algo administrado por el código de la
aplicación. Puede obtener información detallada sobre esto
en https://docs.microsoft.com/en-us/azure/cosmos-db/how-to-manage-
consistency#utilize-session-tokens .
En la mayoría de los casos, el uso del nivel de coherencia de la sesión
funcionará perfectamente y es el nivel recomendado para muchas
aplicaciones.
A partir de este punto, si necesita más coherencia, intente subir un nivel
(obsolescencia limitada) o bajar un nivel (prefijo coherente) para el caso
opuesto.
Nota Cambio de conexión de coherencia
Al utilizar la API de Cosmos DB, puede definir niveles de coherencia
personalizados. Además, incluso con un nivel específico definido en la configuración,
también se puede cambiar llamada por llamada utilizando la API.

ALTA DISPONIBILIDAD
Como parte del SLA para Cosmos DB, varias opciones de configuración le
permiten definir exactamente lo que desea para su tienda. Funciona al
tener varias copias de los mismos datos.
Como ya se explicó, una cuenta de Cosmos DB puede contener una o más
bases de datos, y cada base de datos puede contener varios
contenedores. Cada contenedor, que puede almacenar tablas, gráficos u
otras colecciones, se almacena en particiones físicas en cada región. Y
cada partición tiene cuatro copias de los mismos datos. Si define su
Cosmos DB para usar tres regiones diferentes, se mantendrán 12 copias
en cualquier momento.
El único punto de falla es cuando la base de datos se define con solo una
región de escritura, con el resto de ellas como réplicas de lectura, y
sucede algo malo, como una aplicación que se comporta mal u otros
cambios incontrolados.
Para obtener una alta disponibilidad real, debe configurar al menos dos
regiones diferentes para escrituras. En caso de una falla en una de estas
regiones, la aplicación utilizará la otra región para continuar con las
actividades de escritura si habilitó la conmutación por error automática
para la cuenta. Cosmos DB detecta automáticamente la falla en la región
primaria y promueve una de las regiones secundarias a primaria para
seguir funcionando.
Una vez que la región primaria regresa, Cosmos DB replica los cambios de
la activa y vuelve a promover la original como primaria.
Además, puede configurar zonas de disponibilidad , lo que significa tener
réplicas en diferentes zonas en las mismas regiones. Cuando defina una
configuración de escritura de varias regiones, algunas ubicaciones
habilitarán esta opción (en este momento, no todas las regiones lo
admiten). Esta redundancia de zona no genera costos adicionales para su
suscripción.

SOLICITAR UNIDADES
La unidad de medida para la implementación de Cosmos DB es la unidad
de solicitud (RU). Las RU se utilizan para calcular el precio y, por
supuesto, la facturación.
La RU representa el rendimiento de sus datos. Es una unidad abstracta
que representa las operaciones de entrada / salida por segundo (IOPS), el
uso de la CPU, la memoria y factores similares, por lo que no es necesario
estimar cada uno de ellos individualmente.
Puede usar algunas unidades como referencias cuando calcule los costos,
como en estos dos ejemplos:
• La lectura de 1 KB representa 1 RU.
• Escribir 1 GB requiere al menos 10 RU.
La medida real es RU / segundo y puede aumentarla o disminuirla en 100
unidades por segundo. El costo de facturación se calcula por horas para
facilitar la asignación.
Factores como el tamaño de los datos o la cantidad de solicitudes afectan
los costos; la mayoría de estos factores son obvios y otros no tan obvios,
entre ellos:
• El número de propiedades indexadas multiplicado por los
elementos indexados para cada una.
• El nivel de consistencia asignado
• La complejidad de las consultas ejecutadas y sus resultados
Debe evaluar los conjuntos (columnas de resultados) y predicados
(relaciones y condiciones) aplicados en cada consulta. Cada uno de ellos
podría cambiar el número de RU utilizadas por cada consulta.
Además, cuantas más funciones y procedimientos almacenados utilice, se
consumirán más RU. La complejidad de esos procedimientos también
aumenta el consumo de RU.
Tener todos estos elementos que influyen en las RU dificulta el cálculo de
un rango estimado aproximado. Sin embargo, las API que se utilizan para
trabajar con datos en Cosmos DB devuelven el costo de las RU por cada
comando ejecutado, lo que facilita la estimación y el ajuste de los costos a
lo largo del tiempo.
Es importante obtener la información de las API, porque uno de los
factores que afectan a las RU es el nivel de coherencia, y un comando
podría cambiar su propio nivel de coherencia, lo que cambia las RU para
ese comando específico.
Finalmente, debe definir el rendimiento para su implementación
utilizando uno de dos niveles: contenedor o base de datos. Para ambos,
configure la proporción de RU por segundo que se utilizará. Después de
hacer eso, tiene la proporción disponible en el nivel
correspondiente. Cuando su trabajo excede el valor asignado, pueden
ocurrir retrasos, que se pueden solucionar mediante reintentos. Sin
embargo, es mejor refinar la configuración y evitar retrasos.
Cuando define el rendimiento de un contenedor, el contenedor se ve
obligado a administrar ese rendimiento exacto. Si establece el valor
completo para una base de datos, la configuración se comparte con todos
los contenedores que contiene, lo que le brinda más flexibilidad.
Cada contenedor de una base de datos requiere al menos 100 RU cuando
configura el valor en el nivel de la base de datos, por lo que 10
contenedores requieren un mínimo de 1000 RU. El rendimiento de un
contenedor podría ser diferente del rendimiento de toda la base de datos.
Las API tienen métodos específicos para consultar el estado de su base de
datos o contenedor y, mejor que eso, la configuración aproximadamente
deseada. Además, puede ver los mismos valores en Azure Portal para
ayudarlo a decidir cómo reconfigurar su implementación.
Para ambos niveles, puede configurar un rendimiento fijo o elástico,
según la tasa de cambio de su aplicación y sus propias
estimaciones. Tener una configuración de escala automática elimina los
retrasos mientras ajusta los costos con más precisión, lo que garantiza
que no haya una asignación excesiva de rendimiento.
Las nuevas aplicaciones, o aquellas con cambios significativos en la
utilización a lo largo del tiempo, son las mejores candidatas para la
configuración dinámica. Por supuesto, la configuración dinámica también
es ideal para entornos de desarrollo.
Puede cambiar de escala estándar a escala automática y viceversa en
cualquier momento mediante el portal de Azure o cualquiera de las API
disponibles.

API DE AZURE COSMOS DB


El almacenamiento de Cosmos DB se puede utilizar de diferentes formas,
según las necesidades de su negocio. Esta es la razón por la que debe
elegir una API para interactuar y, lo que es más importante, hacerlo en el
mismo momento en que crea la cuenta de Cosmos DB.
El siguiente ejemplo de JSON es la base para comprender las consultas en
algunas de las muestras de API que exploraremos más adelante.

Muestra de datos en formato JSON


Haga clic aquí para ver la imagen del código
[

"CustomerID": "ALFKI",

"CompanyName": "Alfreds Futterkiste",

"ContactName": "Maria Anders",

"Ciudad": "Berlín",

"PostalCode": "12209",

"País": "Alemania"

},

"CustomerID": "ANATR",

"CompanyName": "Ana Trujillo Emparedados y helados",


"ContactName": "Ana Trujillo",

"Ciudad": "México DF",

"PostalCode": "05021",

"País": "México"

Nota Ejemplo JSON completo


Puede encontrar una muestra más completa de este JSON en el archivo NWCustomers.json
en el código fuente del Capítulo 3 .

Veamos las cinco API y veamos cómo se utilizan:


1. API de MongoDB
Cosmos DB es capaz de alojar repositorios de Mongo DB, que se
pueden importar directamente a él. De hecho, Cosmos DB admite
la importación de datos de varias fuentes y puede transformar e
importar bases de datos completas con el formato MongoDB.
Una vez que se importan sus datos, puede ejecutar la misma
sintaxis utilizada por las aplicaciones diseñadas para MongoDB
contra Cosmos DB sin cambios, siguiendo la notación de puntos
de JScript para MongoDB como se muestra a continuación:
Haga clic aquí para ver la imagen del código
db.Items.find ({}, {Ciudad: 1, _id: 0})

En este caso, solo se devolverá la columna Ciudad, pero no la


identificación. La notación del findmétodo es la lista de filtros
como primer argumento y la lista de columnas como segundo
argumento. Cada columna seguida de un 1 indica que la columna
debe mostrarse, pero si el nombre va seguido de un 0, eso
significa que la columna no se incluirá en los resultados.
El siguiente ejemplo utiliza un filtro por país, que muestra las
ciudades y los códigos postales, incluidos los ID de las filas
devueltas:
Haga clic aquí para ver la imagen del código
db.Items.find ({"Country": "Germany"}, {City: 1, PostalCode:
1, _id: 1})

2. API de Core (SQL)


Use esta API, la predeterminada para Cosmos DB, para
administrar los datos de una manera similar a la que usa con el
almacenamiento relacional.
Core SQL usa una sintaxis similar a SQL y, al mismo tiempo, tipos
de datos de JScript, que son:
1. Indefinido
2. Nulo
3. Booleano
4. Cuerda
5. Número
6. Objeto
Debe usar estos tipos de datos específicos porque toda la
información se almacena en formato JSON y solo se pueden usar
tipos de datos JScript estándar.
Puede obtener los elementos de la muestra utilizando una
declaración similar a SQL como
Haga clic aquí para ver la imagen del código
Seleccione la ciudad de los clientes

Un subconjunto de ANSI SQL es compatible con Core SQL,


como SELECT, GROUP BY, ORDER BY, WHEREcláusulas, algunas funciones
de agregado como SUMy AVG, y otras funciones.
La siguiente declaración SQL obtiene los mismos resultados que
el ejemplo anterior utilizando la API de MongoDB:
Haga clic aquí para ver la imagen del código
SELECCIONE Ciudad, Código Postal DE Clientes DONDE País = "Alemania"

3. API de Cassandra
Otra opción de almacenamiento de datos que se puede importar
directamente a Cosmos DB es Cassandra. La API se puede usar
contra Cosmos DB simplemente cambiando la conexión al nuevo
almacenamiento de datos.
Cosmos DB es compatible con la versión 4 de Cassandra Query
Language (CQL).
Para esta API, las consultas anteriores que ya definimos
funcionarán:
Haga clic aquí para ver la imagen del código
Seleccione la ciudad de los clientes

SELECCIONE "Ciudad", "Código Postal" DE Clientes DONDE "País" =


'Alemania'

Nota Restricción de nombre para columnas Cassandra


Para Cassandra, las columnas con letras mayúsculas o símbolos especiales deben
estar delimitadas por comillas dobles.
4. API de Gremlin (almacenamiento de gráficos)
Los datos del gráfico se procesan y requieren una sintaxis
específica.
Como recordará de nuestra discusión sobre datos gráficos en
el Capítulo 2 , “ Describir cómo trabajar con datos relacionales en
Azure ” , los elementos dentro de Cosmos DB pueden ser un
vértice / punto o una relación entre puntos.
Esa información debe estar extraída y bien formada para enviar
resultados al cliente.
Cosmos DB utiliza Gremlin, desarrollado por Apache TinkerPop,
para realizar consultas. Con los datos almacenados en gráficos,
las consultas serán:
Haga clic aquí para ver la imagen del código
gV (). hasLabel (Clientes) .out ('Ciudad')

y
Haga clic aquí para ver la imagen del código
gV (). hasLabel (Clientes) .has ('País', 'Alemania'). out ('Ciudad',
'código postal')

5. API de Azure Table


Más adelante en este capítulo analizaremos en detalle cómo
trabajar con el almacenamiento de tablas. Aquí solo necesitamos
mencionar que cuando requieres replicación global o indexación
por varias propiedades, dado que los elementos almacenados en
tablas están en formato JSON, puedes montar los datos en
Cosmos DB y tener alguna o ambas de estas características
aplicadas automáticamente.
Tenga en cuenta que Table Storage se está moviendo de Azure
Storage a Cosmos DB, por lo que esta será la opción preferida.
Utilizará la misma API (LINQ, OData o REST API) para recuperar
datos del almacenamiento de Azure Table en Cosmos DB, que
analizaremos más adelante.
Practique la creación de una cuenta y una base de datos de Cosmos DB
En esta práctica, seguirá estos pasos para tener una base de datos de
Cosmos DB lista para usar:
1. Abra https://portal.azure.com e ingrese sus credenciales.
2. Seleccione su suscripción y grupo de recursos.
3. Haga clic en Agregar y, en el cuadro de búsqueda ,
escriba Azure Cosmos DB y selecciónelo en los resultados.
4. Haga clic en Crear .
5. En la pestaña Básicos , confirme la suscripción y el grupo de
recursos.
6. Ingrese el nombre de su cuenta, la API que desea usar, en este
caso Core (SQL), y la ubicación. Tenga en cuenta que puede
habilitar la opción Notebooks para su cuenta, que cambia las
opciones en la lista desplegable Ubicación.
7. Habilite las opciones deseadas.
1. Aplicar descuento de nivel gratuito Esto le brinda
400 RU y 5 GB de almacenamiento de forma gratuita. El
descuento podría aplicarse a 25 contenedores para bases
de datos de rendimiento compartidas. Esta opción se
puede habilitar solo para una cuenta por suscripción.
Para esta práctica, habilite esta opción.
2. Tipo de cuenta Esta opción cambia la experiencia de la
interfaz de usuario en el portal, pero no la utilización de
recursos o la funcionalidad. Puede dejar esta opción
configurada en No producción .
3. Redundancia geográfica Aquí usted define las
regiones que desea utilizar para sus bases de
datos. Habilite esta opción para ver cómo proceder con la
geolocalización.
4. Escrituras de múltiples regiones Esta opción permite
que diferentes regiones sean actualizables.
No es necesario habilitar esta opción para esta práctica.
5. Zonas de disponibilidad Esta opción habilita el uso de
diferentes zonas en la misma región para
disponibilidad. Deje esta opción sin seleccionar para esta
práctica.
8. Haga clic en el botón Redes para avanzar en el asistente.
En la página siguiente, puede seleccionar el tipo de acceso
externo que permitirá su cuenta, por ejemplo, si desea permitir
que otros recursos de Azure tengan acceso a este. Al habilitar el
acceso externo, se muestran las opciones de Firewall, donde
puede agregar su propia dirección IP. Para esta práctica, habilite
el acceso externo para agregar su dirección IP.
9. Para la política de copia de seguridad , puede seleccionar
entre copia de seguridad periódica o continua. Debe solicitar la
copia de seguridad continua para su cuenta
específicamente. Además, puede definir la programación y la
retención de sus copias de seguridad. Para esta práctica, deje los
valores predeterminados.
10. En la pestaña Cifrado , puede elegir si el proceso de cifrado
utiliza una clave generada automáticamente o puede apuntar a
una personalizada por URL. Para esta práctica, use una clave
generada automáticamente.
11. Como de costumbre, puede agregar sus propias etiquetas
personalizadas para el control de facturación.
12. Finalmente, la pestaña Revisar y crear le muestra el tiempo
aproximado para crear su cuenta, que varía según la región que
seleccionó.
CONFIGURACIÓN DE SU CUENTA DE COSMOS DB
Una vez que tenga la cuenta lista para usar, puede navegar hasta el
recurso en Azure Portal, o puede navegar por el portal y buscar la cuenta
en el grupo de recursos y ver los pasos siguientes en la pestaña Inicio
rápido. Allí puede elegir su plataforma: .NET, Xamarin, Java, Node.js o
Python.
Nota Habilitar Notebook para Python o .NET
Si habilitó la función Notebook durante la creación de la cuenta, puede usarla con .NET y
Python para administrar su cuenta.

Para cualquier plataforma, el primer paso es crear uno o más


contenedores. Después de hacer eso, dado que ha seleccionado una
plataforma, una aplicación de muestra para esa plataforma estará
disponible para que la descargue. Si elige usar un cuaderno, se crea uno
nuevo junto con los pasos que necesita para crear los elementos por
código utilizando la plataforma seleccionada. De lo contrario, se le
solicitará que cree un contenedor de elementos , que utilizará su nivel
gratuito si lo seleccionó.
El siguiente paso es descargar una aplicación de muestra o navegar por el
contenedor con Azure Data Explorer desde el portal. Puede ver cómo se
ve el Explorador de datos en la Figura 3-3 .

Figura 3-3 Explorador de datos de Azure con Cosmos DB


GESTIONAR LA REDUNDANCIA GEOGRÁFICA
Para administrar dónde se replican sus bases de datos, puede ir a la
página de su cuenta en Azure Portal, navegar a ella desde su grupo de
recursos, por ejemplo, y seleccionar la opción Replicar datos globalmente
en la barra de herramientas izquierda. La Figura 3-4 muestra la página de
configuración de redundancia geográfica.
En el mapa mundial, puede hacer clic en cualquiera de los íconos de los
centros de datos para agregarlos a sus zonas de replicación. Si habilita
escrituras multirregión, se habilitará cada nueva región. Además, aquellas
regiones capaces de administrar zonas de disponibilidad muestran una
casilla de verificación que puede seleccionar para habilitar esas zonas de
disponibilidad cuando se agreguen.

Figura 3-4 Geo-redundancia de Cosmos DB

CONFIGURAR LA COHERENCIA
De forma predeterminada, se asigna automáticamente un patrón de
coherencia de sesión a una cuenta recién creada. Puede cambiarlo
seleccionando la opción Consistencia predeterminada en la barra de
herramientas izquierda de la página de su cuenta.
Se muestra un gráfico animado para explicar cómo funciona la
consistencia seleccionada, que cambia según la selección. Si opta por la
opción de Anticuario acotado, aparecen los campos para ingresar el
retardo máximo de tiempo y operaciones para que pueda configurarlos.

IMPORTAR DATOS A SU COSMOS DB


Ya conoce varios tipos de bases de datos (API) que se pueden usar con
Cosmos DB. A veces, desea importar repositorios de datos implementados
previamente a su cuenta de Cosmos DB. O quizás está creando una nueva
implementación desde cero pero tiene datos en diferentes formatos listos
para ser utilizados en su base de datos. Aquí es donde la herramienta de
migración de datos de Azure Cosmos DB resulta útil.
Nota Última versión de la herramienta de migración de datos
Puede descargar la herramienta de migración de datos aquí: https://aka.ms/csdmtool . En el
archivo zip, tiene una aplicación de consola (dt.exe) y una aplicación interactiva de
Windows (dtui.exe).

La herramienta importa datos de las siguientes fuentes:


• Amazon DynamoDB
• Contenedores de Azure Cosmos
• Importación masiva de Azure Cosmos DB
• Importación de registros secuenciales de Azure Cosmos DB
• Almacenamiento de tablas de Azure
• Gota
• Archivos CSV
• HBase
• Archivos JSON
• MongoDB
• Archivos de exportación de MongoDB
• servidor SQL
Cada uno requiere una sintaxis y verificación específicas, y detallarlos
está fuera del alcance de este libro. Solo necesitará un par de fuentes de
datos al mismo tiempo.
¿Necesita más revisión? Herramienta de migración de datos
En https://docs.microsoft.com/en-us/azure/cosmos-db/import-data encontrará información
detallada y un procedimiento paso a paso para utilizar esta herramienta con cada una de las
fuentes.

Describir Azure Storage


Los diferentes tipos de almacenamiento se agrupan bajo el paraguas de
Azure Storage, de manera similar a cómo Cosmos DB puede contener
diferentes tipos de datos, según la API definida para la base de datos.
Sin embargo, aunque la selección de API define el contenido de toda la
base de datos en Cosmos DB, las cosas son diferentes en Azure
Storage. Tiene una cuenta de Azure Storage, dentro de la cual podría tener
diferentes tipos de almacenamiento, incluso más de uno del mismo
tipo. Describiremos la mayoría de ellos, pero recuerde que todos están
bajo la misma definición de cuenta.
Dado que realiza la mayor parte de la configuración en la cuenta en sí, y
no para cada elemento individual del repositorio, examinemos primero la
parte genérica y luego describiremos cada uno.
Toda la plataforma de almacenamiento sirve a través de los protocolos
HTTP y HTTPS, lo que hace que el contenido sea accesible desde casi
cualquier plataforma. Al igual que los otros servicios de Azure, el servicio
de almacenamiento garantiza altos niveles de disponibilidad, persistencia
replicada y escalabilidad.

NIVELES DE DESEMPEÑO
Azure Storage admite dos niveles de rendimiento:
• Estándar Este nivel es el más utilizado y también el más
económico. El nivel estándar está respaldado en la parte posterior
por unidades magnéticas. Cualquier cliente puede acceder a este
nivel desde cualquier conexión, utilizando las credenciales
adecuadas.
• Premium Este nivel está respaldado por unidades SSD, que
aseguran mejores respuestas en general. Sin embargo, este nivel
está reservado para discos de máquinas virtuales, como los discos
con operaciones intensivas de lectura / escritura, como los discos
que usan las máquinas virtuales para SQL Server u otros motores
de base de datos con grandes cargas de trabajo, y para blobs. En un
futuro próximo, el nivel Premium también estará habilitado para
Azure Data Lake, ya que está en versión preliminar al momento de
escribir este artículo.

TIPOS DE CUENTA
Hay muchos tipos diferentes de cuentas disponibles, y la selección
correcta depende del tipo de datos que desea almacenar y los procesos
que ejecutará en ellos.
• General-Purpose v1 Este fue el primer tipo de cuenta de
almacenamiento en el universo de Azure Storage. Aún puede
encontrar esta opción en configuraciones heredadas. Debería usar
v2 ahora ya que tiene muchas más capacidades. De hecho, la v1 no
se recomienda en absoluto para el análisis de datos.
• General-Purpose v2 Como ya se explicó, esta es la opción
preferida. Incluye alguna configuración específica que le permite
trabajar con grandes cantidades de datos para procesos de big data,
como el almacenamiento jerárquico para Azure Data Lake, que
analizaremos más adelante en este capítulo.
• BlockBlobStorage Esta cuenta se usa con el nivel Premium
para almacenar contenido binario con o sin la capacidad de agregar
datos en algunos elementos almacenados. Para el nivel Estándar, el
mismo tipo de contenido se almacena en General-Purpose v2.
• Almacenamiento de archivos Este tipo también se usa con
el nivel Premium para almacenar archivos completos con o sin
funcionalidad de anexión. Para el nivel Estándar, el mismo tipo de
contenido se almacena en General-Purpose v2.

EXPOSICIÓN DE SERVICIO
Según el tipo de contenido servido, Azure usa diferentes patrones de URL
para el acceso, como puede ver en la Tabla 3-7 .
Tabla 3-7 URL de servicio por contenido de datos de servicio
Tipo de datos URL de servicio

Manchas (todos los https: // < Nombre de su cuenta de almacenamiento >


tipos) .blob.core.windows.net

Discos (administrado internamente por VM)

Archivos https: // < Nombre de su cuenta de almacenamiento >


.file.core.windows.net

Colas https: // < Nombre de su cuenta de almacenamiento >


.queue.core.windows.net

Mesas https: // < Nombre de su cuenta de almacenamiento >


.table.core.windows.net

NIVELES DE ACCESO
Cuando define su cuenta de almacenamiento, puede elegir uno de los
siguientes niveles de acceso:
• Nivel de acceso directo Elija este si va a utilizar la tienda con
frecuencia para acceso de lectura y / o escritura. Este nivel está
optimizado para este propósito; el acceso es más barato, pero los
costos de almacenamiento son más altos. Por lo tanto, es mejor no
utilizar este nivel con grandes segmentos de datos a menos que
necesite acceder a él con frecuencia.
• Nivel Cool Access Este nivel es mejor para almacenar datos
que tienen baja frecuencia de acceso y se almacenan durante largos
períodos de tiempo (más de 30 días). El costo de almacenamiento
es más económico, pero el acceso es más caro que con el nivel de
acceso directo.
• Nivel de acceso al archivo Este nivel está diseñado para un
almacenamiento de larga duración casi sin acceso. Los costos de
almacenamiento son más baratos, pero los costos de acceso son los
más costosos en comparación con los otros niveles. Considere usar
el nivel de acceso al archivo cuando no planee modificar sus datos o
acceder a ellos durante más de 180 días.

Sugerencia para el examen


Puede implementar la gestión del ciclo de vida para los cambios de
automatización de datos entre niveles, que se detalla
aquí: https://docs.microsoft.com/en-us/azure/storage/blobs/storage-
lifecycle-management-concepts?tabs=azure- portal .

OPCIONES DE REPLICACIÓN
Al igual que otros servicios de Azure, Azure Storage protege sus datos
mediante mecanismos de replicación. Para el almacenamiento, hay
disponibles diferentes configuraciones de replicación:
• Almacenamiento con redundancia local (LRS) Con esta
opción, los datos se replican en tres lugares diferentes dentro del
mismo centro de datos. Una falla en un disco en el centro de datos
se cubre con los otros dos, que reemplazan automáticamente al
dañado (y se proporciona un nuevo disco para mantener los datos
nuevamente en tres lugares). Sin embargo, una circunstancia
catastrófica en el centro de datos significa la pérdida de los datos.
El proceso de escritura en esta opción se gestiona de forma
sincrónica. Esto significa que el sistema le notificará de una
escritura exitosa solo cuando se actualicen las tres copias.
• Almacenamiento con redundancia de zona (ZRS) Esta
opción replica los datos en tres zonas de disponibilidad diferentes
en la misma región. Cada zona es independiente de las demás en el
hardware y los niveles de servicio base, como energía, red, etc.
Como LRS, el proceso de escritura es síncrono para las tres zonas de
disponibilidad.
• Almacenamiento con redundancia geográfica (GRS) Con
esta opción, LRS se amplía con otro LRS pero se coloca en otra
región geográfica. El LRS primario se escribe sincrónicamente y
luego los datos se envían de forma asincrónica al segundo LRS, que
repite el proceso sincrónico en la segunda región antes de
confirmar la segunda fase como comprometida.
• Almacenamiento con redundancia de zona geográfica
(GZRS) Esta opción es idéntica a GRS excepto que hay un ZRS
primario, con un LRS secundario. En el momento de escribir este
artículo, esta opción aún se encuentra en versión preliminar.
Practique la creación de una cuenta de almacenamiento
Puede crear una cuenta de almacenamiento siguiendo estos pasos:
1. En Azure Portal, seleccione el grupo de recursos que desee y
haga clic en Agregar .
2. Escriba Cuenta de almacenamiento en el cuadro
de búsqueda , selecciónela en los resultados y haga clic
en Crear .
3. Complete la siguiente configuración para cada página del
asistente:
1. Conceptos básicos Con la suscripción y el grupo de
recursos seleccionados, ingrese un nombre para la cuenta,
que debe ser globalmente único; seleccione la misma
ubicación que su grupo de recursos; para Rendimiento
(Estándar o Premium), seleccione Estándar; para Tipo de
cuenta, Replicación y Nivel de acceso de blobs, seleccione
los valores Estándar, Almacenamiento v2 RA-GRS y
Caliente, respectivamente (esos son los valores
predeterminados).
2. Redes Deje los valores predeterminados. Habilitar el
punto final público no significa acceso anónimo y no existe
ningún riesgo al elegir esta opción. Además, a veces
utilizará la cuenta de almacenamiento como fuente de
contenido público, como imágenes en sitios web y
documentos públicos compartidos con enlaces publicados
específicos. El enrutamiento de red de Microsoft permite la
conexión más rápida posible.
3. Protección de datos Aquí puede habilitar opciones
para eliminar contenido o no eliminarlo (de forma
predeterminada, la eliminación no está
habilitada). También tiene la opción de utilizar el control
de versiones para el contenido.
4. Avanzado Aquí puede configurar comportamientos
específicos para conexiones seguras, como admitir solo
conexiones HTTPS o transferencias cifradas; permitir el
acceso anónimo al almacenamiento binario; especificar el
nivel mínimo requerido para la seguridad de la capa de
transporte (TLS); utilizando almacenamiento de archivos
de gran tamaño, para niveles de rendimiento más altos,
hasta 100 TiB; usar un espacio de nombres jerárquico, que
permite que su almacenamiento se use con Azure Data
Lake Gen2, para análisis de datos de gran volumen; y el
protocolo Network File System (NFS) v3, para usos
específicos en Azure Data Lake.

Sugerencia para el examen


NFS v3 está habilitado solo en el nivel de suscripción y se
solicita al soporte de Microsoft.
5. Etiquetas Como de costumbre, puede asignar etiquetas y valores
personalizados para su referencia.
6. Revisar + Crear Como en otros asistentes, se muestra
una lista de los parámetros de configuración seleccionados,
lo que le permite crear el almacenamiento haciendo clic
en Crear .

Describir el almacenamiento de Azure Table


El primer tipo de almacenamiento que discutiremos es el almacenamiento
de tabla de Azure .
El almacenamiento de Azure Table se basa en el principio de valor clave,
pero lo amplía con capacidades específicas para administrar los datos
almacenados de manera más eficiente.
Dentro de la tabla, almacena entidades que, al tener una definición de
estructura, no necesitan adherirse a un esquema específico. Podrían tener
diferentes definiciones de estructura entre entidades.
Sin embargo, se deben cumplir ciertas condiciones:
• Las entidades deben tener lo siguiente:
• Clave de partición
• Clave de fila
• Marca de tiempo
• Las entidades no deben tener más de 255 propiedades,
incluidas las tres definidas anteriormente, lo que le deja hasta 252
pares clave-valor para usar.
• La entidad no debe tener más de 1 MB de tamaño (2 MB para
la API de tabla de Cosmos DB).
Puede usar el almacenamiento de tablas para guardar entidades y
administrarlas si todas cumplen con estos criterios.

API DE ALMACENAMIENTO DE TABLAS


Se puede acceder al servicio de almacenamiento de Azure mediante una
URL que coincida con el siguiente patrón:
Haga clic aquí para ver la imagen del código
http: // < Nombre de su cuenta de almacenamiento >
.table.core.windows.net / <nombre de la tabla>

Esta URL puede ser utilizada por cualquier plataforma que utilice la
especificación OData para las llamadas en formato REST.
¿Necesita más revisión? Especificación de OData
Puede revisar la especificación de OData en www.odata.org .

Hay disponibles herramientas y bibliotecas para diferentes lenguajes de


programación y herramientas de desarrollo para que pueda trabajar con
OData. Entre ellos se encuentra una extensión para Visual Studio Code
para la manipulación de URL de OData llamada vscode-odata; Apache
Olingo, si desea utilizar el almacenamiento de tablas de Java; y bibliotecas
cliente de Azure Storage para .NET, para usar directamente en desarrollos
de .NET Framework o .NET Core.

Sugerencia para el examen


La administración de almacenamiento de tablas se ha trasladado de las
bibliotecas cliente de Azure Storage a un nuevo espacio de nombres para
integrar las clases con Cosmos DB: API de tablas de Azure Cosmos DB.
El valor de PartitionKey y el valor de RowKey deben ser
del tipo cadena . La marca de tiempo es un valor de fecha (que el motor
de almacenamiento actualiza automáticamente). Puede asignar cualquier
texto a la clave de partición para identificar sus entidades. Por ejemplo,
supongamos que desea almacenar información sobre sus grabaciones de
música preferidas. Puede utilizar las palabras "Vinilo", "CD",
"Transmisión" y "Archivo" como claves de partición para identificar el
tipo de medio. Al mismo tiempo, puede tener otras entidades con una
clave de partición "Ejecutante" para almacenar información sobre los
músicos. Todas estas entidades se almacenarán en la misma tabla, pero
puede identificar claramente cada una de ellas como diferentes tipos de
información.
Tenga en cuenta que la clave de partición no solo agrupa su información,
sino que también la utiliza el servicio de almacenamiento para
administrar segmentos de la información o particiones. Una partición
siempreser administrado por un servidor de particiones, y un servidor
podría administrar varias particiones. Hay factores a tener en cuenta a la
hora de diseñar el almacenamiento, ya que podría haber una partición
con datos solicitados con frecuencia y puedes mejorar la situación
distribuyendo las particiones. Para datos activos, considere diseñar más
de una clave de partición para facilitar la replicación y distribución de
datos.
En la tabla 3-8 y la tabla 3-9 , mostramos dos ejemplos simples.
Tabla 3-8 Ejemplo de entidad de grabación
Nombre de la propiedad Valor

PartitionKey CD

RowKey Las cuatro estaciones

Año 1974

Ejecutante Filarmónica de Viena

Estilo Barroco

Pistas Primavera
Nombre de la propiedad Valor

Verano
Otoño
Invierno

Tabla 3-9 Ejemplo de entidad de ejecutante


Nombre de la propiedad Valor

PartitionKey Ejecutante

RowKey Filarmónica de Viena

País Austria
La API utilizada para administrar información con el almacenamiento de
tablas expone métodos para recuperar entidades por sus claves de
partición y fila. Sin embargo, la API de Table Storage no tiene forma de
buscar información por otras propiedades; debe recorrer los elementos,
uno por uno, para obtenerlos y ver si la entidad cumple con sus
requisitos. O puede usar una API mejorada para traducir la consulta a una
cadena OData codificada como esta:
Haga clic aquí para ver la imagen del código
http: // < Nombre de su cuenta de almacenamiento >
.table.core.windows.net / < nombre de la tabla > ()? $ filter
=

PartitionKey% 20eq% 20'CD '% 20and% 20Style% 20eq%


20'Baroque'

Este ejemplo obtendrá todos los CD de estilo barroco.

Sugerencia para el examen


Con la API de tabla de almacenamiento de Azure para .NET, puede
consultar los elementos mediante la sintaxis LINQ, que se traducirá a la
consulta OData antes de la ejecución.
Otra forma de realizar una búsqueda en el contenido de las entidades de
Azure Storage es agregando otro servicio de Azure : Azure Cognitive
Search .
Nota Búsqueda cognitiva de Azure
Nos referimos a Azure Cognitive Search en la Tabla 3-5 cuando explicamos los distintos
servicios que utilizan los tipos de almacén de datos NoSQL.

Practique la creación de una tabla en el almacenamiento de tablas


Para agregar Table Storage a su cuenta de almacenamiento en Azure
Portal, siga estos pasos:
1. En Azure Portal, navegue hasta su grupo de recursos y la
cuenta de almacenamiento dentro de él, o seleccione su cuenta de
almacenamiento en su panel si aparece allí.
2. En la página Descripción general , haga clic en Tablas para
abrir la página Tablas del servicio Tablas.
3. Haga clic en el botón Tabla en la parte superior e ingrese un
nombre para su tabla.
Una vez creada, la tabla aparecerá en la lista y se mostrará la URL
específica generada para apuntar a la tabla.

USAR EL EXPLORADOR DE ALMACENAMIENTO PARA


ADMINISTRAR SUS DATOS
Nota Vista previa del Explorador de Storage
En el momento de redactar este documento, el Explorador de almacenamiento en Azure
Portal es una versión preliminar. Esto significa que puede haber algunos cambios entre lo
que se explica aquí y lo que ve.

Con el Explorador de almacenamiento, puede ver, agregar y trabajar con


sus datos en cualquiera de los servicios de almacenamiento que tenga en
su cuenta, incluidas, por supuesto, las tablas. Haga clic en el Explorador de
almacenamiento en la página Vista previa de su cuenta de
almacenamiento en la barra de herramientas de la izquierda y aparecerá
una vista de árbol, como la de la Figura 3-5 , con los distintos tipos de
almacenamiento y los contenedores definidos en cada uno. En este
momento, solo tendrá la tabla que creó.
Figura 3-5 Lista del Explorador de almacenamiento
Si selecciona la tabla que ya creó, tiene opciones de consulta, agregar,
editar, filtrar y otras. Haga clic en Agregar para ingresar una nueva
entidad en la tabla en una ventana a la derecha de su página. Debe
ingresar una clave de partición y una clave de fila más una o más
propiedades personalizadas haciendo clic en Agregar propiedad.
Probemos la funcionalidad Agregar entidad usando los datos de la Tabla
3-9 para agregar una entidad para los Ejecutantes, como se muestra en
la Figura 3-6 . Al hacer clic en el botón Insertar al final del panel, agrega la
nueva entidad.

Figura 3-6 Agregar entidad del Explorador de Storage


La consulta de la tabla utiliza un patrón de filtros múltiples. Cuando hace
clic en Consulta, los filtros para PartitionKey y RowKey se habilitan
automáticamente, lo que le permite ingresar valores y seleccionar la
operación de comparación que desea realizar.
Puede eliminar cualquiera de las propiedades para buscar entidades o
agregar más propiedades para evaluar en la búsqueda, incluida la
propiedad de marca de tiempo generada automáticamente. Con el botón
Opciones de columna, puede elegir y reordenar las columnas que desea
mostrar.

Sugerencia para el examen


Recuerde: el almacenamiento de mesa es un almacenamiento
heterogéneo. Se pueden almacenar diferentes tipos de entidades en la
misma tabla. Mire la Figura 3-7 , donde puede ver las dos muestras
definidas previamente almacenadas en la tabla.

La Figura 3-7 muestra dos entidades diferentes almacenadas en la misma


tabla, con diferentes esquemas.

Figura 3-7 Diferentes entidades en una tabla

CONEXIÓN AL ALMACENAMIENTO DE LA MESA


Independientemente de la tecnología que utilice para administrar sus
datos en el almacenamiento de la tabla, necesitará al menos dos piezas de
información para llegar a la tienda: el nombre de la cuenta de
almacenamiento, que define cuando crea la cuenta, y una clave.
Puede obtener la clave del portal de Azure de esta manera:
1. Navegue hasta su grupo de recursos y seleccione su cuenta de
almacenamiento.
2. En la barra de herramientas de la izquierda, busque la opción
Teclas de acceso en el grupo Configuración. Allí encontrará el
nombre de su cuenta y dos claves diferentes con sus
correspondientes cadenas de conexión.
Algunos SDK y bibliotecas de conexión son capaces de analizar la cadena
de conexión y obtener toda la información de conexión requerida desde
allí. En otros casos, como ya se mencionó, puede usar solo el nombre de
su cuenta de almacenamiento y una de las claves.
Hay dos claves diferentes que le permiten compartir una de ellas si es
necesario mientras mantiene la otra reservada para un acceso seguro. En
la misma página donde obtienes las claves, tienes opciones para
renovaciones de claves, que invalidan inmediatamente la preexistente.
Se proporcionan dos URL de protocolo HTTPS para cada servicio de
cuenta de almacenamiento, utilizando el nombre de su cuenta de
almacenamiento como parte de la URL. Con el almacenamiento de mesa,
se ven así:
Haga clic aquí para ver la imagen del código
https: // < Su_nombre_cuenta > .table.core.windows.net /

https: // < Your_Account_name > -


secondary.table.core.windows.net/

Describir Azure Blob Storage


Cuando deba almacenar información binaria, imágenes, sonidos, video o
datos grandes en diferentes formatos y esquemas, debe usar Azure Blob
Storage.
Azure Blob Storage es el lugar preferido para tener su información de
macrodatos, y es donde Data Lake, HDInsight y otros grandes procesos de
datos almacenan los datos. El almacenamiento de blobs también es la
opción que utilizan los procesos de copia de seguridad y otros servicios
de PaaS Azure lo utilizan para almacenar registros.
Al igual que con los otros servicios disponibles desde una cuenta de
almacenamiento, los datos son accesibles mediante los protocolos HTTP y
HTTPS, así como la API REST.

ORGANIZACIÓN DE BLOBS
Dado que se pueden almacenar muchos elementos en Blob Storage y se
pueden almacenar miles, o incluso millones, de objetos diferentes en él,
probablemente desee organizar esos elementos de alguna manera. El
almacenamiento de blobs le permite mantener sus datos dentro
de contenedores .
Cada contenedor se puede definir con acceso público o privado y será
alcanzado por una URL siguiendo esta estructura:
Haga clic aquí para ver la imagen del código
https: // < Your_Account_name > .blob.core.windows.net / <
Container_name >

Después de crear su contenedor, puede asignarle metadatos agregando


pares clave-valor, que se pueden usar para organizar los distintos tipos de
contenido. Un blob puede almacenar hasta 5 PiB de información
(4.5035.996 GB) y no hay límite para la cantidad de blobs dentro de un
contenedor. Un blob podría tener hasta 50.000 bloques de 100 MiB
(104,86 MB) cada uno.
Como puede ver, Azure Blob Storage no es una limitación para grandes
volúmenes de datos y se puede usar en análisis de datos, inteligencia
artificial (IA) o almacenamiento de Internet de las cosas (IoT) donde se
esperan grandes volúmenes.

TIPOS DE CONTENIDO DE BLOB


Puede almacenar sus datos en tres tipos diferentes de contenido según su
uso:
• Page Blob Estructurado como páginas de 512 bytes, este tipo
de almacenamiento está destinado a imágenes de disco virtual,
pero se puede utilizar para cualquier información binaria que deba
recuperarse en fragmentos pequeños o incluso grandes,
principalmente para operaciones de lectura y escritura
aleatorias. Las aplicaciones que usan datos indexados para
administrar información en segmentos arbitrarios pueden usar la
API de REST enriquecida para blobs de páginas para mantener la
información en Azure Storage. Otro buen ejemplo del uso de este
tipo de almacenamiento, que lo usa internamente, es Azure SQL
Database, que se describe en detalle en el Capítulo 2 .
• Blob de bloques Este tipo de almacenamiento se utiliza para
el almacenamiento de macrodatos y se procesa como segmentos
con un ID para cada uno, denominado ID de bloque. Los bloques
pueden ser de diferentes tamaños y cada blob puede contener
hasta 50.000 bloques. Puede agregar, actualizar o eliminar bloques
dentro de un blob. Dado que varios bloques pueden estar
involucrados en una sola operación, existen comandos para
confirmar la operación completa. Además, los blobs individuales se
pueden actualizar en una operación de un solo paso, según su
tamaño y la versión de servicio seleccionada para el
almacenamiento de un recuento.
• Agregar blob Este es un tipo especial de blob en bloque que
está optimizado para escrituras secuenciales. Eso significa que
puede agregar contenido al final del blob pero no actualizar ni
eliminar contenido.
Practica la creación de un contenedor de blobs
En esta práctica, creará un contenedor con acceso privado.
• Para crear el contenedor:
1. Con Azure Portal, navegue hasta el grupo de recursos que desee
y haga clic en Cuenta de almacenamiento .
2. En la página Descripción general , ubique
el mosaico Contenedores y haga clic en el enlace
del título Contenedores .
3. Haga clic en el botón Contenedor y escriba un nombre para su
contenedor (para esta muestra, escriba cont-1 ); deje el acceso
configurado en Privado.
• Para agregar metadatos al contenedor:
1. En la lista verá el contenedor que acaba de crear. Haga clic en el
botón de puntos suspensivos a la derecha y seleccione Editar
metadatos .
2. Agregue una clave y un valor (para esta muestra, use Tipo como
clave e Imágenes como valor).

ALMACENAMIENTO DE DATOS PARA ANÁLISIS DE DATOS


Cuando crea una cuenta de almacenamiento con el nivel de uso general
v2, tiene la opción de activar el espacio de nombres jerárquico. Al hacerlo,
habilita Data Lake Storage Gen2, preparando así el almacenamiento para
administrar los archivos y otro contenido en estructuras jerárquicas.
La estructura jerárquica es como una estructura de carpetas en un disco
duro. Te permite agrupar y administrar contenido sin preprocesarlo, ya
que la clasificación del contenido la realiza la propia jerarquía. Sin
embargo, tenga en cuenta que los blobs son estructuras planas, lo que
significa que las operaciones de carpeta son físicas y no solo operaciones
de metadatos, lo que genera una E / S muy alta cuando los datos son
enormes.
Tener los datos organizados de esta manera le permite mover, cambiar el
nombre, analizar o eliminar conjuntos completos de información a la
vez. Debido a su estructura específica, varias plataformas de análisis de
datos como HDInsight, Azure Databricks o Azure Synapse Analytics
pueden acceder a los datos almacenados dentro de Data Lake Storage
para el sistema de archivos distribuido de Hadoop (HDFS).
Para llegar al contenido, se implementó un controlador específico de
Azure Blob Filesystem (ABFS) que es la API de comunicación principal
para esos servicios y que también puede ser utilizado por cualquier otra
plataforma. Es un enfoque diferente al original para Blob Storage, el
controlador de Blob de Windows Azure Storage. El controlador admite la
navegación dentro de las carpetas para llegar al contenido mediante una
implementación de URI con llamadas como esta:
Haga clic aquí para ver la imagen del código
abfs: // < sistema_archivo > @ < nombre_cuenta >
.dfs.core.windows.net / < ruta > / < nombre_archivo >

dónde:
• <file_system> corresponde al nombre del contenedor en una
cuenta de almacenamiento de blobs
• <account_name> es el nombre de la cuenta de
almacenamiento
• <ruta> es uno o más elementos que definen el árbol
jerárquico
• <nombre_archivo> es el nombre del archivo a administrar
Nota Protección del protocolo ABFS
El protocolo ABFS se puede proteger mediante una conexión SSL / TLS como ABFSS .

Habilitar la estructura jerárquica es más caro que no habilitarla. Sin


embargo, dado que usarás los datos de manera intensiva, tener la
estructura te permite encontrar la información que debes administrar de
manera más eficiente cada vez que la necesites. Por último, dado que el
almacenamiento es más económico que la transmisión de datos, incurrirá
en menores costos de análisis de datos al utilizar el almacenamiento de
Azure Data Lake.
¿Necesita más revisión? Controlador de blob
Puede obtener información detallada sobre el controlador Blob para Hadoop y Azure Data
Lake Gen 2 en https://hadoop.apache.org/docs/stable/hadoop-azure/abfs.html .

USAR EL EXPLORADOR DE ALMACENAMIENTO PARA


ADMINISTRAR SUS DATOS
Puede usar el Explorador de Azure Storage para administrar el contenido
de Blob Storage de una manera similar a como lo usa para el
almacenamiento de tablas.
Nota Acceso a la cuenta del Explorador de Storage
Recuerde que puede acceder al Explorador de almacenamiento desde la página Información
general de su cuenta de almacenamiento, en la barra de herramientas de la izquierda en
Azure Portal.

Por supuesto, en este caso, no puede agregar nuevos elementos de la


misma manera que agregó entidades en el almacenamiento de tabla, ya
que el contenido debe ser algún tipo de datos binarios. En su lugar, puede
cargar contenido haciendo clic en el botón Cargar.
Después de hacer clic en Cargar, aparece un panel a la derecha de la
página, pidiéndole que busque el archivo para cargar en su
almacenamiento local y si desea anular un archivo existente en caso de
que ya esté en la tienda. Al expandir el área Avanzado, puede definir otros
parámetros, como se describe en la Tabla 3-10 .
Tabla 3-10 Cargar parámetros avanzados de contenido de blob

tipo de Puede optar por utilizar el tipo de autenticación o una clave de alma
autenticación para almacenar el contenido.

Tipo de gota Puede seleccionar uno de estos tipos de contenido de blobs:


• Gota
• Página
• Adjuntar
Tamaño de Para Bloquear y agregar blobs, tiene una lista de tamaños disponibl
bloque entre 64 KB y 100 MB.

Tipo de acceso De forma predeterminada, el tipo de acceso a la cuenta de almacena


seleccionado, pero puede cambiarlo a otro tipo para este blob espec

Subir a carpeta Úselo para definir una carpeta específica dentro del contenedor.

Alcance del El contenedor predeterminado está seleccionado, pero puede elegir


cifrado si ya lo ha creado.
Después de cargar el archivo, puede obtener un enlace al archivo usando
el botón Copiar enlace. El enlace tendrá el siguiente patrón:
Haga clic aquí para ver la imagen del código
https: // < Storage_Account_name > .blob.core.windows.net / <
Container_Name > / < File_Name >

Cuando hace clic con el botón derecho en el archivo, aparece un menú


contextual con las siguientes opciones, la mayoría de las cuales se
explican por sí mismas:
• Abierto
• Descargar
• Dupdo
• Rebautizar
• Borrar
• Cambiar el nivel de acceso
• Obtenga la firma de acceso compartido
• Adquirir arrendamiento
• Crear instantánea
• Administrar instantáneas
• Estadísticas de selección
• Propiedades
Es posible que algunas opciones no se expliquen por sí mismas:
• Cambiar el nivel de acceso Con esta opción, puede cambiar
el nivel de su contenido. Por ejemplo, suponga que tiene datos que
necesita usar con frecuencia solo este mes, pero desea mantenerlos
allí más adelante en caso de que los necesite. Puede cambiar el
nivel a Frío o incluso Archivar y reducir su factura.
• Obtener firma de acceso compartido Esta opción le permite
crear una URL con información de autorización específica. Al
hacerlo, controla el acceso al contenido de datos dentro de su
almacenamiento, incluso fuera del permiso de contenido
estandarizado. Considere un caso en el que necesita compartir
información con un proveedor durante un período limitado, o
simplemente con acceso de lectura para un solo contenido. Una
firma de acceso compartido (SAS) es la forma de satisfacer esta
necesidad. Esta opción se puede utilizar con un tipo diferente de
mecanismo de autenticación, con acciones específicas y durante un
período limitado.
¿Necesita más revisión? Tipos de firmas
Puede ver los distintos tipos de firmas de acceso y cómo administrarlos
aquí: https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview .

• Instantáneas Tiene dos opciones para administrar


instantáneas: Crear instantánea y Administrar instantáneas. Una
instantánea en el contenido de blob es como una versión de ese
contenido. Cuando crea una instantánea, se crea una copia del
contenido actual, pero no estará visible en la lista de contenido del
contenedor. Sin embargo, si usa la opción Administrar instantánea,
verá las instantáneas y la versión actual, y tendrá la opción de
eliminar, descargar o incluso promover la instantánea como la
versión actual.
• Propiedades Puede agregar información específica con esta
opción, como el idioma del contenido o incluso los metadatos
definidos por usted.

API DE AZURE BLOB


La implementación principal para la administración de contenido de
blobs es la API REST del servicio Blob . Con esta API, puede administrar el
contenido de blob a través del protocolo HTTP desde cualquier cliente
que prefiera. Todas las llamadas son llamadas basadas en URL a la URL
definida para el servicio de almacenamiento de blobs asignado a su
cuenta y utilice este formulario:
https: // < su_cuenta > .blob.core.windows.net

Algunas de las llamadas se pueden realizar como GETmétodos (para


recuperar información) y otras como POSTmétodos (para realizar
acciones).
Por lo tanto, si desea obtener la información sobre los contenedores en su
cuenta, la llamada debe ser una GETde
Haga clic aquí para ver la imagen del código
https: // < su_cuenta > .blob.core.windows.net /? comp = list

O, si desea obtener las etiquetas para un blob en particular, puede hacerlo


emitiendo una GETllamada a
Haga clic aquí para ver la imagen del código
https: // < su_cuenta > .blob.core.windows.net / <
su_contenedor > / < su_blob >? comp = tags

O, si necesita crear un elemento, como un nuevo contenedor, debe


realizar una PUTllamada a
Haga clic aquí para ver la imagen del código
https: // < su_cuenta > .blob.core.windows.net / <
New_Container_name >? restype = container

Tenga en cuenta las credenciales de llamadas de API


Todas las llamadas a la API requieren las credenciales adecuadas enviadas en el
encabezado del mensaje mediante la configuración de Autorización en la sección
Encabezados de la llamada. Hay diferentes formas de preparar el contenido del encabezado,
según el entorno que utilice.
En muchos casos, estos elementos se pueden obtener directamente con algunas bibliotecas
específicas de la cadena de conexión definida para el blob.
Por ejemplo, con el SDK de Azure Storage para JavaScript: biblioteca cliente Blob, puede
abrir la conexión mediante un SAS creado previamente. Luego, puede crear un objeto para
administrar el contenido con algo como esto:
Haga clic aquí para ver la imagen del código
new azblob.ContainerURL ('https: // $ <tu_cuenta>
.blob.core.windows.net /

$ <containerName>? $ <sasString> ',


azblob.StorageURL.newPipeline

(nuevo azblob.AnonymousCredential));

Sugerencia para el examen


Se puede acceder a Azure Data Lake mediante el esquema abfs con el
controlador Azure Blob Filesystem (ABFS), que forma parte de Apache
Hadoop y se implementa en varias versiones de Hadoop de varios
proveedores.

ADMINISTRAR CONTENIDO DE BLOBS DESDE POWERSHELL


Puede usar la biblioteca de PowerShell Azure para administrar contenido
en su almacenamiento de blobs. El primer paso es instalar el módulo
Azure PowerShell, que puede realizar siguiendo los pasos que se
describen aquí: https://docs.microsoft.com/en-
us/powershell/azure/install-az-ps?view=azps-4.5. 0 .
Una vez que el módulo está instalado, se conecta a su cuenta de Azure con
este comando:
Connect-AzAccount

Este comando abrirá un cuadro de diálogo web que le pedirá sus


credenciales de Azure. Una vez completada la conexión, la información
sobre su cuenta, suscripción e inquilino estará disponible.
Ejecute el siguiente comando para recuperar una lista de las cuentas de
almacenamiento en su suscripción actual:
Get-AzStorageAccount

Para trabajar con un tipo de almacenamiento en particular, debe obtener


un contexto para la cuenta de almacenamiento. Primero, necesita una
variable que apunte a la cuenta, usando algo como esto:
Haga clic aquí para ver la imagen del código
$ cuenta = Get-AzStorageAccount -Name < Storage_Account_name
> -ResourceGroupName

< Resource_Group_Name >

Tenga en cuenta que debe indicar la cuenta y el grupo de recursos, ya que


es posible tener el mismo nombre de cuenta en diferentes grupos de
recursos.
Una vez que tenga la variable para la cuenta, puede obtener el contexto
para asignarla a otra variable:
$ context = $ account.Context

Luego, puede cargar contenido con el comando Set-AzStorageBlobContent,


como en este ejemplo:
Haga clic aquí para ver la imagen del código
Set-AzStorageBlobContent -File "D: \ temp \ CompanyLogo.jpg"
`

-Contenedor cont-1 '

-Blob "MainLogo.jpg" `

-Contexto $ contexto

Para ver qué contenido hay en un contenedor, puede emitir un comando


como este:
Haga clic aquí para ver la imagen del código
Get-AzStorageBlob -Container cont-1 `

-Context $ context | seleccione Nombre

Recuperar contenido de un contenedor es similar pero usa Get-


AzStorageBlobContent:

Haga clic aquí para ver la imagen del código


Get-AzStorageBlobContent -Blob "MainLogo.jpg" `

-Contenedor cont-1 '

-Destino "D: \ temp \ CompanyLogoDwn.jpg" `


-Contexto $ contexto

USAR CLI PARA ADMINISTRAR CONTENIDO DE BLOBS


De manera similar, puede realizar operaciones con Blob Storage mediante
la biblioteca CLI. Recuerde que tiene acceso a la biblioteca CLI
directamente desde Azure Portal mediante Azure Cloud Shell, como
aprendió en el Capítulo 2 .
En Azure Cloud Shell, o una ventana de comandos local o incluso
PowerShell, usa los azcomandos estándar . Con la CLI, debe definir el
modo de autenticación mediante lo siguiente:
• Una cadena de conexión
• Una llave
• El auth-loginparámetro para indicar que desea conectarse
mediante credenciales de Azure Active Directory
Por ejemplo, para obtener una lista del contenido ya cargado mediante los
comandos de PowerShell, use algo como lo siguiente:
Haga clic aquí para ver la imagen del código
az Storage blob list --account-name dp900sa --container-name
cont-1 --tabla salida

--ccount-key < your_account_key >

BIBLIOTECA CLIENTE .NET PARA ALMACENAMIENTO DE BLOBS


Si desea crear una aplicación personalizada para administrar contenido
de blobs, use la biblioteca Azure.Storage para implementar su
aplicación. La biblioteca contiene clases para administrar blobs y para
crear y administrar contenedores, contenido, etc. Las llamadas a las clases
se pueden ejecutar de forma asincrónica si es necesario.
Las clases más importantes son las siguientes:
• BlobServiceClientEsta clase es el objeto principal para
administrar el almacenamiento. La clase contiene métodos para
crear nuevos contenedores, obtener referencias a un contenedor
existente, etc. Para establecer la conexión, pasa el parámetro al
constructor emitiendo una cadena de conexión o proporcionando
un URI y la clave de acceso.
• BlobContainerClientUtilice
esta clase para administrar
contenedores. Por lo general, obtiene una instancia de esta clase
con el CreateBlobContainermétodo de BlobServiceClient, o puede
crear una instancia directamente usando uno de los constructores
de clase, que le permiten pasar, además del nombre del
contenedor, una cadena de conexión o un URI y acceder clave.
• BlobClientUse esta clase para administrar el contenido de
blobs. Nuevamente, puede obtener una instancia usando un
método de clase, como GetBlobClientfrom BlobContainerClient, o
crear una nueva instancia usando uno de los constructores de clase,
que reciben el contenedor y el nombre del blob, junto con los
parámetros habituales: cadena de conexión o URI y acceso clave.
Nota Muestras de API de Blob
Puede ver el código de muestra de PowerShell y una aplicación de muestra en .NET Core
en la carpeta Blob Storage del contenido complementario.

Describir el almacenamiento de archivos de Azure


Otro servicio de almacenamiento incluido con su cuenta de
almacenamiento es el almacenamiento de archivos, también conocido
como Azure Files. Este servicio es como los blobs de Azure en el sentido
de que le permite almacenar datos binarios como archivos, incluida la
distribución jerárquica. Azure Files puede actuar como un recurso
compartido de archivos para aplicaciones locales, funcionando
exactamente como cualquier otro recurso compartido de archivos del
servidor. Esto es posible porque Azure Files implementa el protocolo
Server Message Block (SMB), que se puede usar para conectarse a
recursos de red y asignar unidades a recursos externos.
Al usar Azure Files, su empresa evita tener diferentes versiones del
mismo archivo en diferentes ubicaciones geográficas, ya que puede usar
el servicio como un repositorio centralizado, por ejemplo, para plantillas
de documentos estándar.

AUTENTICACIÓN
El servicio Azure Files usa el control de acceso basado en roles (RBAC)
estándar de Azure para administrar los permisos de acceso. La
identificación de los usuarios, o autenticación, puede establecerse
mediante lo siguiente:
• Servicios de dominio de Active Directory Este es el Active
Directory local de la empresa. Para usarlo con Azure Files, debe
sincronizarlo con Azure AD, implementando el servicio Azure AD
Connect o Azure AAD Federation Services.

Sugerencia para el examen


Recuerde la siguiente limitación cuando utilice AD local para administrar
la autenticación con Azure Files: las cuentas de equipo no están
permitidas, ya que no tienen representación en la réplica de Azure AD. Si
necesita implementar algo como esto, sin usar una cuenta de usuario,
puede resolver el problema creando una cuenta de servicio .
• Servicios de dominio de Azure Active Directory En este
caso, las cuentas se administran directamente en su
implementación de Azure Active Directory, sin necesidad de un AD
local.
• Clave de acceso a la cuenta de almacenamiento Al igual
que con cualquier otro servicio dentro de una cuenta de
almacenamiento, puede llegar a esto utilizando cualquiera de las
dos claves API generadas para la cuenta.
Permisos importantes de la clave de acceso
El uso de la clave de acceso convierte al usuario actual en un superusuario, sin ninguna
restricción. Tenga cuidado de utilizar este patrón de autenticación solo en casos muy
especiales.

Después de establecer la fuente de autenticación, podrá asignarla como


ruta de autorización para su repositorio de Azure Files para administrar
autorizaciones individuales para archivos y directorios a través de
Kerberos. Esto es algo que asigna a nivel de cuenta de almacenamiento.
Practique Habilitar la autenticación Kerberos desde AD a una cuenta
de almacenamiento
Estos son los pasos para habilitar la autenticación Kerberos en su cuenta
de almacenamiento:
1. Navegue a su cuenta de almacenamiento en el portal de
Azure. Puede hacerlo buscando su grupo de recursos y haciendo
clic en el nombre de la cuenta de almacenamiento allí, si la cuenta
de almacenamiento no está disponible en su panel.
2. En la página Descripción general , haga clic en
el enlace Configuración en la barra de herramientas de la
izquierda.
3. Seleccione Servicios de dominio de Azure Active Directory
(Azure AD DS) en Acceso basado en identidad para recursos
compartidos de archivos .
4. En Servicios de dominio de Active Directory (AD DS) , verá
un vínculo que muestra una pestaña a la derecha, con un
procedimiento paso a paso para vincular su cuenta de
almacenamiento a su AD.
Tenga en cuenta la importancia de Kerberos
No detallaremos cada paso, ya que hacerlo está fuera del alcance de este libro. Sin
embargo, los siguientes párrafos explican las razones para usar Kerberos.

Usando una clave Kerberos . Cada vez que un usuario requiere un


recurso del recurso compartido de archivos, la cuenta de almacenamiento
debe consultar el AD para ver si el usuario existe y a qué grupos
pertenece para buscar los permisos adecuados. Para habilitar esto, debe
crear una cuenta AD para la cuenta de almacenamiento. Para hacerlo en
un AD local, puede usar una cuenta de equipo, pero como ya se mencionó,
no hay cuentas de equipo en Azure AD.
En su lugar, debe crear una cuenta, como una cuenta de servicio. Y por
razones de seguridad, se requiere una clave Kerberos.
Luego, sigue estos pasos:
1. Defina una clave Kerberos para su cuenta de almacenamiento
con un script de PowerShell como este:
Haga clic aquí para ver la imagen del código
# Conéctese a su cuenta de Azure

Connect-AzAccount

$ ResourceGroupName = "<Your_Resource-Group-Name>"

$ StorageAccountName = "<Your_Storage-Account-Name>"

$ KeyName = "key1" # IMPORTANTE: debe ser uno de los valores


predefinidos por

ValidateSet. Por defecto: key1; key2; kerb1; kerb2


New-AzStorageAccountKey `

-ResourceGroupName $ ResourceGroupName `

-Nombre $ StorageAccountName `

-KeyName $ KeyName

$ k = Get-AzStorageAccountKey `

-ResourceGroupName $ ResourceGroupName `

-Nombre $ StorageAccountName `

-ListKerbKey | '

where-object {$ _. Keyname -eq $ KeyName}

Anfitrión claro

Write-Host "Copie la siguiente clave para usarla para la cuenta de


almacenamiento en AD"

$ k. Valor

2. Pídale al administrador de su dominio que cree una nueva


cuenta con esta información:
1. SPN :"cifs/<Your-Storage-Account-
Name>.file.core.windows.net"

2. Contraseña : la clave devuelta por el script de


PowerShell anterior
Ahora que la cuenta existe en Azure AD, debe activar la función de
autorización individual. Para hacer esto, debe proporcionar cierta
información sobre la cuenta y el AD a la cuenta de almacenamiento para
poder vincularlos.
Para ello, solicite a su administrador de AD la información sobre el AD
para completar los valores en negrita en el siguiente script:
Haga clic aquí para ver la imagen del código
Set-AzStorageAccount `

-ResourceGroupName "<Su-Resource-Group-Name>" `
-Nombre "<Tu-Almacenamiento-Nombre-cuenta>" `

-EnableActiveDirectoryDomainServicesForFile $ true `

-ActiveDirectoryDomainName "<Your-Domain-Name>" `

-ActiveDirectoryNetBiosDomainName "<Your-Netbios-
Domain-Name>" `

-ActiveDirectoryForestName "<Your-Forest-Name>" `

-ActiveDirectoryDomainGuid "<Your-AD-Guid>" `

-ActiveDirectoryDomainsid "<Your-Domain-Sid>" `

-ActiveDirectoryAzureStorageSid "<Your-Storage-
Account-Sid>"

¿Necesita más revisión? Información de mapeo de cuenta


Puede buscar información de asignación de cuenta específica entre local y Azure AD y
permisos de almacenamiento de archivos aquí: https://docs.microsoft.com/en-
us/azure/storage/files/storage-files-identity-ad-ds -asignar-permisos .

AUTORIZACIÓN
Una vez que Kerberos está habilitado, puede asignar permisos específicos
a grupos o usuarios de AD. También puede asignar grupos o usuarios de
AD a roles de RBAC. Hacerlo facilita la gestión de la seguridad y se
considera una práctica recomendada.
Nota Jerarquía de autorización
Como probablemente haya leído en muchos otros lugares sobre la asignación de permisos,
para mejorar la administración de la seguridad, debe evitar asignar permisos directamente a
los usuarios. Este proceso es propenso a errores y difícil de mantener. Si utiliza la relación
recurso - RBAC - Grupo AD - usuario, y un usuario cambia su asignación de trabajo dentro
de una empresa, al pasar del Grupo AD antiguo al recién asignado cambia todos los
permisos establecidos para ese usuario inmediatamente. Esta relación es probablemente la
mejor práctica más importante para la gestión de la seguridad.

Tienes tres niveles básicos de RBAC:


• Acceso de solo lectura del lector
• Colaborador Acceso de lectura y escritura, incluido el cambio
de nombre y la eliminación de elementos
• Colaborador elevado Un colaborador pero con permisos
especiales para administrar los permisos de ACL en el nivel
mapeado de SMB

ASIGNACIÓN DE UN RECURSO COMPARTIDO DE ARCHIVOS DE


AZURE A UNA UNIDAD LOCAL
Desde cualquier equipo, puede asignar un recurso de almacenamiento de
archivos de Azure en determinadas condiciones:
• No existe una condición de bloqueo para el puerto TCP 445,
que es el puerto para SMB 3.0.
Tenga en cuenta que las versiones anteriores de SMB no son
compatibles con los recursos compartidos de archivos de Azure por
motivos de seguridad.
• El usuario debe tener los permisos adecuados para asignar
unidades en la computadora local.
Si se cumplen estas condiciones, puede usar el net
usecomando estándar para asignar una unidad local lógica al recurso
compartido de archivos de Azure, como se muestra a continuación:
Haga clic aquí para ver la imagen del código
net use < Letra de unidad >: \\ < Nombre de cuenta de
almacenamiento > .file.core.windows.net \ < Nombre de recurso
compartido de archivos >

/ usuario: Azure \ < Nombre de la cuenta de almacenamiento >


< Clave de la cuenta de almacenamiento >

Sugerencia para el examen


Observe que el net usecomando está usando la clave de la cuenta de
almacenamiento para realizar la asignación. De esa manera, un
administrador local (un miembro del grupo BUILTIN \ Administrators en
la computadora) puede administrar los permisos locales.
¿Necesita más revisión? Protocolo SMB
Para asignar un recurso compartido de archivos de Azure a un sistema operativo Linux,
debe agregar compatibilidad con el protocolo SMB, como Samba. Puede encontrar los
pasos aquí: https://docs.microsoft.com/en-us/azure/storage/files/storage-how-to-use-files-
linux .
Si desea asignar el recurso a un sistema macOS, vaya aquí para aprender
cómo: https://docs.microsoft.com/en-us/azure/storage/files/storage-how-to-use-files-mac .

SINCRONIZACIÓN DE ARCHIVOS DE AZURE


Es probable que esté familiarizado con los servicios de sincronización de
archivos en la nube, como OneDrive para cuentas Live / Hotmail /
Outlook. El servicio Azure File Share le permite sincronizar contenido con
copias locales en sus servidores locales exactamente de la misma manera
que puede hacerlo con esos servicios.
El contenido común para todas las ubicaciones de su empresa, como
plantillas de documentos y formularios de contrato estándar, se puede
actualizar en un recurso compartido de archivos de Azure, y se
actualizarán automáticamente en los servidores asignados, lo que los
hace fáciles de usar, incluso cuando no hay conexión a Internet. Esto actúa
como un procedimiento de rutina de respaldo, ya que los documentos
almacenados localmente en servidores se replicarán automáticamente en
el recurso compartido de archivos de Azure.
Azure File Sync es un servicio independiente de Azure File Share, pero
ambos son necesarios para mantener sincronizados los archivos del
servidor local. Después de implementar una instancia de File Sync, puede
definir grupos de sincronización, cada uno asignado a un recurso
compartido de archivos único. Luego, puede registrar servidores en la
instancia de Azure File Sync, asignarlos al grupo de sincronización e
iniciar la sincronización.

Sugerencia para el examen


El registro de servidores requiere la instalación y configuración del
Agente de sincronización de archivos de Azure en cada
servidor. Descargue el agente
aquí: https://go.microsoft.com/fwlink/?linkid=858257 .
HABILIDAD 3.3: IDENTIFICAR TAREAS DE
GESTIÓN BÁSICAS PARA DATOS NO
RELACIONALES
Ahora que conoce las opciones de almacenamiento de datos no
relacionales más importantes que ofrece la plataforma Azure,
revisaremos las formas de implementar, administrar, proteger y
solucionar problemas de las opciones de almacenamiento de datos no
relacionales más importantes.
Esta habilidad cubre cómo:
• Describir el aprovisionamiento y la implementación de
servicios de datos no relacionales.
• Describir el método de implementación, incluido el portal de
Azure, las plantillas de Azure Resource Manager, Azure PowerShell
y la interfaz de línea de comandos (CLI) de Azure.
• Identificar los componentes de seguridad de los datos (p. Ej.,
Firewall, autenticación, cifrado)
• Identificar problemas básicos de conectividad (p. Ej., Acceso
desde las instalaciones, acceso con redes virtuales de Azure, acceso
desde Internet, autenticación, firewalls)
• Identificar herramientas de gestión para datos no
relacionales.

Describir el aprovisionamiento y la implementación de


servicios de datos no relacionales.
Cualquiera de los servicios para cargas de trabajo no relacionales
requiere uno o más recursos de la plataforma Azure. Como mínimo,
cualquier servicio necesita un lugar para almacenar la información, la
configuración de la red para llegar al contenido y la seguridad para evitar
el uso no autorizado de la información.
Como se explicó en el capítulo anterior, Azure Resource Manager
administra los recursos y coordina las tareas para administrar esos
recursos para implementar los servicios. El proceso de implementación
de cualquiera de los servicios implica proporcionar a Azure Resource
Manager los parámetros adecuados, después de lo cual puede continuar
con la implementación.
Llamar al Administrador de recursos con los parámetros, como ya se
explicó en el capítulo anterior, se puede hacer de diferentes maneras: el
portal de Azure, PowerShell y la CLI, solo por nombrar algunas. Al igual
que con cualquier otra implementación de recursos, el "mensaje" al
Administrador de recursos se envía a través de una definición JSON. Como
discutimos en el Capítulo 2 , esas definiciones se pueden conservar como
plantillas, llamadas plantillas ARM, para automatizar el proceso.
Nota El proceso ARM
En el capítulo anterior analizamos la estructura y el proceso de trabajo de las plantillas
ARM. Consulte la Figura 2-17 para revisar el proceso ARM.

Describir el método de implementación, incluido el portal


de Azure, las plantillas de Azure Resource Manager, Azure
PowerShell y la interfaz de línea de comandos (CLI) de
Azure.
En este apartado repasaremos cómo desplegar cada uno de los recursos
con el portal de Azure y revisaremos la plantilla ARM generada en cada
caso.

IMPLEMENTAR AZURE COSMOS DB


Ya tiene un procedimiento paso a paso para crear una cuenta de Cosmos
DB en la práctica "Creación de una cuenta y base de datos de Cosmos DB",
anteriormente en este capítulo. Aquí obtendrá la plantilla ARM para que
pueda evaluar el contenido y usarlo con otras herramientas.
Practique Obtenga la plantilla ARM de su cuenta de Cosmos DB
De cualquier recurso que haya implementado, puede obtener la plantilla
para usarla más adelante. En esta práctica, obtendrá la plantilla ARM para
su cuenta de Cosmos DB.
1. Abra Azure Portal en https://portal.azure.com .
2. Busque su cuenta de Cosmos DB en su suscripción.
3. En la barra de herramientas de la izquierda, haga clic
en Exportar plantilla . Se muestra el código fuente de la plantilla
ARM.
4. En la parte superior de la página, haga clic en Descargar y
guarde el archivo como dp900cosmosdbARM Template.zip (el
archivo de descarga está comprimido de forma predeterminada).
5. Extraiga los archivos en
una carpeta dp900cosmosdbARMTemplate .
La Figura 3-8 muestra los recursos definidos en la plantilla ARM.

Figura 3-8 Recursos para una cuenta de Cosmos DB


La plantilla ARM define los valores para cada componente, utilizando el
nombre de la cuenta de Cosmos DB como parámetro, que la plantilla
concatena como un nombre único para cada uno. Puede usar la misma
plantilla ARM para crear una nueva instancia.
Importante Una cuenta de nivel gratuito por suscripción
Si desea probar alguna de las implementaciones en las próximas prácticas, debe eliminar la
creada anteriormente, ya que está usando la cuenta Cosmos DB Free Tier, que es única por
suscripción.

Practique la creación de una cuenta de Cosmos DB desde Azure Portal


con la plantilla ARM
Puede utilizar este procedimiento con cualquier plantilla ARM, sin
importar de qué recurso estemos hablando.
1. Abra Azure Portal en https://portal.azure.com .
2. En el cuadro de búsqueda en la parte superior,
escriba implementar y elija Implementar una plantilla
personalizada . Aparece una página con enlaces a algunas
plantillas predefinidas y una opción para cargar una plantilla
desde GitHub.
3. Haga clic en el enlace Cree su propia plantilla en el editor .
4. Una vez en el editor de plantillas, haga clic en Cargar
archivo .
5. Navegue y seleccione su archivo template.json descargado
previamente.
6. Haga clic en Guardar . Aunque el botón dice Guardar, de
hecho lo enviará a la página de implementación, con el parámetro
predeterminado para el nombre de la cuenta de la base de datos
asignado.
7. Puede cambiar el nombre o simplemente implementar la
cuenta de Cosmos DB con el nombre predeterminado (siempre
que no tenga una cuenta con ese nombre, por supuesto).
8. Haga clic en Revisar + Crear .
9. Lea los términos de Azure Marketplace y luego haga clic
en Crear para continuar con la implementación.
Practique la creación de una cuenta de Cosmos DB desde PowerShell
usando la plantilla ARM
La implementación de Azure Cosmos DB mediante una plantilla implica
pasos similares a los que vio en el Capítulo 2 para implementar una base
de datos SQL.
Revise la secuencia de comandos utilizada en ese ejercicio y observe que
es solo una cuestión de cambiar a la plantilla de Cosmos DB cuando
ejecuta el comando de PowerShell para la implementación en el siguiente
código:
Haga clic aquí para ver la imagen del código
New-AzResourceGroupDeployment -Name $ Name `

-ResourceGroupName $
ResourceGroup `

-TemplateUri $ TemplateFile `
-TemplateParameterObject $
paramObject

Pruébelo usted mismo.


Practique la creación de una cuenta de Cosmos DB mediante la plantilla
ARM con la CLI de Azure
Como se explicó anteriormente, cuando está implementando diferentes
recursos utilizando la plantilla ARM, es la plantilla la que define el recurso
a implementar.
Después del comando az login, implemente una nueva cuenta de Cosmos
DB con la misma plantilla emitiendo el siguiente comando:
Haga clic aquí para ver la imagen del código
az deployment group create --name < Name_of_the_Deployment >

--resource-group < Resource_Group_name > --template-file <


Path_and_File_name >

--parameters <ParameterName_1> = <Value_1> <ParameterName_2>


= <Value_2>

IMPLEMENTAR AZURE STORAGE


Acabamos de revisar diferentes formas de implementar cuentas de
Cosmos DB y Azure Storage sin usar Azure Portal. A continuación,
analizaremos diferentes enfoques para realizar implementaciones
similares utilizando otras herramientas.

BIBLIOTECA DE POWERSHELL PARA AZURE


Puede ejecutar comandos en PowerShell para administrar Cosmos DB y
todos los elementos de una cuenta de almacenamiento.
Biblioteca de Cosmos DB específica importante
Los comandos para Cosmos DB no están incluidos en el azmódulo. Para administrar
Cosmos DB desde PowerShell, también debe importar el Az.CosmosDBmódulo, con el
siguiente comando:
Haga clic aquí para ver la imagen del código
Install-Module -Name Az.Cosmosdb

El siguiente script de PowerShell crea una nueva cuenta de Cosmos DB:


Haga clic aquí para ver la imagen del código
Import-Module -Name Az

Importar -Módulo -Nombre Az.Cosmosdb

Connect-AzAccount

$ resourceGroupName = "<Resource_Group>"

$ ubicaciones = @ (" <Location_1> ", " <Location_2> ")

$ accountName = " <Nombre_cuenta> "

$ apiKind = " Sql "

$ consistenciaLevel = " Sesión "

New-AzCosmosDBAccount `

-ResourceGroupName $ resourceGroupName `

-Ubicación $ ubicaciones `

-Nombre $ accountName `

-ApiKind $ apiKind `

-EnableAutomaticFailover: $ true `

-DefaultConsistencyLevel $ consistenciaLevel `

-EnableFreeTier: $ true

Si desea crear una base de datos dentro de su cuenta de Cosmos DB,


puede hacerlo con un comando como el siguiente:
Haga clic aquí para ver la imagen del código
$ resourceGroupName = " <Resource_Group> "

$ accountName = " <Nombre_cuenta> "

$ databaseName = " <nombre_base_datos> "


New-AzCosmosDBSqlDatabase `

-ResourceGroupName $ resourceGroupName `

-CuentaNombre $ cuentaNombre `

-Nombre $ databaseName

Tenga en cuenta que tiene diferentes comandos para crear los diferentes
tipos de bases de datos según el tipo de API seleccionado:
• New-AzCosmosDBCassandraSchema
• New-AzCosmosDBGremlinDatabase
• New-AzCosmosDBMongoDBDatabase
• New-AzCosmosDBSqlDatabase
• New-AzCosmosDBTable
También hay comandos para obtener información, actualizar y eliminar
elementos, como este, que crea bases de datos en una cuenta de Cosmos
DB:
Haga clic aquí para ver la imagen del código
Get-AzCosmosDBSqlDatabase -ResourceGroupName $
resourceGroupName `

-Nombre de la cuenta $ nombre de la cuenta

O este, que obtiene información sobre todas las cuentas de un grupo de


recursos:
Haga clic aquí para ver la imagen del código
Get-AzCosmosDBAccount -ResourceGroupName $
resourceGroupName

¿Necesita más revisión? Comandos de PowerShell


Puede ver la lista completa de comandos de PowerShell relacionados con Cosmos DB
aquí: https://docs.microsoft.com/en-us/powershell/module/az.cosmosdb .
En el contenido complementario, encontrará una secuencia de comandos con estos
ejemplos, denominada 02 Cosmos DB Management.ps1 .

Para administrar cuentas de Azure Storage, el complemento Azure


PowerShell ofrece varios comandos. La siguiente práctica muestra los
pasos para crear una nueva cuenta de almacenamiento para fines
generales de almacenamiento de blobs.
Practique la creación de una cuenta de almacenamiento y un
contenedor con PowerShell
Abra una ventana de PowerShell o una instancia de PowerShell ISE.
Nota Power Shell ISE
El uso de Power Shell ISE le brinda una mejor experiencia de editor, ya que implementa
IntelliSense, un editor de varias líneas y funciones de formato.

Proceder de la siguiente:
1. Compruebe que tiene el complemento de Azure instalado en
su entorno:
Haga clic aquí para ver la imagen del código
Get-InstalledModule -Name Az

2. Si no hay ningún módulo para az, instálelo:


Haga clic aquí para ver la imagen del código
Install-Module -Name Az -AllowClobber -Force

3. Defina las siguientes variables (en el texto y el script se


asignan nuestros propios valores):
1. resourceGroupName: dp-900
2. accountName: dp900sablob
3. accountKind: StorageV2
4. skuName: Standard_GRS
5. containerName: companyblobs

Haga clic aquí para ver la imagen del código


$ resourceGroupName = " dp-900 "

$ accountName = " dp900sablob "

$ accountKind = " StorageV2 "

$ skuName = " Standard_GRS "

$ containerName = " companyblobs "

4. Conéctese a su cuenta de Azure:


Connect-AzAccount
5. Obtenga la información del grupo de recursos para obtener la
ubicación predeterminada:
Haga clic aquí para ver la imagen del código
$ ResourceGroup = Get-AzResourceGroup -Name $ resourceGroupName

$ ubicación = $ ResourceGroup.Location

6. Cree la cuenta de almacenamiento, utilizando las variables


definidas en los pasos anteriores:
Haga clic aquí para ver la imagen del código
$ storageAccount = New-AzStorageAccount `

-ResourceGroupName $ resourceGroupName `

-CuentaNombre $ cuentaNombre `

-Kind $ accountKind `

-SkuName $ skuName `

-Ubicación $ ubicación

7. Cree el contenedor de blobs. Observe que en el comando


anterior mantenemos la cuenta de almacenamiento en una
variable para obtener el contexto del contenedor.
Haga clic aquí para ver la imagen del código
New-AzStorageContainer `

-Nombre $ containerName `

-Context $ storageAccount.Context

8. Después de completar estos pasos, verifique la nueva cuenta


en Azure Portal.

CLI DE AZURE
De la misma manera que usa la biblioteca de PowerShell para administrar
su almacenamiento de datos no relacionales, puede usar la CLI de
Azure. Puede ejecutar comandos de la CLI directamente en Azure Portal
mediante Azure Cloud Shell, o desde su equipo, ejecutándolos desde una
ventana de comandos, PowerShell o Windows Terminal. Todos los
comandos de la CLI comienzan con az , que es el nombre del ejecutor.
A continuación, describe el recurso con el que desea trabajar:
• Cosmos DB
• Almacenamiento
Para ver qué comandos tiene disponibles, puede usar el argumento -h,
como en
az cosmosdb -h

Para crear la cuenta de Cosmos DB, debe usar el procedimiento explicado


en el capítulo anterior para usar una plantilla ARM.

Sugerencia para el examen


Varias plantillas ARM se comparten publicidad en GitHub para que las
use. Se pueden llamar directamente desde la azlínea de comandos o desde
PowerShell. Puede utilizar el URI de plantilla directamente como
argumento del TemplateURIparámetro, como en el siguiente ejemplo:
Haga clic aquí para ver la imagen del código
az group deployment create --resource-group <my-resource-
group> --template-

uri https://raw.githubusercontent.com/Azure/azure-quickstart-
templates/

master / 101-cosmosdb-free / azuredeploy.json

Como ejemplo, emular la creación de la cuenta de almacenamiento con


CLI se verá así:
Haga clic aquí para ver la imagen del código
az almacenamiento cuenta crear --name < nombre_cuenta > --
resource-group < Resource_Group_name >

- clase < storage_kind > --sku < SKU_NAME > --location <
Location >
BIBLIOTECAS .NET DE AZURE
Otra API que puede usar para administrar el almacenamiento no
relacional son las bibliotecas .NET de Azure.
Para crear cuentas, como una cuenta de Cosmos DB, puede
usar Microsoft.Azure.Management.ResourceManagerpara administrar plantillas
ARM. Puede usar la misma biblioteca o
la Microsoft.WindowsAzure.Management.Storagebiblioteca directamente para
crear una cuenta de almacenamiento desde cero.
El siguiente código es un ejemplo de cómo crear una cuenta de
almacenamiento:
Haga clic aquí para ver la imagen del código
Parámetros de StorageAccountCreateParameters = nuevo
StorageAccountCreateParameters

(sku, tipo, ubicación);

StorageManagementClient storageManagementClient = nuevo


StorageManagementClient

(cartas credenciales);

var resp = aguardar


storageManagementClient.StorageAccounts.CreateAsync

(resourceGroupName, accountName,

parámetros

);

parámetros,

cancelaciónToken

);

Para conocer otras bibliotecas para la administración de contenido con


ARM, consulte las secciones anteriores sobre las API de Azure Cosmos DB,
la API de Table Storage y la API de Azure Blob.
¿Necesita más revisión? Bibliotecas .NET de Azure
Para obtener más información sobre las bibliotecas .NET de Azure:
• https://docs.microsoft.com/en-
us/dotnet/api/overview/azure/resources/management
• https://docs.microsoft.com/en-us/dotnet/api/overview/azure/cosmosdb
• https://docs.microsoft.com/en-us/dotnet/api/overview/azure/storage

Identificar los componentes de seguridad de los datos (p.


Ej., Firewall, autenticación, cifrado)
Como cualquier otro recurso en Azure, los almacenes de datos no
relacionales utilizan Azure Security para proteger su información y evitar
el acceso no autorizado, físicamente o a través de Internet, con una serie
de elementos seguros. Para lograr esto, Azure implementa la misma
estructura de seguridad multicapa descrita en el capítulo anterior e
ilustrada en la Figura 2-20 . La mayoría de estos componentes de
seguridad también se aplican a Cosmos DB y Azure Storage.
Revisemos algunos de los detalles de la seguridad del almacenamiento no
relacional.

REGLAS DEL CORTAFUEGOS


Como es el caso de cualquier recurso conectado a la red, su
almacenamiento estará en riesgo si no lo protege. Es posible que desee
utilizar su cuenta para compartir contenido con usuarios externos o
incluso utilizar un recurso compartido de archivos para publicar
imágenes y otro contenido en su sitio web con acceso anónimo. Dado que
una cuenta de almacenamiento permite el acceso a todas las redes de
forma predeterminada (lo que significa exponer el contenido a cualquier
persona en el mundo), debe hacerlo solo en casos muy específicos.
Si desea deshabilitar esta opción, debe navegar a su cuenta de
almacenamiento en Azure Portal y, en el menú de la izquierda, elegir la
opción Firewalls And Virtual Networks. En la página web resultante,
puede cambiar el acceso permitido a las redes seleccionadas y luego
definir las redes a las que desea permitir el acceso.
Una alternativa rápida es agregar el acceso de cliente IP actual de la
computadora que está utilizando para acceder al portal en ese
momento. La dirección IP puede cambiar de vez en cuando, dependiendo
de su proveedor. Puede agregar direcciones IP o enrutamiento entre
dominios sin clases (CIDR) para autorizar rangos de IP. Incluso cuando
cambia el acceso permitido de Todas las redes a Redes seleccionadas, la
autorización para los servicios de Azure permanece habilitada de forma
predeterminada, lo que permite que cualquier servicio de Azure de su
suscripción y otras suscripciones llegue al contenido (que, por supuesto,
puede deshabilitar la autorización para Servicios de Azure si lo desea).
¿Necesita más revisión? Servicios de Azure con acceso
Puede ver la lista completa de los servicios de Azure autorizados de forma predeterminada
aquí: http://go.microsoft.com/fwlink/?LinkId=845585 .

Tiene otras dos configuraciones que puede habilitar que permiten el


acceso de lectura desde cualquier lugar a registros o métricas. Estas dos
últimas opciones existen porque varios servicios de Azure pueden
almacenar información de registro en una cuenta de almacenamiento en
su suscripción. Recomendamos crear una cuenta de almacenamiento
específica para todos sus registros de servicio a fin de habilitar los
permisos de lectura específicos para un solo almacenamiento
aislado. También puede usar la misma cuenta para monitorear los datos
en toda la suscripción.
Finalmente, puede realizar alguna configuración de enrutamiento para
cambiar el enrutamiento predeterminado de la plataforma de Microsoft a
un punto final de enrutamiento de Internet personalizado. Dicho cambio
está destinado a escenarios específicos, ya que el enrutamiento
proporcionado por Microsoft asegura llegar al recurso desde el punto más
cercano en la red global en cualquier momento.
¿Necesita más revisión? Enrutamiento
Para obtener más información sobre las preferencias de enrutamiento, vaya
aquí: https://docs.microsoft.com/en-us/azure/virtual-network/routing-preference-overview .

Como parte de la configuración de esta sección, puede habilitar la


publicación de puntos finales para el enrutamiento seleccionado.

TRANSFERENCIA SEGURA
Tener la tienda encriptada no garantiza una transmisión de datos
segura. Para protegerlo, debe proteger la comunicación entre el cliente y
el almacenamiento. Para este propósito, una cuenta de almacenamiento
de Azure proporciona la opción Requiere transferencia segura en la
pestaña Avanzado cuando prepara una implementación. La opción
también existe en la plantilla ARM correspondiente y podría cambiarse en
la opción de configuración de una cuenta preexistente, como puede ver en
la Figura 3-9 .

Figura 3-9 Transferencia segura para una cuenta de almacenamiento

HACER CUMPLIR LA VERSIÓN DE TLS


Para mejorar la seguridad en las transferencias de datos, Azure Storage
usa la comunicación Transport Layer Security (TLS). Puede seleccionar la
versión de TLS (1.0, 1.1 o 1.2) para usar con su cuenta, como puede ver en
la Figura 3-9 .
Debe coordinar esta configuración con la de cualquier aplicación cliente,
ya que se rechazará cualquier llamada que utilice una configuración de
nivel TLS inferior. Le recomendamos que utilice la última versión, porque
varias prácticas recomendadas de seguridad evitan el uso de niveles
anteriores.
CIFRADO DE DATOS DE ALMACENAMIENTO
Todo el contenido cargado en una cuenta de almacenamiento de Azure
está cifrado. El cifrado se produce mediante una clave de cifrado generada
y asignada automáticamente cuando implementa una cuenta.
Nota Cifrar datos antiguos
Los datos almacenados antes del 20 de octubre de 2017 no están encriptados. Debe
descargarlo y volver a cargarlo para cifrar el contenido.

Al igual que con cualquier otro recurso con cifrado, el cifrado de


almacenamiento de Azure le permite usar su propia clave de cifrado. Para
usar claves personalizadas, debe almacenarlas en Azure Key Vault y
configurar la cuenta de almacenamiento de manera adecuada.
¿Necesita más revisión? Claves de cifrado en Azure Key Vault
Para ver cómo configurar y almacenar sus propias claves de cifrado en Azure Key Vault,
vaya aquí: https://docs.microsoft.com/en-us/azure/key-vault/secrets/quick-create-portal .

Con sus claves personalizadas almacenadas en la bóveda, puede


reconfigurar su almacenamiento para usarlas navegando a su cuenta de
almacenamiento y, en la barra de herramientas de la izquierda,
seleccionando Cifrado en Configuración. Verá el tipo de cifrado
configurado como claves administradas por Microsoft y la opción
alternativa de claves administradas por el cliente. Si decide utilizar una
clave personalizada, puede asignarla mediante un URI o seleccionando el
almacén de claves y la clave.
El URI apunta a una clave dentro de Key Vault; no es un URI para ninguna
ubicación personalizada. Debe utilizar el siguiente patrón:
Haga clic aquí para ver la imagen del código
https: // {keyvault-name} .vault.azure.net / {object-type} /
{object-name} / {object-version}

La ventaja de usar el URI es el hecho de que, para mayor seguridad, puede


asignar object-version, lo que permite la rotación automática de claves.

Sugerencia para el examen


El cambio de claves administradas por Microsoft a claves administradas
de forma personalizada cifrará el contenido nuevo cuando se cargue con
la clave personalizada. Al mismo tiempo, un proceso en segundo plano
volverá a cifrar el contenido existente con la nueva clave.
Por último, tenga en cuenta que cuando personaliza el cifrado mediante
Azure Key Vault, habilita automáticamente la eliminación suave y la
protección de purga, que se puede habilitar manualmente en la
configuración de la cuenta si usa la opción administrada por
Microsoft. Sin embargo, el uso de una clave personalizada fuerza la
eliminación suave y la protección de purga sin una opción para
deshabilitarlas.

PROTECCIÓN DE DATOS
Sus datos son probablemente su recurso más valioso. Tienes varias
formas de protegerlo:
• Replicación Cualquier cuenta de almacenamiento tendrá
procedimientos de replicación en segundo plano. Esta capacidad
está incluida en el servicio de forma predeterminada, pero puede
cambiar el tipo de replicación que desea usar para cada cuenta, que
puede ser una de las siguientes definidas para toda la plataforma
Azure, como discutimos en capítulos anteriores. Como resto, aquí
está la lista de configuraciones de replicación permitidas:
1. Almacenamiento con redundancia local (LRS)
2. Almacenamiento con redundancia de zona (ZRS)
3. Almacenamiento con redundancia geográfica (GRS)
4. Almacenamiento con redundancia de zona geográfica (GZRS)
5. Almacenamiento con redundancia geográfica de acceso de lectura
(RA-GRS)
6. Almacenamiento con redundancia de zona geográfica con acceso de
lectura (RA-GZRS)
• Políticas Protege la información crítica y los documentos
oficiales mediante políticas de retención. Con esta configuración se
establece que, por ejemplo, una vez que se ha subido un documento
al almacenamiento, se puede leer tantas veces como sea necesario
pero no se puede modificar ni eliminar. Tiene tres configuraciones
diferentes para las políticas:
0. Retención del período de tiempo Con esta política, usted define
un número de días, entre 1 y 146.000 (cerca de 400 años).
1. Retención legal Para las retenciones legales, a cada póliza se le
debe asignar una etiqueta para agrupar los elementos retenidos mediante
algún tipo de identificación. La etiqueta puede ser el número de contrato,
el número de proyecto o el ID de región, entre otros. Ninguno de los
documentos con la etiqueta de retención legal definida se puede
modificar o eliminar hasta que se elimine la retención legal.
2. Agregar habilitado Esto se aplica a las políticas de retención de
períodos de tiempo, exclusivamente, como una configuración
complementaria. Habilitar esto permite que los blobs adjuntos acepten
más contenido pero no la eliminación (recuerde que los blobs adjuntos no
se pueden actualizar mediante acceso aleatorio, pero están habilitados
para la extensión de contenido).
Cualquier política que defina se crea en un estado desbloqueado. Al
hacerlo, tiene la opción de probarlo y realizar cambios durante su
configuración. Sin embargo, le recomendamos que bloquee la política
cuando se pruebe para mejorar la seguridad de los datos.
Nota Restricción de políticas inmutables
En el momento de redactar este documento, las cuentas de almacenamiento con el espacio
de nombres jerárquico habilitado no están permitidas para las políticas de
inmutabilidad. Sin embargo, esta función está en vista previa en este momento, por lo que
probablemente en un futuro cercano, o incluso cuando lea este libro, la función aparecerá
como disponible públicamente.

AUTENTICACIÓN
Como se presentó anteriormente en esta sección, las cuentas de Azure
Storage administran la autenticación mediante diferentes enfoques, ya
que las primeras implementaciones se realizaron cuando Azure aún no
integraba Active Directory en la infraestructura. Además, hay casos en los
que necesita acceder al contenido almacenado sin identificación del
usuario, pero desea mantener la seguridad de los datos al mismo tiempo,
como usar contenido protegido por derechos de autor en su sitio web u
otras herramientas de generación de contenido.
Para administrar la autenticación, la cuenta de Azure Storage permite los
siguientes procedimientos de identificación:
• Clave compartida Se generan automáticamente dos claves
compartidas diferentes para cada cuenta de almacenamiento
cuando se crea. Cualquiera de ellos puede regenerarse
manualmente en cualquier momento y activarse
inmediatamente. Una de estas claves debe usarse en el encabezado
de cualquier llamada API REST emitida para administrar datos en
el almacenamiento. La mayoría de las implementaciones de API,
como las bibliotecas de .NET Azure Storage, facilitan la adición de la
clave de autorización a las llamadas, ya sea asignándola o
utilizando las cadenas de conexión generadas por el portal de
Azure junto con las claves.
• Firmas de acceso compartido Al usar una firma de acceso
compartido (SAS), puede refinar los permisos asignados a una
aplicación o conexión en particular.
Cuando genera un SAS, obtiene un URI específico que apunta al
recurso de almacenamiento más un token con la identificación
específica y los permisos de conexión.
Como de costumbre, hay varias formas de generar un SAS, incluidas
las bibliotecas .NET, PowerShell, la CLI de Azure y el propio portal
de Azure.
En Azure Portal, la opción Firma de acceso compartido aparece en
la barra de herramientas de la izquierda de la cuenta de
almacenamiento. El proceso le permite definir los permisos y los
servicios a los que se aplican. Además, puede especificar el rango de
direcciones IP que desea autorizar, como puede ver en la Figura 3-
10 .
Figura 3-10 Generación de firmas de acceso seguro
A continuación, se muestra una lista de las opciones de configuración en
Azure Portal; las mismas opciones están disponibles cuando utiliza otros
métodos de creación.
1. Servicios permitidos Aquí se define para qué servicios tiene
permisos la firma. Podrían ser cualquiera de estos:
1. Almacenamiento de blobs
2. Recurso compartido de archivos
3. Almacenamiento en cola
4. Almacenamiento de mesa
2. Tipos de recursos permitidos Aquí puede ampliar los
permisos dentro del servicio permitido especificando qué tipo de
acceso a la API permite SAS; es decir, si define Objeto, solo se
puede usar la parte de la API que manipula objetos específicos:
0. Servicio Se puede utilizar todo el servicio.
1. Recipiente Solo se puede utilizar el recipiente.
2. Objeto Los permisos se otorgan a los objetos.
3. Permisos permitidos Con estas opciones, puede refinar los
permisos habilitados para SAS:
0. Leer
1. Escribir
2. Borrar
3. Lista
4. Agregar
5. Crear
6. Actualizar
7. Proceso
4. Una opción que permite eliminar versiones de objetos
(cuando el control de versiones está habilitado).
5. Fecha y hora de inicio y finalización Estos valores deben
completarse, pero puede definir una fecha de finalización en el
futuro.
6. Direcciones IP permitidas Aquí puede identificar una
dirección IP, o un rango de direcciones IP, permitidas para llegar
al recurso. Puede dejar esto vacío, lo que significa que desea
permitir cualquier conexión.
7. Protocolos permitidos De forma predeterminada, solo el
protocolo HTTPS está habilitado, pero también puede habilitar el
HTTP menos seguro.
8. Nivel de enrutamiento preferido Esta opción le permite
seleccionar el nivel de enrutamiento de la conexión. La opción
aparece habilitada si ha publicado los puntos finales en la sección
de firewall.
Cuando hace clic en el botón Generar SAS y cadena de conexiones, obtiene
las diversas cadenas de conexión para sus servicios seleccionados, cada
una con el SAS asignado, más el SAS en un cuadro de texto separado:
Haga clic aquí para ver la imagen del código
? sv = 2019-12-12 & ss = b & srt = c & sp = rwdlacx & se =
2120-08-25T03: 00: 00Z & st = 2020-08-25T03: 00: 00Z

& spr = https & sig = K4kxlpdiU1muUCmKKtTzvl0KrUNc151pNlt%


2F8Rnh8Ac% 3D
• Azure Active Directory Una suscripción asocia un Azure
Active Directory donde se pueden incluir usuarios. A veces, los
usuarios se crean dentro del directorio, a veces una empresa usa el
servicio Azure AD Connect para la sincronización entre AD local y
Azure, y otras veces una empresa usa solo Azure Active Directory
para la empresa.
Es posible que desee utilizar proveedores de autenticación
externos, como Windows Live, para permitir que los usuarios
externos accedan a parte de su almacenamiento. Para esos casos,
Azure Active Directory centraliza el procedimiento de
autenticación.
Las aplicaciones que acceden a datos mediante este tipo de
autenticación deben cumplir con las especificaciones de OAuth-
Bearer para realizar llamadas de autenticación.
¿Necesita más revisión? Portador de OAuth
La especificación OAuth-Bearer se describe en RFC 6750, que puede leer
aquí: www.rfc-editor.org/rfc/rfc6750.txt .
Para obtener información detallada sobre cómo una aplicación debe implementar la
especificación OAuth-Bearer para alcanzar el contenido de Azure Storage, vaya
aquí: https://docs.microsoft.com/en-us/rest/api/storageservices/authorize-with-
azure-active -directorio .

• Servicios de dominio de Azure Active Directory (para


recursos compartidos de archivos) Como ya se explicó, para los
recursos compartidos de archivos se implementa una
configuración especial para administrar los permisos sobre el
protocolo SMB. Consulte la subsección " Autenticación " en
la sección " Describir Azure File Storage ", anteriormente en este
capítulo.

AUTORIZACIÓN
Como ocurre con la mayoría de los recursos de Azure, los permisos se
asignan mediante RBAC. Puede tener roles genéricos para toda la cuenta
de almacenamiento, roles específicos para algunos de los elementos,
como blobs o almacenamiento de tablas, y algunos roles funcionales
específicos. Aquí hay unos ejemplos:
1. Genérico
1. Lector y acceso a datos Los miembros de esta función pueden
acceder a los datos de toda la cuenta de almacenamiento mediante las
claves seguras, pero no pueden crear ni eliminar nada.
2. Colaborador de la cuenta de almacenamiento Los miembros de esta
función pueden administrar la cuenta completa, como la regeneración de
claves de acceso y la creación de nuevos elementos dentro de la cuenta,
incluidos contenedores y datos.
2. Manchas
0. Colaborador de datos de blobs de almacenamiento Los miembros de
este rol pueden administrar objetos dentro del almacenamiento de blobs.
1. Propietario de datos de blobs de almacenamiento Los miembros de
este rol pueden administrar objetos y permisos e incluso eliminar el
almacenamiento de blobs.
2. Lector de datos de Storage Blob Los miembros de este rol solo
pueden mostrar contenido y leer el contenido de blob.
3. Especial
Desarrollador de análisis de Data Lake Esta función permite a los
miembros manipular trabajos, así como leer y almacenar datos,
pero no les permite crear nuevos elementos como
contenedores. Tienen permisos para administrar
jerarquías. Puede asignar cualquier usuario de AD a cualquiera
de estos roles para habilitar los permisos necesarios. Como de
costumbre, recuerde que sería mejor agregar grupos de AD a los
roles de RBAC y luego administrar la membresía de los usuarios a
los grupos en el nivel de AD para simplificar la administración de
la seguridad.

Identificar problemas básicos de conectividad (p. Ej.,


Acceso desde las instalaciones, acceso con redes virtuales
de Azure, acceso desde Internet, autenticación, firewalls)
Tener almacenamiento en Azure implica que usted establece y mantiene
conexiones a servidores remotos para usarlas cuando las necesite. Eso
significa que debe estar preparado para algunas interrupciones y poder
recuperarse de esos eventos. A veces, por razones de seguridad, no desea
exponer sus datos directamente a Internet. Además, las restricciones
legales, como las leyes internacionales o locales que protegen la
información personal, le impiden utilizar el almacenamiento de datos no
relacional.
Como vio anteriormente en este capítulo, los elementos descritos aquí
también se aplican a Azure Storage y Cosmos DB. Veamos los problemas
más importantes que puede encontrar en cada escenario y cómo
diagnosticarlos.

ACCEDIENDO DIRECTAMENTE DESDE INTERNET


Al igual que con cualquier otro uso de recursos de Internet, es posible que
tenga fallas de conexión de vez en cuando. Cualquier aplicación que use
Azure Storage debe tener algunos procedimientos de resistencia y debe
administrar las rutinas de reintento para minimizar el impacto.
Con una falla de conexión persistente, puede usar algunas herramientas
para diagnosticar el problema:
• Fiddler Esta herramienta de terceros, creada por Telerik y
disponible en www.telerik.com/fiddler , le permite investigar el
flujo de datos y la comunicación con cualquier cliente. La
herramienta analiza el tráfico mediante los protocolos HTTP y
HTTPS. Puede usarlo para analizar los encabezados y las
respuestas en las llamadas HTTP / S para ver cómo se
comportan. Puede usar Fiddler para capturar todo el tráfico o para
ejecutar llamadas específicas usando su opción de redacción.
En la herramienta de captura, puede filtrar los datos por URL. Lo
hace utilizando el nombre de su cuenta de almacenamiento, que se
incluye en los URI como se describió anteriormente (consulte
la Figura 3-11 ), para analizar lo que sucede cuando llama a algo
desde su almacenamiento.
Figura 3-11 Filtrado del seguimiento de Fiddler
La siguiente es una muestra del tipo de información obtenida por
Fiddler, donde puede ver información específica sobre el certificado
utilizado en la conexión:
Haga clic aquí para ver la imagen del código
Protocolo seguro: Tls12

Cifrado: Aes256 256 bits

Algoritmo hash: Sha384? Bits

Intercambio de claves: ECDHE_RSA (0xae06) 256 bits

== Certificado de servidor ==========

[Versión]

V3

[Sujeto]

CN = *. Dfs.core.windows.net
Nombre simple: * .dfs.core.windows.net

Nombre DNS: * .dfs.core.windows.net

[Editor]

CN = Microsoft IT TLS CA 4, OU = Microsoft IT, O = Microsoft


Corporation, L = Redmond,

S = Washington, C = EE. UU.

Nombre simple: Microsoft IT TLS CA 4

Nombre DNS: Microsoft IT TLS CA 4

• Monitor de red de Microsoft (NetMon) NetMon es una


herramienta útil para el análisis de redes, que se utiliza desde
Windows para trabajo en grupo en el siglo pasado. NetMon no ha
tenido actualizaciones desde 2010, pero aún puede ser una buena
opción si sabe cómo usarlo. Lo mismo ocurre con Microsoft
Message Analyzer (retirado en 2019).
• Wireshark Esta herramienta de terceros (una descarga
gratuita) es uno de los analizadores de red más detallados
disponibles. Inspecciona el tráfico de la red a un nivel muy bajo,
mostrándole la información a nivel de paquete del tráfico, incluido
el origen, el destino, el protocolo, los datos, etc.
Nota Identificaciones de mensajes
Cuando necesite ver lo que sucede en su red, es bueno saber con precisión qué mensajes
son importantes.
Las bibliotecas de API como la biblioteca cliente de Azure Storage, por ejemplo, asignan
un identificador único para cada llamada, el identificador de solicitud del cliente . Este
valor aparece como x-ms-client-request-iden el encabezado de una llamada.
Cuando la biblioteca necesita repetir llamadas debido a algunas fallas, usa la misma
identificación, por lo que en el seguimiento puede ver más de un mensaje con exactamente
el mismo contenido, x-ms-client-request-idincluido.
Las respuestas del servidor también tienen ID únicos, pero en este caso, cada respuesta del
servidor tendrá un ID diferente. Esos ID de servidor aparecen en el encabezado como x-
ms-request-id.
USANDO CONEXIONES PRIVADAS
Por motivos de privacidad, a veces debe establecer conexiones privadas
entre las aplicaciones y los recursos del cliente. Estas son las formas en
que puede implementar esto:
• Redes virtuales privadas Para aumentar la protección de la
conexión de sus datos, puede utilizar redes privadas virtuales
(VPN). Hay varias formas de implementar la conexión a las VPN,
pero esos métodos están fuera del alcance de este libro y no se
discutirán aquí. Lo importante es que debe tener la red virtual
definida en su infraestructura de Azure.
Suponiendo que tiene la VPN implementada, desde el punto de vista
de la cuenta de almacenamiento, solo necesita seleccionar el acceso
permitido en la sección de firewall y redes virtuales de su cuenta de
almacenamiento (incluso más de una), como puede ver en la Figura
3-12 .

Figura 3-12 Uso de redes virtuales


• Punto final privado Puede asignar una IP desde una red
virtual a su cuenta de almacenamiento para controlar la conexión a
esos recursos. Esto es útil cuando no desea permitir conexiones
desde otros servicios de Azure o conexiones externas.
Se puede utilizar un punto final privado, como ejemplo, desde una
máquina virtual conectada a la misma red virtual. O puede acceder
a él desde una conexión VPN segura mediante una puerta de enlace
VPN o Azure ExpressRoute.
Un punto final privado podría tener un nombre DNS asignado para
ubicar fácilmente el recurso. Puede crear un punto final privado
utilizando la opción Conexiones de punto final privado en la barra
de herramientas de la izquierda de su cuenta de almacenamiento. Al
crear un punto final privado, debe identificar la suscripción, el tipo
de recurso (en este
caso, Microsoft.Storage/StorageAccounts o Microsoft.AzureCosmosD
B / databaseAccounts , ya que hay puntos finales privados para
diferentes servicios, y cada punto final debe especificar para qué
servicio es). ), el nombre del recurso (la cuenta de almacenamiento
o el nombre de la cuenta de Cosmos DB) y el sub-recurso (blob,
tabla, etc.).
Luego, en el paso Configuración, selecciona la red virtual y la
subred, y luego habilita o deshabilita la opción de integración de
DNS privado, que le permite seleccionar o crear una zona de DNS
privada.

PROBLEMAS DE AUTENTICACIÓN
Además del acceso anónimo permitido para que determinados
contenedores lleven recursos a sitios de Internet públicos, Azure Storage
generalmente requiere identificación.
Como ya se explicó, una cuenta de almacenamiento permite el acceso
mediante Azure AD en la nube o en sincronización con claves de
almacenamiento locales o mediante una firma de acceso compartido.
Cada uno puede presentar diferentes cuestiones:
• Clave de almacenamiento El problema más común aquí es
usar la clave incorrecta. Tenga en cuenta que podría tener una falta
de coincidencia de tipos, que puede evitar copiando la clave desde
Azure Portal. Sin embargo, en ocasiones el protocolo utilizado para
establecer comunicaciones puede generar problemas. Evita la
mayoría de ellos ya que las claves no contienen caracteres
especiales, pero también se asegura de que no haya problemas de
decodificación / codificación al usar llamadas a la API REST.
Finalmente, las claves se pueden cambiar o rotar. Para evitar el uso
indebido, intente exponer solo una clave y reserve la secundaria
para tareas administrativas y de recuperación.
• Los problemas de Azure AD al usar este método de
autenticación son los mismos que cualquier equipo de TI
encontraría con cualquier otra aplicación, como resultado de
errores de pertenencia a grupos u otros errores de configuración
de Active Directory. Tenga especial cuidado al realizar la asignación
RBAC. Un usuario o un grupo en el rol incorrecto puede no tener
derechos para administrar los datos en el almacenamiento o puede
tener más derechos de los que necesita.
Las llamadas a la API con autenticación de usuario requieren el uso
de un token de autenticación, y la aplicación cliente es responsable
de obtenerlo e implementar los procedimientos adecuados para
administrar el requisito, incluidos, cuando sea necesario, los pasos
para procesar la autenticación multifactor (MFA), que tiene
convertirse en un estándar para muchos usuarios de AD. Un caso
especial escuando necesite realizar llamadas desde una aplicación o
servicio desatendidos. En este caso, si prefiere no usar las claves de
almacenamiento, debe definir una identidad administrada de
Azure. No se trata de un usuario, sino de una combinación de ID y
clave, que se pueden obtener para algunos recursos de Azure, como
máquinas virtuales, funciones de Azure y algunos otros servicios de
Azure. Una identificación administrada es una combinación de tres
códigos: una identificación de inquilino , una identificación de
cliente y una palabra secreta .
• Firma de acceso compartido Si revisó el procedimiento para
crear una firma de acceso compartido, sabe que debe definir
permisos específicos para lectura, escritura, etc. la IP o rango de IP
que desea autorizar; y otros parámetros. Si una llamada no se
adhiere a la configuración específica, se devolverá un mensaje
Prohibido. No hay ninguna opción para cambiar esto modificando
parte de la firma, incluso cuando puede leer parte de ella, como las
fechas de inicio y finalización, que son legibles por humanos. La
clave al final de la firma se genera utilizando la configuración
específica y no coincidirá con el cambio. En tal caso, solo un nuevo
SAS puede resolver el problema.
• Azure AD con SMB Aquí, recuerde que la autorización se
administrará en el lado local. Al crear un mapa para un recurso
compartido de archivos, usa una de las claves de almacenamiento
en el procedimiento de mapeo. Pero el acceso de los usuarios es
algo administrado por Active Directory en sincronización con
Azure Active Directory, como se explicó anteriormente. Un
elemento a considerar es el hecho de que, una vez que el equipo
local tiene el reinicio de la asignación, el mapa se perderá a menos
que lo marque como Reconectar. Sin embargo, hacerlo requiere la
clave de acceso, que no se puede almacenar con el net
usecomando. Para almacenar el mapa, debe agregar las
credenciales al almacenamiento de Credenciales de Windows del
servidor.
Estos son los pasos que debe seguir:
1. Abra el Panel de control en la computadora local que tiene
asignado el recurso compartido de archivos. Puede acceder a él
escribiendo Panel de control en el cuadro de búsqueda de su
sistema operativo.
2. Haga clic en el grupo Cuentas de usuario .
3. En Administrador de credenciales , haga clic
en Administrar credenciales de Windows .
4. Haga clic en el enlace Agregar credencial de Windows y
haga lo siguiente:
1. Ingrese el URI para su recurso compartido de archivos en
el cuadro Dirección de red o de Internet .
2. Deje el nombre de usuario vacío.
3. Ingrese la clave de almacenamiento en el cuadro Contraseña .

Identificar herramientas de gestión para datos no


relacionales.
En este capítulo, le mostramos cómo administrar datos mediante Azure
Portal y Azure Data Explorer. A continuación, exploraremos otras
herramientas que puede utilizar para administrar los datos dentro de su
almacenamiento.

EXPLORADOR DE DATOS DE AZURE


Desde el principio, hemos necesitado una herramienta para administrar
los datos de Cosmos DB. Encargado de desarrollar uno, el equipo de
Microsoft consideró que era una buena oportunidad para crear una
herramienta integrada en lugar de una específica. Esa es la razón por la
que crearon Azure Data Explorer.
Dado que es una aplicación moderna, Azure Data Explorer se puede
utilizar en un entorno Windows y también en macOS y Linux.
Nota Última versión de Azure Data Explorer
Puede obtener la última versión de Azure Data Explorer
aquí: https://azure.microsoft.com/en-us/features/storage-explorer/ .

Cuando abre el Explorador de datos por primera vez, aparece un cuadro


de diálogo que le pide que establezca una conexión, como se muestra en
la Figura 3-13 .

Figura 3-13 Cuadro de diálogo Conectar a Azure Storage


Las opciones del cuadro de diálogo son las siguientes:
• Agregue una cuenta de Azure Aquí, ingrese las credenciales
de su cuenta y podrá usar cualquiera de las cuentas de
almacenamiento para las que tiene permisos, en cualquier
suscripción. Una lista desplegable le permite seleccionar el entorno
(el estándar Azure o los entornos configurados especiales para
China, Alemania, el gobierno de EE. UU.) O puede agregar uno
nuevo para implementaciones futuras.
• Agregar un recurso a través de Azure Active Directory
(Azure AD) Use esta opción para acceder a la capa de datos del
almacenamiento de Blob o Data Lake con los permisos asignados
por AD.
• Use una cadena de conexión Aquí, usará una URL específica,
ya sea con una clave de almacenamiento o un SAS.
• Utilice un URI de firma de acceso compartido (SAS) Utilice
el URI para acceder a los datos con un SAS.
• Use un nombre y una clave de cuenta de
almacenamiento Aquí, llegará a todo el contenido de la cuenta de
almacenamiento, en lugar del contenido específico al que apunta un
URI.
• Conectarse a un contenedor de blobs público Utilice esta
opción para llegar a blobs con acceso anónimo habilitado.
• Adjuntar a un emulador local Esta es una opción útil para
propósitos de desarrollo porque le ayuda a evitar el consumo de
recursos durante el trabajo de desarrollo.
Con algunas opciones, como la primera, con una cuenta de Azure, puede
acceder a más de una suscripción. Verá una opción para habilitar las
suscripciones deseadas.
Aparece un árbol con sus cuentas de almacenamiento, donde puede
expandir los nodos para llegar a los recursos con los que desea trabajar,
agrupados por tipo, como contenedores de blobs, recursos compartidos
de archivos, colas y tablas.
Por ejemplo, si selecciona un contenedor de blobs, puede ver la lista de
contenidos en el contenedor. Se le presentan las opciones Cargar,
Descargar, Abrir, Cambiar nombre, Mover y Crear nuevas carpetas, así
como opciones para la administración de permisos. De la misma manera,
puede administrar contenido para cualquiera de los tipos de
almacenamiento. Puede ejecutar muchas de las tareas realizadas por el
Explorador de datos mediante AzCopy, Cosmos Explorer y Visual Studio
Explorer.

AZCOPY
AzCopy es una aplicación de línea de comandos, creada para cargar
contenido en blobs y almacenamiento de archivos, que es útil para cargar
y descargar contenido de gran tamaño.
Nota Última versión de AzCopy
Al momento de escribir estas líneas, la última versión es v10, que se puede instalar desde
aquí: https://docs.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-
v10 . Tenga en cuenta que, si necesita utilizar AzCopy para la gestión del contenido de la
tabla, debe buscar la versión 7.3.

AzCopy puede conectarse utilizando dos métodos de autenticación


diferentes: por identidad o por SAS.
Si usa una identidad , puede usar una identidad de usuario , una identidad
administrada , un secreto de cliente o un certificado . Además, puede
utilizar una de las dos claves de almacenamiento definidas por la cuenta.
Si usa el método SAS, puede definir el comando usando SAS como
parámetro de origen o destino, como se muestra en este comando, que
copia el contenido de una carpeta local en un blob:
Haga clic aquí para ver la imagen del código
copia azcopy " C: \ local \ ruta " "https: / / <cuenta>
.blob.core.windows.net /

<contenedor> /? <SASCode> "--recursive = true

Sugerencia para el examen


Una característica interesante de AzCopy es su capacidad para copiar
contenido entre dos cuentas de almacenamiento diferentes, incluso en
diferentes suscripciones, sin usar una copia local.
EXPLORADOR DEL COSMOS
Si ha usado Azure Data Explorer recientemente, vio que el nodo del árbol
para Cosmos DB está anotado como Desaprobado. Esto se debe a que se
ha diseñado una herramienta más específica para administrar el
contenido de Cosmos DB: el Cosmos Explorer independiente, que es un
sitio web proporcionado por Microsoft en el dominio Azure.com .
Para conectarse a su cuenta de Cosmos DB, debe tener la cadena de
conexión adecuada.
Practique el uso de Cosmos Explorer para administrar sus datos
En la siguiente práctica, probará usted mismo el procedimiento paso a
paso para administrar su contenido de Cosmos DB.
1. Con Azure Portal, navegue hasta su grupo de recursos y
seleccione su cuenta de Cosmos DB para ver la página de
información general .
2. En la barra de herramientas de la izquierda,
en Configuración , haga clic en Teclas .
3. Copie la cadena de conexión primaria o secundaria.
4. Navegue hasta Cosmos Explorer
en https://cosmos.azure.com/ .
5. Haga clic en Conectarse a su cuenta con cadena de
conexión (también puede autenticarse con una cuenta de
Azure). Verá la misma interfaz que tiene en el Explorador de
datos en Azure Portal.

EXPLORADOR DE LA NUBE DE VISUAL STUDIO


Microsoft Visual Studio incluye una herramienta para la administración
de Azure directamente desde el interior del IDE. En el menú Ver,
seleccione Cloud Explorer para mostrar una ventana de herramientas a la
izquierda de su entorno. Puede ver Visual Studio Cloud Explorer en
la Figura 3-14 .
Una vez que ingrese sus credenciales de Azure, la herramienta le permite
seleccionar su suscripción y los grupos de recursos que desea
usar. También verá un icono que parece una persona en la parte superior
de la ventana del Explorador de la nube en el que puede hacer clic para
administrar sus suscripciones y cuentas.
Figura 3-14 Visual Studio Cloud Explorer
La herramienta muestra un árbol donde puede navegar por sus recursos y
administrar su contenido. Para los recursos de Azure Storage, tiene
opciones de menú para crear nuevos contenedores directamente desde la
herramienta sin abrir el portal.

Sugerencia para el examen


Ninguna de las herramientas de extensión para otras aplicaciones, como
Visual Studio Cloud Explorer, puede alcanzar los datos de Cosmos DB
directamente. En todos los casos, Cosmos DB debe administrarse desde el
portal de Cosmos DB.

RESUMEN DEL CAPÍTULO


• La información no siempre se puede estructurar en bases de
datos relacionales. Los fragmentos de información no estándar,
como los contenidos en documentos de texto o los generados por
interacciones humanas, pueden ser casi imposibles de normalizar.
• Los grandes volúmenes de datos son difíciles de administrar
en bases de datos relacionales debido a la dificultad de mantener la
coherencia y las relaciones.
• Algunas fuentes de información pueden entregarse con
diferentes formatos y deben almacenarse rápidamente para
procesarlas posteriormente.
• A veces, es importante almacenar la información tal como
está, porque en el futuro podrían estar disponibles diferentes
formas de analizarla, y los datos sin procesar y sin modificar se
pueden analizar de manera diferente, según las necesidades del
análisis.
• Azure proporciona varios servicios para administrar varios
tipos de datos no relacionales.
• Cosmos DB gestiona varios tipos de datos no relacionales. Al
mismo tiempo, se distribuye globalmente, con alta disponibilidad y
buen desempeño, mientras se implementa el principio de
elasticidad.
• Cosmos DB permite agregar o eliminar regiones de forma
dinámica sin tener que interrumpir los servicios.
• Puede configurar Cosmos DB para implementar diferentes
niveles de coherencia para equilibrar la seguridad de los datos y las
respuestas rápidas.
• Para administrar otros datos no estructurados, que pueden
tener volúmenes muy grandes, Azure ofrece cuentas de
almacenamiento.
• Las cuentas de almacenamiento proporcionan diferentes
tipos de contenedores: tablas, que también pueden existir en
Cosmos DB; manchas colas y archivos compartidos.
• El almacenamiento de blobs es el lugar para almacenar
grandes volúmenes de datos en forma no estructurada.
• El almacenamiento de blobs es el repositorio preferido para
mantener la información que puede ser utilizada por el análisis de
datos y la inteligencia artificial.
• Un almacenamiento de blobs en una cuenta con un espacio de
nombres jerárquico habilitado es un requisito para los repositorios
de Data Lake.
• Un recurso de almacenamiento de archivos es la solución
perfecta para recursos compartidos de red que se distribuyen y
replican en diferentes ubicaciones.
• Los permisos para los recursos asignados de Almacenamiento
de archivos se pueden administrar directamente en Azure
Directory.
• Cualquier cuenta de almacenamiento tiene al menos tres
copias de su contenido en cualquier momento. Se pueden
configurar niveles más altos de protección para tener réplicas
distribuidas uniformemente.
• El proceso de autenticación de una cuenta de almacenamiento
puede utilizar claves, Active Directory o firmas de acceso
específicas.
• Toda la comunicación con las cuentas de almacenamiento está
cifrada y los datos también están cifrados en el nivel de
almacenamiento.

EXPERIMENTO MENTAL
En este experimento mental, puede demostrar sus habilidades y
conocimientos sobre los temas cubiertos en este capítulo. Puede
encontrar las respuestas a este experimento mental en la siguiente
sección.
Adventure Works, la famosa empresa de bicicletas, quiere evaluar el uso
de sus productos utilizando información de las empresas de telefonía
celular utilizando datos de la plataforma de comunicación basada en la
distribución geográfica de los usuarios. Esto significa registrar la
información de triangulación de las antenas móviles a las que está
conectado cada teléfono celular en cualquier momento, así como los
movimientos de los teléfonos.
Además, la empresa decide globalizarse y quiere establecer una tienda
online donde cualquier usuario, de todo el mundo, tenga la opción de
revisar los productos, consultar sus datos y comprarlos.
Algunos países tienen regulaciones sobre dar a los compradores
potenciales información técnica detallada sobre los productos; la
información debe ser publicada en formatos específicos, en diferentes
idiomas, y con la opción de ser descargada para su posterior lectura.
La empresa quiere tener los mismos folletos, en diferentes idiomas,
disponibles en cualquier país / región.
Los pedidos de los clientes deben procesarse en un punto central en los
Estados Unidos, pero la información sobre el estado de la producción y
otros detalles del pedido deben estar disponibles en cualquier subsidiaria
del mundo.
Como parte del “Patrocinio de Adventure Works”, la compañía participa
en eventos internacionales como el Tour de Francia, La Vuelta a España y
el Giro de Italia. La empresa quiere almacenar las publicaciones de las
redes sociales referentes a esos eventos, con el fin de analizar el impacto
de la marca en un momento posterior.
Para garantizar la participación de las personas, la empresa produce
videos e imágenes del evento, que comparte desde el sitio de la empresa,
solicitando comentarios a las personas, etc.
El equipo de marketing propone algún tipo de “comunidad y ranking de
consumidores”, donde los compradores pueden invitar a otros a comprar,
con descuentos que aumentan en función de las recomendaciones
jerárquicas. Eso significa que, si un comprador recomienda a otro, y éste
recomienda a otros, el primero recibirá más descuentos.
Considerando estos escenarios:
1. ¿Qué repositorio sería mejor para la información de posicionamiento
de teléfonos celulares?
1. Almacén de documentos
2. Tienda de gráficos
3. Tienda de series de tiempo
4. Almacén de datos en columnas
2. ¿Qué almacenamiento consideraría mejor para los folletos técnicos?
1. Base de datos SQL Azure
2. Almacenamiento de tablas de Azure
3. Almacenamiento de blobs de Azure
4. Cosmos DB
3. ¿Dónde debería una aplicación que recupera información de las redes
sociales almacenar la información para su posterior análisis?
1. Almacenamiento de tablas de Azure
2. Tipo de SQL de Cosmos DB
3. Azure Blob Storage con espacio de nombres jerárquico habilitado
4. Almacenamiento en cola de Azure
4. ¿Cuál sería el lugar para almacenar el contenido multimedia para
compartir?
1. Tipo de documento de Cosmos DB
2. Almacenamiento de tablas de Azure
3. Azure Blob Storage con autorización de AD
4. Azure Blob Storage con acceso anónimo a nivel de contenedor
5. ¿Dónde debería la empresa almacenar la información de la “comunidad
de consumidores”?
1. Cosmos DB
2. Almacenamiento de archivos de Azure
3. Almacenamiento de tablas de Azure
4. Almacenamiento de blobs de Azure con almacén de datos de objetos

RESPUESTAS DEL EXPERIMENTO MENTAL


Esta sección contiene la solución al experimento mental. Cada respuesta
explica por qué la opción de respuesta es correcta.
1. C. Almacén de series temporales
Hay que almacenar información masiva, pero está directamente
relacionada con el tiempo. Y los datos serán solo piezas de información
muy pequeñas, como la identificación del teléfono celular de la antena
para cada entrada.
2. D. Cosmos DB
Puede considerar el almacenamiento de blobs como una opción, que no es
una mala elección. Pero teniendo en cuenta la distribución generalizada
de los documentos en todo el mundo, tener una cuenta de Cosmos DB ya
en uso es mejor para la distribución geográfica.
3. C. Azure Blob Storage con espacio de nombres jerárquico habilitado
Por lo general, la información de las redes sociales a menudo aumenta en
millones de entradas, y puede ser necesario realizar un análisis complejo
como el análisis sentimental. Además, se pueden implementar diferentes
procesos con los mismos datos en el futuro. Esto significa que será mejor
tener los datos en Data Lake, que requiere que los espacios de nombres
jerárquicos se almacenen correctamente. Puede administrar y consultar
el subárbol de datos con menos operaciones de las que haría con Azure
Blob.
4. D. Azure Blob Storage con acceso anónimo a nivel de contenedor
Blob Storage es perfectamente capaz de administrar datos multimedia y
podría habilitarse para acceso de lectura anónimo; Además, es más
rentable que otros tipos de almacenamiento.
5. A. Cosmos DB
La relación entre actores está mejor representada por datos gráficos, y
ese tipo de información es uno de los tipos que Cosmos DB puede
almacenar usando la API de Gremlin
Capítulo 4
Describir una carga de trabajo de
análisis en Azure
En el Capítulo 1 , “ Describir conceptos básicos de datos ”, abordamos
el almacenamiento de datos moderno desde un punto de vista
conceptual. Aprendió qué tipos de cargas de trabajo forman parte de
dichos escenarios y vio una descripción general de sus características
clave. Introdujimos los conceptos detrás del término big data ,
destacando los desafíos que puede tener que enfrentar. Además,
exploramos técnicas de análisis comunes, enfatizando por qué son tan
importantes para las empresas pero, al mismo tiempo, difíciles de
implementar. Por último, rascamos la superficie de la presentación de
datos, proporcionando una referencia rápida de los gráficos y
elementos visuales principales utilizados en informes y paneles.
Este capítulo adopta un enfoque más práctico, profundiza en los
componentes típicos de un almacén de datos moderno y Power BI, y
explora cómo la plataforma Azure lo ayuda a implementar soluciones
de análisis.

Habilidades cubiertas en este capítulo:


• Habilidad 4.1: Describir cargas de trabajo analíticas
• Habilidad 4.2: Describir los componentes de un almacén de
datos moderno.
• Habilidad 4.3: describir la ingestión y el procesamiento de
datos en Azure
• Habilidad 4.4: Describir la visualización de datos en Microsoft
Power BI
HABILIDAD 4.1: DESCRIBIR CARGAS DE
TRABAJO ANALÍTICAS
A lo largo de este libro hemos cubierto diferentes tipos de cargas de
trabajo, así como sus características y las consideraciones relacionadas
con ellas. Dado que esta habilidad cubre temas que hemos discutido
anteriormente, no brindaremos la misma cobertura completa aquí. En su
lugar, presentaremos un resumen del tema de las cargas de trabajo y el
papel que desempeñan en el panorama analítico, con indicaciones a las
secciones específicas del libro donde puede encontrar una cobertura más
amplia. Por la misma razón, no abordaremos los temas en la siguiente
lista de viñetas (bajo “Esta habilidad cubre cómo hacerlo”) uno por uno
como lo hacemos en otras habilidades. Más bien, el resumen aquí, junto
con el conocimiento más amplio que adquirió en las otras secciones, le
permitirá abordar cada uno de esos puntos.
Esta habilidad cubre cómo:
• Describir cargas de trabajo transaccionales
• Describir la diferencia entre una carga de trabajo
transaccional y analítica.
• Describe la diferencia entre el lote y el tiempo real.
• Describir cargas de trabajo de almacenamiento de datos
• Determine cuándo se necesita una solución de
almacenamiento de datos
En el Capítulo 1 presentamos la llamada curva de análisis , que describe el
nivel de madurez que ha alcanzado una empresa en la implementación de
análisis (consulte la Figura 1-13 ). Aunque el primer paso se puede lograr
a través de los sistemas de BI tradicionales, como los procesos ETL y un
almacén de datos empresarial, los pasos siguientes suelen abarcar
arquitecturas más complejas.
De hecho, es común que dichas arquitecturas contengan una combinación
de cuatro cargas de trabajo: relacional, no relacional, por lotes y de
transmisión. Estas arquitecturas a menudo se denominan almacenes de
datos modernos , para distinguirlos de los almacenes de datos
tradicionales.
La carga de trabajo relacional es probablemente la más común entre las
cuatro cargas de trabajo. Los datos se organizan en tablas, con relaciones
en campos clave entre ellos para representar, por ejemplo, todos los
pedidos de un cliente específico. La integridad referencial es el término
que indica que los niños huérfanos no pueden existir. Entonces, por
ejemplo, nunca encontrará un pedido que haga referencia a un cliente
perdido. Los datos están vinculados a un esquema, que se aplica al
escribir. Eso significa que no se pueden ingresar datos con formato
incorrecto y que se debe respetar ese tipo de datos. Además, la mayoría
de los motores de bases de datos relacionales implementan el principio
ACID, lo que garantiza que las modificaciones a los datos, su esquema o la
interrupción del servicio no causen la pérdida de datos.
Sin embargo, todas estas reglas tienen un costo. Las bases de datos
relacionales no son adecuadas para cargas de trabajo de alto rendimiento
o lotes masivos de inserción / actualización. En cambio, manejan mejor
transacciones pequeñas dirigidas a uno o pocos registros.
En los últimos años, la introducción de tecnologías en memoria ha
ampliado las capacidades de estos motores para admitir consultas de tipo
analítico, como, por ejemplo, agregaciones sobre grandes cantidades de
datos. Detrás de escena, estas tecnologías aprovechan altas tasas de
compresión para datos y operadores específicos que pueden trabajar en
lotes de filas a la vez, por ejemplo, resumiéndolos.
En un almacén de datos moderno, las bases de datos relacionales
generalmente se ubican en los bordes. A menudo son fuentes de datos, ya
que sirven como backend para aplicaciones y sitios web de los que desea
recopilar datos. Además, pueden ser el sumidero de sus cargas de trabajo
analíticas. En este caso, es común contar con bases de datos que se
estructuran como data warehouses (con tablas de hechos y dimensiones),
ya que es posible que necesite almacenar una gran cantidad de datos que,
al mismo tiempo, deben ser atendidos lo más rápido posible. cuando se le
pregunta. Por este motivo, un producto como Azure Synapse Analytics
(que aprovecha las tecnologías en memoria como índices de almacén de
columnas) es una de las opciones preferidas aquí. Azure Synapse
Analytics, a través del motor PolyBase, también puede participar en la
fase de transformación.
¿Necesita más revisión? Carga de trabajo relacional
Consulte el Capítulo 2 , " Describir cómo trabajar con datos relacionales en Azure ", para
obtener una descripción general más detallada de las cargas de trabajo relacionales.

La carga de trabajo no relacional se refiere a los datos que no vienen de


forma estructurada. Buenos ejemplos son imágenes, archivos de texto y
datos de sensores y dispositivos.
Este tipo de datos puede tener información auxiliar en un formato más
estructurado, como metadatos que almacenan el día en que se tomó una
imagen, el autor de un documento y más.
Sin embargo, el verdadero desafío es extrapolar información útil del
propio contenido. Como ejemplo, pensemos en un sistema de vigilancia en
un aeropuerto: es importante poder detectar comportamientos
anormales de forma automatizada, porque de esta forma se puede emitir
un aviso oportuno al personal de seguridad. Pero para hacerlo, debe tener
un sistema que pueda comprender lo que está sucediendo en tiempo real
o con un retraso mínimo.
Los datos no estructurados (o semiestructurados) generalmente se
almacenan en repositorios optimizados para este tipo de información. En
algunos casos, estos almacenes de datos pueden indexar el contenido
para una rápida recuperación. Por ejemplo, los datos de los dispositivos
de IoT suelen ser objetos JSON complejos con capas anidadas, y puede ser
crucial poder recuperar un solo elemento filtrando un atributo
interno. Sin un índice que cubra tales atributos, obtener "todas las
entradas con una velocidad registrada superior a 70 mph" puede ser
dolorosamente lento cuando tiene miles de millones de elementos para
buscar.
Es importante conocer los diferentes tipos de almacenes de datos no
relacionales y comprender cómo funcionan. Desde Azure Storage hasta
Cosmos DB, es probable que deba integrar estos componentes en un
escenario de almacenamiento de datos moderno como fuentes o
receptores.
¿Necesita más revisión? Carga de trabajo no relacional
Consulte el Capítulo 3 , " Describir cómo trabajar con datos no relacionales en
Azure " , para obtener una descripción general más detallada de las cargas de trabajo no
relacionales.
La carga de trabajo por lotes es común en los escenarios de
almacenamiento de datos modernos y suele ser de dos tipos: extraer-
transformar-cargar (ETL) o extraer-cargar-transformar (ELT).
En ETL, los datos se extraen de las fuentes, se transforman y finalmente se
cargan en el sumidero (o sumideros) de destino.
En ELT, los datos se extraen de las fuentes y se cargan en el receptor de
destino. La fase de transformación se realiza directamente en el
destino. Por esta razón, el receptor debe tener capacidades que le
permitan trabajar con datos a escala, como, por ejemplo, la arquitectura
de procesamiento paralelo masivo (MPP) de Azure Synapse Analytics.
Uno de los principales desafíos de las cargas de trabajo por lotes es que
deben manejar grandes cantidades de datos. Además, los datos pueden
provenir de diversas fuentes y pueden tener estructuras muy
diferentes. Todos los componentes involucrados en una carga de trabajo
por lotes deben tener capacidades de escalado. Por lo general, se prefiere
la ampliación, ya que es más probable que la ampliación incurra en
límites físicos que no se pueden superar.
Los motores detrás de servicios como Azure Data Factory, Azure Synapse
Analytics, Azure HDInsight y Azure Databricks se han creado teniendo en
cuenta la escalabilidad horizontal y son muy eficaces para manejar
cantidades variables de datos. Además, todos estos servicios admiten
muchos formatos de archivo diferentes e integran conectores a los
almacenes de datos relacionales y no relacionales más utilizados en la
industria.
Las cargas de trabajo por lotes generalmente se ejecutan según lo
programado, generalmente de noche para evitar afectar las operaciones
en los sistemas de origen. Para los almacenes de datos que están
completamente operativos todo el día, es posible que deba implementar
un procedimiento de descarga recurrente de los datos de origen a un
almacenamiento externo (por ejemplo, Azure Blob Storage),
desacoplando de esa manera el proceso por lotes de su origen.
¿Necesita más revisión? Carga de trabajo por lotes
Consulte el Capítulo 1 para obtener una descripción más detallada de las cargas de trabajo
por lotes.

La carga de trabajo de transmisión es probablemente el tipo más peculiar


de los cuatro. Los datos vienen en un flujo continuo de eventos (desde un
sensor o una red social, por ejemplo), y generalmente se analizan en
ventanas de tiempo. Las agregaciones se realizan sobre los eventos que
caen dentro de los límites de la ventana actualmente analizada. El
resultado de tales agregaciones se muestra en un panel de control en
tiempo real con fines de seguimiento y / o se guarda en un almacén de
datos para su posterior análisis. Además, los eventos sin procesar y no
agregados se pueden descargar a un almacén de datos. De esta manera,
tiene una gran cantidad de datos para alimentar modelos de aprendizaje
automático (ML) y realizar, por ejemplo, análisis de mantenimiento
predictivo y de series de tiempo, o detección de anomalías.
En un almacén de datos moderno, las cargas de trabajo de transmisión y
por lotes pueden coexistir y trabajar en paralelo en diferentes "capas". La
capa de velocidad ingiere eventos de transmisión, enriqueciéndolos con
datos estáticos si es necesario (por ejemplo, extendiendo los eventos con
información sobre el dispositivo); los agrega; y muestra / almacena los
resultados en un tablero o en una base de datos. La capa por lotes, por
otro lado, toma todos los eventos de transmisión (agregados o no)
ingeridos durante el día y los carga en un almacén de datos después de
realizar algunas transformaciones, o entrena un modelo de aprendizaje
automático con datos nuevos. Esta es solo una arquitectura de muestra,
pero transmite la idea de cargas de trabajo mixtas en el almacenamiento
de datos moderno.
Muchos servicios pueden habilitar la carga de trabajo de transmisión en
su escenario. En Azure, los más utilizados son Azure Event Hubs, Azure
Stream Analytics, Azure HDInsight y Azure Databricks.
Azure Event Hubs se puede usar para ingerir eventos entrantes,
haciéndolos disponibles para el procesamiento posterior dentro de un
período de retención configurable. Además, su función Event Hub Capture
puede descargar todos los eventos a un almacenamiento Azure Blob en
formato Avro tan pronto como lleguen.
Azure Stream Analytics se conecta perfectamente a Azure Event
Hubs. Puede crear potentes canalizaciones para realizar agregaciones
sobre los eventos que fluyen, almacenar los resultados en un almacén de
datos de destino o mostrarlos en un panel de Power BI en tiempo real.
Azure HDInsight admite Apache Spark y Apache Kafka entre sus tipos de
clúster. El primero es un motor en memoria multipropósito que tiene un
módulo específico para la ingestión y el procesamiento de flujos, mientras
que el segundo es un motor de ingestión de flujos altamente escalable y
estándar de la industria.
Azure Databricks tiene en su núcleo una versión de código cerrado y
altamente optimizada de Apache Spark. Como en Azure HDInsight, puede
usar Spark Streaming para ingerir y procesar transmisiones entrantes. Sin
embargo, la naturaleza colaborativa de Azure Databricks y su facilidad de
administración pueden ser una mejor opción en comparación con un
clúster de Apache Spark en Azure HDInsight si desea usar este motor en
su arquitectura.
¿Necesita más revisión? Carga de trabajo de transmisión
Consulte el Capítulo 1 para obtener una descripción más detallada de las cargas de trabajo
de transmisión.

HABILIDAD 4.2: DESCRIBIR LOS


COMPONENTES DE UN ALMACÉN DE DATOS
MODERNO.
Azure representa un ecosistema natural para las soluciones modernas de
almacenamiento de datos. Su oferta de servicios abarca una amplia gama
de plataformas, motores, arquitecturas y marcos, diseñados para
ayudarlo a responder de manera efectiva a cualquier desafío que pueda
surgir.
Además, estos servicios no están relacionados únicamente con la
tecnología de Microsoft; permiten a arquitectos y desarrolladores con
diferentes antecedentes trabajar juntos, haciendo posible elegir siempre
la mejor opción posible. Al mismo tiempo, se beneficia de una integración
profunda con los sistemas de seguridad, supervisión e infraestructura
back-end de Azure, que crean una columna vertebral sólida para sus
arquitecturas.
Esta habilidad describe los servicios de datos más comunes en el
almacenamiento de datos moderno.
Esta habilidad cubre cómo:
• Describir la carga de trabajo y la arquitectura moderna de
almacenamiento de datos.
• Describir los servicios de datos de Azure para el
almacenamiento de datos moderno, como Azure Data Lake, Azure
Synapse Analytics, Azure Databricks y Azure HDInsight.

Describir la carga de trabajo y la arquitectura moderna de


almacenamiento de datos.
Hoy en día, las empresas están ansiosas por recopilar la mayor cantidad
de datos posible sobre sus procesos y extraer valor de esos datos. Dado
que vivimos en un mundo conectado, la cantidad de datos crece
constantemente, por lo que se requiere el aprovisionamiento de
tecnologías especializadas que puedan manejarlos.
La llegada de la nube ha aumentado la accesibilidad a dichas tecnologías,
lo que podría requerir una costosa inversión inicial en hardware. Los
modelos de facturación como el pago por uso permiten a las empresas
ejecutar pruebas de concepto (PoC) sin tener que ampliar su
infraestructura local. El enfoque de PoC le permite probar diferentes
servicios, evaluar cuál se adapta mejor a sus necesidades y tener una idea
de cuál será su costo final.
Un almacén de datos moderno es una arquitectura que puede utilizar
para crear una única fuente de verdad (SSOT) para toda su organización,
poniendo a disposición datos seleccionados para desarrolladores de
inteligencia empresarial (BI), analistas de datos, analistas empresariales y
usuarios. Puede pensar que esto también describe exactamente un
almacén de datos tradicional, pero la diferencia radica en muchos
aspectos del proceso.
Los datos, por ejemplo, no solo pueden provenir de muchas fuentes
diferentes, sino también en muchos formatos heterogéneos y de
diferentes canales. Esto requiere una arquitectura mixta que sea capaz de
procesar datos tanto estáticos como de flujo continuo.
El volumen de datos puede ser del orden de petabytes. Por esta razón, los
componentes de un almacén de datos moderno deben poder escalar
horizontalmente a pedido, escalando cuando ya no se necesita potencia
de cómputo (para ahorrar costos).
A menudo es necesario extrapolar información útil a partir de datos no
estructurados. En muchos casos, las canalizaciones en el almacenamiento
de datos moderno están habilitadas para IA y aprovechan los modelos de
aprendizaje automático para interpretar el contenido procesado de una
manera legible por máquina.
Estos son solo algunos de los rasgos de la carga de trabajo típica que
puede manejar un almacén de datos moderno. Esta carga de trabajo se
conoce como carga de trabajo analítica .
¿Necesita más revisión? Carga de trabajo de análisis y almacenamiento de datos
moderno
Consulte la Habilidad 4.1 , " Describir las cargas de trabajo de análisis ", para obtener una
descripción general de los diferentes tipos de cargas de trabajo que se encuentran
comúnmente en este tipo de arquitectura.

Además, un almacén de datos moderno debe ser seguro. Azure incluye


una sólida integración entre su infraestructura de seguridad y sus
servicios. Por lo general, cada componente tiene la capacidad de referir
usuarios y grupos desde Azure Active Directory, basando su mecanismo
de control de acceso basado en roles (RBAC) en ellos.
Esta gestión centralizada es muy importante, especialmente en
organizaciones complejas. Los usuarios pueden solicitar acceder a datos
seleccionados para analizarlos, pero solo deben acceder a la información
perteneciente a su (s) grupo (s) de seguridad.
La siguiente sección describe algunos componentes clave de una
arquitectura de almacenamiento de datos moderna.

Describir los servicios de datos de Azure para el


almacenamiento de datos moderno, como Azure Data
Lake, Azure Synapse Analytics, Azure Databricks y Azure
HDInsight.
Esta sección se centra en tres servicios de Azure que tienen una gran
versatilidad y, por esta razón, a menudo forman parte de las soluciones
modernas de almacenamiento de datos:
• Azure HDInsight
• Azure Databricks
• Azure Synapse Analytics (anteriormente Azure SQL Data
Warehouse)
Estos servicios se pueden usar casi en todas las partes de un flujo de
trabajo ETL / ELT típico, pero este libro explora sus usos en la fase de
procesamiento de datos (y servicio, para Azure Synapse Analytics), para
mostrar los diferentes enfoques que debe seguir para aprovecharlos. .

Sugerencia para el examen


Por supuesto, otros servicios a menudo forman parte de un ecosistema de
almacenamiento de datos moderno: Azure Storage, Azure Data Factory y
Power BI, por nombrar algunos.
Azure Storage se presenta brevemente en el Capítulo 3 ; también se utiliza
a lo largo de este capítulo.
Azure Data Factory se describe en detalle en la habilidad 4.3 .
Power BI se describe en detalle en la habilidad 4.4 .
¿Necesita más revisión? Arquitectura moderna de almacenamiento de datos
Aquí encontrará un buen punto de partida y una descripción general de la arquitectura del
almacenamiento de datos moderno: https://docs.microsoft.com/en-
us/azure/architecture/solution-ideas/articles/modern-data-warehouse .

Las prácticas se presentan después de cada descripción de servicio. La


habilidad 4.3 utiliza los recursos provistos en estas prácticas para
mostrar las opciones de procesamiento de datos.

AZURE HDINSIGHT
Azure HDInsight es una distribución en la nube administrada de
componentes de Hadoop.
¿Necesita más revisión? Apache Hadoop
Hadoop es un marco de código abierto que permite el procesamiento distribuido de grandes
conjuntos de datos en grupos de computadoras y es parte de Apache Software
Foundation. Obtenga más información aquí: https://hadoop.apache.org .

HDInsight habilita escenarios como ETL, almacenamiento de datos,


aprendizaje automático e Internet de las cosas (IoT) a través de marcos
de código abierto populares como Hadoop, Spark, Hive, LLAP (Live Long
and Process), Kafka, Storm y R.
Hadoop está construido pensando en la escalabilidad; cuando se envía un
trabajo a un clúster, el nodo principal lo divide en unidades de trabajo más
pequeñas ; luego, los nodos trabajadores ejecutan estas piezas. Este
modelo computacional se llama MapReduce ; diferentes frameworks
basados en Hadoop podrían tener su propia implementación de
distribución de tareas que extiende y / u oculta MapReduce (Spark, por
ejemplo). Además, el clúster es tolerante a fallas.; si un nodo trabajador
falla por cualquier motivo, la parte del trabajo que se le asignó se reasigna
a otro nodo disponible. Aunque esto podría aumentar el tiempo total de
ejecución del trabajo, especialmente cuando todos los demás nodos ya
están ocupados y la tarea está en cola en uno de ellos, es un precio
razonable a pagar para evitar una interrupción del trabajo, lo que
significaría reiniciarlo desde el principio.
Cuando un nodo trabajador recibe su parte del trabajo para ejecutar,
también recibe instrucciones sobre dónde residen los datos que necesita,
por lo que es autónomo tanto en la recopilación como en el
procesamiento de datos. Tan pronto como el trabajador completa la tarea
asignada, envía el resultado del cálculo al nodo principal; después de
recopilar todos los resultados de los trabajadores, el nodo principal
compone el conjunto de datos final y lo envía al cliente que emitió el
trabajo. Todos los nodos son máquinas virtuales de Linux alojadas en
Azure, y se le factura por su tiempo de proceso e infraestructura, como
una máquina virtual de Azure normal.
Es importante tener en cuenta que en realidad no son los datos los que se
distribuyen cuando comienza el trabajo, sino las etapas que se necesitan
para lograr el resultado. Es decir, se distribuye el “plan de ejecución” del
trabajo —o, al menos, la parte del mismo relevante para cada uno de los
nodos trabajadores—. Los datos generalmente se almacenan en un
sistema de archivos distribuido de Hadoop (HDFS), que se compone de
los nodos de datos y que contiene los bloques físicos de datos. HDFS
también es similar a la tecnología en la que se basa Azure Storage.
¿Necesita más revisión? HDFS
Si desea saber más sobre la arquitectura subyacente de HDFS, visite este
sitio: https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-
hdfs/HdfsDesign.html .

HDInsight viene con varios tipos diferentes de clústeres. En el momento


del aprovisionamiento, debe elegir qué clúster desea crear y no puede
cambiarlo más tarde. Los clústeres permiten un alto grado de
personalización, como la adición de nuevos componentes y
aplicaciones. A continuación se muestran todos los tipos de clústeres
disponibles:
• Apache Hadoop Este marco utiliza HDFS como
almacenamiento y MapReduce como modelo de programación. La
administración de recursos está a cargo de YARN, un servicio que
actúa como administrador de recursos y como programador /
monitor de trabajos y es un componente central de la mayoría de
los entornos Hadoop.
• Apache Spark Se trata de un marco de procesamiento
paralelo de código abierto que admite el procesamiento en
memoria. Como verá en la siguiente sección, HDInsight no es la
única forma de aprovechar Spark en Azure.
• Apache HBase Esta es una base de datos NoSQL de alto
rendimiento construida sobre Hadoop.
• Servicios ML Este es un servidor para alojar y administrar
procesos R distribuidos paralelos. R es un lenguaje muy común
entre los científicos de datos y una comunidad sólida lo
respalda. Brilla cuando se manejan las fases de limpieza,
descubrimiento y preparación de datos, pero prácticamente puede
cubrir todas las necesidades en un ciclo de vida de desarrollo de
aprendizaje automático (ML) confiando en grandes repositorios de
paquetes.
• Apache Storm Este es un sistema de computación distribuido
en tiempo real para procesar grandes flujos de datos rápidamente.
• Consulta interactiva de Apache Se trata de un
almacenamiento en caché en memoria para consultas de Hive
interactivas y más rápidas.
• Apache Kafka Esta es una de las plataformas más utilizadas
para crear canales de transmisión de datos. Además, le permite
publicar y suscribirse a flujos de datos, lo que lo convierte en un
buen candidato para la fase de ingestión de cargas de trabajo de
transmisión.
¿Necesita más revisión? Tipos de clúster
Si desea obtener más información sobre los tipos de clústeres disponibles en HDInsight,
visite este sitio: https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-
overview#cluster-types-in-hdinsight .

Desde el primer lanzamiento de Hadoop (en 2016), el ecosistema de


código abierto que lo rodea siguió creciendo regularmente año tras
año. Cuando aprovisiona un clúster de HDInsight, ya viene con muchos
marcos y herramientas populares instalados en él: Ambari, Avro, Hive,
Sqoop, Tez, Pig, ZooKeeper y muchos más. Esto reduce drásticamente el
tiempo de configuración de su entorno, ya que puede estar listo para
comenzar justo después de la creación de un clúster.
¿Necesita más revisión? Versión instalada de componentes
Dependiendo de la versión instalada de HDInsight (la última es 4.0 en el momento de
escribir este artículo), viene empaquetada con versiones específicas de los distintos
componentes. El siguiente sitio proporciona información
actualizada: https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-component-
versioning#apache-components-available-with-different-hdinsight-versions .

Desde el punto de vista de la manejabilidad, debes tener en cuenta estos


dos aspectos:
1. Una vez aprovisionados, los clústeres no se pueden
pausar; esto significa que si desea ahorrar en consumo (y por lo
tanto, costos) cuando no están en uso, la única forma posible es
eliminar el clúster. De hecho, muchas organizaciones utilizan la
automatización (Microsoft PowerShell, Azure CLI, etc.) para
aprovisionar el clúster justo cuando se necesita y descartarlo
justo después de que se completa el trabajo. Un inconveniente de
este enfoque es que debe mantener actualizado el script de
provisión con cualquier cambio en la configuración del clúster
que haya realizado. Otra opción es aprovechar Azure Data
Factory para enviar un trabajo de Hive a un clúster de HDInsight
bajo demanda (más sobre eso en la siguiente habilidad).
2. Aunque las versiones anteriores de HDInsight carecían de
capacidades de escalado automático, en noviembre de 2019 se
lanzó esta característica para los tipos de clúster Spark y Hadoop,
y tiene dos opciones:
1. Escalado basado en carga Puede definir qué umbral de
métricas de clúster específicas desencadenarían el evento
de escalado. Esto sigue un patrón reactivo y debe tener en
cuenta el tiempo necesario para alcanzar el tamaño de
destino del clúster, ya que el trabajo podría finalizar antes
de que se aprovisionen los nodos adicionales.
2. Escalado basado en programación Puede definir cuándo
y durante cuánto tiempo se debe escalar el clúster. Esto es
útil cuando su carga de trabajo tiene un patrón predecible,
como un pico de carga en ventanas de tiempo fijo.
¿Necesita más revisión? Escalado automático
Puede encontrar más información sobre cómo configurar el escalado automático
aquí: https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-autoscale-clusters .

Sugerencia para el examen


Debido a que HDInsight se basa en Hadoop, HDInsight está vinculado al
mundo de Linux. Por esta razón, las primeras versiones estaban menos
integradas con la infraestructura de seguridad de Azure y, en particular,
con Azure Active Directory Domain Services (Azure AD
DS). Afortunadamente, las cosas ahora están más maduras y se ha vuelto
más fácil conectar su directorio activo existente con su clúster gracias al
Paquete de seguridad empresarial (ESP). Además, ESP agrega soporte
multiusuario al clúster, que de forma predeterminada es de usuario único,
lo que permite escenarios empresariales más complejos. Para obtener
una descripción general completa de la seguridad empresarial en
HDInsight y una introducción a ESP, visite https://docs.microsoft.com/en-
us/azure/hdinsight/domain-joined/hdinsight-security-overview .
Para crear un clúster de HDInsight desde el portal, puede buscar "Azure
HDInsight" en el cuadro de búsqueda en la parte superior de la página de
Azure Portal.

Sugerencia para el examen


Azure Portal no es la única forma de crear un clúster de HDInsight. Lea
más aquí: https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-
hadoop-provision-linux-clusters#cluster-setup-methods .
1. En la página de Azure HDInsight , que se muestra en la figura
4-1 , haga clic en Crear .

Figura 4-1 La página de creación de HDInsight


2. En la página Crear HDInsight , verá seis pestañas:
1. Conceptos básicos Aquí debe elegir la suscripción y el
grupo de recursos que contendrá su clúster. Si el grupo de
recursos aún no existe, puede crearlo desde aquí. Luego,
debe completar las propiedades específicas de su clúster:
nombre, región, tipo (uno de los siete tipos descritos
anteriormente) y versión de lanzamiento, nombre de
usuario y contraseña de administrador, y nombre de
usuario y contraseña de Secure Shell (SSH).
2. Almacenamiento Aquí puede especificar la cuenta de
almacenamiento principal para su clúster, eligiendo entre
Azure Storage, Data Lake Storage Gen1, Data Lake Storage
Gen2, el nombre del contenedor o del sistema de archivos y
la información de seguridad para acceder al
recurso. HDInsight lo usa para almacenar registros,
entrada de trabajo y salida de trabajo. Además, puede
vincular soluciones de almacenamiento adicionales para
que los trabajos o los usuarios que trabajen en el clúster
puedan acceder a ellas, y puede seleccionar dónde
almacenar los metadatos de Hive y Oozie y Ambari DB, ya
sea en la base de datos Azure SQL patentada o en una
personalizada.

Sugerencia para el examen


HDInsight viene con una base de datos SQL de Azure oculta
que aloja metadatos para el clúster. Es gratuito, pero tiene
un nivel muy básico y no es adecuado para cargas de
trabajo de producción. Es posible que desee utilizar una
base de datos externa para almacenar metadatos por dos
razones: (1) disponibilidad, para evitar perderlos entre la
recreación de clústeres, y (2) rendimiento, para aumentar
la capacidad de respuesta de la base de datos
Metastore. Lea más aquí: https://docs.microsoft.com/en-
us/azure/hdinsight/hdinsight-use-external-metadata-
stores .
3. Seguridad + Redes Aquí puede editar configuraciones
relacionadas con la seguridad, como habilitar y configurar
ESP y / o cifrado en reposo, seleccionar la versión mínima
de TLS admitida y unir su clúster a una red virtual.
4. Configuración + PreciosEn esta pestaña puede seleccionar el
tamaño de los nodos principales y el tamaño y número de los nodos
trabajadores. Siempre hay dos nodos principales, mientras que la
cantidad de nodos trabajadores puede alcanzar la cuota de núcleos
virtuales que permite su suscripción. Dependiendo de su tipo de clúster,
es posible que desee elegir una serie de máquinas virtuales más
adecuadas para cargas de trabajo basadas en disco o en memoria. Aquí
también puede elegir aplicaciones de terceros adicionales para instalar en
el clúster y especificar una secuencia de comandos de acción
personalizada de PowerShell o Bash para que se ejecute en los nodos del
clúster durante el aprovisionamiento, por ejemplo, para configurar
propiedades adicionales no disponibles en el proceso de creación. Por
último, pero no menos importante, puede habilitar el escalado
automático, ya sea en función de la carga o de la programación. El
autoescalado basado en carga requiere que especifique el número mínimo
y máximo de nodos trabajadores entre los que escalar,
5. Etiquetas Aquí puede especificar cualquier etiqueta para su
clúster. Las etiquetas son pares de nombre / valor asignados a un recurso
en particular, principalmente para la consolidación de facturación.
6. Revisar + Crear Aquí tiene la descripción completa de la
configuración y el botón Crear para confirmar la creación del recurso.
3. El portal genera la plantilla, la envía para su implementación
y muestra una página con el mensaje Su implementación está en
progreso , informándole que actualmente se encuentra en la fase
de creación.
Una vez finalizado el aprovisionamiento, puede navegar a la página
Información general del recurso en Azure Portal. En el panel central, junto
a propiedades comunes como grupo de recursos, suscripción, estado del
clúster, tipo y URL, puede ver el cuadro Paneles de control del clúster con
dos enlaces, como se muestra en la Figura 4-2 .

Figura 4-2 La página de descripción general de un recurso de HDInsight


1. Inicio de Ambari Este enlace es el punto de entrada para el
portal web de administración de Ambari (consulte la Figura 4-3 ),
una colección completa de paneles que cubre casi todos los
aspectos de su clúster. Aquí puede ver métricas, registros,
opciones de configuración y más a nivel de clúster. Además, las
subsecciones de la aplicación detallan todos los servicios en
ejecución con información y métricas dedicadas.
2. Vistas de Ambari Este enlace conduce al mismo portal web
de Ambari, pero en una sección donde puede encontrar paneles
temáticos preconfigurados llamados vistas (consulte la Figura 4-
4 ). Por lo general, estos paneles brindan información rápida
sobre un servicio específico y son instalados por los propios
servicios.

Figura 4-3 Portal web de Ambari


Figura 4-4 Vistas de Ambari
El menú de la izquierda de la página de recursos del portal contiene
comandos para acceder a los recursos de Azure, como el Registro de
actividad y el Control de acceso. Además, puede ajustar y administrar su
clúster, redimensionándolo; agregar, eliminar o cambiar cuentas de
almacenamiento vinculadas; instalar aplicaciones; establecer ubicaciones
de Metastore; y más.
Puede utilizar la opción del menú Herramientas para descargar kits de
desarrollo de software (SDK) y complementos para algunos de los
entornos de desarrollo integrados (IDE) más populares:
• Estudio visual
• IntelliJ
• Eclipse
• Código de Visual Studio
Otras opciones incluyen:
• CLI de Azure
• Azure PowerShell
• SDK de HDInsight .NET
El ciclo de desarrollo depende del tipo de clúster aprovisionado. Por
ejemplo, un clúster de Spark requiere que cree una aplicación Scala Spark
y la envíe al clúster o, como alternativa, envíe un script en uno de los
dialectos admitidos como PySpark. Si opta por un clúster de Hadoop,
puede enviar trabajos de Hive o consultas de Hive al clúster.
¿Necesita más revisión? Lenguajes de programación en HDInsight
Para descubrir todos los idiomas admitidos y saber más sobre la herramienta de desarrollo
para HDInsight, visite este sitio: https://docs.microsoft.com/en-
us/azure/hdinsight/hdinsight-overview#programming-languages-in-hdinsight .

Práctica de aprovisionamiento de un clúster de HDInsight Hadoop


Esta práctica lo guía a través del proceso de creación de un clúster de
Hadoop. Skill 4.3 usa este clúster para mostrar una carga de trabajo de
ingeniería de datos simple.
1. Después de iniciar sesión en Azure Portal, haga clic en Crear
un recurso .
2. Escriba Azure HDInsight en la barra de búsqueda y
selecciónelo en los resultados de la búsqueda.
3. Haga clic en Crear .
4. En la pestaña Básico :
1. Seleccione su suscripción y grupo de recursos.
2. Seleccione la misma región que utilizó en las prácticas anteriores
(como el norte de Europa).
3. Ingrese un nombre único global para su clúster.
4. Seleccione Hadoop como tipo de clúster y Hadoop 3.1.0 (HDI 4.0)
como versión.
5. Deje Admin como el nombre de usuario de inicio de sesión del
clúster, luego ingrese y confirme una contraseña.
6. Deje sshuser como nombre de usuario de Secure Shell (SSH) y
asegúrese de que la opción Usar contraseña de inicio de sesión de clúster
para SSH esté seleccionada.
5. En la pestaña Almacenamiento :
0. Seleccione Azure Storage como el tipo de almacenamiento
principal. Luego, en el menú desplegable Cuenta de almacenamiento
principal, seleccione la que creó en la práctica "Creación de una cuenta de
almacenamiento y un contenedor con PowerShell" en el Capítulo 3 (o, si
lo prefiere, cree una nueva).
1. Ingrese un nombre de contenedor nuevo o existente y deje los otros
campos como están.
6. Omita la pestaña Seguridad + Redes , manteniendo los
valores predeterminados.
7. En la pestaña Configuración + Precios :
0. Seleccione D3 v2 como tamaño para los nodos Head y
Worker.
1. Establezca el número de nodos trabajadores en 2.
2. Deje la opción Habilitar escala automática sin
seleccionar.
8. Haga clic en Revisar + Crear .
9. Si su clúster de HDInsight pasa la validación, haga clic
en Crear .
10. Espere a que se complete el aprovisionamiento, luego
navegue hasta el recurso y familiarícese con las distintas
opciones.

AZURE DATABRICKS
Una de las mayores limitaciones del paradigma de computación
distribuida de MapReduce es que la entrada, la salida y los resultados
intermedios se almacenan en el disco. Debido a que este comportamiento
podría convertirse rápidamente en un cuello de botella a medida que
aumenta la cantidad de datos que desea procesar, en 2011 un grupo de
estudiantes de Berkeley desarrolló un proyecto de código abierto llamado
Spark, que funciona principalmente en la memoria. Este enfoque ha sido
bien recibido y la adopción de Spark ha aumentado rápidamente.
En 2013, los creadores de Spark fundaron Databricks, una empresa que
tiene como objetivo llevar el motor al nivel empresarial, concentrando
todo el ecosistema de Spark en una única oferta de plataforma como
servicio (PAAS).
Databricks se define a sí mismo como una plataforma de análisis
unificada , ya que permite a los ingenieros de datos, científicos de datos,
ingenieros de ML y analistas de datos trabajar juntos sin problemas en el
mismo espacio de trabajo.
¿Necesita más revisión? Databricks
Para saber más sobre la plataforma Databricks, visite este sitio: https://databricks.com .

El equipo de Microsoft Azure y Databricks han trabajado duro para crear


la mejor integración posible entre las dos plataformas y el resultado
es Azure Databricks . Los usuarios de Azure pueden aprovisionar
rápidamente un servicio de Azure Databricks y beneficiarse de la
seguridad integrada de nivel empresarial y los conectores optimizados
para los componentes de Azure más populares, como Azure Blob Storage,
Azure Data Lake Storage, Cosmos DB, Azure Synapse Analytics, Azure
Event Hub y Power BI. Estas son las principales características de Azure
Databricks:
• El código de los cuadernos se puede crear a través
de cuadernos , que pueden resultarle familiares si alguna vez se ha
encontrado con cuadernos de Jupyter o la interfaz de IPython. Los
blocs de notas son interfaces basadas en web organizadas en celdas
que permiten mezclar código, texto enriquecido (en lenguaje
Markdown, el mismo idioma utilizado por la plataforma Microsoft
Docs) y pequeños paneles en el mismo documento. Además,
permiten la programación interactiva multiusuario, admiten el
control de versiones y se pueden poner en funcionamiento con
ejecuciones basadas en trabajos.
• Administrador de clústeres Puede crear, administrar y
monitorear clústeres fácilmente a través de esta práctica interfaz
de usuario. Se admiten varias versiones de tiempo de ejecución, por
lo que puede crear un nuevo clúster con el tiempo de ejecución más
reciente (o beta) lanzado sin afectar la carga de trabajo
existente. Además, la opción sin servidor le permite concentrarse
solo en administrar los costos, y la plataforma proporciona la
provisión y el escalado de los recursos necesarios para ejecutar la
carga de trabajo solicitada.
• Tiempo de ejecución optimizado Aunque Spark también
está disponible en Azure HDInsight como uno de los tipos de
clúster, Databricks se basa en una versión de código cerrado y muy
optimizada del tiempo de ejecución de código abierto. No obstante,
Databricks sigue siendo uno de los contribuyentes más
competentes a la versión de código abierto de Spark, y muchas
funciones nuevas y mejoras se desarrollan internamente y luego se
lanzan al público. Spark es el único tipo de clúster disponible en
Databricks.
• Seguridad de nivel empresarial Azure Databricks está
profundamente integrado con Azure Active Directory, lo que
permite una clara separación de la administración de usuarios y
grupos (que se puede exigir por completo al departamento de TI) y
los roles y la autorización de la plataforma interna. Tiene un
control detallado sobre lo que puede hacer un usuario cuando
trabaja dentro del entorno. Por ejemplo, puede restringir el acceso
al clúster a grupos específicos de Azure AD, o puede permitir que
los usuarios supervisen las ejecuciones de trabajos y portátiles,
pero evitar que ejecuten realmente cualquier carga de
trabajo. Tenga en cuenta que la seguridad de acceso basada en
roles es una función exclusiva de Premium.
• Delta Lake Primero desarrollado internamente por
Databricks y luego lanzado al público, Delta Lake es una capa de
almacenamiento de código abierto que se ejecuta sobre un lago de
datos. Proporciona compatibilidad con transacciones ACID y
manejo de metadatos escalable, y tiene la capacidad de tratar una
tabla de lotes como fuente y receptor de transmisión, unificando
cargas de trabajo de transmisión por lotes y transmisión.
• MLOps Azure Databricks tiene soporte completo para todo el
ciclo de vida de ML; puede desarrollar, probar, entrenar, calificar y
monitorear su modelo aprovechando ML Runtime (un tiempo de
ejecución dedicado a ML que puede elegir para su clúster), la
biblioteca Spark MLlib, la integración MLFlow y el Model Registry.
• Rest API Puede interactuar con su espacio de trabajo a través
de un amplio conjunto de API, lo que facilita la integración con las
aplicaciones y el flujo de trabajo existentes.
¿Necesita más revisión? Azure Databricks
Para explorar todas las características que ofrece Azure Databricks y obtener más
información sobre el servicio, visite este sitio: https://docs.microsoft.com/en-
us/azure/databricks/scenarios/what-is-azure-databricks .

¿Necesita más revisión? Delta Lake


Delta Lake está creciendo rápidamente en popularidad. De hecho, en el almacenamiento de
datos moderno, los lagos de datos son muy comunes y todo el proceso se beneficia al
hacerlos más robustos y confiables. Lea más aquí: https://docs.microsoft.com/en-
us/azure/databricks/delta/delta-intro .

Como mencionamos, Azure Databricks se basa en Spark. La base


arquitectónica de Spark se basa en conjuntos de datos distribuidos
resistentes (RDD):
• Resiliente Un RDD es inmutable por naturaleza, lo que
significa que su estructura subyacente permite reconstruirlo en
caso de falla de uno de los nodos del clúster.
• Distribuido Un RDD es una colección de objetos
particionados en los nodos del clúster, lo que hace posible
paralelizar y escalar la mayor parte del trabajo.
• Conjuntos de datos Un RDD mapea datos, que se almacenan
en un sistema de archivos, generalmente uno distribuido como
HDFS, o una base de datos. Puede considerarlos como una
representación tabular de los datos subyacentes, pero con celdas
que pueden contener objetos complejos como sus valores (piense
en elementos anidados JSON, por ejemplo). No contienen datos, son
solo un indicador.

Sugerencia para el examen


La capa RDD se ha abstraído en versiones posteriores de Spark con la
introducción de la API de DataFrame en 2013 y la API de Dataset en 2015.
A partir de Spark 2.x, se recomienda el uso de estas API, ya que permiten
una aplicación más sólida y limpia. código.
El ecosistema Spark es muy amplio (consulte la Figura 4-5 ) y todos sus
componentes están incluidos en Azure Databricks. Son los siguientes:

Figura 4-5 El ecosistema de Apache Spark


• Spark Core API Spark está construido sobre Scala, pero
admite cinco lenguajes de programación diferentes: R, SQL, Python,
Scala y Java. Puede considerar los tres primeros como dialectos de
Spark; de hecho, hablamos de SparkR, SparkSQL y PySpark. En los
cuadernos, puede usar y mezclar todos estos lenguajes, con la
excepción de Java. Para usar Java, debe crear una biblioteca JAR en
su IDE preferido e importarla a su espacio de trabajo para que
pueda hacer referencia a las clases definidas en los cuadernos.
• Spark SQL y DataFrames Spark SQL es el módulo para
trabajar con datos estructurados. Sus datos generalmente se leen,
manipulan y escriben a través de objetos llamados DataFrames, que,
como explicamos anteriormente, son una capa de abstracción sobre
los RDD. AunqueLos conjuntos de datos brindan un enfoque de
seguridad de tipos para los datos subyacentes, los DataFrames a
menudo se prefieren por su mayor versatilidad en el manejo de
valores sucios, columnas faltantes o desatendidas, y más.
• Streaming Spark proporciona capacidades de procesamiento
de transmisiones y se integra bien con motores de ingestión de
transmisiones como Azure EventHub y Kafka.
• MLlib Spark viene con una biblioteca de aprendizaje
automático con algoritmos y utilidades comunes integrados, tanto
para el desarrollo de modelos como para su implementación en
producción.
• GraphX Este módulo proporciona soporte para gráficos y
cálculo de gráficos.
El aprovisionamiento de un espacio de trabajo de Databricks requiere
unos sencillos pasos. Para crearlo desde el portal, puede buscar Azure
Databricks en el cuadro de búsqueda en la parte superior de la página de
Azure Portal.
1. En la página Azure Databricks , que se muestra en la Figura
4-6 , haga clic en el botón Crear .
Figura 4-6 La página de creación de Azure Databricks
2. En la página Crear Azure Databricks , verá cuatro pestañas:
1. Conceptos básicos Aquí puede elegir la suscripción y el
grupo de recursos que contendrá su instancia. Si el grupo
de recursos aún no existe, puede crearlo desde aquí. Luego,
debe completar las propiedades específicas de su instancia:
su región de Azure y el nombre del área de trabajo, que
debe ser globalmente único. Además, debe especificar el
nivel de precios, eligiendo entre Estándar, Premium y
Prueba; más sobre eso más adelante en esta sección.
2. Redes En esta pestaña, elige implementar todos los
recursos de Azure Databricks en una red virtual
administrada por Azure (VNET), que es la predeterminada,
o especificar una VNET privada donde desea que se
aprovisionen los recursos. La primera opcioncrea un grupo
de recursos bloqueado que contiene todos los
componentes y servicios necesarios: la red virtual
administrada, una cuenta de almacenamiento, los nodos
del clúster y más.
3. Etiquetas Aquí puede especificar cualquier etiqueta
para su instancia. Las etiquetas son pares de nombre /
valor asignados a un recurso en particular, principalmente
para la consolidación de facturación.
4. Revisar + Crear Aquí tiene la descripción completa de
la configuración y el botón Crear en el que hace clic para
confirmar la creación del recurso.
3. El portal genera la plantilla, la envía para su implementación
y muestra una página con un mensaje Su implementación está en
progreso , informándole que se encuentra actualmente en la fase
de creación.
¿Necesita más revisión? Implemente Azure Databricks en su red virtual de Azure
Si desea obtener más información sobre el aprovisionamiento de Azure Databricks en una
red virtual privada, visite esta página: https://docs.microsoft.com/en-
us/azure/databricks/administration-guide/cloud-configurations/azure/vnet- inyectar .

Una vez finalizado el aprovisionamiento, puede comenzar a navegar por


su espacio de trabajo. Para hacerlo, desde la página Descripción
general de su recurso, haga clic en Iniciar área de trabajo , como se
muestra en la Figura 4-7 .

Figura 4-7 Página de descripción general de Azure Data Factory


Se abre una nueva página del navegador que apunta a una URL
como https: // adb- <uniqueid>. <#>. Azuredatabricks.net/o=
<uniqueid> . Después de iniciar sesión (no tiene que volver a ingresar sus
credenciales, ya que Single Sign-on las transfiere por usted), puede
acceder a la aplicación web multiusuario que le permite interactuar con
su instancia. Esto se denomina plano de control y está alojado en la
infraestructura global de Azure. La comunicación y la interacción con los
recursos de su espacio de trabajo se proporcionan a través
del emparejamiento de VNET , un canal seguro entre dos redes
virtuales. Para Azure Databricks, este canal seguro generalmente se crea
entre la VNET donde implementó su área de trabajo y la VNET que
hospeda la aplicación web del plano de control. La página de inicio de esa
aplicación, que se muestra enLa Figura 4-8 presenta una barra de
herramientas a la izquierda, con nueve botones:

Figura 4-8 El plano de control de Azure Databricks


• Azure Databricks Al hacer clic en este botón, se accede a la
página de inicio.
• Inicio Al hacer clic en este botón, se abre una pestaña que
contiene una vista de árbol de los archivos y carpetas almacenados
en su espacio de trabajo (por lo general, cuadernos), que le indica
el directorio de inicio definido. Esta pestaña se denomina Área de
trabajo (consulte la Figura 4-9 ) y el directorio de inicio es de forma
predeterminada una subcarpeta con el mismo nombre que el
usuario que inició sesión, generalmente el nombre de usuario de
Azure, y solo lo pueden ver los administradores y el
propietario. Además, los administradores pueden restringir el
acceso a carpetas fuera del directorio de inicio solo a usuarios y
grupos específicos.
Figura 4-9 La pestaña Espacio de trabajo
• Espacio de trabajo Este botón sirve para alternar la pestaña
Espacio de trabajo. La pestaña también se puede fijar para
mantenerla abierta.
• Recientes Al hacer clic en este botón, se muestra una lista de
los elementos a los que se accedió por última vez, como los
cuadernos que editó o ejecutó.
• Datos Aquí puede crear, administrar y eliminar bases de
datos y tablas. Las bases de datos son una colección de objetos de
tabla y las tablas son colecciones de datos
estructurados. Interactúas con ellos a través de la API de Spark,
específicamente con DataFrames. Estos objetos son accesibles solo
cuando hay al menos un clúster en ejecución. Las tablas pueden
ser globales o locales . Las tablas globales son accesibles desde
todos los clústeres y están registradas en Hive Metastore, mientras
que las tablas locales son visibles solo desde el clúster donde se
crearon. Las tablas locales también se denominan vistas
temporales .
• Clústeres Al hacer clic en este botón, se abre la pestaña
Administración de clústeres. Aquí puede crear, administrar,
monitorear y eliminar sus clústeres. Las tareas de administración
típicas incluyen cambiar el número y el tamaño de los nodos,
ajustar el escalado automático, establecer un período de gracia
antes de que los nodos se apaguen automáticamente cuando no se
usan, etc. La Figura 4-10 muestra la pantalla de creación de
clústeres. Aquí define lo siguiente:
1. Nombre del clúster Un nombre descriptivo, debe ser
único dentro del espacio de trabajo.
2. Modo de clúster Especifique estándar, orientado a un
solo usuario o alta concurrencia; este último es más adecuado
para cargas de trabajo paralelas.
3. Grupo Especifique si el clúster debe agregarse a un
grupo sin servidor o a uno independiente. Si lo agrega a un
grupo existente, el tiempo de ejecución de Databricks lo
maneja por usted, usándolo o no, según la carga de trabajo y
la configuración del grupo.
4. Versión de tiempo de ejecución de Databricks Este es el
tiempo de ejecución que ejecutará su clúster. Es una
combinación de las versiones Scala y Spark, soporte para
aceleración de GPU (muy adecuado para algoritmos de IA, en
particular redes neuronales y aprendizaje profundo) y
optimización para el desarrollo de ML. Puede elegir entre las
versiones actual, anterior y beta.
5. Opciones de piloto automático Aquí usted define si el
escalado automático y el apagado automático están
habilitados. Para lo último, puede especificar el período de
tiempo de espera de inactividad (en minutos) antes de que se
apague un nodo.
6. Tipos de trabajador y controlador Aquí usted define el
tamaño de los nodos de su clúster. Puede elegir entre una
selección de series de máquinas virtuales de Azure. Además,
puede especificar el número de nodos trabajadores (si el
escalado automático no está seleccionado) o un rango
mínimo / máximo de nodos trabajadores entre los que se
acelerará el tiempo de ejecución (si el escalado automático
está habilitado).
7. Opciones avanzadas Aquí puede ajustar su
clúster. Puede establecer las propiedades de Spark para
anular la configuración predeterminada, agregar variables de
entorno, definir una ruta personalizada para los archivos de
registro y especificar la ruta a los scripts de inicio que el
clúster debe ejecutar en cada nodo al aprovisionarlos (por
ejemplo, para instalar bibliotecas
personalizadas). Además,puede seleccionar la opción
Passthrough de credenciales de almacenamiento de Azure
Data Lake, que pasa automáticamente las credenciales de
AAD de un usuario específico (si está en el modo de clúster
estándar) o del usuario actual (si está en el modo de clúster
de alta simultaneidad) al leer o escribir datos en un
Almacenamiento de lago de datos; se admiten tanto Gen1
como Gen2.
Figura 4-10 La pantalla de creación de clústeres
• Trabajos Aquí puede crear y programar trabajos. Un trabajo
consta de una sola tarea, que puede ser un cuaderno para ejecutar,
una biblioteca JAR o un spark-submitcomando.
• Modelos Al hacer clic en este botón, se abre el Registro de
modelos de aprendizaje automático, donde puede administrar y
realizar un seguimiento del ciclo de vida de sus modelos.
• Buscar Aquí puede buscar en su espacio de trabajo un
cuaderno o término específico.
¿Necesita más revisión? Paso a través de credenciales de Azure Active Directory
Para obtener más información sobre este tema, visite este
sitio: https://docs.microsoft.com/en-us/azure/databricks/security/credential-
passthrough/adls-passthrough .

El acceso a la capa de almacenamiento se otorga a través del Sistema de


archivos Databricks (DBFS), que es un sistema de archivos distribuido
montado en un espacio de trabajo y disponible en todos los
clústeres. Específicamente, es una capa de abstracción y tiene las
siguientes ventajas:
• Permite montar almacenamiento externo (como Azure Blob
Storage, Azure Data Lake Storage y más), por lo que se puede
acceder sin tener que ingresar credenciales cada vez.
• Puede interactuar con el almacenamiento de objetos con la
semántica de archivo típica y no con las URL.
• Puede conservar los archivos en el almacenamiento de
objetos para evitar perder datos después de que se haya terminado
un clúster.
Cualquier espacio de trabajo viene con almacenamiento local (una cuenta
de Azure Blob Storage implementada en los grupos de recursos
administrados) a la que se puede acceder a través de la ubicación de
almacenamiento predeterminada, la raíz DBFS. La Figura 4-11 muestra el
contenido de esa carpeta, obtenido al emitir un comando a un clúster en
ejecución en una celda de notebook. La carpeta Databricks-datasets
contiene muchos conjuntos de datos que se pueden utilizar con fines de
prueba y demostración. La sizepropiedad se devuelve solo para archivos
y siempre es 0 para carpetas.
Figura 4-11 El contenido de la carpeta raíz DBFS
La carpeta / mnt se puede utilizar para acceder a cualquier
almacenamiento externo que se haya montado en el clúster. Para montar
un almacenamiento externo, puede usar el dbutils.fs.mountcomando en
una celda de notebook, pasando información de autorización en
el extra_configparámetro.

Sugerencia para el examen


Dado que los montajes son visibles para todos los usuarios que tienen
acceso al clúster, es posible que desee utilizar controladores WASB o
ABFS para acceder a sus archivos almacenados en una cuenta de
almacenamiento de Azure.
Por ejemplo, después de configurar correctamente la autenticación, puede
enumerar el contenido de una carpeta en Azure Data Lake Storage Gen2
con una sintaxis como esta: dbutils.fs.ls ("abfss: // <file-system-name> @
< nombre-cuenta-almacenamiento> .dfs.core.windows.net / <nombre-
directorio> ");
De la misma forma, puede acceder a una carpeta en Azure Blob Storage
con una sintaxis como esta: dbutils.fs.ls ("wasbs: // <container-name> @
<storage-account-name> .blob.core.windows .net / <nombre-directorio>
");
Obtenga más información sobre todos los enfoques disponibles
aquí: https://docs.microsoft.com/en-us/azure/databricks/data/data-
sources/azure/azure-datalake-gen2 https://docs.microsoft.com/ en-us /
azure / databricks / data / data-sources / azure / azure-storage
Por ejemplo, para montar el contenedor de almacenamiento de Azure
Blob denominado companyblobs desde la cuenta dp900sablob, puede
usar una clave de acceso (como se muestra en la Figura 4-12 ) o un token
SAS. Cualquier usuario conectado al clúster puede acceder a los montajes.

Figura 4-12 Cómo montar un contenedor de almacenamiento de Azure


Blob
¿Necesita más revisión? Sistema de archivos de Azure Databricks
Para obtener más información sobre Azure Databricks File System y explorar todas las
opciones disponibles para montajes, visite este sitio: https://docs.microsoft.com/en-
us/azure/databricks/data/databricks-file-system .

La facturación de Azure Databricks se basa en unidades de Databricks


(DBU), métricas que se usan para realizar un seguimiento de cuántos
segundos funciona el tiempo de ejecución. Además, debe considerar el
costo de infraestructura para los nodos de sus clústeres (que son
máquinas virtuales de Azure normales), para la dirección IP pública y
para la cuenta interna de almacenamiento de blobs. Dos factores afectan
el costo de DBU:
• Las DBU de nivel (o SKU) cuestan más en el nivel Premium
que en el nivel Estándar. El nivel gratuito le ofrece DBU sin costo
durante un período de 14 días, y luego debe elegir entre Estándar y
Premium.
• Tipo de carga de trabajo Depende del tipo de trabajo que
realice en sus clústeres: ingeniería de datos, ingeniería ligera de
datos y análisis de datos. Estos nombres pueden ser engañosos, ya
que no se refieren a la biblioteca Spark que usa o al tipo de
comandos que emite, pero generalmente diferencian las cargas de
trabajo de tipo infraestructura (por ejemplo, el trabajo real que el
programador interno tiene que hacer para ejecutar un trabajo) de
la carga de trabajo de datos (en realidad, cualquier comando de
Spark pertenece a esta categoría, ya sea un entrenamiento de
modelo ML o una DataFrametransformación s).
Los descuentos en los precios de DBU están disponibles si opta por planes
de precompra.
¿Necesita más revisión? Precios y niveles de Databricks
Para obtener más información sobre las diferencias entre todos los SKU disponibles y para
comprender mejor los precios de DBU, consulte este sitio: https://azure.microsoft.com/en-
us/pricing/details/databricks/ .

Practique Aprovisione un espacio de trabajo de Azure Databricks, cree


un clúster y monte el almacenamiento externo
Esta práctica lo guía a través del proceso de creación de un área de
trabajo de Azure Databricks, la configuración de un clúster en su interior
y el montaje de almacenamiento externo en ese clúster. Habilidad
4.3utiliza estos recursos para mostrar una carga de trabajo de ingeniería
de datos simple. Tenga en cuenta que necesita una suscripción de pago
por uso para completar esta práctica, ya que los límites de cuota para las
suscripciones de planes de prueba gratuitos le impiden crear incluso un
clúster mínimo. Tiene un límite de cuatro núcleos virtuales y el número
mínimo de núcleos para los nodos de controlador y trabajador que puede
seleccionar al crear el clúster es cuatro. Esto significa que el clúster más
simple que puede crear, que consta del nodo controlador y un solo nodo
trabajador, necesitaría asignar ocho núcleos. Además, la opción de
aumentar los límites de la cuota emitiendo un ticket para el soporte de
Azure no está disponible en las suscripciones de prueba gratuitas. Este
límite no es un problema para el clúster de Azure HDInsight que creó en
la práctica anterior, ya que HDInsight tiene valores de cuota dedicados
que, en el momento de redactar este documento,
1. Después de iniciar sesión en Azure Portal, haga clic en Crear
un recurso .
2. Escribe Azure Databricksen la barra de búsqueda y luego
selecciónalo en los resultados de búsqueda.
3. Haga clic en Crear .
4. En la pestaña Básico :
1. Seleccione su suscripción y grupo de recursos.
2. Seleccione la misma región que utilizó en las prácticas anteriores
(Norte de Europa).
3. Ingrese un nombre globalmente único para su espacio de trabajo.
4. Seleccione Prueba como el nivel de precios.
5. Omita la pestaña Redes ; los valores predeterminados están
bien.
6. Haga clic en Revisar + Crear .
7. Si su área de trabajo de Azure Databricks pasa la validación,
haga clic en Crear .
8. Espere a que se complete el aprovisionamiento y luego
navegue hasta el recurso y haga clic en Iniciar área de
trabajo en la página Descripción general .
9. En la aplicación web Control Plan, haga clic en Clústeres en la
barra de herramientas de la izquierda.
10. Haga clic en Crear clúster .
11. En la página Crear clúster :
0. Ingrese un nombre descriptivo para el clúster.
1. Para el modo de clúster , seleccione Estándar .
2. Para Grupo , seleccione Ninguno .
3. Elija el último tiempo de ejecución estable (no Beta),
evitando los tiempos de ejecución que contienen el sufijo
ML. Por ejemplo, elija un tiempo de ejecución como 7.2
(Scala 2.12, Spark 3.0.0) .
4. Seleccione la opción Habilitar ajuste de escala
automático .
5. Si lo desea, establezca un valor de tiempo de espera
diferente para la terminación del clúster; el valor
predeterminado es dos horas.
6. Seleccione Standard_DS3_v2 como tipo de trabajador,
establezca Trabajadores mínimos en 1 y Trabajadores
máximos en 2.
7. En Tipo de controlador , seleccione Igual que el
trabajador .
8. Haga clic en Crear clúster y espere unos minutos hasta
que se cree el clúster. Cuando se completa el proceso. se le
redirige a la página de edición del clúster y un círculo
verde junto al nombre del clúster en la parte superior de la
página indica que se está ejecutando.
12. Haga clic en Inicio . El espacio de trabajo aparece el panel.
13. En el panel Espacio de trabajo :
0. Haga clic en la flecha hacia abajo junto a la carpeta con
su nombre de usuario y un pequeño icono de una casa al
lado.
1. En el menú que se abre, seleccione Importar .
2. Haga clic en el enlace de exploración, busque el archivo
DP900.dbc en el contenido complementario y
selecciónelo. Puede usar Azure Databricks para exportar
cuadernos individuales o una estructura de carpetas
completa en varios formatos, y DBC es uno de ellos (es un
archivo de almacenamiento en un formato
propietario). Este archivo específico contiene una carpeta
Databricks con algunos cuadernos que usará en esta y
otras prácticas.
3. Haga clic en Importar .
4. Haga clic en la carpeta dp900 que se ha importado.
5. Seleccione el cuaderno 00 - DBFS.
14. En el cuaderno 00 - DBFS:
0. Complete las siguientes variables que faltan en la celda Cmd
2: <nombre-container> , <nombre-cuenta> y <acceso-clave> . Para las dos
primeras variables, puede usar la misma cuenta y el mismo nombre de
contenedor que usó para la práctica "Creación de una cuenta de
almacenamiento y un contenedor con PowerShell" en el Capítulo 3 . Para
la última variable, puede encontrar la clave de acceso de la cuenta de
almacenamiento en la sección Claves de acceso de la misma página de
recursos en Azure Portal (puede elegir la clave principal o secundaria).
1. Pase el mouse sobre la celda Cmd 2 y haga clic en el ícono de
ejecución en el menú superior derecho que aparece. En el menú
desplegable, elija Ejecutar celda y espere a que se complete la operación
de montaje. Como alternativa, puede ejecutar la celda resaltada
actualmente usando el atajo de teclado Ctrl + Enter .
2. Cuando se complete la operación de montaje, pase el mouse sobre
la celda Cmd 4 y haga clic en el ícono de ejecución en el menú superior
derecho que aparece. En el menú desplegable, elija Ejecutar celda y
espere a que se complete la ejecución. Justo debajo del cuadro que
contiene el código, puede ver una vista de cuadrícula que enumera el
contenido del contenedor que acaba de montar.

ANÁLISIS DE AZURE SYNAPSE


Anteriormente conocido como Azure SQL Data Warehouse, Azure
Synapse Analytics es común en las arquitecturas modernas de
almacenamiento de datos. Los esquemas relacionales y, más
específicamente, los esquemas en estrella siguen siendo formas sólidas y
naturales de almacenar y representar datos con fines analíticos. Además,
las prácticas bien establecidas como la distribución de datos, el
particionamiento horizontal y la compresión hacen un buen trabajo en
términos de rendimiento, incluso cuando se extraen datos de tablas de
hechos que contienen datos históricos, tablas que pueden volverse
enormes rápidamente.
¿Necesita más revisión? Análisis de Azure Synapse
Dado que el Capítulo 2 ya presentó Azure Synapse Analytics, esta habilidad no repite la
misma información.
Para obtener más información sobre su arquitectura y conceptos básicos, puede consultar
la Habilidad 2.2 : describir los servicios de datos relacionales de Azure.

Hoy en día, la función principal de Azure Synapse Analytics suele ser


servir como fuente única de la verdad en toda la organización o, en otras
palabras, como almacén de datos empresarial . Esto significa que está al
final del proceso ETL / ELT, almacenando datos curados que, limpios y
transformados adecuadamente en la fase de procesamiento, están listos
para ser explorados por los usuarios finales, los usuarios comerciales y
los analistas de datos a través de informes, paneles o directamente.
consultas al motor. Además, los procesos adicionales que pertenecen a la
capa de servicio pueden extraer datos de ella para preparar conjuntos de
datos querepresentan solo un segmento de todos los datos (ventas del
año actual, clientes, pedidos, etc.). Los usuarios avanzados pueden utilizar
estos conjuntos de datos para crear modelos de inteligencia empresarial
satelital con herramientas como Power BI, lo que permite escenarios que
se denominan BI de autoservicio .
Azure Synapse Analytics tiene muchas características que lo convierten
en la primera opción para una función tan fundamental en una
arquitectura de almacenamiento de datos moderna. Los más importantes
probablemente sean los siguientes:
• Capacidad Siempre que una tabla utilice compresión de
almacén de columnas, no tiene límites en la cantidad de datos que
puede almacenar. Esto es importante para las tablas de hechos, que
pueden acumular miles de millones de filas sin que tenga que
preocuparse por quedarse sin espacio.
• Rendimiento El motor está diseñado específicamente para
cargas de trabajo analíticas, lo que permite a los usuarios ejecutar
grandes agregaciones sobre los datos con tiempos de respuesta
muy razonables. Incluye una gran optimización para las
llamadas uniones en estrella , que son una forma de relacionar
hechos, almacenados en tablas de hechos, y la descripción de
dichos hechos, almacenados en tablas de dimensiones. Además,
características como la gestión de la carga de trabajo, las vistas
materializadas y el almacenamiento en caché del conjunto de
resultados (por nombrar algunos) garantizan que los recursos no
se desperdicien y que estén disponibles cuando realmente se
necesiten. Sin embargo, es importante tener en cuenta que el
diseño de bases de datos tiene ahora, incluso más que antes, un
papel clave para evitar cuellos de botella en el rendimiento. Por
ejemplo, elegir la clave de distribución incorrecta para una tabla de
hechos podría conducir fácilmente a inaceptables (o infinitos)
tiempos de respuesta, que no se pueden resolver sin repensar el
diseño de la mesa desde cero.
• Escalabilidad Azure Synapse Analytics puede escalar
horizontalmente (o incorporarse) a la computación en solo
minutos, por lo que puede ajustar rápidamente su clúster para
manejar diferentes situaciones que aumentan o disminuyen las
unidades de almacenamiento de datos (DWU) para su
servicio. Además, el clúster se puede pausar cuando no se necesita
para ahorrar en costos de computación. Este último aspecto es
importante si considera que una base de datos que admite una
carga de trabajo analítica rara vez está en línea. En cambio, en
muchos casos tiene una ventana de tiempo específica durante la
noche o el día en la que recibe datos nuevos y actualiza la capa de
servicio descendente (conjuntos de datos, cubos OLAP, etc.),
mientras que durante el resto del día nadie accede a él. .
• Seguridad Azure Synapse Analytics se beneficia de muchas
características de seguridad que protegen su infraestructura y los
datos almacenados en ella. Además de la seguridad de Azure
Virtual Network (VNet) y el firewall de Azure SQL Server, cuenta
con todos los mecanismos de seguridad típicos de SQL Server como
el cifrado (en reposo, mediante Cifrado de datos transparente
[TDE] y en tránsito); autenticacion de usuario; y seguridad de
objetos, filas y columnas. También viene con el paquete Advanced
Data Security (ADS) sin costo, que incluye herramientas como Data
Discovery & Classification y Vulnerability Assessment. Además,
contiene un servicio impulsado por IA llamado Advanced Threat
Protection, que monitorea proactivamente la actividad de la base
de datos para detectar comportamientos sospechosos, patrones de
acceso anómalos y ataques maliciosos.
A diferencia de los motores de base de datos OLTP típicos, Azure Synapse
Analytics (y, en general, cualquier arquitectura MPP) no es adecuado para
cargas de trabajo transaccionales, que se caracterizan por operaciones de
lectura / escritura frecuentes y pequeñas. En cambio, brilla cuando
maneja operaciones de carga masiva de datos y consultas que realizan
agregaciones en amplios rangos de datos.
El nombre anterior del servicio, Azure SQL Data Warehouse, podría
llevarlo a pensar que este es un nuevo hogar para cualquier almacén de
datos que pueda tener. La verdad es que, para los almacenes de datos del
orden de gigabytes, o incluso de unos pocos terabytes, debe evaluar
cuidadosamente con anticipación si servicios como Azure SQL Database o
Azure SQL Managed Instance representan una mejor opción. Los
parámetros que impulsan esa elección son el almacenamiento y los costos
y límites de cálculo, el tiempo de actividad objetivo, la escalabilidad, las
funciones de seguridad y los tipos de carga de trabajo que debe manejar.
En el lado del procesamiento de datos, Azure Synapse Analytics puede ser
una buena opción cuando ya está en la imagen, para evitar agregar otros
servicios que aumentarían la complejidad y, probablemente, los
costos. Tiene una superficie de programación familiar para quienes tienen
experiencia en SQL Server, y su capacidad para hacer referencia y unir
datos almacenados en tablas locales, así como en cuentas de
almacenamiento externo (a través de PolyBase y tablas externas) lo hace
adecuado tanto para el procesamiento de datos como para carga de
datos. Sin embargo, si su arquitectura no lo incluye, por ejemplo, cuando
el destino final de su carga de trabajo no es un almacén de datos, es
probable que dependa de otros servicios para hacer el trabajo requerido:
mapear flujos de datos en Azure Data Factory para lotes. datos o Azure
Databricks (tal vez aprovechando la capa de almacenamiento de Delta
Lake), tanto para datos por lotes como para transmisión de datos, podrían
ser buenos candidatos para asumir ese papel. El primero, bajo el capó,
todavía usa Spark para realizar el procesamiento de datos, pero su
experiencia de creación visual completa puede ser útil si es nuevo en
Spark.

Sugerencia para el examen


Aunque los exámenes de certificación no incluyen características que
están en versión preliminar, es importante tener en cuenta que las
capacidades de procesamiento de datos de Azure Synapse Analytics se
están expandiendo rápidamente.
Como se explica brevemente en Skill 1.2 : Describir los conceptos
centrales de análisis de datos, Azure Synapse Analytics tiene como
objetivo convertirse en una plataforma de análisis completa y unificada,
enriqueciendo el mismo motor de almacenamiento de datos de primera
clase con capacidades como procesamiento por lotes (tanto con SQL como
Spark), procesamiento de flujo , creación de canalizaciones visuales,
predicciones de aprendizaje automático y visualización de datos, todo
esto, unido por una aplicación nativa web llamada Synapse Studio. Lea
más aquí: https://docs.microsoft.com/en-us/azure/synapse-
analytics/overview-what-is .
Práctica de aprovisionamiento de un grupo SQL de Azure Synapse
Analytics
Esta práctica le guía a través del proceso de creación de un grupo SQL de
Azure Synapse Analytics. Skill 4.3 utiliza estos recursos para mostrar una
carga de trabajo de ingeniería de datos simple. Recuerde pausar el grupo
de SQL aprovisionado cuando no esté en uso para evitar incurrir en
costos no deseados.
1. Después de iniciar sesión en Azure Portal, haga clic en Crear
un recurso .
2. Escriba Azure Synapse Analytics (anteriormente SQL
DW) en la barra de búsqueda y selecciónelo en los resultados de
búsqueda.
3. Haga clic en Crear .
4. En la pestaña Básico :
1. Seleccione su suscripción y grupo de recursos.
2. Seleccione el servidor que contendrá su grupo de SQL. Puede elegir
el que ya suministró en la práctica "Creación de una base de datos SQL de
Azure" en el Capítulo 2 , o puede crear uno nuevo.
3. Ingrese un nombre para su piscina.
4. Seleccione Gen2 y DW100c como nivel de rendimiento. Este es el
nivel más bajo posible y el más barato.
5. Omita las pestañas Redes y Configuración adicional; los
valores predeterminados están bien.
6. Haga clic en Revisar + Crear .
7. Si su Azure Synapse Analytics pasa la validación, haga clic
en Crear .
8. Espere a que se complete el aprovisionamiento y luego
navegue hasta el recurso y familiarícese con las diversas
opciones a su disposición. Cuando haya terminado, vaya a
la página Descripción general y pause el grupo de SQL.

HABILIDAD 4.3: DESCRIBIR LA INGESTIÓN Y


EL PROCESAMIENTO DE DATOS EN AZURE
La carga y el procesamiento de datos se pueden lograr de muchas
maneras, y conocer los pros y los contras de las diversas opciones lo
ayudará a elegir la arquitectura más efectiva para su carga de trabajo.
Además, la orquestación es parte del juego, ya que representa la columna
vertebral de su solución. Desea tener canalizaciones sólidas y desea poder
programar y supervisar las ejecuciones de la canalización desde un lugar
centralizado. Esto es aún más importante en un escenario de
almacenamiento de datos moderno, donde los componentes pueden ser
muchos y dispares.
Esta habilidad cubre cómo:
• Describir los componentes de Azure Data Factory (p. Ej.,
Canalización, actividades, etc.)
• Describir las opciones de procesamiento de datos (por
ejemplo, Azure HDInsight, Azure Databricks, Azure Synapse
Analytics, Azure Data Factory)
• Describir prácticas comunes para la carga de datos.

Describir los componentes de Azure Data Factory (p. Ej.,


Canalización, actividades, etc.)
Azure Data Factory (ADF) es un servicio de integración de datos y ETL
basado en la nube. Puede usarlo para crear flujos de trabajo basados en
datos para orquestar el movimiento de datos y transformarlos a escala.
ADF tiene muchos puntos fuertes que lo elevan a un servicio bajo
demanda listo para la empresa. Para enumerar algunos:
• Compatibilidad con escenarios híbridos para conectar sin
problemas su arquitectura local a la nube
• La mejor integración de su clase con otros servicios populares
(Azure Storage, Azure SQL Database, Azure Synapse Analytics,
Azure Databricks, por nombrar algunos) para conectar
rápidamente todas las piezas.
• Creación visual, para acelerar el desarrollo y el
mantenimiento.
• Extensibilidad, para cubrir todos los escenarios posibles con
conectores personalizados
• Integración continua / entrega continua (CI / CD) integración
nativa, para integrar los flujos de trabajo de ADF con sus canales de
DevOps existentes
• Una capa de API, para controlar y administrar su factoría de
datos desde sus conjuntos de aplicaciones y scripts existentes
• Un amplio sistema de alerta y monitoreo, para que pueda
tomar medidas rápidas cuando algo sale mal
Antes de profundizar en el componente de servicio, creemos que es
importante que comprenda lo que no es ADF . Azure Data Factory no es un
motor de transformación en sí mismo; más bien, organiza servicios
externos para realizar el procesamiento de datos. ADF solo tiene
capacidades limitadas de conversión de datos al realizar el movimiento de
datos desde un origen a un destino, como cambiar el formato de archivo o
aplanar estructuras anidadas JSON. Incluso cuando crea un flujo de
trabajo visual utilizando flujos de datos de mapeo (más sobre eso en la
siguiente sección), ADF detrás de escena aprovechará un clúster Spark
bajo demanda para ejecutarlo.
El ADF se puede utilizar en todas las fases de un proceso ETL / ELT. De
hecho, su integración nativa con las plataformas y servicios más
importantes, y su motor de movimiento de datos escalable, permiten una
amplia gama de usos, como la ingestión de datos (la fase "E" o
"extracción") y la orquestación de flujos de trabajo complejos. .

Sugerencia para el examen


Otra opción para la orquestación es Oozie en HDInsight, pero solo admite
un subconjunto de tipos de trabajo. Obtenga más información al respecto
aquí: https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-use-
oozie-linux-mac .
Una suscripción de Azure puede contener una o más fábricas de datos
(piense en ellas como instancias de ADF ). Además de las razones obvias
para aislar un proyecto de otro, es posible que deba prever, por ejemplo,
el soporte de múltiples etapas, como desarrollo, prueba, prueba de
aceptación del usuario y producción.

Sugerencia para el examen


Azure Portal no es la única forma de crear una factoría de datos. Otros
métodos comunes son las plantillas PowerShell, .NET, Python, REST y
ARM. Lea más aquí: https://docs.microsoft.com/en-us/azure/data-
factory/introduction#next-steps
Aprovisionar una factoría de datos es fácil. Para crearlo desde el portal,
puede buscar Data Factory en el cuadro de búsqueda en la parte superior
de la página de Azure Portal. Luego sigue estos pasos:
1. En la página Data Factory , que se muestra en la Figura 4-13 ,
haga clic en Crear .

Figura 4-13 La página de creación de Azure Data Factory


2. En la página Create Data Factory , encontrará cuatro
pestañas:
1. Conceptos básicos Aquí debe elegir la suscripción y el
grupo de recursos que contendrá su instancia ADF. Si el
grupo de recursos aún no existe, puede crearlo desde
aquí. Luego, debe completar las propiedades específicas de
su instancia: su región de Azure; su nombre, que debe ser
único a nivel mundial; y su versión (la v1 se considera
heredada y no debe usarse para nuevas
implementaciones).
2. Configuración de Git En esta pestaña puede configurar
el enlace de control de código fuente para su instancia. Si
desea configurarlo más tarde, simplemente seleccione la
opción Configurar Git más tarde. Si opta por configurarlo
aquí, primero debe indicar dónde está alojado su
repositorio: en Azure DevOps o GitHub. Ya sea que elija
uno u otro, debe completar las propiedades de su
repositorio: nombre de la cuenta, nombre del proyecto
(solo Azure DevOps), nombre del repositorio, nombre de la
rama y carpeta raíz.
3. Etiquetas Aquí puede especificar cualquier etiqueta
para su instancia. Las etiquetas son pares de nombre /
valor asignados a un recurso en particular, principalmente
para la consolidación de facturación.
4. Revisar + Crear Aquí tiene la descripción completa de
la configuración y hace clic en Crear para confirmar la
creación del recurso.
3. El portal genera la plantilla, la envía para su implementación
y muestra una página con un mensaje Su implementación está en
progreso , informándole que se encuentra actualmente en la fase
de creación.

Sugerencia para el examen


Una única factoría de datos está vinculada al sistema de control de
fuentes en su conjunto. No puede enviar solo parte de los cambios
actuales al repositorio (técnicamente hablando, no puede seleccionar sus
modificaciones), pero todos los cambios de código deben confirmarse
juntos.
Una vez que se complete el aprovisionamiento, puede comenzar a
crearlo. Para hacerlo, en la página Descripción general de su recurso, haga
clic en Autor y monitor, como se muestra en la Figura 4-14 .
Figura 4-14 Página de descripción general de Azure Data Factory
Se abre una nueva página del navegador que apunta a la
URL https://adf.azure.com/home , seguida de un parámetro que contiene
el URI de recurso de la factoría de datos que va a crear. Después de iniciar
sesión (no tiene que volver a ingresar sus credenciales, ya que el inicio de
sesión único las transfiere por usted), accede a la aplicación web
multiusuario que le permite desarrollar, administrar y monitorear
recursos y canalizaciones de su factoría de datos. La página de inicio de
esa aplicación, que se muestra en la Figura 4-15 , presenta una barra de
herramientas rápidamente plegable a la izquierda, con cuatro elementos
de menú:
1. Data Factory Esta es la página de inicio donde se encuentra.
2. Autor Aquí es donde crea sus canalizaciones.
3. Monitor Aquí es donde puede analizar y realizar un
seguimiento de todas las ejecuciones de sus pipelines o
desencadenantes.
4. Administrar Aquí es donde puede configurar propiedades o
recursos que afectan a toda la factoría de datos y no a una sola
canalización, como conexiones a almacenes de datos, integración
de control de fuente, etc.
Figura 4-15 Página de inicio de la herramienta de creación visual de
Azure Data Factory
Esta página contiene accesos directos a tareas comunes en el desarrollo
de la fábrica de datos:
• Crear canalización Esto abre la página Autor con una
canalización vacía lista para ser editada.
• Crear flujo de datos Esto abre la página Autor con un flujo de
datos de mapeo vacío listo para ser editado.
• Crear canalización a partir de Esto abre la galería de
plantillas, donde puede elegir entre plantillas listas para usar que
cubren muchos patrones comunes en el desarrollo de
canalizaciones de datos.
• Copiar datos Esto abre el asistente Copiar datos, que le guía
en la creación de una canalización de movimiento de datos a través
de unos sencillos pasos (más sobre esto más adelante).
• Configurar SSIS Esto abre la pestaña de creación de tiempo
de ejecución de integración Azure-SSIS (más sobre esto más
adelante).
• Configurar repositorio de código Esto abre la pestaña de
configuración de enlace de control de código fuente.
Desplazándose un poco hacia abajo, encontrará una fuente útil de videos
y una colección de tutoriales de inicio rápido.
¿Necesita más revisión? Plantillas de Azure Data Factory
Las plantillas son una forma conveniente de implementar patrones conocidos sin reinventar
la rueda. Puede leer más sobre ellos aquí: https://docs.microsoft.com/en-us/azure/data-
factory/solution-templates-introduction .

Antes de explorar la sección Autor, vale la pena describir los componentes


más importantes de una factoría de datos.
El núcleo de ADF es el tiempo de ejecución de integración (IR), ya que es la
infraestructura informática utilizada para proporcionar capacidades de
integración. Puede tener tres tipos diferentes de IR y puede crear más de
un IR para cada tipo si es necesario.
1. Azure IR Este es el IR básico y debe haber al menos uno de
este tipo en una factoría de datos. Este es el motor que realiza
movimientos de datos entre almacenes de datos en la
nube; además, se encarga de despachar actividades externas en
redes públicas o ejecutar flujos de datos. Tiene una gran
elasticidad y puede controlar cuánto podría (o debería) escalar
ajustando las propiedades de la Unidad de integración de
datos (DIU) para cada actividad en su canalización que lo use.
2. IR autohospedado Puede usar esto para resolver dos
problemas:
1. Tiene recursos en una red privada o detrás de un
firewall que no se enfrenta a Internet.
2. Tiene almacenes de datos que requieren traer su propio
controlador, como SAP Hana y MySQL.
Este tiempo de ejecución generalmente se instala en una (o más,
para habilitar el escalamiento horizontal) VM dentro de su red
privada y, posteriormente, se vincula a su factoría de datos
mediante la creación de un IR adicional de tipo Self-Hosted . No es
necesario abrir ningún puerto para permitir el tráfico entrante,
ya que solo realiza conexiones salientes basadas en HTTP a
Internet. Es importante tener en cuenta que la máquina virtual
que actúa como puerta de enlace puede convertirse en un punto
débil o un cuello de botella de su arquitectura, y debe asegurarse
de que tenga suficiente potencia informática para admitir la
carga de trabajo requerida.
3. Azure-SSIS IR Este tiempo de ejecución admite la ejecución
de los servicios de integración de SQL Server tradicionales (solo
se admite el modo de implementación del proyecto) en un
entorno de nube bajo demanda; es compatible con las ediciones
Standard y Enterprise. Resulta útil en aquellos casos en los que
tiene una carga de trabajo local que se basa en paquetes SSIS y
desea mover esta carga de trabajo a Azure PaaS con un esfuerzo
mínimo (esta operación se llama levantar y cambiar ). Para que
funcione, debes seguir estos pasos:
0. Cree una base de datos SQL de Azure o una instancia
administrada para hospedar el catálogo SSIS, si aún no
tiene una.
1. Cree un IR de SSIS de Azure en su factoría de datos,
apuntando a la base de datos que aloja el catálogo de
SSIS. En este paso, también puede especificar la ubicación
de un script de configuración para componentes y
bibliotecas de terceros que sus paquetes puedan
necesitar; este script se ejecuta al aprovisionar el entorno
de Integration Services bajo demanda en tiempo de
ejecución.
2. Implemente su proyecto SSIS en el catálogo SSIS creado
anteriormente.
Siguiendo estos pasos, puede ejecutar los paquetes SSIS
implementados en sus canalizaciones ADF a través de la
actividad Ejecutar paquete SSIS. Tenga en cuenta que la ubicación
que elija para Azure-SSIS IR debe ser la misma que la de su
servidor de instancia administrada o base de datos SQL de
Azure; la comunicación de red entre el catálogo SSIS y el motor
que realmente ejecuta el paquete puede ser intensiva (piense en
el registro, por ejemplo).

Sugerencia para el examen


Las unidades de integración de datos son un concepto clave en la fábrica
de datos, tanto para ajustar el rendimiento como para tener costos
predecibles. Obtenga más información
aquí: https://docs.microsoft.com/en-us/azure/data-factory/copy-activity-
performance-features#data-integration-units .
¿Necesita más revisión? Tiempos de ejecución de integración
Puede leer más sobre los tiempos de ejecución de integración
aquí: https://docs.microsoft.com/en-us/azure/data-factory/concepts-integration-runtime .

¿Necesita más revisión? Migrar cargas de trabajo SSIS locales a SSIS en ADF
Si desea migrar sus paquetes de SQL Server Integration Services a Azure-SSIS IR, vaya
aquí: https://docs.microsoft.com/en-us/azure/data-factory/scenario-ssis-migration-
overview .

¿Necesita más revisión? Ubicación del tiempo de ejecución de integración y ADF


Aunque debe elegir una ubicación para su factoría de datos en el momento de la creación,
esta no es necesariamente la ubicación donde se realiza el movimiento de datos. En algunas
circunstancias, los tiempos de ejecución de integración tienen la capacidad de cambiar la
ubicación dinámicamente dependiendo de dónde se encuentren el origen y el destino. Lea
más aquí: https://docs.microsoft.com/en-us/azure/data-factory/concepts-integration-
runtime#integration-runtime-location .

Otros componentes importantes son los servicios vinculados, los


conjuntos de datos, las actividades y las canalizaciones. La figura 4-
16 muestra las relaciones entre ellos y cómo funcionan juntos.

Figura 4-16 La relación lógica entre servicios vinculados, conjuntos de


datos, actividades y canalizaciones
1. Servicio vinculado Se trata de una conexión a un almacén de
datos o servicio, y las actividades la utilizan para realizar
realmente el trabajo, como copiar datos entre tiendas o ejecutar
un trabajo en particular.
2. Conjunto de datos Representa los datos almacenados (o que
se almacenarán) en un servicio vinculado, junto con su formato y
/ o esquema, si se conoce. Si la tienda es una base de datos,
generalmente se asigna a una tabla o vista; si la tienda es una
tienda de objetos, como Blob Storage o Data Lake Storage, es
algún tipo de formato de archivo, como CSV, Parquet, Avro, JSON,
binario, etc.
3. Actividad Esta es una tarea dentro de una tubería y es
responsable de realizar el trabajo real. Los conjuntos de datos se
utilizan para indicar el origen y el sumidero de la actividad y,
según el tipo de actividad, podría tener tanto el origen como el
sumidero (en la actividad Copiar), solo uno de ellos (en la
actividad Buscar) o ninguno de ellos. ellos (en la actividad
Ejecutar paquete SSIS).
4. Pipeline Se trata de una agrupación lógica de
actividades. Representa el punto de entrada de un trabajo de
fábrica de datos; de hecho, no puede tener actividades fuera de
una canalización. Una canalización se puede invocar de forma
manual o mediante programación, o se puede activar mediante
un desencadenador. Las canalizaciones se pueden anidar
mediante la actividad Ejecutar canalización, por lo que puede
separar físicamente las etapas de su carga de trabajo y
orquestarlas aprovechando un patrón maestro / secundario.
¿Necesita más revisión? Opciones y desencadenadores de ejecución de
canalizaciones
Para obtener más información sobre las posibles formas de ejecutar una canalización y
todos los tipos de activadores disponibles, vaya aquí: https://docs.microsoft.com/en-
us/azure/data-factory/concepts-pipeline-execution-triggers .

Ahora que comprende mejor qué elementos componen una factoría de


datos, veamos cómo usarlos. Al hacer clic en el elemento del menú Autor
en la barra de herramientas de la izquierda, se abre la interfaz de usuario
que se muestra en la Figura 4-17 .
Figura 4-17 La página de autor en la herramienta visual de Azure Data
Factory
La barra superior contiene comandos típicos como Publicar todo y
Descartar todo (ambos en gris, ya que aún no hay modificaciones); un
interruptor de depuración de flujo de datos, que actualmente está
desactivado (más sobre esto en la siguiente sección sobre
procesamiento); y el menú Plantilla ARM, donde puede exportar toda la
plantilla ARM de Data Factory o importar una plantilla ARM de una
fábrica previamente exportada.
El panel izquierdo contiene una vista de árbol denominada Recursos de
fábrica . Desde aquí, puede crear una nueva canalización, conjunto de
datos o flujo de datos, y puede navegar o buscar en los ya existentes.
Si hace clic en el signo más junto al cuadro de entrada de búsqueda y
selecciona Canalización en el menú que aparece, se agrega una nueva
pestaña que contiene una canalización en blanco al panel central
(consulte la Figura 4-18 ).
Figura 4-18 La página de creación de canalizaciones en la herramienta
visual Azure Data Factory
La pestaña presenta una interfaz familiar; a la izquierda hay una barra de
herramientas con varias actividades que puede arrastrar y soltar en el
lienzo central; en la parte superior están los comandos para guardar,
validar, depurar o activar la canalización; en la parte inferior hay un menú
contextual donde puede establecer propiedades y parámetros que afectan
las actividades de la canalización; y a la derecha está la pestaña
Propiedades generales de la canalización, donde puede establecer el
nombre de la canalización, ingresar una descripción o limitar la
concurrencia de ejecuciones en tiempo de ejecución (en caso de que se
emitan múltiples invocaciones al mismo tiempo o mientras la
canalización ya se está ejecutando) .
¿Necesita más revisión? Parámetros de Azure Data Factory
Los parámetros son una herramienta simple pero poderosa para hacer que sus fábricas sean
reutilizables. Además, el equipo de desarrollo ha introducido recientemente el concepto de
parámetros globales, que acelera el desarrollo de tuberías anidadas, eliminando la molestia
de redefinirlas en cada nivel para hacerlas “burbujear” hasta el nivel exterior. El siguiente
documento técnico es completo y debe leerse para dominar la mecánica de los
parámetros: https://azure.microsoft.com/en-us/resources/azure-data-factory-passing-
parameters/ .

A continuación se muestra una breve descripción de las categorías de


actividades que puede utilizar en su canalización:
• Mover y transformar Contiene actividades para el
movimiento y la transformación de datos, como Copiar datos y
Flujo de datos.
• Explorador de datos de Azure Contiene el comando
Explorador de datos de Azure, que se puede usar para enviar
comandos a un clúster de Explorador de datos de Azure.
• Función de Azure Contiene la actividad de la función de
Azure, que se puede usar para ejecutar una función de Azure
existente para ejecutar código personalizado.
• Servicio Batch Contiene la actividad personalizada, que se
puede usar para ejecutar código personalizado implementado en el
servicio Azure Batch.
• Databricks Contiene las actividades Notebook, JAR y Python,
que se pueden usar para enviar trabajos Spark a un clúster de
Databricks aprovisionado o bajo demanda.
• Data Lake Analytics Contiene la actividad de U-SQL, que se
puede usar para enviar trabajos de U-SQL al servicio PaaS de Data
Lake Analytics.
• General Contiene varias actividades de propósito mixto. Las
actividades más notables son la actividad Ejecutar canalización,
que se utiliza para anidar ejecuciones de canalización; la actividad
Ejecutar paquete SSIS, que se utiliza para ejecutar paquetes de
Integration Services en un IR de SSIS de Azure; la actividad de
Procedimiento almacenado, que se utiliza para ejecutar un
procedimiento almacenado contenido en una base de datos de SQL
Server local o en la nube; y la actividad web, que se utiliza para
llamar a un punto final REST personalizado.
• HDInsight Contiene las actividades Hive, MapReduce, Pig,
Spark y Streaming, que se pueden usar para emitir diferentes tipos
de trabajos de Hadoop a un clúster de HDInsight aprovisionado o
bajo demanda.
• Iteración y condicional Contiene las actividades Filtro, Para
cada, Condición Si, Cambiar y Hasta, que se pueden usar para
controlar o alterar el flujo de las actividades en su canalización.
• Machine Learning Contiene las actividades Machine
Learning Batch Execution, Machine Learning Update Resource y
Machine Learning Execute Pipeline, que se pueden usar para
interactuar con el servicio Azure Machine Learning Studio (clásico).
¿Necesita más revisión? Actividades de la fábrica de datos
Para obtener una visión más detallada de las actividades de la fábrica de datos, vaya
aquí: https://docs.microsoft.com/en-us/azure/data-factory/concepts-pipelines-activities .

La Figura 4-19 muestra cómo cambia la interfaz de usuario después de


arrastrar y soltar la actividad Copiar datos en el lienzo de la canalización y
seleccionarla.

Figura 4-19 La actividad Copiar datos


Copiar datos es la actividad principal para realizar la carga de datos y
requiere que especifique un origen y un destino. El menú inferior, que es
contextual al elemento seleccionado, lo refleja y se puede utilizar para
ajustar la actividad. Contiene seis pestañas:
1. General Aquí puede establecer propiedades comunes de su
actividad, como el nombre, la descripción y el valor del tiempo de
espera. Además, puede definir si la actividad debe reintentar
cuando ocurre un error y el período de tiempo de espera entre
reintentos, y si la entrada y salida de la actividad deben
protegerse (a través de las propiedades de Entrada segura y
Salida segura). Dado que la entrada y salida de actividades se
registran en texto sin formato como objetos JSON, protegerlas
puede ser útil para evitar la divulgación de información
confidencial; de hecho, cuando están aseguradas, la entrada y / o
la salida no se capturan en absoluto. Esta pestaña permanece
prácticamente igual para la mayoría de las actividades de la
fábrica de datos.
2. Fuente Aquí selecciona el conjunto de datos de origen de la
actividad de una lista desplegable. Si el conjunto de datos de
origen aún no existe, puede hacer clic en el botón más para abrir
una nueva pestaña donde puede crearlo (la creación del conjunto
de datos se cubre justo después de este párrafo). Por ejemplo,
para un conjunto de datos que mapea una tabla de SQL Server,
consulte las opciones de la pestaña en la Figura 4-20 .

Figura 4-20 Opciones de conjunto de datos para una tabla de


SQL Server
Desde aquí puede obtener una vista previa de los datos de origen,
definir el tiempo de espera y los niveles de aislamiento para la
recuperación de datos y habilitar el uso de particiones para
paralelizar las operaciones de lectura (ya sea particiones físicas,
si están presentes, o basadas en un rango dinámico; tenga en
cuenta que esta segunda opción es más propensa a problemas de
rendimiento cuando no hay un índice que cubra el campo de
destino). También puede agregar columnas adicionales basadas
en expresiones, valores estáticos o variables reservadas (como $$
FILEPATHpara fuentes basadas en archivos). El campo Usar
consulta, específico para las fuentes de la base de datos, tiene
valores interesantes entre los que puede elegir: la opción Tabla
es sencilla y, a primera vista, las opciones de Consulta y
Procedimiento almacenado pueden parecer no aplicables (o
parcialmente aplicables) a un conjunto de datos que apunta a una
mesa. La realidad es que las actividades pueden utilizar un
conjunto de datos como un simple "puente" al servicio vinculado
subyacente, en este caso, el servidor de base de datos SQL, y
emitir comandos no relacionados con el objeto asignado al
conjunto de datos. Por ejemplo, puede ignorar completamente la
tabla SalesOrderHeader y consultar el origen de la tabla
SalesOrderDetail en su lugar, o llamar a un procedimiento
almacenado existente. Aunque esta flexibilidad puede parecer
algo bueno,
3. Sink Aquí puede seleccionar el conjunto de datos de destino,
de la misma manera que lo hace con el conjunto de datos de
origen.
4. Mapeo Aquí puede definir opcionalmente un mapeo entre los
campos fuente y receptor, ya sea importándolos de los conjuntos
de datos o ingresándolos manualmente, también opcionalmente
seleccionando un subconjunto de los campos fuente. Si deja esta
pestaña vacía, el esquema se infiere en tiempo de ejecución. No
es raro tener esquemas sueltos en la fase de extracción en
escenarios de almacenamiento de datos modernos, ya que las
fuentes pueden ser dispares y podrían cambiar sin previo
aviso. Si sigue este enfoque, la integridad de los datos y la
validación del esquema a menudo se afirman en una etapa
temprana del siguiente paso del proceso de datos. Un ejemplo
típico es cuando los ingenieros de datos extraen datos de un
almacén de datos empresarial para ponerlos a disposición del
equipo de ciencia de datos. En este caso, los conjuntos de datos
pueden ser muy amplios, ya que los científicos de datosEs
necesario analizar tantos campos como sea posible en la fase de
selección e ingeniería de características para determinar si el
modelo de aprendizaje automático se beneficiaría de
ellos. Definir y mantener un esquema de las tablas de origen
puede llevar mucho tiempo y, además, puede que no dé ninguna
ventaja al proceso, porque los campos podrían ignorarse o
transformarse posteriormente.
5. Configuración Aquí puede ajustar los parámetros
relacionados con el rendimiento: grado de paralelismo, hasta un
máximo de 8; unidades de integración de datos que se utilizarán,
si el motor las fija o elige automáticamente; configuraciones de
tolerancia a fallas como, por ejemplo, si omitir filas incompatibles
para fuentes de base de datos, o si omitir archivos faltantes para
fuentes basadas en archivos; y si habilitar la copia preparada.
6. Propiedades de usuario Aquí puede establecer propiedades
de nombre / valor, que pueden ser útiles para rastrear mejor su
actividad en los registros de monitoreo.
¿Necesita más revisión? Copia preparada
Para obtener más información sobre los casos de uso típicos de copia por etapas, vaya
aquí: https://docs.microsoft.com/en-us/azure/data-factory/copy-activity-performance-
features#staged-copy .

Para crear un conjunto de datos, en el panel Recursos de fábrica, haga clic


en el signo más junto al campo de búsqueda y luego seleccione Conjunto
de datos en el menú que aparece. Se abre una nueva pestaña a la derecha
(consulte la Figura 4-21 ), que le solicita que seleccione un almacén de
datos para continuar.
Figura 4-21 La pestaña Seleccionar un almacén de datos en la creación
del conjunto de datos
Los conjuntos de datos están estrechamente relacionados con los
conectores de la fábrica de datos, que permiten que el servicio interactúe
con las tiendas remotas de muchas formas. El enlace a los almacenes de
datos es el componente de servicio vinculado, que contiene toda la
información relevante para conectarse a él, como su URL e información de
autenticación. Puede considerar un conjunto de datos como una vista
con nombre , que apunta o hace referencia a datos en el almacén remoto
para que las actividades realmente puedan usarlo.
Sugerencia para el examen
Los conectores se actualizan con mucha frecuencia y cada mes se agregan
más. Aunque no es necesario conocer todos los más de 80 disponibles en
la actualidad y explorarlos está más allá del alcance de este libro, estar al
tanto del estado de la técnica es importante al crear una nueva solución o
desarrollar una existente. Obtenga más información
aquí: https://docs.microsoft.com/en-us/azure/data-factory/connector-
overview .
A continuación se muestra una lista de las categorías disponibles de
conectores de almacenes de datos y una breve descripción de cada uno de
ellos; puede reconocer algunos de ellos, ya que se tratan en el Capítulo
3 . Además, tenga en cuenta que algunos almacenes de datos pertenecen a
varias categorías; Azure SQL Database, por ejemplo, se puede encontrar
en las categorías Azure y Database.
• Todo Esto es solo una vista sin filtrar de todos los conectores
disponibles.
• Azure Contiene todos los servicios de Azure compatibles,
como Azure Blob Storage, Azure Data Lake Storage Gen1 o Gen2,
Azure Cosmos DB (Mongo o SQL API), Azure SQL Database, Azure
Managed Instance, Azure Synapse Analytics y más.
• Base de datos Contiene todos los servicios de base de datos
admitidos; aquí puede encontrar servicios de Azure y de terceros,
como Amazon Redshift, IBM DB2, Google BigQuery, Hive, Oracle,
Netezza, SAP BW, SAP Hana, Spark, Teradata, Vertica y más.
• Archivo Contiene servicios de archivos como FTP, SFTP,
Amazon S3, Google Cloud Storage, punto final HTTP genérico y
más. Además, puede acceder a recursos compartidos de archivos a
través del conector del sistema de archivos, tanto disponibles
públicamente, como Azure Files, como a redes locales o privadas, a
través del IR autohospedado.
• Protocolo genérico Contiene conectores de uso más amplio,
como ODBC, Odata, REST y SharePoint Online List.
• NoSQL Contiene conectores para fuentes NoSQL; por el
momento, enumera Cassandra, MongoDB y Couchbase (en vista
previa).
• Servicios y aplicaciones Contiene conectores para servicios
populares de PaaS y SaaS, como Amazon Marketplace, Dynamics
(365, AX y CRM), Jira, Office 365, Oracle (Eloqua, Responsys,
Services Cloud, todos en vista previa), PayPal (en vista previa) ,
Salesforce, SAP ECC, Snowflake y más.
Al elegir un conector, le indica a Azure Data Factory qué tipo de conjunto
de datos debe manejar. Algunos conectores requieren que proporciones
más especificaciones; el conector de almacenamiento de Azure Blob, por
ejemplo, tiene que saber qué formato de archivo está mapeando el
conjunto de datos para dar mejor forma al panel de configuración con las
opciones adecuadas (consulte la Figura 4-22 ).
Figura 4-22 Pantalla de selección de especificación de formato de archivo
para el conector de almacenamiento de Azure Blob
Seleccionar el formato de DelimitedText, por ejemplo, lo lleva a otra
pestaña donde especifica el nombre del conjunto de datos, si los archivos
mapeados tienen una fila de encabezado y el servicio vinculado que
apunta al almacén de datos.
Si el servicio vinculado aún no existe, haga clic en el signo más y
aparecerá la pestaña Nuevo servicio vinculado (consulte la Figura 4-23 ).
Tenga en cuenta el título de la pestaña en la Figura 4-23 : entre paréntesis
dice "Azure Blob Storage", ya que el tipo de este servicio vinculado está
estrictamente relacionado con el tipo de conjunto de datos que estamos
creando. En cambio, la creación de un servicio vinculado desde la sección
Administrar de Data Factory abre todos los conectores posibles para
elegir; al lado de la sección Data Store también puede encontrar una
sección Compute, con conectores específicos para el procesamiento de
datos (como se muestra en la Figura 4-24 ), como Azure Databricks, Azure
HDInsight y más.

Figura 4-23 La pestaña Nuevo servicio vinculado


Figura 4-24 Los conectores disponibles para el procesamiento de datos
Para crear un servicio vinculado de Azure Blob Storage, debe
proporcionar la siguiente información:
1. Nombre Debe ser exclusivo dentro de una factoría de datos.
2. Descripción Una descripción opcional.
3. Conectar a través del tiempo de ejecución de
integración Aquí puede elegir el IR utilizado por el
componente; también puede crear uno nuevo si es necesario.
4. Método de autenticación Puede ser uno de los siguientes:
1. Clave de cuenta Debe proporcionar una cadena de
conexión a su cuenta de almacenamiento, ya sea
manualmente, seleccionándola de una suscripción a la que
tiene acceso, o mediante un secreto de Azure Key Vault
(más información en un momento).
2. URI de SAS Debe proporcionar un par de token de SAS /
URL de SAS, ya sea manualmente o mediante los secretos
de Azure Key Vault.
3. Responsable del servicio Debe proporcionar el punto
final y el tipo de su cuenta de almacenamiento, ya sea
manualmente o seleccionándolo de una suscripción a la
que tenga acceso; su inquilino principal de servicio, ID y
clave (esto se puede recuperar a través de Azure Key
Vault); y el tipo de nube de Azure en el que está registrado.
4. Identidad administrada Debe proporcionar el punto final
y el tipo de su cuenta de almacenamiento, ya sea
manualmente o seleccionándolo de una suscripción a la
que tenga acceso.
5. Anotaciones Pares de nombre / valor personalizados que se
asociarán al recurso.
6. Avanzado Aquí puede establecer propiedades que aún no
están expuestas por la interfaz de usuario, expresándolas en
formato JSON

Sugerencia para el examen


Azure Key Vault es un servicio que proporciona una forma de centralizar
el almacenamiento de información confidencial, como claves, certificados
y secretos, en un repositorio de alta seguridad. Data Factory tiene una
integración profunda con él, y casi todos los servicios vinculados
disponibles lo admiten. Para saber cómo habilitar y usar Azure Key Vault
en su factoría de datos, vaya aquí: https://docs.microsoft.com/en-
us/azure/data-factory/store-credentials-in-key-vault .
Después de completar todos los campos obligatorios, puede probar la
conexión a la cuenta de almacenamiento y / o continuar con su creación
haciendo clic en Crear. Si no surgen errores, regresa a la pantalla anterior
para completar la definición del conjunto de datos DelimitedText, y ahora
presenta dos campos adicionales:
1. Ruta de archivo Aquí puede especificar opcionalmente un
contenedor, carpeta y / o archivo para el conjunto de datos; Se
aceptan comodines. Si deja este campo vacío, significa que solo
desea apuntar a la cuenta de almacenamiento y dar más libertad
a la actividad que utilizará el conjunto de datos. Como ejemplo,
puede especificar solo el nombre del contenedor y la carpeta raíz,
y luego, en una actividad Copiar datos, iterar recursivamente sus
elementos secundarios para mover todo el contenido del
directorio.
2. Importar esquema Si especificó una ruta de archivo
completa, podría decidir si importar o no el esquema de
archivo. Si desea importarlo, puede obtenerlo del archivo que
estáapuntando hacia o desde un archivo de muestra local. Esta
última opción resulta útil cuando, por ejemplo, está creando el
conjunto de datos de destino de una actividad Copiar datos y el
destino aún no existe. En este caso, es posible que desee preparar
un archivo de muestra con la misma estructura de su destino y
utilizarlo para instruir al conjunto de datos sobre el esquema del
archivo.
Si hace clic en Aceptar, su conjunto de datos finalmente se crea y se abre
en modo de edición (consulte la Figura 4-25 ), en una interfaz
prácticamente idéntica a la edición de una canalización.

Figura 4-25 La ventana de edición del conjunto de datos


Esta ventana tiene las siguientes pestañas:
1. Conexión Esto contiene muchas propiedades que ya
estableció en el proceso de creación, pero también introduce
otras más nuevas que definen la especificación de importación de
texto delimitado, como el tipo de compresión, los delimitadores
de columna y fila, la codificación, los caracteres de escape y de
comillas, y el valor que debe ser tratado como nulo. Puede usar la
casilla de verificación Editar junto a cada campo para ingresar
valores dinámicos aprovechando el lenguaje de expresión de
Data Factory.
2. Esquema Contiene el esquema del conjunto de datos, si ya se
ha importado. También puede editar el esquema actual,
importarlo de nuevo (o por primera vez) y borrar el existente.
3. Parámetros Aquí puede definir los parámetros del conjunto
de datos, que se pueden utilizar dentro de las expresiones para
personalizar el comportamiento del conjunto de datos. Los
parámetros se establecen mediante actividades de canalización
que utilizan el conjunto de datos. Como ejemplo, piense en un
conjunto de datos con una ruta parametrizada que se puede
reutilizar en diferentes actividades de Copiar datos para escribir
el mismo tipo de archivo en diferentes ubicaciones de receptores.

Sugerencia para el examen


Las expresiones y funciones de Data Factory son poderosas y pueden
agregar una gran versatilidad a sus canalizaciones. Lea más
aquí: https://docs.microsoft.com/en-us/azure/data-factory/control-flow-
expression-language-functions .
Practique Utilice el Asistente para copiar datos para crear y ejecutar
una canalización simple
Esta práctica le muestra cómo usar el Asistente para copiar datos para
crear desde cero una canalización simple pero completa que mueve los
datos de una base de datos de Azure SQL y los ingiere en un contenedor
de almacenamiento de Azure Blob. El asistente utiliza recursos que ya ha
proporcionado en las secciones de práctica de los Capítulos 2 y3, así que
si desea seguir este procedimiento paso a paso, asegúrese de completar
primero esas secciones de práctica.
Primero, tenemos que crear una vista llamada vProductModel en la base
de datos de origen que oculta el campo XML CatalogDescription de
SalesLT.ProductModel ya que no necesitamos ese campo. Además, crear
una vista en lugar de leer la tabla de origen directamente se considera
una práctica recomendada para desacoplar el origen y el receptor y
mantener la estabilidad del esquema. Después de eso, aprovisiona una
factoría de datos y ejecuta el Asistente para copiar datos.
1. Después de iniciar sesión en Azure Portal, navegue hasta la
base de datos Azure SQL que creó en el Capítulo 2 . Si utilizó los
nombres de muestra propuestos en esa práctica, el nombre de la
base de datos debe ser DP900_1.
2. Vaya a la página del Editor de consultas (Vista previa) desde
el menú de la izquierda, inicie sesión y escriba en el editor el
código del Listado 4-1 (puede encontrar el mismo código en el
archivo vProductModel.sql en el contenido complementario).
Listado 4-1 Creación de vista de vProductModel

Haga clic aquí para ver la imagen del código


VER DROP SI EXISTE SalesLT.vProductModel;

IR

CREAR VISTA SalesLT.vProductModel COMO

SELECCIONE

pm.ProductModelID,

pm.Name,

pm.rowguid,

pm.ModifiedDate

DE

SalesLT.ProductModel como pm

3. Ejecute la consulta para crear la vista y espere a que finalice.


4. De vuelta en la página de inicio del portal, haga clic en Crear
un recurso .
5. Escriba Data Factory en la barra de búsqueda y selecciónelo
en los resultados de la búsqueda.
6. Haga clic en Crear .
7. En la pestaña Básico :
1. Seleccione su suscripción y grupo de recursos.
2. Seleccione la misma región que utilizó en las prácticas anteriores
(Norte de Europa).
3. Ingrese un nombre globalmente único para su factoría de datos.
4. Deje V2 como versión.
8. En la configuración de Git pestaña, seleccione Configurar
Git tarde .
9. En la pestaña Redes , deje Managed Virtual Network
(Preview) establecido en Disabled y Connectivity
Method establecido en Public Endpoint .
10. Haga clic en Revisar + Crear .
11. Si su factoría de datos pasa la validación, haga clic en Crear .
12. Cuando se complete el aprovisionamiento, navegue hasta el
recurso, seleccione la página Descripción general y haga clic
en Autor y monitor ; aparece la herramienta de creación visual.
13. En la página de inicio de la interfaz de usuario de Data
Factory , haga clic en el icono Copiar datos; suele ser el cuarto
desde la izquierda. Aparece un cuadro de diálogo con seis pasos
principales que debe seguir.
14. En el paso Propiedades, ingrese AzureSQL_to_Blob como el
nombre de la tarea, seleccione Ejecutar una vez
ahora en Cadencia de tareas o Programación de tareas y deje
las otras opciones en sus valores predeterminados. Haga clic
en Siguiente .
15. En el paso Fuente :
0. En la página Source Data Store , haga clic en Create New
Connection .
1. Escriba Azure SQL Database en la barra de búsqueda, haga clic
en Azure SQL Database y, a continuación, haga clic en Continuar .
2. Escriba DP900_1 para el nombre del servicio vinculado .
3. Deje AutoResolveIntegrationRuntime como el valor de Connect
Via Integration Runtime .
4. Deje De la suscripción de Azure como Método de selección de
cuenta y, en orden, seleccione su suscripción, servidor y base de datos. Si
usó los nombres de muestra en el Capítulo 2 , el nombre de la base de
datos debe ser DP900_1.
5. Complete los campos Nombre de usuario y Contraseña , no
agregue propiedades de conexión ni anotaciones adicionales, y luego haga
clic en Probar conexión . Si no puede establecer una conexión, asegúrese
de que en la sección Cortafuegos y redes virtuales de su servidor de base
de datos, la opción Permitir que los servicios y recursos de Azure accedan
a este servidor esté establecida en Sí. Cuando pueda establecer una
conexión correctamente, haga clic en Crear .
6. De vuelta en la página Source Data Store , seleccione el icono de
conexión DP900_1 y haga clic en Siguiente .
7. En la página Selección de tabla , seleccione la opción Mostrar
vistas y seleccione las siguientes tablas y vistas: SalesLT.Customer,
SalesLT.Product, SalesLT.ProductCategory, SalesLT.SalesOrderDetail,
SalesLT.SalesOrderHeader y SalesLT.vProductModel (asegúrese de
seleccionar la vista usted creó, y no la tabla); luego haga clic
en Siguiente .
8. Haga clic en Siguiente , dejando las opciones de las tablas
configuradas con sus valores predeterminados.
16. En el paso Destino :
0. En la página del almacén de datos de destino , haga clic en Crear
nueva conexión .
1. Escriba Azure Blob Storage en la barra de búsqueda,
seleccione Azure Blob Storage y luego haga clic en Continuar .
2. Escriba DP900sa para el nombre del servicio vinculado .
3. Deje AutoResolveIntegrationRuntime como el valor de Connect
Via Integration Runtime .
4. Asegúrese de que la Cadena de conexión esté seleccionada y
deje De la suscripción de Azure como Método de selección de
cuenta . Luego, en orden, seleccione su suscripción y la cuenta de
almacenamiento que creó en la práctica “Creación de una cuenta de
almacenamiento y un contenedor usando PowerShell” en el Capítulo
3; Data Factory obtiene la cadena de conexión de la cuenta de
almacenamiento y la guarda (encriptada) en el servicio
vinculado. Además, ADF está bien integrado con Azure Key Vault, y es
posible que desee utilizar ese método de conexión en su lugar. En este
caso, debe seleccionar el servicio vinculado que apunta a Azure Key Vault
(o crearlo primero) y proporcionar el nombre y la versión del secreto que
almacena la cadena de conexión a la cuenta de almacenamiento. No
agregue propiedades de conexión o anotaciones adicionales y luego haga
clic en Probar conexión . Si todo funciona como se esperaba, haga clic
en Crear; si no es así, vuelva a comprobar si las propiedades de la cuenta
de almacenamiento y la información de autenticación son
correctas. Tenga en cuenta que esta cuenta de almacenamiento es
diferente de la que creó en la práctica "Creación de una cuenta de
almacenamiento" (en el Capítulo 3 ), ya que esta última es un Data Lake
Storage Gen2. De hecho, se ha creado con la opción Espacio de nombres
jerárquico seleccionada. En un proyecto del mundo real, es común dejar
esa opción sin seleccionar para el almacén de datos de prueba para que
solo se incurra en costos menores y seleccionarla solo para el almacén de
datos al que acceden los usuarios finales (por ejemplo, donde se
almacenan los datos seleccionados conjuntos de datos), si está presente.
5. De vuelta en la página del almacén de datos de destino , haga clic
en Conexión DP900sa y luego haga clic en Siguiente .
6. Ingrese companyblobs / extract / azuresql / en el campo Ruta
de la carpeta .
7. Seleccione Editar nombres de archivo uno por uno y reemplace
todos los "." (punto) caracteres con “_” (guión bajo). Esto cambia
SalesLT.Customer a SalesLT_Customer, por ejemplo, y cambia
SalesLT.vProductModel a SalesLT_ProductModel. Deje Sufijo de nombre
de archivo , Conexiones simultáneas máximas y Tamaño de
bloque en sus valores predeterminados. Luego, haga clic en Siguiente .
8. En la configuración de Formato de archivo , seleccione la casilla de
verificación Agregar encabezado a archivo y deje las otras opciones en
sus valores predeterminados. Luego, haga clic en Siguiente .
17. En el paso Configuración , deje los valores predeterminados
sin modificar y haga clic en Siguiente .
18. En el paso Resumen , verifique que todo esté bien y luego
haga clic en Siguiente . Tenga en cuenta que el asistente no
proporciona una forma de cambiar el nombre de los conjuntos de
datos de origen y destino; debe cambiarlos más tarde por valores
más significativos.
19. En el paso Implementación , espere a que finalice y luego
haga clic en Editar canalización . Como parte de la
implementación, el asistente también ejecuta la
canalización; ignórelo, ya que lo volverá a ejecutar manualmente
en un momento.
20. En el lienzo de la canalización, verá una actividad ForEach, y
en el panel inferior hay un parámetro de matriz que contiene
todas las tablas de origen que seleccionó y las
respectivas nombre del archivo de destino. Si selecciona la
actividad ForEach y selecciona la pestaña Configuración, verá que
el parámetro se usa para establecer la propiedad
Elementos. También puede ver que la propiedad Sequential no
está seleccionada; eso significa que ForEach itera elementos de
matriz en lotes. Puede modificar el tamaño del lote mediante la
propiedad Recuento de lotes.
21. Si hace clic en el icono de lápiz dentro de la actividad ForEach,
el lienzo cambia para reflejar el contenido de la actividad, que
consiste en una actividad Copiar. ForEach itera sus elementos de
origen e invoca la actividad Copiar datos para cada uno de ellos,
utilizando parámetros para personalizar los conjuntos de datos
de origen y destino para cada ejecución. ForEach accede a
la @item()función, que devuelve el objeto JSON actualmente
iterado. Para ver cómo usarlo correctamente, haga clic en
la actividad Copiar datos y verifique
la sección Propiedades del conjunto de datos de
las pestañas Fuente y Receptor .
22. Para ejecutar la canalización:
0. Haga clic en el icono Agregar activador en la barra superior y
luego seleccione Activar ahora en el menú desplegable que aparece.
1. En la ventana Ejecución de canalización, deje todo sin cambios y
haga clic en Aceptar .
Se le notifica que la canalización se está ejecutando y, poco
después, que la canalización ha completado su ejecución.
23. Para monitorear la ejecución de la canalización:
0. Haga clic en el icono Monitor en el panel de la interfaz de usuario
de Azure Data Factory de la izquierda .
1. En el panel Pipeline Runs Central , verá una lista de todas las
ejecuciones de pipeline más recientes. Al hacer clic en el nombre de la
canalización en una de las filas, accederá a detalles de ejecución
específicos.
2. La página Detalles de ejecución muestra el lienzo de canalización
clásico. Observe que un icono verde o rojo junto a sus actividades muestra
el resultado de un vistazo.
3. En la parte inferior, verá una lista de todas las actividades
invocadas en la última ejecución, junto con algunos detalles de ejecución,
como el resultado y la duración. Observe que la actividad Copiar datos se
ha ejecutado tantas veces como la cantidad de tablas de origen que
seleccionó; en este ejemplo, seis.
4. Cuando pasa el mouse sobre una de estas filas, aparecen tres
íconos: Entrada, Salida y Detalles. Si hace clic en el icono Detalles (que
parece un anteojo), se abre un panel flotante que muestra un resumen
gráfico de la ejecución de Copiar datos. Aquí puede encontrar información
importante como la cantidad de registros transferidos, el tamaño total de
los datos movidos, la cantidad de unidades de integración de datos
utilizadas y un desglose del tiempo total de ejecución.
24. Con la herramienta de escritorio Azure Storage Explorer ,
compruebe que los archivos se hayan creado de forma
eficaz. Como alternativa, si usa la versión web, puede encontrar la
versión web de la herramienta Explorador de almacenamiento en
el Portal de Azure, en la sección Explorador de almacenamiento
(Vista previa) de la página de recursos de su cuenta de
almacenamiento. Su cuenta de almacenamiento tiene ahora seis
archivos nuevos en la ruta / extract / azuresql en el contenedor
companyblobs, uno para cada una de las tablas de origen.

Sugerencia para el examen


Hay tres tipos de desencadenantes en Data Factory: programado, ventana
giratoria y basado en eventos. Para obtener más información, vaya
aquí: https://docs.microsoft.com/en-us/azure/data-factory/concepts-
pipeline-execution-triggers .
¿Necesita más revisión? Supervisar una fábrica de datos
El monitoreo de fábricas de datos es un tema complejo que está fuera del alcance de este
libro. Para obtener más información sobre cómo monitorear visualmente una fábrica de
datos, vaya aquí: https://docs.microsoft.com/en-us/azure/data-factory/monitor-visually .
Si prefiere usar Azure Monitor para centralizar la supervisión de múltiples servicios y
aplicaciones en un solo lugar, Azure Data Factory no hace ninguna excepción ya que tiene
una fuerte integración con él. Lea más aquí: https://docs.microsoft.com/en-us/azure/data-
factory/monitor-using-azure-monitor .

Describir las opciones de procesamiento de datos (por


ejemplo, Azure HDInsight, Azure Databricks, Azure Synapse
Analytics, Azure Data Factory)
Cuando se trata del procesamiento de datos, se abren muchos servicios y
posibilidades, y debería ver esto de una manera muy positiva.
A primera vista, elegir un camino u otro puede parecer muy difícil. Azure
ofrece muchos servicios que tienen capacidades que se superponen en
muchas áreas, por lo que siempre es mejor comenzar a evaluar aquellos
con los que está familiarizado. Al mismo tiempo, debes evitar el sesgo
conocido como la ley del instrumento: "Si todo lo que tienes es un martillo,
todo parece un clavo". Además, intente elegir un servicio teniendo en
cuenta la imagen completa.
Por ejemplo, suponga que planea aprovisionar un área de trabajo de
Azure Databricks para permitir que los científicos de datos realicen
análisis avanzados y debe decidir qué motor usar para procesar un flujo
de datos. En este caso, probablemente elegiría Spark Streaming en lugar
de Azure Stream Analytics para evitar tener que mantener un servicio
adicional en su arquitectura. Sin embargo, para hacerlo, debe mantener su
clúster Spark en línea en todo momento, y es importante hacer un cálculo
aproximado de los costos antes de tomar cualquier decisión.
Como otro ejemplo, suponga que tiene que transformar algunos datos
antes de cargarlos en Azure Synapse Analytics, como unir dos archivos de
entrada con una clave específica para tomar solo las filas comunes entre
los dos. Como en el ejemplo anterior, suponga que Azure Databricks ya
estáparte de la arquitectura. Además, está utilizando Azure Data Factory
para la orquestación. Entonces, tienes al menos tres opciones:
• Azure Databricks Notebook Esta opción requiere que
escriba algún código Spark para realizar la unión, tener un clúster
listo para hacer el trabajo y agregar una actividad de Notebook a
una canalización nueva o existente para encadenarla al flujo de
trabajo por lotes en el punto correcto , justo antes de insertar datos
en la base de datos de destino.
• Flujos de datos de asignación de Azure Data Factory Esta
opción no tiene código, ya que la característica de flujos de datos de
asignación tiene una interfaz de usuario de creación visual. Sin
embargo, todavía está usando Spark en segundo plano bajo
demanda, por lo que el costo adicional de la computación sigue
ahí. No tiene que administrar el clúster, ya que Azure lo administra
por usted y solo paga por lo que usa. Como último paso, debe
agregar una actividad de flujo de datos de mapeo a una tubería
nueva o existente para encadenarla al flujo de trabajo por lotes en
el punto correcto, justo antes de insertar datos en la base de datos
de destino.
• Azure Synapse Analytics Esta opción aprovecha el
componente PolyBase para asignar los archivos a una tabla local
para que pueda escribir una vista simple o un procedimiento
almacenado en lenguaje T-SQL para realizar la unión. Dado que es
probable que el servicio no esté en pausa (los datos deben cargarse
en él justo después de la transformación), si el paso de
transformación tarda poco en ejecutarse, esta opción podría ser la
menos costosa. Además, aunque todavía necesita orquestar este
paso en una canalización a través de la actividad adecuada, las fases
de transformación y carga tienen lugar en el mismo motor, lo que
requiere un paso menos en la canalización de orquestación.
Todas estas opciones son válidas desde un punto de vista general, pero
cuando las pone en el contexto de su solución, una de ellas puede surgir
como la mejor opción. En este ejemplo, el tercero puede verse como la
mejor compensación, aunque probablemente no sea el más elegante (solo
el viejo T-SQL que conocemos). Es un error común marcar algunas
opciones como "obsoletas" o no "lo suficientemente parecidas a la nube",
pero es importante dejar de lado las ideas preconcebidas y elegir el
servicio más competente para su solución específica.
Cada motor requiere un enfoque específico, y esta sección le muestra
cómo realizar la misma tarea de cuatro formas diferentes, usando, a su
vez:
1. Azure HDInsight
2. Azure Databricks
3. Análisis de Azure Synapse
4. Fábrica de datos de Azure
Suponga que tiene que producir una extracción de salida combinando los
archivos SalesLT_Product.txt, SalesLT_ProductCategory.txt y
SalesLT_ProductModel.txt que obtuvo de las tablas correspondientes en
su base de datos OLTP Azure SQL en la práctica "Use el Asistente para
copiar datos para crear y ejecutar un canalización simple ”, anteriormente
en este capítulo.
La Figura 4-26 muestra un diagrama de las tres tablas de origen para que
pueda comprender las relaciones que existen entre ellas.

Figura 4-26 Diagrama de esquema de las tres tablas fuente


Al observar el diagrama, puede ver que ProductCategory de
AdventureWorksLT tiene una autounión consigo misma, para representar
la relación entre ProductCategory y ProductSubcategory.
El archivo de salida debe incluir los campos enumerados en la Tabla 4-1 .
Tabla 4-1 Lista de campos de salida
NOMBRE DEL CAMPO TIPO DE CAMPO

ID del Producto En t

Nombre cuerda

Número de producto cuerda

Color cuerda

Costo estándar cuerda

Precio de lista cuerda

Tamaño cuerda

Peso cuerda

ProductModelID En t

ProductModelName cuerda

ProductCategoryID En t

Categoria de producto cuerda

ProductSubcategoryID En t

ProductSubcategoryName cuerda
Para producir el diseño de registro que se ve en la Tabla 4-1 , necesita un
motor capaz de lo siguiente:
1. Llegar a los archivos de origen de la manera más conveniente
posible
2. Leer su contenido en forma tabular
3. Realizar operaciones de unión (o similares) para obtener toda
la información necesaria sobre un producto en la misma fila
4. Escribir el resultado en una ubicación específica
Obviamente, la forma más sencilla sería crear una vista en la base de
datos de origen que exponga el diseño directamente. Pero es posible que
no tenga la oportunidad de modificar o crear objetos en las bases de datos
de la aplicación si están bloqueados por el proveedor o están dispersos en
diferentes bases de datos. Otro método podría ser leer desde una vista
creada en otra base de datos que actúa como puente, o incluso usar
una SELECTexpresión como origen de una actividad de copia en Azure Data
Factory. Sin embargo, de esta manera no existiría ningún
desacoplamiento entre la base de datos fuente y el proceso que
transforma los datos, porque la mayor parte del trabajo se requiere del
motor fuente. En muchos escenarios, esto no es aceptable ya que el acceso
a las fuentes solo está permitido durante un período de tiempo fijo.
El almacenamiento de datos moderno a menudo se basa en almacenes de
almacenamiento distribuidos y lagos de datos para garantizar una
separación clara entre las fuentes y los procesos posteriores. Además,
muy a menudo las fuentes envían los datos a la capa de almacenamiento
de forma asincrónica y no se extraen todos a la vez cuando se inicia el
trabajo por lotes. En tales casos, los procesos por lotes deben tener algún
mecanismo para evitar la lectura de datos parcialmente escritos, como
verificar archivos de reconocimiento / semáforo, o leer más allá de un
desplazamiento ignorando los datos continuos (por ejemplo, como del día
anterior y viceversa, evitando el actual día).
Ahora, veamos los diferentes motores en acción.

AZURE HDINSIGHT
En la práctica “Aprovisionar un clúster de HDInsight Hadoop”
anteriormente en este capítulo, creó un clúster de tipo Hadoop. Para
consultar datos y trabajar con ellos, debe enviar trabajos de Hive al
clúster, utilizando un lenguaje similar a SQL llamado HiveQL .
Puede enviar consultas de HiveQL de varias formas, utilizando, por
ejemplo, interfaces web, herramientas de línea de comandos, clientes de
escritorio, la actividad de Hive en Azure Data Factory, API REST, etc. De
las diversas opciones a nuestra disposición, elegiremos Apache Ambari
Hive Views.
¿Necesita más revisión? Apache Hive y HiveQL
Para obtener más información sobre cómo enviar consultas de Hive a HDInsight, vaya
aquí: https://docs.microsoft.com/en-us/azure/hdinsight/hadoop/hdinsight-use-hive .

Como aprendió en Skill 4.2 , la aplicación web Ambari Views viene


preinstalada en su clúster de HDInsight y se puede iniciar desde la página
de información general de su recurso en el portal de Azure. Para acceder a
la consola de Hive View, simplemente haga clic en el elemento con el
mismo nombre en la página de inicio de la aplicación Ambari Views (vea
las Figuras 4-2 y 4-4 ), o como alternativa, haga clic en el ícono cuadrado a
la izquierda de la icono de nombre de usuario. La Figura 4-27 muestra la
consola de Hive View.

Figura 4-27 Consola de Hive View


Como primer paso, necesitamos decirle al clúster dónde residen los
datos. Hive admite dos tipos de tablas:
• Tablas internas Los datos se almacenan en el almacén de
datos de Hive, ubicado en / hive / warehouse / en el
almacenamiento predeterminado del clúster. Hive administra las
tablas internas. Eliminar una tabla también eliminaría los datos que
contiene. Las tablas se utilizan normalmente para almacenar datos
temporales o datos que viven con el clúster.
• Tablas externas Los datos se almacenan fuera del almacén
de datos, en cualquier almacenamiento accesible por el
clúster. Puede ver las tablas como una capa virtual sobre los datos
originales y, al soltar la tabla, solo se elimina la asignación a los
datos, no los datos en sí. Las tablas externas se usan normalmente
cuando tiene datos que no están estrictamente vinculados al clúster
(por ejemplo, archivos en un lago de datos) pero desea o necesita
usar Hive para trabajar con ellos.
¿Necesita más revisión? Mesas internas y externas
Puede encontrar una publicación de blog muy detallada
aquí: https://docs.microsoft.com/en-us/archive/blogs/cindygross/hdinsight-hive-internal-
and-external-tables-intro .

En nuestro ejemplo, utilizará tablas externas para mapear los archivos


fuente. Para hacerlo, debe usar el create external tablecomando. Por
ejemplo, para mapear el archivo SalesLT_ProductModel, puede enviar el
código HiveQL que se muestra en el Listado 4-2 .
Listado 4-2 Creación de tabla externa

Haga clic aquí para ver la imagen del código


CREAR BASE DE DATOS SI NO EXISTE dp900;

DROP TABLE SI EXISTE dp900.SalesLT_ProductModel;

CREAR TABLA EXTERNA dp900.SalesLT_ProductModel

ProductModelID INT,

Nombre STRING,

rowguid STRING,

Fecha de modificación STRING

FORMATO DE FILA DELIMITADO

CAMPOS TERMINADOS POR ','


ALMACENADO COMO ARCHIVO DE TEXTO

UBICACIÓN 'wasbs:
//companyblobs@dp900sablob.blob.core.windows.net/extract/azur
esql/

SalesLT_ProductModel '

TBLPROPERTIES ("skip.header.line.count" = "1");

Después de crear una nueva base de datos llamada dp900 (esto no es


obligatorio, pero desea mantener todos los objetos en una base de datos
diferente a la predeterminada que viene con el clúster), le dice a Hive lo
siguiente:
1. El nombre de la tabla externa, que en este caso se parece al
nombre del archivo
2. El esquema de la mesa
3. El formato y tipo de archivo (por ejemplo, que es un archivo
de texto delimitado y el terminador de campos)
4. La ruta a la carpeta que contiene el archivo, incluido el
nombre de la cuenta de almacenamiento y el nombre del
contenedor.
5. Que el archivo tiene un encabezado, por lo que debe omitir la
primera fila al leer los datos.
Aquí hay algunas cosas que vale la pena mencionar:
• La cuenta de almacenamiento debe ser visible para el
clúster; puede ser la cuenta de almacenamiento principal o una
adicional especificada en el aprovisionamiento, o una adicional
vinculada posteriormente.
• No se realiza ningún movimiento de datos al crear la tabla.
• El esquema se infiere justo cuando realmente se tocan los
datos ( esquema al leer ); esto significa que en el tiempo de lectura,
Hive intenta una conversión implícita del contenido del archivo
(por ejemplo, de texto a INTpara la columna ProductModelID). En
caso de falla, esa celda mostrará NULL en el conjunto de registros
devuelto.
• La ubicación debe apuntar a una carpeta, no a un solo
archivo. Al leer de las tablas externas, Hive aplica el esquema
especificado a todos los archivos de esa carpeta y devuelve todos
los registros resultantes. Si se encuentra un archivo con un
esquema diferente, Hive hace todo lo posible para aplicarle el
esquema definido, devolviendo NULL cuando se producen errores
de conversión.
¿Necesita más revisión? Tablas de Hive y Azure Blob Storage
Para explorar las posibles opciones para cargar datos desde Azure Blob Storage en tablas de
Hive, vaya aquí: https://docs.microsoft.com/en-us/azure/machine-learning/team-data-
science-process/move-hive -tablas .

Puede utilizar el mismo enfoque para crear las otras dos tablas externas
que necesita, SalesLT_ProductCategory y SalesLT_Product. Además, puede
crear la tabla externa que contendrá los resultados. La inserción de datos
en una tabla externa crea uno o varios archivos en el disco en la carpeta a
la que apunta la ubicación de la tabla. De hecho, dependiendo de ciertos
factores (como, por ejemplo, los pasos de MapReduce que realiza el
trabajo y la cantidad de nodos de trabajo involucrados), el motor podría
producir varios archivos en la carpeta de salida, que son partes de todo el
archivo. Técnicamente hablando, el número de archivos será igual al
número de reductores que utilizará el motor. El Listado 4-3 muestra cómo
crear la tabla de destino, denominada info_productos.
Tenga en cuenta el contenido complementario
El código completo se puede encontrar en la carpeta hdi en el contenido complementario.

Listado 4-3 Creación de la tabla de destino

Haga clic aquí para ver la imagen del código


DROP TABLE SI EXISTE dp900.products_info;

CREAR TABLA EXTERNA dp900.products_info

ProductID INT,

Nombre STRING,

ProductNumber STRING,

COLOR STRING,

Costo estándar STRING,


ListPrice STRING,

Talla STRING,

Peso STRING,

ProductModelID INT,

ProductModelName STRING,

ProductCategoryID INT,

ProductCategory STRING,

ProductSubcategoryID INT,

ProductSubcategoryName STRING

FORMATO DE FILA DELIMITADO

CAMPOS TERMINADOS POR ','

ALMACENADO COMO ARCHIVO DE TEXTO

UBICACIÓN 'wasbs:
//companyblobs@dp900sablob.blob.core.windows.net/transform/hd
i/products_info'

El script es similar al del Listado 4-2 , con dos diferencias:


• La ubicación apunta a una ruta diferente, que contendrá el
archivo de salida.
• La TBLPROPERTIESopción no es necesaria y se ha
eliminado. Tenga en cuenta que Hive no tiene una forma directa de
agregar nombres de columna al escribir en un archivo, por lo que
los encabezados se perderán en la salida.
Ahora que ha mapeado la entrada y la salida, puede realizar la
transformación necesaria. Dado que HiveQL tiene una sintaxis similar a
SQL, escribir la transformación es sencillo, como se muestra en el Listado
4-4 .
Listado 4-4 Creación de la tabla de destino
Haga clic aquí para ver la imagen del código
USE dp900;

INSERTAR TABLA DE SOBRESCRIBIR info_productos

SELECCIONE

p.ProductID,

p.Name,

p.ProductNumber,

p.Color,

p. Costo estándar,

p.ListPrice,

p. tamaño,

p. peso,

pm.ProductModelID,

pm.Name AS ProductModelName,

psc.ProductCategoryID AS ProductSubcategoryID,

psc.Name AS ProductSubcategoryName,

pc.ProductCategoryID,

pc.Name AS ProductCategoryName

FROM SalesLT_Product AS p

ÚNETE a SalesLT_ProductModel AS pm en p.ProductModelID =


pm.ProductModelID

ÚNETE a SalesLT_ProductCategory AS psc en p.ProductCategoryID


= psc.ProductCategoryID

ÚNETE a SalesLT_ProductCategory AS pc en
psc.ParentProductCategoryID = pc.ProductCategoryID;
El INSERT OVERWRITE TABLEcomando le dice al motor que escriba en
products_info los resultados de la SELECTdeclaración, sobrescribiendo el
contenido de la tabla. Esta es una forma eficaz de extraer datos al
almacenamiento HDFS, ya que Hive puede paralelizar el proceso,
explotando la arquitectura subyacente del sistema de archivos
distribuido. Desde un punto de vista lógico, las tablas externas están
unidas por clave como si fueran tablas normales, pero bajo el capó, Hive
obtiene el contenido físico de los archivos fuente y hace coincidir las filas
correspondientes por clave para producir el resultado final.

Sugerencia para el examen


Si desea agregar datos en lugar de sobrescribir el contenido de la tabla,
puede usar el INSERT INTOcomando.
La Figura 4-28 muestra el contenido de la tabla tal como aparece en el
disco.
Puede notar que el archivo no tiene extensión y que el nombre de la tabla
externa es el nombre de la carpeta que contiene el archivo. El nombre del
archivo es 000000_0, que es un contador progresivo de los archivos que
produjo el trabajo de Hive (el siguiente sería 000001_0, y así
sucesivamente); en este caso, solo uno. Hive no tiene una forma directa de
cambiar esta convención de nomenclatura, pero si por alguna razón no
funciona para usted, puede intentar escribir un serializador
personalizado en Java que anule el comportamiento predeterminado. De
todos modos, esto es algo a tener en cuenta para el proceso posterior, ya
que un nombre de archivo de este tipo no es muy fácil de usar. Por
ejemplo, si tiene que compartir el archivo con alguien, puede usar una
actividad Copiar en Data Factory para copiarlo en una carpeta de destino
y, al mismo tiempo, asignarle un nombre más fácil de usar.
Figura 4-28 El contenido físico de la tabla info_productos
¿Necesita más revisión? Optimización de colmena
La optimización de motores y consultas están fuera de alcance aquí, pero es un tema
importante. Esto es especialmente cierto cuando aumenta el volumen de datos, ya que
escalar el clúster no sería suficiente sin un ajuste adecuado del motor y la estructura de los
datos. Lea más aquí: https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-hadoop-
optimize-hive-query .

AZURE DATABRICKS
El enfoque que debe adoptar al usar Azure Databricks es similar al que ha
visto para Azure HDInsight. El punto de acceso a los datos es
el DataFrameobjeto, que es una capa sobre los datos que se puede
instanciar de muchas formas. Para simplificar, considérelo una tabla
externa en Hive, pero más compleja y poderosa. Una vez creado,
a DataFramees inmutable. De hecho, realizar cualquier transformación en él
produce otra DataFramecomo salida, que mantiene el linaje con su
padre. Las transformaciones incluyen operaciones como filtrado,
agrupación y proyección. Cuando pides una acción en elDataFrame, como
mostrar algunos registros en la interfaz de usuario o escribir datos en el
disco, el motor Spark se ejecuta en su linaje para rastrear todas las
transformaciones que tiene que aplicar antes de devolver los
datos. Luego, el motor produce el plan físico para el trabajo y lo envía a
los ejecutores, que comienzan a recopilar los datos del almacén de datos y
siguen las instrucciones dadas.
Evidentemente, cuantas más transformaciones se hayan encadenado
antes de llamar a la acción, más difícil será para el motor encontrar el
plan más óptimo. Por esta razón, en muchos casos es mejor romper la
cadena de transformaciones en partes más pequeñas, escribir resultados
intermedios en el disco y releerlos justo después de crear un archivo
nuevo DataFrame.
Para Azure HDInsight, Spark facilita algunas tareas, como, por ejemplo,
trabajar con archivos almacenados en el disco. Por ejemplo, una vez que
montó la cuenta de almacenamiento en el clúster (consulteHabilidad 4.2 ),
para crear una instancia DataFrameque apunte al archivo
SalesLT_ProductModel.txt, puede usar una de las sintaxis que se muestran
en el Listado 4-5 . En este caso, hemos utilizado el lenguaje PySpark.

Sugerencia para el examen


Puede encontrar el código completo que se muestra aquí en el cuaderno
01 - Transformar datos en el archivo dp900.dbc en el contenido
complementario. Si realizó la práctica "Aprovisionar un área de trabajo de
Azure Databricks" en la habilidad 4.2 , este cuaderno ya está disponible en
su área de trabajo.
Listado 4-5 DataFrame creación en PySpark

Haga clic aquí para ver la imagen del código


# versión más larga

df = spark.read.format ('csv'). option ('header', True) .load


('/ mnt / dp900sablob / extract /

azuresql / SalesLT_ProductModel.txt ');

# versión más corta

df = spark.read.option ('encabezado', verdadero) .csv ('/ mnt


/ dp900sablob / extract / azuresql / SalesLT_

ProductModel.txt ');

# versión más corta

df = spark.read.csv ('/ mnt / dp900sablob / extract /


azuresql / SalesLT_ProductModel.txt', encabezado
= Verdadero);

Si es nuevo en Spark, aquí hay algunas notas que debe considerar:


• Antes de enviar un comando a un clúster, el portátil debe
estar adjunto a él. Puede hacerlo manualmente, desde el menú
desplegable Selección de clúster en la barra superior, o puede
permitir que Azure Databricks lo adjunte al primer clúster que
aparece en el menú desplegable. Además, si el clúster no se está
ejecutando, el motor intentará iniciarlo por usted, o puede iniciarlo
manualmente en la sección de administración del clúster de la
interfaz de usuario antes de ejecutar la celda.
• Para interactuar con un clúster de Spark, debe crear una
sesión y, más precisamente, un SparkSessionobjeto. Databricks lo
crea detrás de escena, y la palabra "chispa" en el código es una
abreviatura de él.
• El readmétodo de la SparkSessionclase devuelve
un DataFrameReaderobjeto, que a su vez se puede utilizar para
devolver un DataFrame, y permite alguna especificación de formato,
como si el archivo fuente tiene un encabezado, el esquema del
archivo, etc.
• La ruta apunta directamente a un solo archivo en lugar de a
una carpeta. Como ha visto en la sección anterior, esto es algo que
Hive no admite, pero se puede hacer en Spark. Obviamente, Spark
también admite apuntar a una carpeta, pero además, puede usar
comodines para elegir solo una sub-selección del contenido de la
carpeta (como, por ejemplo, *.txt).
• Estos tres métodos diferentes son equivalentes en términos
de rendimiento. De hecho, producen el mismo código. Los formatos
más populares, como CSV, JSON y PARQUET, tienen un método
dedicado en la DataFrameReaderclase con parámetros opcionales
específicos del formato, pero siempre puede usar la sintaxis más
genérica format('<supported format>').load('<path>').
¿Necesita más revisión? DataFrameReader clase
Puede encontrar más información sobre la DataFrameReaderclase en la documentación de
Apache
Spark: https://spark.apache.org/docs/latest/api/java/org/apache/spark/sql/DataFrameRead
er.html .
La Figura 4-29 muestra el resultado de ese comando. Puede ver que dado
que el motor seleccionó solo información sobre los nombres y el número
de las columnas y nada más, el comando es muy rápido. Sin embargo,
el DataFrameesquema es genérico, con todos los campos de tipo string.

Figura 4-29 DataFrame resultado de la creación


Si desea especificar un esquema, tiene dos opciones:
• La opción inferSchema Al establecer esta propiedad
en Truecuando crea el DataFrame, le indica al motor que deduzca
automáticamente el esquema a partir de los datos. Esta es una
opción útil pero peligrosa, ya que Spark realiza un escaneo
completo de los archivos de origen para comprender su esquema
en el momento de la DataFramecreación, emitiendo un trabajo
específico para esta tarea. Si está trabajando con volúmenes de
datos altos (o desconocidos de antemano), esta opción no es
recomendable. Además, el esquema puede cambiar
inesperadamente en ejecuciones posteriores. De hecho, a medida
que los datos cambian o ingresan nuevos datos, pueden contener
registros sucios o simplemente rangos de valores más
completos. Como resultado, una columna que siempre contenía
números podría presentar repentinamente caracteres
alfanuméricos en algunos campos.
• Proporcionar un esquema En este caso, crea y completa
un StructTypeobjeto que contiene los campos esperados y su tipo de
datos. Luego, este objeto se pasa a DataFrameReader para
instruirlo sobre el esquema de los archivos que tiene que leer.
El listado 4-6 muestra ambos enfoques.
Listado 4-6 Esquema de archivo en PySpark
Haga clic aquí para ver la imagen del código
# 1. Esquema inferido

df = spark.read.csv ('/ mnt / dp900sablob / extract /


azuresql / SalesLT_ProductModel.txt', encabezado

= Verdadero, inferSchema = Verdadero);

# 2. Esquema explícito

de pyspark.sql.types import *;

fileSchema = StructType ([

StructField ("ProductModelID", IntegerType ()),

StructField ("Nombre", StringType ()),

StructField ("rowguid", StringType ()),

StructField ("ModifiedDate", StringType ())

]);

df = spark.read.csv ('/ mnt / dp900sablob / extract /


azuresql / SalesLT_ProductModel.txt', encabezado

= Verdadero, esquema = fileSchema);

La Figura 4-30 muestra los resultados de ambas ejecuciones. Puede ver


que incluso con un archivo tan pequeño (11 KB de tamaño), existe una
diferencia en el tiempo de ejecución entre los dos enfoques. La brecha
aumenta a medida que aumenta el volumen de datos.
Figura 4-30 Comparación de esquemas inferidos y explícitos
Si desea echar un vistazo al contenido del archivo, puede usar
el showmétodo DataFrameque muestra los registros en texto plano o, para
tener una cuadrícula de resultados más elegante, el displaymétodo de
Databricks que genera los primeros 1,000 registros del DataFrameen una
tabla interactiva ( vea la Figura 4-31 ). Dicha tabla se puede ordenar,
exportar y transformar en varios tipos de gráficos para ver el contenido
de DataFrameforma gráfica.
Figura 4-31 Resultado del displaymétodo
Puede crear una instancia DataFramepara cada uno de los archivos fuente
con el código del Listado 4-7 . Debe crear dos DataFrames para
ProductCategory ya que debe unirse a sí mismo.
Listado 4-7 Leyendo los datos de origen en PySpark

Haga clic aquí para ver la imagen del código


dfProductModel = spark.read.csv ('/ mnt / dp900sablob /
extract / azuresql / SalesLT_ProductModel.

txt ', header = True, inferSchema = True);

dfProductCategory = spark.read.csv ('/ mnt / dp900sablob /


extract / azuresql / SalesLT_

ProductCategory.txt ', header = True, inferSchema = True);


dfProduct = spark.read.csv ('/ mnt / dp900sablob / extract /
azuresql / SalesLT_Product.txt',

header = True, inferSchema = True);

En este punto, podemos producir la salida DataFrame. Si registramos cada


uno DataFramecomo una tabla temporal, podemos usar una sintaxis SQL
familiar para unirlos usando el sqlcomando del SparkSessionobjeto o
escribiendo código SparkSQL. A DataFrametambién tiene transformaciones
como join, groupByy select, que se pueden usar para manipular datos
mediante programación. Pero uno de los puntos fuertes de Spark es la
posibilidad de abordar diferentes tipos de trabajo con la semántica que
más te guste. El código necesario para hacer esto se muestra en el Listado
4-8 .
Listado 4-8 Uniendo datos en PySpark

Haga clic aquí para ver la imagen del código


dfProductModel.createOrReplaceTempView ('vwProductModel');

dfProductCategory.createOrReplaceTempView
('vwProductCategory');

dfProductSubcategory.createOrReplaceTempView
('vwProductSubcategory');

dfProduct.createOrReplaceTempView ('vwProduct');

dfProductsInfo = spark.sql ('' '

SELECCIONE

p.ProductID,

p.Name,

p.ProductNumber,

p.Color,

p. Costo estándar,

p.ListPrice,
p. tamaño,

p. peso,

pm.ProductModelID

pm.Name AS ProductModelName

psc.ProductCategoryID AS ProductSubcategoryID

psc.Name AS ProductSubcategoryName,

pc.ProductCategoryID,

pc.Name AS ProductCategoryName

DESDE vwProduct AS p

INNER JOIN vwProductModel AS pm en p.ProductModelID =


pm.ProductModelID

INNER JOIN vwProductCategory AS psc ON p.ProductCategoryID =


psc.ProductCategoryID

INNER JOIN vwProductSubcategory AS pc en


psc.ParentProductCategoryID = pc.ProductCategoryID

'' ');

El código del Listado 4-9 se ejecuta casi instantáneamente ya que no


incluye acciones en él. De hecho, solo está apilando algunas
transformaciones sobre las DataFrameinstanciadas en el Listado 4-7 .
Para escribir los resultados en el disco, puede usar el writemétodo
de DataFrameespecificar la ruta de destino, como se muestra en el Listado
4-9 .

Listado 4-9 Escribiendo datos en PySpark

Haga clic aquí para ver la imagen del código


dfProductsInfo.write.mode ("sobrescribir"). csv ('/ mnt /
dp900sablob / transform / adb / products_

info ', encabezado = Verdadero);


Como hiciste en Hive, apuntas a una carpeta de salida y no a un archivo,
ya que de forma predeterminada el motor podría dividirlo en
trozos. Aunque no puede cambiar el nombre del archivo de salida con
las DataFrameAPI, al menos puede asegurarse de obtener un solo archivo
como resultado utilizando el coalescemétodo, que reduce el número de
particiones del DataFramea un parámetro específico, como se muestra en
el Listado 4-10. .
Listado 4-10 Escritura de datos en un solo archivo en PySpark

Haga clic aquí para ver la imagen del código


dfProductsInfo. coalesce (1) .write.mode ("sobrescribir").
csv ('/ mnt / dp900sablob / transform / adb /

info_productos ', encabezado = Verdadero);

¿Necesita más revisión? Optimización de chispa


Antes de cambiar el comportamiento del motor, es importante comprender lo que sucede
detrás de escena. Un buen punto de partida es esta página sobre el ajuste del rendimiento en
la documentación de Apache Spark: https://spark.apache.org/docs/latest/sql-performance-
tuning.html .

La Figura 4-32 muestra la carpeta de salida y el contenido del


archivo. Tenga en cuenta que agregar nombres de columna en Spark es
sencillo en comparación con hacerlo en Hive.

Figura 4-32 El contenido del products_infodirectorio


ANÁLISIS DE AZURE SYNAPSE
Para leer y escribir datos externos en Azure Synapse Analytics, aproveche
el componente PolyBase. El procedimiento a seguir para acceder a una
cuenta de almacenamiento de blobs es similar al que le mostramos con
Azure HDInsight, con algunas diferencias específicas del motor.
¿Necesita más revisión? Configurar PolyBase para acceder al almacenamiento de
blobs
El siguiente procedimiento, con muchos detalles y referencias adicionales, se puede
encontrar aquí: https://docs.microsoft.com/en-us/sql/relational-
databases/polybase/polybase-configure-azure-blob-storage?view= sql-server-ver15 .

Para configurar PolyBase para acceder a datos externos en Azure Blob


Storage, siga estos pasos:
1. Cree una clave maestra para la base de datos si no existe
ninguna.
2. Cree credenciales con ámbito de base de datos que
mantendrán la clave de acceso a la cuenta de almacenamiento.
3. Cree una fuente de datos externa que apunte a la cuenta de
almacenamiento y al contenedor que contiene.
4. Cree un formato de archivo externo para definir los tipos y
características de sus archivos (en nuestro caso, un archivo de
texto CSV con encabezados y comillas dobles como delimitador
de cadena).
En HDInsight, los pasos 2 y 3 se realizan al adjuntar una cuenta de
almacenamiento principal o adicional.
El listado 4-11 muestra el código que implementa estos pasos en Azure
Synapse Analytics. El mismo código se puede encontrar dentro del
archivo synapse_configure_polybase.sql en el contenido
complementario. Como nota al margen, recuerde que si su grupo de SQL
está en pausa, debe reanudarlo para poder enviarle cualquier comando.

Listado 4-11 Configuración de PolyBase en Azure Synapse Analytics

Haga clic aquí para ver la imagen del código


- 1. Cree una clave maestra

CREAR ENCRIPTACIÓN DE LLAVE MAESTRA POR CONTRASEÑA =


'<contraseña_fuerte_aquí>';
- 2. Cree una credencial con ámbito de base de datos

CREAR CREDENCIAL ALCANCE DE LA BASE DE DATOS


dp900sablobCredential

CON

IDENTIDAD = 'usuario',

SECRET = '<almacenamiento_cuenta_clave_acceso_aquí>';

- 3. Cree una fuente de datos externa

CREAR FUENTE DE DATOS EXTERNA dp900sablob CON (

TIPO = HADOOP,

UBICACIÓN = 'wasbs: // <container_name_here> @


<storage_account_name_here> .blob.core.

windows.net ',

CREDENCIAL = dp900sablobCredential

);

- 4. Cree un formato de archivo externo

CREAR FORMATO DE ARCHIVO EXTERNO CsvFileFormat CON (

FORMAT_TYPE = DELIMITEDTEXT,

FORMAT_OPTIONS (FIELD_TERMINATOR = ',', STRING_DELIMITER =


'0x22', FIRST_ROW = 2, USE_

TYPE_DEFAULT = TRUE)

);

A continuación, debe crear las tablas externas que apunten a los archivos
de origen. La tabla externa que asigna la carpeta de destino se creará en el
siguiente paso.
El listado 4-12 muestra un ejemplo de creación de una tabla externa. El
código completo se puede encontrar dentro del archivo
synapse_create_database_objects.sql en el contenido complementario.
Listado 4-12 Creación de una tabla externa en Azure Synapse Analytics

Haga clic aquí para ver la imagen del código


CREAR TABLA EXTERNA dbo.SalesLT_ProductModel (

ProductModelID INT,

[Nombre] NVARCHAR (255),

rowguid NVARCHAR (255),

ModifiedDate NVARCHAR (255)

CON (

UBICACIÓN = '/ extraer / azuresql / SalesLT_ProductModel


/',

FUENTE_DATOS = dp900sablob,

FILE_FORMAT = CsvFileFormat

);

La WITHcláusula contiene toda la información necesaria para leer


correctamente el archivo: dónde está ( LOCATION), cómo acceder a él
( DATA_SOURCE) y cómo interpretar su contenido ( FILE_FORMAT).
En el último paso, transformamos los datos y, al mismo tiempo, los
escribimos en la carpeta de destino creando y usando una tabla
externa. Para hacerlo, aprovechamos la sintaxis CREATE EXTERNAL TABLE AS
SELECT( CETAS), como se muestra en el Listado 4-13 . El código completo se
puede encontrar dentro del archivo synapse_transform_data.sql en el
contenido complementario.
¿Necesita más revisión? CETAS
CREATE EXTERNAL TABLE AS SELECTPuede encontrar información adicional sobre
la declaración aquí: https://docs.microsoft.com/en-us/azure/synapse-analytics/sql/develop-
tables-cetas .

Listado 4-13 Escribir en el almacenamiento de blobs en Azure Synapse Analytics

Haga clic aquí para ver la imagen del código


CREAR TABLA EXTERNA dbo.SalesLT_ProductsInfo

CON (

UBICACIÓN = '/ transform / synapse / products_info /',

FUENTE_DATOS = dp900sablob,

FILE_FORMAT = CsvFileFormat

COMO

SELECCIONE

p.ProductID,

p.Name,

p.ProductNumber,

p.Color,

p. Costo estándar,

p.ListPrice,

p. tamaño,

p. peso,

pm.ProductModelID,

pm.Name AS ProductModelName,

psc.ProductCategoryID AS ProductSubcategoryID,

psc.Name AS ProductSubcategoryName,

pc.ProductCategoryID,

pc.Name AS ProductCategoryName

FROM SalesLT_Product AS p
INNER JOIN SalesLT_ProductModel AS pm ON p.ProductModelID =
pm.ProductModelID

INNER JOIN SalesLT_ProductCategory AS psc ON


p.ProductCategoryID = psc.ProductCategoryID

INNER JOIN SalesLT_ProductCategory AS pc en


psc.ParentProductCategoryID =

pc.ProductCategoryID;

El archivo de salida se divide en varios fragmentos y los nombres de las


columnas se mantienen en el proceso, como se muestra en la Figura 4-
33 . Este es el mismo comportamiento que Spark.

Figura 4-33 El contenido del products_infodirectorio

FLUJOS DE DATOS DE ASIGNACIÓN DE AZURE DATA FACTORY


Microsoft introdujo los flujos de datos de mapeo en octubre de 2019 para
brindar una experiencia de diseño de transformación visual en Azure
Data Factory (ADF).
¿Necesita más revisión? Descripción general de la asignación de flujos de datos
Puede encontrar una descripción general completa de los flujos de datos de mapeo
aquí: https://docs.microsoft.com/en-us/azure/data-factory/concepts-data-flow-overview .

Como dijimos anteriormente en la sección sobre ADF, los flujos de datos


de mapeo traducen cada actividad en el lienzo de diseño al código Spark,
que luego se envía a un clúster de Databricks administrado por Azure
bajo demanda en modo de pago por uso. Sin embargo, no paga por la
infraestructura completa del clúster y el tiempo de cómputo, solo por las
Unidades de Databricks (DBU) efectivas consumidas.

Sugerencia para el examen


Los flujos de datos de mapeo no deben confundirse con los flujos de datos
de disputas, que actualmente están en vista previa pública.
La gestión de flujos de datos ofrece una experiencia de diseño visual
basada en el lenguaje Power Query (el lenguaje M ) y se integra con el
servicio Power Query Online. Son útiles para los usuarios de Power BI y
Excel Power Pivot, que pueden encontrar en ellos una interfaz familiar.
La función de mapeo de flujos de datos no ofrece la misma opción de
conectores de almacenamiento de datos que otras actividades. De hecho,
se ejecutan en Azure Databricks y solo pueden usar conectores y formatos
de archivo actualmente admitidos por ese motor.
Los flujos de datos de asignación tienen su propia sección en el portal de
creación de ADF (para acceder a ella, vaya a la página de recursos de ADF
en el portal de Azure, sección Información general, haga clic en Autor y
monitor y haga clic en el icono de lápiz en el menú de la izquierda). Para
crear uno, simplemente haga clic en los puntos suspensivos (…) junto a la
carpeta Flujos de datos en el menú Recursos de fábrica y seleccione
Nuevo flujo de datos de mapeo, como se muestra en la Figura 4-34 .
Figura 4-34 Selección de un nuevo flujo de datos de mapeo
De manera similar a los flujos de datos en los paquetes de SQL Server
Integration Services, en el lienzo de creación puede agregar fuentes,
transformaciones y receptores. Las actividades, las fuentes y los skinks
tradicionales de la canalización pueden usar conjuntos de datos para
mapear los datos en los almacenes de datos, con la única diferencia de
que solo se muestran (o se pueden crear) los tipos de conjuntos de datos
admitidos.
La Figura 4-35 muestra una fuente que apunta al archivo
SalesLT_ProductModel.txt en el lienzo. En el panel inferior, tiene seis
pestañas:
• Configuración de la fuente En esta pestaña, puede
configurar la configuración básica para la fuente, incluido su
nombre en el flujo de trabajo, el conjunto de datos subyacente, si
permitir o rechazar cambios en el esquema en ejecuciones
posteriores (lo que se denomina deriva del esquema ), etc.
• Opciones de origen En esta pestaña puede establecer
opciones adicionales relacionadas con el tipo de conjunto de datos
de origen, como anular la ruta con comodines, especificar si no se
permite tener archivos para leer durante una ejecución y una
acción específica posterior a la finalización, como mover o eliminar
el archivo de origen.
• Proyección Aquí puede cambiar el tipo de datos de las
columnas. Estos tipos de datos son los que verán las
transformaciones y los destinos posteriores.
• Optimizar En esta pestaña puede cambiar la estrategia de
partición: si usar la original, una sola partición (como
el coalesceejemplo de la sección Azure Databricks) o un esquema
más complejo.
• Inspeccionar En esta pestaña tiene una vista clara de los
metadatos de su fuente de datos, como nombres de columnas,
orden y tipos.
• Vista previa de datos Aquí puede ver una vista previa del
contenido de su fuente. Para poder hacerlo, debe seleccionar
Depuración de flujo de datos en la barra superior, que calienta un
clúster ligero para probar el flujo de datos. Cuando el clúster está
listo, se muestra un icono de luz verde junto a esta pestaña y junto
al botón de alternancia de depuración de flujo de datos.

Figura 4-35 El panel de configuración de la fuente


¿Necesita más revisión? Opciones de configuración de fuente
Para obtener información detallada sobre el panel de configuración de origen, vaya
aquí: https://docs.microsoft.com/en-us/azure/data-factory/concepts-data-flow-
overview#configuration-panel .

Para agregar otras fuentes, haga clic en Agregar fuente en el lienzo y


configure las cosas.
Un clic en el signo más (+) en la esquina inferior derecha de la fuente abre
un pequeño panel donde puede agregar una transformación o un nodo
sumidero al gráfico de flujo de trabajo. Las transformaciones se dividen
en tres categorías:
• Múltiples entradas / salidas Contiene aquellas
transformaciones que involucran múltiples nodos, como Join y
Union
• Modificador de esquema Contiene aquellas
transformaciones que modifican el esquema de entrada, como
Seleccionar, Agregar, Columna derivada y Pivotear / Anular pivote
• Modificador de fila Contiene aquellas transformaciones que
modifican las filas de alguna manera, como Ordenar y Filtrar
¿Necesita más revisión? Transformaciones disponibles
Para explorar todas las transformaciones disponibles, vaya
aquí: https://docs.microsoft.com/en-us/azure/data-factory/data-flow-transformation-
overview .

Sugerencia para el examen


Los flujos de datos de mapeo tienen su propio lenguaje de expresión para
la transformación de datos. Algunas funciones están disponibles solo en
sus transformaciones relacionadas, como, por ejemplo,
la rowNumberfunción que es específica de las transformaciones de
ventana. La lista completa se puede encontrar
aquí: https://docs.microsoft.com/en-us/azure/data-factory/data-flow-
expression-functions .
Para completar el flujo de trabajo, debe agregar algunas transformaciones
de unión en cascada (ya que puede unir solo dos corrientes a la vez), una
transformación de selección (para seleccionar y cambiar el nombre de las
columnas) y una transformación de sumidero. La Figura 4-36 muestra el
gráfico completo del flujo de trabajo.
Nuestras fuentes familiares están a la izquierda: ProductModel,
ProductCategory, ProductSubcategory (esta es la referencia "duplicada" al
archivo SalesLT_ProductCategory) y Product. Se unen en pasos
posteriores, y la función de flujos de datos de mapeo utiliza nodos de
referencia , que son pequeños cuadros que simplemente repiten el
nombre del otro lado de la transformación (en este caso, son un marcador
de posición para el lado derecho de la transformación Unir ) para aclarar
el lienzo y evitar cruzar flechas de conexión. Después de que se realizan
todas las uniones, una transformación de selección elige solo las
columnas que deben incluirse en la salida y las renombra si es
necesario. La transformación Sink instruye al flujo de datos sobre cómo se
debe formatear el archivo de extracción, dónde debe colocarse, etc.

Figura 4-36 La gráfica completa de la transformación


La Figura 4-37 muestra la pestaña Configuración de la opción de
configuración del sumidero. El motor borrará la carpeta de destino antes
de escribir los registros de salida y producirá solo un archivo con el
nombre products_info.txt. Tenga en cuenta que para producir un solo
archivo de salida, debe seleccionar Partición única en la pestaña
Optimizar; de lo contrario, el flujo de datos no se puede validar. De hecho,
debe decirle a Spark que reduzca a uno el número de fragmentos antes de
escribir en el destino, y puede hacerlo solo reduciendo el número de
particiones en las que DataFrameestá dividido.
Figura 4-37 La pestaña Configuración de la transformación Sink
El archivo producido (que se muestra en la Figura 4-38 ) es similar a la
salida del motor de procesamiento de datos anterior, con la excepción del
orden de las columnas. Si un orden de columna específico es obligatorio,
debe organizar las columnas en la pestaña Seleccionar configuración de la
transformación Seleccionar en consecuencia (dejando la opción
Asignación automática sin seleccionar).

Figura 4-38 El contenido del products_info.txtarchivo


¿Necesita más revisión? Guía de ajuste y rendimiento de los flujos de datos de
mapeo
Puede utilizar los flujos de datos de mapeo para producir flujos de trabajo complejos
fácilmente y con un enfoque sin código. Sin embargo, a pesar de eso, puede que no sea
sencillo optimizarlos, ya que debe pensar "al estilo Spark" al configurar las distintas
opciones. Aquí encontrará un buen punto de partida: https://docs.microsoft.com/en-
us/azure/data-factory/concepts-data-flow-performance .

Describir prácticas comunes para la carga de datos.


El objetivo final de una carga de trabajo por lotes en un escenario de
almacén de datos moderno suele ser un almacén de datos de alto
rendimiento, capaz de almacenar grandes volúmenes de datos de forma
escalable y acceder a esos datos rápidamente. En Azure, esto
generalmente se traduce en Azure Synapse Analytics.
Debe estar familiarizado con Azure Synapse Analytics de este y de los
capítulos anteriores; su arquitectura, sus usos típicos y cómo usar
PolyBase para cargar datos en Azure Synapse Analytics. PolyBase es
fundamental no solo para la transformación de datos, sino también para
la parte L de un proceso ETL / ELT, la fase de carga .

Sugerencia para el examen


Las funciones en vista previa pública o privada no forman parte de los
exámenes de certificación. Sin embargo, es importante destacar que las
capacidades de Azure Synapse Analytics están cambiando.
La COPYdeclaración, actualmente en versión preliminar pública, permite
un enfoque nuevo y más fácil para mover datos dentro y fuera de Azure
Synapse Analytics. Lea más aquí: https://docs.microsoft.com/en-us/sql/t-
sql/statements/copy-into-transact-sql?view=azure-sqldw-latest .
Siga estos pasos para cargar datos en Azure Synapse Analytics:
1. Configure PolyBase.
2. Asigne su fuente de datos a una tabla externa.
3. Cargue los datos.
La diferencia aquí es que la tabla de destino reside en la base de datos y
no es una tabla externa en sí misma, y este aspecto trae algunos puntos
importantes. Por ejemplo, no recomendamos que cargue datos
directamente en la mesa final, sino que utilice una mesa de preparación
que actúa como puente. La tabla final generalmente tiene una estructura
física que es adecuada para recuperar datos rápidamente (por ejemplo,
tiene uno o más índices) y no para insertar datos.
La carga de datos en una tabla sin índices (técnicamente denominada
"pila") es una práctica recomendada bien conocida en el almacenamiento
de datos, porque es una forma eficaz de aumentar la eficiencia de la
transferencia de datos.
Tenga en cuenta que desacoplar las fuentes externas de su motor debe ser
una alta prioridad. Las transformaciones se pueden realizar en la mesa de
preparación, y cuando haya terminado, si es necesario, puede cambiar su
forma física para imitar la de la mesa de destino. Por ejemplo, esto se
puede hacer usando técnicas como el cambio de partición, cuando
corresponda, o acercándose a la transferencia de los datos de la mejor
manera (como nota al margen, si usa un patrón de cambio de partición,
puede ser que su tabla de preparación fuera ya alineado con la partición
con su destino en el momento de la inserción y no un montón).

Sugerencia para el examen


Las herramientas o enfoques programáticos como bcp y SqlBulkCopy
API aún se pueden usar para cargar los datos en Azure Synapse
Analytics. Sin COPYembargo, son más lentos que PolyBase o el comando, y
por esta razón no son la forma preferida.
En la subsección titulada " Azure Synapse Analytics " en la sección
" Describir las opciones de procesamiento de datos (por ejemplo, Azure
HDInsight, Azure Databricks, Azure Synapse Analytics, Azure Data
Factory) ", usamos la declaración CREATE EXTERNAL TABLE AS SELECT( CETAS)
para crear la tabla de mapeo de salida lo más rápido posible. De manera
similar, la creación de la tabla de preparación local siempre debe
realizarse usando la instrucción CREATE TABLE AS SELECT( CTAS), que es una
operación paralela que crea y llena la tabla a partir de la salida de
a SELECTcon un solo comando.
¿Necesita más revisión? CTAS
Para saber más sobre la CREATE TABLE AS SELECTdeclaración, vaya
aquí: https://docs.microsoft.com/en-us/azure/synapse-analytics/sql-data-warehouse/sql-
data-warehouse-develop-ctas .
La actividad Copiar en canalizaciones ADF y la transformación Sink en
ADF Mapping Data Flows facilitan el aprovechamiento de PolyBase
cuando se usa Azure Synapse Analytics como receptor. Todo lo que tiene
que hacer es seleccionar la propiedad Enable Staging en la configuración
de actividad y especificar una cuenta de almacenamiento que contendrá
los datos mapeados por la tabla externa.

Sugerencia para el examen


Azure Databricks también tiene un conector optimizado para Azure
Synapse Analytics. Se puede encontrar una publicación detallada en la
documentación: https://docs.databricks.com/data/data-
sources/azure/synapse-analytics.html .
Otro aspecto importante es la elasticidad del servicio: aprovechar la
capacidad de escalabilidad horizontal de Azure Synapse Analytics puede
ayudar a lograr el mejor rendimiento posible y, al mismo tiempo,
mantener los costos razonables. Es común aumentar la potencia de
cómputo solo durante el período de tiempo de las fases de carga y
transformación, disminuyéndola después.
¿Necesita más revisión? Estrategias de carga de datos para el grupo SQL de Synapse
Puede encontrar una descripción general detallada de los patrones de carga de datos y las
mejores prácticas para Azure Synapse Analytics aquí: https://docs.microsoft.com/en-
us/azure/synapse-analytics/sql-data-warehouse/design-elt- carga de datos .

HABILIDAD 4.4: DESCRIBIR LA VISUALIZACIÓN


DE DATOS EN MICROSOFT POWER BI
A primera vista, puede pensar en Power BI como una herramienta de
visualización de datos. Y de hecho lo es, pero eso es solo la punta del
iceberg.
Hoy en día, Power BI cubre casi todo el ciclo de vida de la inteligencia
empresarial (BI). Puede descubrir, recopilar, limpiar, modelar y visualizar
sus datos con (y dentro) de ellos. Además, puede usar muchas funciones
relacionadas con la inteligencia artificial para obtener información de sus
datos e integrar capacidades de aprendizaje automático en sus informes
sin un enfoque de código.
En los escenarios de almacenamiento de datos modernos, es importante
tener una forma flexible de transformar y visualizar los datos, ya que los
usuarios pueden necesitar acceder no solo a conjuntos de datos
seleccionados, sino también a conjuntos de datos sin procesar o
semiacabados. De hecho, la experimentación encaja perfectamente en
tales escenarios. Los desarrolladores ciudadanos deben poder descubrir y
explorar fuentes de datos, combinarlas y modelarlas para determinar si
pueden agregar valor a su negocio; todo esto, si es posible, sin ninguna (o
muy poca) ayuda del departamento de TI para Evite los cuellos de
botella. Si los datos resultan ser valiosos, pueden integrarse en el almacén
de datos de la empresa y someterse a todos los controles de calidad y
procesamiento necesarios de las otras canalizaciones de datos ya
instaladas.
Power BI ayuda en esta tarea, reduciendo la distancia entre los usuarios y
los datos.
Esta habilidad cubre cómo:
• Describir el flujo de trabajo en Power BI
• Describir el papel de los informes interactivos.
• Describir la función de los paneles.
• Describir la función de los informes paginados.

Describir el flujo de trabajo en Power BI


El flujo de trabajo típico en Power BI consta de los siguientes pasos:
1. Obtener datos
2. Limpiar y / o transformar datos
3. Datos del modelo
4. Elabora un informe
5. Publica el informe
6. Redactar un tablero
Aunque siguen el mismo flujo de trabajo conceptual, para crear informes
interactivos y paginados debe adoptar diferentes enfoques, que se
describen en las secciones correspondientes. Verá que los informes
paginados tienen capacidades limitadas en casi todos los aspectos. Por
ejemplo, no tiene las capacidades de transformación de datos que tiene en
los informes interactivos, lo que hace que los informes paginados sean
más adecuados para la visualización tradicional de datos que para su
exploración interactiva.
Los informes interactivos son el núcleo de Power BI, y verlos en detalle
puede ayudarlo a descubrir más sobre todo el flujo de trabajo y el entorno
en el que se basa el servicio.

Sugerencia para el examen


Power BI tiene un ciclo de desarrollo ajustado y ágil, con actualizaciones
importantes publicadas mensualmente. Para mantenerse informado
sobre el estado del arte del servicio y saber de antemano qué
características se agregarán en los próximos meses, consulte el Blog de
Power BI con regularidad: https://powerbi.microsoft.com/en-us/ blog / .

Describir el papel de los informes interactivos.


Si hacemos un paralelo con un periódico, un reportaje interactivo puede
verse como un artículo lleno de infografías y visualizaciones sofisticadas,
pero con una gran ventaja: la interactividad . De hecho, como sugiere el
nombre, los informes interactivos permiten a los usuarios interactuar con
sus imágenes, gráficos y filtros, y su función es centrar la atención del
espectador en tendencias o situaciones específicas.
La herramienta preferida para crear un informe de este tipo es Power BI
Desktop, que es completamente gratuita.

Sugerencia para el examen


Puede descargar Power BI Desktop
aquí: https://powerbi.microsoft.com/en-us/downloads/ .
Si la versión de su sistema operativo lo admite, también puede obtenerlo
en la tienda de aplicaciones de Windows: www.microsoft.com/en-
us/p/power-bi-desktop/9ntxr16hnw1t .
Ambas versiones tienen la misma funcionalidad, pero la última tiene una
función de actualización automática como todas las demás
aplicaciones. Por otro lado, la versión de escritorio permite descargar una
versión anterior por razones de compatibilidad.
Además, si planea publicar sus informes localmente en Power BI Report
Server (más sobre eso más adelante), debe usar una versión ligeramente
diferente de Power BI Desktop, que está disponible solo para el escritorio
y se puede descargar aquí. : www.microsoft.com/en-
us/download/details.aspx?id=56722 .
Una vez que se inicia Power BI Desktop, le solicita una cuenta de Power
BI. Puede omitir este paso si no planea publicar su informe en el servicio
en línea y simplemente usar el producto para experimentar con datos y
visualizaciones (o crear informes que desee mantener localmente).
Power BI Desktop funciona con archivos PBIX, que son archivos que
incluyen información de fuentes de datos, modelos de datos y definiciones
de informes. También puede crear archivos PBIT, que son plantillas de
informes que otros pueden usar como punto de partida al crear nuevos
informes.
La figura 4-39 muestra un informe en blanco en Power BI Desktop. La
interfaz es similar a la de Office, con cintas contextuales que forman la
barra superior. El menú de la izquierda contiene tres iconos que se
pueden usar para cambiar entre las vistas de edición:
• Informe Aquí puede crear su informe interactivo. Tiene tres
paneles plegables a la derecha, que permiten la gestión de filtros,
visualizaciones y los campos de su modelo de datos que se
incluirán en el informe.
• Datos Aquí puede agregar, editar o eliminar sus fuentes de
datos.
• Modelo Aquí puede crear su modelo de datos, que es
básicamente donde relaciona las diferentes fuentes de su informe,
crea columnas calculadas y medidas personalizadas, etc.
¿Necesita más revisión? Datos de modelo en Power BI
El modelado de datos es un tema amplio y no se trata en este libro. Bajo el capó, Power BI
usa el motor en memoria tabular de Analysis Services para modelos de datos, heredando
todas las características de clase empresarial disponibles en SQL Server (local) y en Azure
(como un servicio PaaS), como high-ratio compresión de datos, rendimiento rápido para
recuperación y cálculos de datos, semántica DAX completa y más. Puede ampliar sus
conocimientos sobre este tema con el siguiente módulo, que forma parte de la ruta de
aprendizaje "Crear y usar informes analíticos con Power
BI": https://docs.microsoft.com/en-us/learn/modules/model -data-power-bi / .
En la parte inferior, puede ver una pestaña con una etiqueta de " Página
1 " y un signo más junto a ella. Los informes interactivos pueden tener
varias páginas, pero no lo confunda con la "paginación" clásica que se usa
para manejar el contenido desbordado o fuera de página. En este caso, las
páginas son una forma de organizar mejor su contenido, lo que le permite
asignar diferentes aspectos a los temas. No hay un concepto de
"desbordamiento" en este tipo de informe, y el contenido siempre trata de
adaptarse lo mejor posible a la vista real. Los elementos visuales como
Tabla y Matriz están pensados para una pequeña cantidad de filas y
columnas y los Informes paginados son para mostrar datos en forma de
tabla.

Figura 4-39 Un informe en blanco en la aplicación Power BI Desktop


La barra superior incluye un botón Obtener datos que, cuando se hace
clic, conduce al primer paso del flujo de trabajo presentado
anteriormente. Abre una ventana de selección modal, que se muestra en
la Figura 4-40 .
Power BI ofrece muchos conectores listos para usar, lo que facilita la
obtención de datos de diversas fuentes y servicios. Tiene las siguientes
categorías para elegir:
• Archivo Esta categoría contiene fuentes de archivo típicas,
como Excel, JSON, CSV, etc.
• Base de datos Esta categoría contiene las bases de datos más
populares del mercado, como SQL Server, Oracle, MySQL, SAP
HANA, Snowflake, Teradata, Google BigQuery, Amazon Redshift y
más.
• Power Platform Esta categoría contiene conectores
relacionados con el ecosistema de Power Platform (del que Power
BI forma parte), como conjuntos de datos y flujos de datos de
Power BI, y Common Data Services.
• Azure Esta categoría contiene los servicios más populares en
Azure, como Azure SQL Server, Azure Analysis Services, Azure
Synapse Analytics, Azure Storage, Azure HDInsight (solo se
admiten HDFS y Spark), Azure Databricks y más.
• Servicios en línea Esta categoría contiene conectores para
servicios SaaS de Microsoft y otros proveedores, como Microsoft
Exchange Online, Dynamics 365, Salesforce Reports, Google
Analytics, Adobe Analytics, Smartsheet y más.
• Otros Esta categoría contiene conectores que no se incluyen
en otras categorías, como los genéricos como ODBC y OLEDB, o más
específicos, como fuentes de OData, scripts de R o Python y la
implementación de Spark local.
Figura 4-40 La ventana Obtener datos
Cada conector puede requerir información adicional, como las
credenciales para conectarse al almacén de datos. Además, según el tipo
de fuente, Power BI puede preguntarle cómo desea conectarse a ella o, en
otras palabras, si los datos de la fuente deben importarse y almacenarse
en la memoria o leerse dinámicamente. Este es el modo de conectividad
de datos y puede ser de tres tipos:
• Modo de importación Los datos residen en la memoria y,
cuando se cierra el modelo, se descargan en el disco dentro del
propio PBIX. Puede actualizar el conjunto de datos para obtener
datos actualizados de la fuente.
• Los datos de DirectQuery no se almacenan en caché en la
memoria. Cuando Power BI envía una consulta al conjunto de datos
(por ejemplo, tiene un objeto visual que muestra datos de él), la
solicitud se traduce al idioma nativo del origen de datos y se enruta
a él.
• Conexión en vivo Los datos no se almacenan en caché en la
memoria, como en el modo DirectQuery, pero este tipo de conexión
solo es compatible con aquellos conectores que dependen del
mismo motor de Power BI y entienden su lenguaje de consulta (por
ejemplo, Azure Analysis Services o su contraparte local). Si es
compatible, generalmente es más eficiente que DirectQuery ya que
las consultas usan el mismo idioma nativo y no necesitan ser
traducidas.
Cuando se completa la operación Obtener datos, se crea una tabla dentro
del modelo. El modo de conectividad de datos también determina el modo
de almacenamiento de la tabla, que puede cambiar más tarde desde la
vista de datos.

Sugerencia para el examen


Algunas condiciones pueden impedirle cambiar el modo de
almacenamiento de una mesa. Además, una tabla que usa un modo de
almacenamiento DirectQuery se puede establecer en Dual. Las tablas
duales pueden actuar como en caché o no, según el contexto de la
consulta que se envía al conjunto de datos. Puede leer más
aquí: https://docs.microsoft.com/en-us/power-bi/transform-
model/desktop-storage-mode .
Power BI le permite tener modos de almacenamiento mixtos dentro de un
modelo de datos. De esta manera, puede obtener lo mejor de cada tipo de
fuente, dejando que el motor maneje cómo se deben consultar los
datos. Estos tipos de modelos de datos se denominan modelos
compuestos .
Sugerencia para el examen
No se permiten todas las combinaciones, especialmente cuando tiene un
modo de conectividad del tipo Live Connection en su modelo de
datos. Lea más aquí: https://docs.microsoft.com/en-us/power-
bi/transform-model/desktop-composite-models .
Si selecciona Azure SQL Database e importa SalesLT.SalesOrderHeader y
SalesLT.SalesOrderDetail desde la base de datos DP900_1 del Capítulo 2 ,
por ejemplo, la vista Modelo ahora contiene dos tablas (consulte la Figura
4-41 ). Power BI ya propone una relación de uno a varios entre los dos en
función de los nombres de los campos de la tabla, lo cual es correcto. En la
parte inferior, un selector de pestañas permite crear pestañas adicionales
que contienen diferentes subconjuntos de tablas, como puede hacer al
crear diagramas de base de datos en SQL Server Management Studio. La
pestaña actual está etiquetada como Todas las tablas.

Figura 4-41 La vista Modelo


La vista de datos propone las mismas tablas (una a la vez) con un aspecto
diferente, centrándose en los datos que contienen. Como puede ver en
la Figura 4-42 , el lienzo central ahora es una vista de cuadrícula que
muestra las columnas, filas y datos de las celdas de la tabla. Las filas se
pueden ordenar por columnas y filtrar, lo que permite una exploración
rápida de los datos disponibles. Dos cintas contextuales en la parte
superior, Herramientas de tabla y Herramientas de columna, contienen
acciones de transformación comunes como Nueva columna, Nueva
medida, Cambiar tipo de datos y formato de visualización, etc.
La pestaña de la derecha contiene una vista de lista, donde puede
expandir o contraer cada tabla para ver sus campos. La Figura 4-
42 muestra los campos de la tabla SalesLT SalesOrderHeader y, en
algunos casos, antes de su nombre hay un icono de uno de dos tipos
diferentes:
• Icono de suma automática Suele estar relacionado con
campos numéricos. Indica que Power BI aplicará el resumen
definido en las propiedades cuando este campo se muestre a través
de un objeto visual en un informe. Es una buena práctica
comprobar todos los campos con el resumen automático habilitado
para ver si tiene sentido. En la Figura 4-42 , por ejemplo, esta
función podría desactivarse para el campo CustomerID. Las
agregaciones disponibles incluyen lo siguiente:
• Suma
• Promedio
• Min
• Max
• Contar
• Contar (distinto)
• Icono de calendario Esto está relacionado con los tipos de
datos de fecha y hora e indica que estos campos se pueden usar
para aprovechar las capacidades de inteligencia de tiempo del
lenguaje DAX, usando funciones como año hasta la fecha, año tras
año y más. Power BI agrega automáticamente una jerarquía de
fechas, dividiendo el campo en cuatro partes: año, trimestre, mes y
día (consulte el campo Fecha de vencimiento, que se ha expandido
en la figura 4-42 ).
Figura 4-42 La vista de datos
Las acciones de transformación rápida en la barra superior pueden ser
útiles para aplicar pequeños cambios al modelo, pero Power Query Editor
ofrece la experiencia de transformación completa. Puede acceder al editor
de dos formas: haciendo clic en el icono en la cinta de Inicio o haciendo
clic con el botón derecho en una de las tablas y seleccionando Editar
consulta.
Tenga en cuenta que no cambia la tabla directamente, sino que apila los
pasos de transformación sobre la consulta original para obtener el
resultado deseado (de alguna manera, esto es similar a cómo aplica las
transformaciones a un Spark DataFrame, como aprendió en la Habilidad
4.3 ).
La mayoría de estas transformaciones no requieren que escribas código y
se pueden diseñar en el editor de forma visual. Puede escribir código de
Power Query directamente en el panel Editor avanzado. Esto le permite
utilizar las transformaciones que aún no se admiten o establecer
parámetros que no se exponen en la interfaz de usuario.
La figura 4-43 muestra el editor de Power Query. En el panel de la
izquierda, se selecciona la tabla SalesLT SalesOrderHeader. El lienzo
central contiene una vista de cuadrícula que es similar a la que ya se
muestra en la vista de Datos, pero en esta un ícono en los encabezados de
columna indica el tipo de datos para cada columna (son inferidos por
Power BI al crear la tabla, pero entonces túpuede cambiarlos). El panel de
la derecha enumera todos los pasos de transformación aplicados hasta
ahora. En este ejemplo específico, se han aplicado cuatro:
1. Fuente Se alcanza el almacén de datos.
2. Navegación Se selecciona la tabla específica.
3. Columnas eliminadas Las columnas no utilizadas se
eliminan.
4. Fecha extraída Algunos campos de fecha / hora se
convierten en columnas de fecha directas, eliminando la parte de
la hora.
El menú superior contiene numerosas transformaciones aplicables, desde
las comunes como agregar, eliminar y cambiar el nombre de la columna,
hasta otras más específicas, como ejecutar scripts Python o R e invocar
Azure Cognitive Services para aprovechar la inteligencia artificial en su
conjunto de datos. Por ejemplo, puede pedirle a un servicio web
publicado de Text Analytics que realice una extracción de términos en un
campo de texto libre de su tabla.

Figura 4-43 El editor de Power Query


El Listado 4-14 muestra el código de Power Query resultante que ha sido
generado automáticamente por el editor; puede editar este código en la
ventana Editor avanzado.
Listado 4-14 Código generado automáticamente por Power Query que aplica las
transformaciones descritas

Haga clic aquí para ver la imagen del código


dejar

Fuente = Sql.Databases
("dp900sqlserver.database.windows.net"),

DP900_1 = Fuente {[Name = "DP900_1"]} [Datos],

SalesLT_SalesOrderHeader = DP900_1 {[Schema = "SalesLT",


Item = "SalesOrderHeader"]} [Datos],

# "Columnas eliminadas" = Table.RemoveColumns


(SalesLT_SalesOrderHeader, {"RevisionNumber",

"ShipToAddressID", "BillToAddressID",
"CreditCardApprovalCode", "Comment", "rowguid",

"SalesLT.Address (BillToAddressID)", "SalesLT.Address


(ShipToAddressID)",

"SalesLT.Customer", "SalesLT.SalesOrderDetail",
"ModifiedDate", "Estado"})

en

# "Columnas eliminadas"

Cuando haya terminado, haga clic en el botón Cerrar y aplicar en la barra


superior para confirmar los cambios en la consulta y hacer que Power BI
actualice los datos.
Ahora, para hacer el escenario un poco más complejo, agregue dos tablas:
• El archivo SalesLT_Customer.txt creado en la práctica "Use el
Asistente para copiar datos para crear y ejecutar una canalización
simple"
• El archivo products_info.txt creado con la asignación de flujos
de datos en la sección " Describir las opciones de procesamiento de
datos (por ejemplo, Azure HDInsight, Azure Databricks, Azure
Synapse Analytics, Azure Data Factory) "
Vuelva a realizar el procedimiento Obtener datos, pero esta vez elija
Azure Blob Storage como origen. La Figura 4-44 muestra la vista Modelo
actualizada.

Figura 4-44 La vista de modelo actualizada


Como puede ver, las tablas SalesLT Customer y Products Info tienen
relaciones (inferidas por el motor) con las dos tablas importadas
anteriormente, SalesLT SalesOrderHeader y SalesLT SalesOrderDetails,
respectivamente.
El Listado 4-15 muestra el código de Power Query para importar la tabla
SalesLT Customer, que es conceptualmente similar al código del Listado
4-14 . Por supuesto, los pasos de Origen y Navegación son diferentes (y un
poco más articulados) que antes, ya que ahora apuntan a un almacén de
datos diferente.

Listado 4-15 Código generado automáticamente por Power Query que aplica las
transformaciones descritas

Haga clic aquí para ver la imagen del código


Dejar
Fuente = AzureStorage.Blobs
("https://dp900sablob.blob.core.windows.net"),

companyblobs1 = Fuente {[Name = "companyblobs"]} [Datos],

#https: // dp900sablob blob core windows net / companyblobs


/ _extract / azuresql / SalesLT_

Texto del cliente

= companyblobs1 {[

# "Ruta de la carpeta" =
"https://dp900sablob.blob.core.windows.net/companyblobs/",

Nombre = "extract / azuresql / SalesLT_Customer.txt"]

}[Contenido],

# "CSV importado" = Csv.Document (

# "https: // dp900sablob blob core windows net /


companyblobs / _extract / azuresql / SalesLT_

Txt del cliente ",

Delimitador = ",",

Columnas = 15,

Codificación = 1252,

QuoteStyle = QuoteStyle.Ninguno

]),

# "Encabezados promocionados" = Table.PromoteHeaders (#


"CSV importado", [PromotionAllScalars = true]),

# "Tipo cambiado" = Table.TransformColumnTypes (

# "Encabezados promocionados",

{
{"CustomerID", Int64.Type}, {"NameStyle", escriba
lógico}, {"Título", escriba texto},

{"Nombre", escriba texto}, {"Segundo nombre", escriba


texto}, {"Apellido", escriba texto},

{"Sufijo", escriba texto}, {"Nombre de la empresa",


escriba texto}, {"Persona de ventas", escriba texto},

{"EmailAddress", escriba texto}, {"Teléfono", escriba


texto}, {"PasswordHash", escriba texto},

{"PasswordSalt", escriba texto}, {"rowguid", escriba


texto}, {"ModifiedDate", escriba

fecha y hora}

}),

# "Columnas eliminadas" = Table.RemoveColumns (

# "Tipo cambiado",

"SalesPerson", "EmailAddress", "Phone", "PasswordHash",

"PasswordSalt", "rowguid", "ModifiedDate"

})

en

# "Columnas eliminadas"

¿Necesita más revisión? Obtener datos y modelarlos


Los siguientes módulos de la ruta de aprendizaje "Crear y usar informes analíticos con
Power BI" son un buen punto de partida para trabajar con datos en Power BI: Obtenga
datos con Power BI Desktop: https://docs.microsoft.com/en-us / learn / modules / get-data-
power-bi / .
Datos del modelo en Power BI: https://docs.microsoft.com/en-us/learn/modules/model-
data-power-bi/ .
Hasta ahora, hemos presentado brevemente cómo abordar los pasos de
obtención, transformación y modelado de datos para un informe
interactivo. Ahora que tiene algunos datos listos, puede cambiar a la vista
Informe y arrastrar algunos elementos visuales para crear un informe
simple.
¿Necesita más revisión? Visualización de datos
Los tipos básicos de elementos visuales se describen en la sección "Describir la
visualización de datos y los tipos de gráficos básicos" en la Destreza 1.2 .

Por ejemplo, suponga que desea mostrar la cantidad total ordenada por
categoría de producto para pedidos en el año 2008. Para producir el
resultado que se muestra en la Figura 4-45 , debe seguir estos pasos:
1. Elija una opción visual para un gráfico de barras apiladas, ya
que eso hace que sea más fácil ver a primera vista las diferencias
de cantidad ordenada entre categorías. Otras buenas opciones
son el gráfico de columnas apiladas, el gráfico de barras
agrupadas y el gráfico de columnas agrupadas.
2. Arrastre los campos obligatorios Elija el campo
ProductCategoryName de la tabla de información de productos y
configúrelo como el eje para el objeto visual. Luego, elija el campo
OrderQty de la tabla SalesLT SalesOrderDetail y configúrelo como
Valores para el objeto visual.
3. Establecer el filtro Puede colocar "El año es 2008" en el nivel
visual, de página o de informe. En este caso, opte por lo último
para que todas las imágenes en todas las páginas lo
respeten. Para hacerlo, seleccione el nivel de año de la jerarquía
generada automáticamente en el campo OrderDate de la tabla
SalesLT SalesOrderHeader. Obviamente, también es posible tener
filtros controlados por usuarios que colocan el objeto visual
Slicer en el lienzo y seleccionan un campo o una jerarquía para él.
4. Dar formato al visual Opcionalmente, es posible cambiar el
aspecto del visual. En este caso, aumente la fuente a 20 puntos y
elimine el título para ambos ejes.
Figura 4-45 La vista Informe con un gráfico de barras apiladas en ella
Algunas cosas a tener en cuenta en la Figura 4-45 :
• El visual adaptó automáticamente su tamaño al espacio
disponible. Si contrae uno o todos los paneles de la derecha, crece
horizontal y verticalmente, manteniendo la misma relación de
aspecto.
• El informe ya es "interactivo", aunque todavía está en modo
de edición. Como se muestra en la figura, cuando pasa el mouse
sobre una de las barras, aparece la información sobre herramientas
predeterminada para el objeto visual (que, en este caso, especifica
la categoría en la que se encuentra y la cantidad exacta de
OrderQty).
• El campo OrderQty se ha agregado utilizando la función
especificada en su propiedad de resumen automático; en este caso
es Sum.
• Puede cambiar la imagen en cualquier momento simplemente
haciendo clic en una diferente en el panel Visualizaciones mientras
tiene el foco en la que desea modificar. Power BI intenta
reorganizar los campos y las medidas reales en el nuevo objeto
visual y propone la mejor combinación posible. Esto resulta útil
cuando desea comparar cómo diferentes elementos visuales
buscarían los mismos datos al crear un informe.
Nota DP900.pbix
Puede encontrar el informe completo en el contenido complementario con el nombre
DP900.pbix. Solo asegúrese de cambiar las consultas para que apunten a los recursos que
aprovisionó en las prácticas anteriores.
Los archivos de texto de origen SalesLT_ <tablename> .txt y products_info.txt también se
incluyen para su comodidad en el contenido complementario en la carpeta sample_data.

La figura 4-46 muestra un ejemplo más complejo. El informe ahora tiene


una segunda página, denominada Desglose LineTotal, en la que se
encuentran los siguientes elementos visuales:
• Dos elementos visuales de tarjeta que muestran la cantidad
total de los campos LineTotal y OrderQty.
• Un gráfico de columnas agrupadas que muestra el desglose
por subcategoría de producto y modelo para el campo LineTotal. La
información sobre herramientas también contiene la cantidad de
OrderQty.
• Un rebanador que muestra las 10 empresas principales por
LineTotal. Para ello, se ha elegido un filtro de tipo Top N a nivel
visual.
• Un rebanador que muestra las categorías de productos.
Las imágenes interactúan entre sí cuando hace clic en ellas, lo que
permite una exploración rápida de los datos. Por ejemplo, en la figura
puede ver que solo se seleccionan dos empresas y una categoría en las
segmentaciones; las dos tarjetas y los gráficos de columnas agrupadas se
actualizan automáticamente para reflejar la selección realizada por el
usuario.
Figura 4-46 La vista Informe en la página de desglose LineTotal
¿Necesita más revisión? Usar objetos visuales en Power BI
El siguiente módulo de la ruta de aprendizaje "Crear y usar informes analíticos con Power
BI" contiene mucha información útil y consejos sobre elementos
visuales: https://docs.microsoft.com/en-us/learn/modules/visuals-in-power- bi / .

Ahora que tiene un informe simple, es posible que desee hacerlo más
accesible que un archivo guardado en una unidad local o de red. Para
hacerlo, debe publicarlo en el servicio Power BI, que es una plataforma
SaaS multiusuario completamente administrada que puede usar como un
repositorio organizacional para sus informes y sus modelos. Puede
navegar por los informes publicados tanto a través del propio servicio
como a través de la aplicación móvil. La aplicación móvil Power BI está
disponible para dispositivos Windows, Android e iOS. Para poder publicar
el informe, primero debe iniciar sesión en el servicio o registrarse si aún
no tiene una cuenta. Puede usar la misma cuenta que está usando para
acceder a Azure Portal.
El servicio Power BI está organizado en áreas de trabajo. Cada usuario
tiene un espacio de trabajo personal, en el que se pueden publicar los
informes creados. Según el tipo de licencia que tenga el usuario (Free o
Pro) y el plan de Power BI aplicado al espacio de trabajo (capacidad
compartida o Premium), el usuario puede compartir el informe con otros
y publicarlo en otros espacios de trabajo accesibles.
¿Necesita más revisión? Planes de Power BI
Las licencias de Power BI no se tratan en este libro. Puede consultar la siguiente página
para obtener más información sobre los planes disponibles y las características que
incluyen: https://powerbi.microsoft.com/en-us/pricing/ .

Cuando publica un informe, detrás de escena está publicando


sus componentes básicos y no el informe en su conjunto. De hecho, cada
espacio de trabajo tiene diferentes secciones para informes, conjuntos de
datos y más. Por ejemplo, puede crear un informe que se conecte a un
conjunto de datos publicado, utilizando las conexiones y las
transformaciones ya definidas en él. De hecho, es una buena práctica de
desarrollo tener archivos PBIX separados para modelos de datos (en los
que simplemente se conecta a las fuentes, prepara sus conjuntos de datos
y crea su modelo) y para visualizaciones (en las que tiene las páginas del
informe, los elementos visuales, filtros, etc.), ya que se asemeja a la
estructura tradicional de proyectos de BI y desacopla las fases de
modelado y generación de informes.

Sugerencia para el examen


Si sus fuentes de datos no son de acceso público desde el servicio Power
BI, es posible que deba instalar y configurar la aplicación Power BI
Gateway en una máquina en el mismo perímetro de red que la
fuente. Encuentre más información
aquí: https://powerbi.microsoft.com/en-us/gateway/ .
La Figura 4-47 muestra la página de inicio de un espacio de trabajo que
contiene el informe DP900. El menú de la izquierda se divide en dos
secciones; el superior incluye comandos típicos como Inicio, Reciente y
Favoritos, mientras que el inferior se puede utilizar para navegar por el
espacio de trabajo al que puede acceder el usuario. Se selecciona el
espacio de trabajo “Ref. Examen DP-900” y el panel central enumera
todos los contenidos disponibles en él; actualmente, solo dos elementos:
el informe publicado y el conjunto de datos subyacente.
Figura 4-47 El portal del servicio Power BI
Si hace clic en el informe, Power BI lo abre en el panel central y puede ver
que su representación es similar a la de la aplicación Power BI Desktop.
La figura 4-48 muestra el resultado. Puede ver que el menú de la
izquierda se ha contraído para dejar más espacio para el informe. Las
pestañas de selección de la página del informe ya no se encuentran en la
parte inferior; en cambio, ahora están a la izquierda del informe. Puede
alternar este panel utilizando el elemento del menú Página en la barra
superior. De los tres paneles de la derecha (Filtros, Visualizaciones y
Campos), solo Filtros sigue ahí. Esto se denomina "vista de lectura" y los
usuarios no pueden editar el diseño del informe desde aquí. Los usuarios
que tienen los permisos adecuados pueden editar el informe en el portal
directamente accediendo a la vista Editar desde el menú Archivo.
Además de los elementos Archivo y Página, la barra superior contiene
comandos que permiten exportar el informe, compartirlo con otras
cuentas de Power BI y marcarlo como Favorito. Además, hay funciones de
colaboración útiles, como agregar comentarios a través de Microsoft
Teams o un sistema de chat integrado.

Figura 4-48 La vista de lectura


¿Necesita más revisión? Publicar y compartir en Power BI
El siguiente módulo de la ruta de aprendizaje "Crear y usar informes analíticos con Power
BI" contiene mucha información útil y consejos sobre cómo publicar un
informe: https://docs.microsoft.com/en-us/learn/modules/publish- compartir-poder-bi / .

En el servicio Power BI, los usuarios también pueden crear paneles, que
se describen brevemente en la siguiente sección.

Describir la función de los paneles.


En la sección anterior, comparamos los informes interactivos con los
artículos dentro de un periódico. Siguiendo la misma analogía, los cuadros
de mando pueden verse como la portada del mismo periódico. De hecho,
una página principal suele ser una composición de adelantos de los
artículos más importantes, con una referencia a ellos (el número de
página, por ejemplo).
Los datos deben "contar una historia" al usuario a través de informes
( narración de datos ), y un tablero debe mostrar solo los aspectos más
destacados de esa historia, refiriéndose a los informes para una
exploración más profunda del contenido. Dado que un tablero se
compone de una sola página (a menudo llamada lienzo ), los diseñadores
deben elegir cuidadosamente qué contenido colocar dentro de él. Los
elementos visuales como tarjetas, indicadores clave de rendimiento (KPI)
y gráficos con pocas categorías de valores son buenos candidatos para
mostrarse en un tablero, ya que pueden mostrar una tendencia de un
vistazo y se pueden ver fácilmente en las pantallas más pequeñas de los
dispositivos móviles. La buena noticia es que, para el mismo tablero,
puede definir dos diseños: horizontal, que está dirigido a clientes de
escritorio y tabletas, y vertical, que es más adecuado para teléfonos
móviles.
Los paneles solo se pueden crear y administrar mediante el servicio
Power BI. El contenido de un panel se muestra dentro de mosaicos , que se
ajustan al lienzo mediante una cuadrícula virtual (como los iconos del
menú Inicio de Windows).
Desde la página del panel, puede agregar mosaicos
independientes. Actualmente, esos mosaicos pueden ser de uno de estos
cinco tipos:
• Contenido web Con este mosaico, puede utilizar un
fragmento de código HTML en su panel, como incrustar una
aplicación.
• Imagen Este mosaico muestra una imagen dada su URL.
• Cuadro de texto Este mosaico se puede usar para ingresar
texto enriquecido en su tablero.
• Video Puede incrustar un video alojado en YouTube o Vimeo.
• Streaming conjunto de datos Este azulejo puntos a un
conjunto de datos de streaming, que permite crear cuadros de
mando en tiempo real.
¿Necesita más revisión? Transmisión de conjuntos de datos
Si desea saber más sobre este tema, vaya aquí: https://docs.microsoft.com/en-us/power-
bi/connect-data/service-real-time-streaming .

Además de los mosaicos independientes, puede agregar objetos


específicos a un tablero fijándolos. Para anclar un objeto admitido, haga
clic en el icono de “anclar” que aparece cuando pasa el mouse sobre él
(consulte la Figura 4-49 ).

Figura 4-49 El icono de pin en una tarjeta visual


Puede anclar los siguientes objetos en un tablero:
• Objetos visuales de informe Un objeto visual de informe
anclado mantiene los filtros que se aplicaron al informe en el
momento de agregarlo al panel, y no se pueden cambiar sin quitar
el mosaico y volver a fijarlo. Una vez que se ha anclado un objeto
visual, es una buena práctica cambiar el título del mosaico para
incluir los valores del filtro, como por ejemplo, Ventas totales, año
2020 , si dichos filtros no aparecen explícitamente en algún lugar
del panel (por ejemplo, en su título o en un mosaico de cuadro de
texto).
• Mosaicos de otro panel Puede resultar útil replicar un
mosaico en otro panel sin tener que volver a anclar el objeto de
origen.
• Libros de Excel Puede anclar un rango de celdas o una hoja
de trabajo completa de un libro de trabajo. El libro de trabajo debe
residir en OneDrive for Business y debe estar vinculado a su
espacio de trabajo en la sección Libro de trabajo, a la que se puede
acceder desde el menú de la izquierda.
• Power BI Q&A Power BI Q&A es un poderoso servicio
integrado en la plataforma que le permite hacer preguntas en
lenguaje natural, como "Los 10 clientes principales por ventas
totales en el año 2018". Actualmente, solo se admite el idioma
inglés y el idioma español está disponible en versión preliminar
pública. Si el motor es capaz de traducir su pregunta y asignarla a
los atributos y medidas de su modelo de datos, le proporciona una
imagen diseñada para responder a su pregunta específica. Luego,
este objeto visual se puede anclar a un tablero.
• El servicio Quick Insights Power BI puede aprovechar un
conjunto de algoritmos de análisis avanzados para extrapolar
información de un conjunto de datos o de un mosaico de
tablero. Esta función se llama Quick Insights y automáticamente le
proporciona imágenes que resaltan aspectos específicos de sus
datos que los algoritmos han identificado como posiblemente
relevantes. Luego, puede solicitar otras ideas a partir de una de las
imágenes producidas para reducir el alcance. Cuando encuentre un
objeto visual que desee conservar, puede anclarlo a un panel.
• Informes paginados locales Puede anclar un elemento de un
informe paginado alojado en SQL Server Reporting Services o
Power BI Report Server. Aprenderá más sobre los informes
paginados en la siguiente sección.

Sugerencia para el examen


Power BI tiene un sistema completo para alertas y notificaciones de
datos. Para los tipos seleccionados de elementos visuales en un tablero,
puede recibir una notificación cuando el valor subyacente alcance un
umbral específico. Las notificaciones incluyen notificaciones push a la
aplicación móvil, correo electrónico, etc. Para obtener más información
sobre este servicio, vaya aquí: https://docs.microsoft.com/en-us/power-
bi/create-reports/service-set-data-alerts .
La Figura 4-50 muestra un tablero simple que contiene cuatro elementos
visuales y un mosaico de cuadro de texto. El mosaico del cuadro de texto
central superior contiene información sobre los filtros aplicados a las
imágenes para contextualizar los valores que muestran. Junto a él, a
ambos lados hay dos tarjetas, que pertenecen a la segunda página del
informe DP900. En la parte inferior hay dos gráficos más grandes,
nuevamente del informe DP900, uno de la primera página y el otro de la
segunda página. Puede hacer clic en cualquier objeto visual para acceder
directamente al informe y comenzar a explorar los datos.
Figura 4-50 Un panel de control de muestra
Por encima de todos esos mosaicos, el cuadro de texto de preguntas y
respuestas está listo para recibir preguntas en lenguaje natural. Por
ejemplo, si solicita algo como "4 nombres de modelos de productos
principales por OrderQty", Power BI responde con un gráfico de barras
apiladas (consulte la Figura 4-51 ), con el nombre del modelo en el eje y
(hay cuatro elementos, como esperado) y OrderQty en el eje x. Si lo desea,
puede anclar el mosaico a su panel de control o puede cambiar la
pregunta para obtener una respuesta diferente. Puede volver al panel
haciendo clic en Salir de preguntas y respuestas en la esquina superior
izquierda. En el cuadro de texto en la parte superior, las partes de su
pregunta que se asignan a atributos o medidas están subrayadas en azul.
¿Necesita más revisión? Explorar datos en Power BI
El siguiente módulo de la ruta de aprendizaje "Crear y usar informes analíticos con Power
BI" contiene mucha información útil sobre el diseño y los usos de los
paneles: https://docs.microsoft.com/en-us/learn/modules/explore-data -power-bi / .
Figura 4-51 Resultado de la salida de preguntas y respuestas

Describir la función de los informes paginados.


El informe paginado no es una entrada nueva en el ecosistema de
Microsoft Business Intelligence. De hecho, se basa en el lenguaje de
definición de informes (RDL) utilizado durante mucho tiempo en SQL
Server Reporting Services.
Como su nombre lo indica, un informe paginado es ideal para mostrar
datos tabulares y de forma libre, y puede mostrar contenido extenso
haciendo uso de la paginación. Un informe paginado se puede exportar a
diferentes salidas, como páginas web, archivos PDF y hojas de cálculo de
Excel.
Power BI unifica los dos mundos de los informes interactivos y paginados
porque puede representar ambos tipos de informes sin problemas, lo que
permite a los diseñadores de informes elegir el mejor tipo de informe
para un conjunto de datos específico.
Sugerencia para el examen
Es posible migrar informes de SQL Server Reporting Services existentes al
servicio Power BI como informes paginados con una herramienta
dedicada. Lea más aquí: https://docs.microsoft.com/en-us/power-
bi/guidance/migrate-ssrs-reports-to-power-bi .
Para desarrollar un informe paginado, puede usar Visual Studio o el
Generador de informes de Power BI. Power BI Report Builder es una
versión dedicada para Power BI de la conocida aplicación Report Builder
para Reporting Services, como puede ver en la Figura 4-52 .

Sugerencia para el examen


Puede descargar Power BI Report Builder aquí: www.microsoft.com/en-
us/download/details.aspx?id=58158 .
Encuentre más información sobre la herramienta
aquí: https://docs.microsoft.com/en-us/power-bi/paginated-
reports/report-builder-power-bi .
En la Figura 4-52 se selecciona la pestaña Insertar. Muestra los elementos
visuales disponibles: tabla, matriz, lista, gráfico, indicador, mapa, barra de
datos, minigráfico e indicador (o KPI), además del cuadro de texto, la
imagen, la línea y el rectángulo más clásicos. También puede encapsular
un subinforme para dividir diseños complejos en partes más pequeñas y
agregar un encabezado y / o un pie de página que se mostrará en el
momento de la visualización en todas las páginas resultantes.
La ventana de datos del informe está acoplada a la izquierda. Aquí puede
agregar fuentes de datos, conjuntos de datos, imágenes y parámetros al
informe. Una diferencia importante con los informes interactivos es que
con los informes interactivos, los conjuntos de datos no forman parte del
informe (de hecho, cuando publica un informe interactivo, sus conjuntos
de datos van a la sección adecuada del servicio), pero la definición del
conjunto de datos está incrustada en un informe paginado y solo es
accesible dentro de él.
Figura 4-52 La interfaz del Generador de informes de Power BI
El lienzo central presenta una hoja casi en blanco con solo dos cuadros de
texto: uno para el título y otro en el pie de página que usa el campo
incorporado Tiempo de ejecución (estos campos son partes
predeterminadas de la plantilla Nuevo informe y puede eliminar ellos si
no es necesario). Como se mencionó anteriormente, los informes
paginados tienen un diseño de forma libre y las imágenes se pueden
colocar sin ninguna limitación particular.
En el momento de escribir este artículo, los informes paginados admiten
las siguientes fuentes de datos:
• Servicios de análisis de Azure
• Azure SQL Database y
• Almacenamiento de datos SQL de Azure
• servidor SQL
• SQL Server Analysis Services (tanto para SQL Server Analysis
Services local como para conjuntos de datos de Power BI Premium)
• Oráculo
• Teradata
Puede publicar un informe paginado en el servicio Power BI, siempre que
tenga una capacidad Premium, o local, en la aplicación Power BI Report
Server.
¿Necesita más revisión? Servidor de informes de Power BI
Para obtener más información sobre Power BI Report Server, vaya
aquí: https://powerbi.microsoft.com/en-us/report-server/ .

¿Necesita más revisión? Curso de informes paginados de Power BI en un día


Encontrará un curso completo gratuito en línea aquí: https://docs.microsoft.com/en-
us/power-bi/learning-catalog/paginated-reports-online-course .

RESUMEN DEL CAPÍTULO


• Azure es un ecosistema natural para un almacén de datos
moderno, ya que tiene muchos servicios que cubren todos los
aspectos de la carga de trabajo requerida.
• Para realizar el procesamiento de datos, puede aprovechar
servicios como Azure HDInsight, Azure Databricks, Azure Data
Factory y Azure Synapse Analytics.
• Azure HDInsight es una distribución en la nube administrada
de componentes de Hadoop. Admite muchos tipos diferentes de
clústeres, que cubren una amplia gama de escenarios como
transmisión, carga de trabajo por lotes, almacenamiento de datos y
aprendizaje automático.
• Azure HDInsight está estrechamente integrado con
almacenamientos distribuidos, como Hadoop Distributed File
System (HDFS) y Azure Storage. Este aspecto, combinado con la
capacidad de escalar horizontalmente los nodos del clúster, lo
convierte en un servicio muy elástico.
• Puede usar Hive Query Language (HiveQL) con un tipo de
clúster Hadoop en Azure HDInsight para realizar un procesamiento
paralelo y masivo de datos almacenados en un sistema de archivos
distribuido. Tiene una sintaxis familiar para los desarrolladores de
SQL.
• Hive aprovecha el concepto de tablas externas para mapear
los datos donde residen, evitando el movimiento de datos
innecesario hacia el clúster. Se accede a los datos solo cuando se
procesan.
• Las tablas externas apoyar a los operadores de SQL comunes
como SELECT, INSERT, DELETE, JOIN,GROUP BY , y mucho más.
• Azure Databricks es una plataforma basada en Spark para el
procesamiento masivo de datos. Permite a los ingenieros de datos,
científicos de datos, ingenieros de aprendizaje automático y
analistas de datos trabajar juntos de forma colaborativa.
• Spark es un proyecto de código abierto que procesa grandes
volúmenes de datos en la memoria. Databricks fue fundado por los
creadores originales de Spark y su plataforma se basa en una
distribución cerrada y optimizada de Spark.
• Azure Databricks tiene integración nativa con los servicios de
datos de Azure más populares, como Azure Storage, Azure SQL
Database, Azure Synapse Analytics y Azure Cosmos DB.
• Spark opera con datos a través de objetos
llamados DataFrames. A DataFramese basa en conjuntos de datos
distribuidos resistentes (RDD), que son indicadores inmutables de
los datos almacenados en almacenes de datos distribuidos o
externos.
• DataFrameLos s pueden manipular datos mediante
transformaciones, que son métodos de objeto que representan
manipulaciones lógicas de los datos de origen. Las
transformaciones típicas incluyen filtros, agregaciones, uniones y
selección o inserción de columnas. Al igual que con las tablas
externas en Azure HDInsight, no se accede a los datos cuando se
aplica una transformación.
• DataFrames acceden físicamente a los datos cuando se invocan
acciones. Spark calcula un plan de ejecución que tiene en cuenta
todas las transformaciones aplicadas y envía un trabajo al nodo
controlador del clúster. Las acciones típicas incluyen mostrar los
datos o escribirlos en un almacén de datos del receptor.
• Spark admite muchos lenguajes de programación, incluidos
Scala, Python, R, SQL y Java. El código se puede ingresar a través de
cuadernos, que consisten en celdas independientes que comparten
el mismo contexto. Puede acceder a variables definidas en celdas
ejecutadas previamente.
• Gracias a la versatilidad y madurez de Spark, Azure
Databricks se puede usar en muchos escenarios, como transmisión,
procesamiento por lotes, aprendizaje automático y representación
gráfica de datos. Además, la tecnología Delta Lake se puede utilizar
para realizar operaciones ACID en lagos de datos y para permitir el
viaje en el tiempo en sus datos a través del historial de versiones.
• Azure Data Factory es una plataforma para realizar el
movimiento de datos y la orquestación del procesamiento de
datos. Tiene una herramienta de creación visual que puede usar
para crear, administrar, programar y monitorear canalizaciones.
• Una canalización es una agrupación lógica de actividades. Las
actividades se pueden usar para realizar el movimiento de datos a
escala o para enviar trabajos a servicios externos, como Azure
HDInsight, Azure Databricks, Azure SQL Database, Azure Synapse
Analytics, etc.
• Los conjuntos de datos son objetos que se utilizan para
representar datos en un almacén de datos remoto y los almacenes
de datos están conectados a través de servicios vinculados.
• Los tiempos de ejecución de integración son el núcleo de
Azure Data Factory y permiten la comunicación entre servicios
vinculados, conjuntos de datos y actividades.
• Azure Data Factory tiene conectores listos para usar para los
servicios más populares del mercado, tanto en las instalaciones
como en la nube. El acceso a fuentes que no están conectadas a
Internet se puede cerrar a través de un tipo particular de tiempo de
ejecución de integración, llamado tiempo de ejecución de
integración autohospedado.
• Otros tiempos de ejecución de integración incluyen Azure IR y
Azure SSIS IR. El primero es el IR predeterminado, mientras que el
segundo se puede usar para ejecutar paquetes de SQL Server
Integration Services en un entorno de nube bajo demanda.
• La asignación de flujos de datos es un componente de Azure
Data Factory que se puede usar para crear transformaciones de
datos complejas de forma visual. En segundo plano, los flujos de
datos de asignación se traducen en código Spark que se envía a un
clúster de Azure Databricks a pedido.
• Azure Synapse Analytics puede aprovechar el componente
PolyBase para acceder a los datos que residen en el
almacenamiento externo. PolyBase aprovecha las capacidades de
procesamiento paralelo del motor Synapse para escalar
horizontalmente.
• Una vez que configure PolyBase, puede usar tablas externas
de la misma manera que lo hace en Hive. En este caso, usa T-SQL
para consultar y manipular los datos.
• PolyBase es la forma más rápida posible de cargar datos en
Azure Synapse Analytics. Una práctica bien conocida es utilizar una
tabla de preparación (generalmente un montón) como paso
intermedio entre los datos de origen y la tabla de destino.
• Azure Databricks y Azure Data Factory pueden aprovechar
PolyBase cuando el receptor de un movimiento de datos es Azure
Synapse Analytics.
• Power BI no solo es una herramienta de visualización de
datos, sino que también tiene capacidades excepcionales de
descubrimiento, transformación y modelado de datos.
• Power BI Desktop es una herramienta gratuita para la
creación de informes y modelos de Power BI.
• Puede obtener datos de varias fuentes aprovechando los
numerosos conectores incluidos en Power BI.
• Los datos se pueden transformar manualmente o mediante un
potente editor visual que genera código de Power Query en
segundo plano.
• Power BI usa el modelo tabular de SQL Server Analysis
Services para ofrecer un motor en memoria de nivel empresarial
para almacenar y entregar datos.
• Un informe interactivo en Power BI es un lienzo de
adaptación automática donde puede mostrar sus datos a través de
elementos visuales atractivos y dinámicos.
• Un tablero es una colección de mosaicos. Los mosaicos
pueden contener contenido estático o elementos visuales anclados
a partir de informes. La función de los cuadros de mando es dar un
vistazo rápido a las principales tendencias de sus datos o presentar
información importante.
• Los paneles solo están disponibles en el servicio Power BI y
debe publicar un informe para poder anclar su objeto visual en un
panel.
• Los informes paginados son adecuados para informes
tabulares y de formato libre. Pueden abarcar varias páginas y
Power BI Report Builder es la herramienta elegida para crearlos.

EXPERIMENTO MENTAL
En este experimento mental, demuestra sus habilidades y conocimientos
sobre los temas tratados en este capítulo. Puede encontrar las respuestas
a este experimento mental en la siguiente sección.
El Departamento de TI de Adventure Works, la famosa empresa de
fabricación de bicicletas, ha emitido una alerta internamente ya que todo
el proceso ETL que alimenta el almacén de datos empresarial (EDW) está
bajo presión; Los usos de CPU y memoria están limitados al 100 por
ciento durante la mayor parte de la fase de transformación, y el sistema
de E / S se ha convertido en un gran cuello de botella tanto para la
transformación como para las fases de carga. El EDW debe estar listo para
entregar datos nuevos a los analistas de negocios a las 8 AM, y el proceso
ETL se acerca rápidamente a ese umbral día a día. Esto se suma a las
frecuentes quejas de los usuarios sobre los informes que son demasiado
lentos o que se agotan, y la creciente necesidad de tener algún tipo de
herramienta de tablero para preparar presentaciones atractivas para los
miembros de la junta.
Actualmente, el proceso ETL comienza justo después de la
medianoche; tiene que esperar a que se estabilicen los datos del día
anterior para evitar leer información inconsistente o parcial. El proceso
ETL realiza los siguientes pasos:
1. Los datos empresariales se recopilan de una base de datos de
Oracle y se almacenan en una base de datos de SQL Server que se
utiliza para la puesta en escena. Los datos relevantes incluyen
pedidos, ventas, información de clientes y reclamos de garantía
emitidos.
2. Aproximadamente cien paquetes de SQL Server Integration
Services realizan diversas transformaciones dentro de la base de
datos provisional en los pasos siguientes. Uno de estos paquetes
contiene una tarea de servicio web que consume un servicio
público OpenData para obtener información meteorológica de los
días anteriores. La empresa está utilizando el modelo de
implementación de proyectos.
3. Cuando los datos están listos, se cargan de forma incremental
en el almacén de datos empresarial. El EDW está alojado en las
instalaciones y es una base de datos de SQL Server. La
arquitectura del EDW sigue el modelo de esquema en estrella,
con tablas de hechos y tablas de dimensiones desnormalizadas. El
tamaño de esta base de datos es de aproximadamente 50 TiB.
4. Los informes se alojan en SQL Server Reporting Services.
Después de algunas reuniones, el CIO y el CTO coinciden en el hecho de
que esta es una buena oportunidad para migrar la infraestructura actual a
Azure e involucrarlo en el proyecto como un reconocido experto en el
campo.
Estos son los requisitos más importantes de la nueva arquitectura:
• Se prefieren las soluciones PaaS y SaaS, y se debe evitar IaaS
siempre que sea posible.
• La empresa quiere limitar el impacto en el proceso de
desarrollo tanto como sea posible. Más específicamente, les
gustaría posponer la reescritura completa de los paquetes del
servicio de integración de SQL Server a una segunda fase del
proyecto. Los paquetes contienen mucha lógica empresarial que
debe decodificarse cuidadosamente antes de sufrir algunas
transformaciones, y este aspecto podría ser una causa de retraso en
la migración.
• El equipo de BI está acostumbrado al modelo de desarrollo de
Integration Services y mantener la misma (o similar) forma de
trabajo se considera una ventaja.
• La base de datos de Oracle no puede exponerse a la Internet
pública y debe permanecer detrás del firewall corporativo.
Teniendo en cuenta el escenario descrito, intente responder las siguientes
preguntas:
1. ¿Cómo se pueden extraer datos de la base de datos de Oracle?
1. Solicita al equipo de TI que desarrolle una exportación programada
de los datos de origen y que configure un canal de comunicación como
SFTP para intercambiar los archivos resultantes.
2. Propone instalar el IR autohospedado en una máquina virtual
dedicada dentro de la red de la empresa y vincular el IR a un servicio de
Azure Data Factory.
3. También propone mover la base de datos de Oracle a Azure.
4. Le dice a la empresa que no hay forma de solucionar este problema
y que la base de datos de Oracle debe ser accesible desde Azure.
2. Considerando la primera fase del proyecto, ¿qué opción acomoda la
fase de transformación de la mejor manera posible?
1. Al menos en la primera fase, una máquina virtual de SQL Server con
Integration Services configurados es el mejor camino a seguir.
2. El equipo de BI no debe esperar a la segunda fase para resolver este
problema. En su lugar, deben reescribir los paquetes lo antes posible,
convirtiéndolos en canalizaciones de Azure Data Factory para mantener
el mismo enfoque de desarrollo visual.
3. Para evitar IaaS en la arquitectura, propone aprovechar la
capacidad de Azure Data Factory para ejecutar paquetes de integración de
SQL Server a través de un tiempo de ejecución de integración SSIS,
hospedando el catálogo SSIS en una base de datos SQL de Azure y
apuntándolo para la implementación del proyecto.
3. En la segunda fase, ¿qué tecnología se puede utilizar para reemplazar la
fase de transformación de paquetes SSIS?
1. Mapeo de flujos de datos
2. Un clúster de Hadoop en HDInsight
3. Azure Databricks
4. Análisis de Azure Synapse
4. ¿Qué servicio albergará el almacén de datos empresarial en la nueva
arquitectura?
1. Análisis de Azure Synapse
2. Azure Cosmos DB
3. Base de datos SQL de Azure
5. Los usuarios solicitan capacidades de creación de paneles, por lo que
está considerando cambiar al servicio Power BI como la nueva plataforma
de generación de informes elegida por la empresa. En este caso, ¿tendrían
los desarrolladores que volver a crear todos los informes desde cero?
1. Sí, no pueden migrar los informes reales a Power BI.
2. No, los informes reales se pueden migrar fácilmente a informes
paginados de Power BI.
3. No, los informes reales se pueden migrar fácilmente a informes
interactivos de Power BI.

RESPUESTAS DEL EXPERIMENTO MENTAL


Esta sección contiene la solución al experimento mental. Cada respuesta
explica por qué la opción de respuesta es correcta.
1. B. El RI autohospedado se enfoca específicamente en situaciones como
la descrita en este escenario. La opción A también es factible, ya que no
incluye ninguna infraestructura IaaS en el lado de Azure, pero agregaría
pasos de configuración y esfuerzo de administración adicionales
innecesarios.
2. C. Aprovechar Azure Data Factory SSIS IR es en realidad la mejor
manera de abordar la transición. De hecho, puede orquestar el proceso
ETL a través de canalizaciones, utilizando la actividad Ejecutar paquete
SSIS para ejecutar sus paquetes. En la segunda fase, si elige reemplazar
los paquetes con otra tecnología, puede mantener sus canalizaciones
existentes casi como están, sustituyendo las actividades de Ejecutar
paquete SSIS por las adecuadas para que coincidan con la nueva
tecnología.
3. A. El mapeo de flujos de datos es la única opción de la lista que permite
una experiencia de diseño visual de las tuberías de transformación. Tan
pronto como las características actualmente en versión preliminar
pública estén disponibles de forma generalizada, Azure Synapse Analytics
(a través de la interfaz web de Azure Synapse Studio) también se
convierte en una opción viable, ya que contendrá un diseñador visual
para canalizaciones y flujos de datos muy similar a Azure Data Factory.
4. A. Teniendo en cuenta el tamaño total de los datos y la arquitectura de
esquema en estrella de la EDW actual, Azure Synapse Analytics es
probablemente la mejor opción para ahorrar en costos de
almacenamiento y garantizar una recuperación de datos eficiente.
5. B. Los informes existentes se pueden convertir en informes paginados
con la herramienta de migración dedicada para que los desarrolladores
no tengan que crearlos desde cero. Luego, pueden elegir informes
seleccionados para volver a crearlos como informes interactivos, con el
objetivo de extender este enfoque a una mayor cantidad de informes a lo
largo del tiempo.
Índice

NÚMEROS
5 V de datos de grandes, 12 - 19

SIMBOLOS
* (asterisco), usando con columnas, 126
Símbolo @ (arroba), usando en SQL Server, 111

A
ABFS (sistema de archivos Blob de Azure), 165 , 168
Controladores ABFS o WASB, 226
gestión de acceso, 109 - 110
ACID (atomicidad, consistencia, aislamiento, durabilidad), 48 - 50
adquisición, 4
AD (Active Directory). Ver Azure Active Directory
ADF (Azure Data Factory) v2, 31 - 34
lista de adyacencia, gestionar, 140 - 141
matriz de adyacencia, 140 - 141
AES (estándar de cifrado avanzado), 108
agregación y transformación, 4
AI, integración en pipelines, 16
aliasing nombres largos, 128
ALTERcomando, 124

Grupos de disponibilidad Always On, SQL Server, 84


acceso analítico, 37
curva de análisis, 23
proceso de análisis, 42 . Ver también análisis de datos
cargas de trabajo analíticas, descripción, 203 - 207
Apache Hive y HiveQL, 257
Apache Kafka, 5
Apache Oozie, 11 , 233
Apache Spark, 35 - 36 , 268 . Consulte también Azure Databricks
Tiempo de ejecución
ARM (Gerente de Recursos Azure) plantillas, 95 - 103 , 176 - 179
creando una cuenta de Cosmos DB desde, 178
recibiendo de Cosmos cuenta DB, 176 - 177
en GitHub, 181
asterisco (*), usando con columnas, 126
en el símbolo (@), usando en SQL Server, 111
atomicidad en ACID, 49
atributos, 21
autenticación
gestionar, 108 - 111
problemas con los datos no relacionales, 193 - 194
autorización
gestión, 110
datos no relacional, 189 - 190
AutoML (aprendizaje automático automatizado), 26 . Consulte
también predicción de aprendizaje automático
escalado automático, Azure HDInsight, 211
módulo az, usando con PowerShell, 104
AzCopy, 196
Azur
dibujo del centro de datos, 59
centros de eventos y Apache Kafka, 5
componentes de servicios, 62
servicios para cargas de trabajo no relacionales, 144
Cuenta Azure, obteniendo, 1
Azure Active Directory, 110 - 111 , 171
Azure API Blob, 167 - 168
Almacenamiento de blobs de Azure. Consulte también almacenamiento de
blobs
API, 167 - 168
Explorador de Azure Storage, 166 - 167
Controlador de blobs, 165
contenedores, 164
contenido de PowerShell, 168 - 170
tipos de contenido, 164
datos para análisis de datos, 165
estructura jerárquica, 165
Biblioteca cliente .NET, 170
organización, 163 - 164
resumen, 163
y almacenamiento de mesa, 144
Azure Cache para Redis, 144
Calculadora azur, 76
Azure CLI (interfaz de línea de comandos), 105 - 107 , 181
Servicios cognitivos de Azure, 16 , 144
API de Azure Cosmos DB
cuenta y la base de datos, 151 - 155
y Azure Data Explorer, 153
Mesa Azure, 151
Cassandra, 150 - 151
configurar la coherencia, 154
niveles de consistencia, 145 - 147
Núcleo (SQL), 150
la creación de la cuenta, 177 - 179
La herramienta de migración de datos, 154 - 155
despliegue, 176 - 179
geo-redundancia, 153 - 154
conseguir plantilla ARM de, 176 - 177
Gremlin (almacenamiento de gráficos), 151
alta disponibilidad, 147
importación de datos para, 154 - 155
IOPS (operaciones de entrada / salida por segundo), 147
Ejemplo de JSON, 149
MongoDB, 149 - 150
Función de portátil, 153
resumen, 144 - 145
unidades de petición, 147 - 149
fichas, 146
usando, 149 - 151
Catálogo de datos de Azure, 18
Explorador de datos de Azure, 153 , 194 - 196
Fábrica de datos de Azure
Elemento de menú autor, 239 - 240
Servicio vinculado de almacenamiento de blogs de Azure, 248
características, 233
componentes, 238 - 239
conectores, 245
Actividad de copia de datos, 242 - 244
unidades de integración de datos, 238
conjuntos de datos, 244 - 245
conectores para almacenes de datos, 245 - 247
expresiones y funciones, 249
características, 11 , 17
página de inicio, 235 - 236
IR (tiempo de ejecución de integración), 237 - 238
mapeo de flujos de datos, 271 - 276
seguimiento, 254
parámetros, 240
actividades de oleoductos, 239 - 241
aprovisionamiento, 234 - 235
SSIS (Servicios de integración de SQL Server), 237 - 238
plantillas, 235 - 236
conexión de prueba, 248 - 249
disparadores, 254
Azure Data Lake, accediendo, 168
Azure Data Studio, 116 - 118
Bases de datos de Azure
MariaDB, 81 - 82
MySQL, 82 - 83
PostgreSQL, 79 - 81
Azure Databricks. Véase también Spark
acceso a la capa de almacenamiento, 225
y Apache Spark, 207
Azure Portal, 220 - 221
características, 217 - 218
racimos, 227 - 229
conector para Azure Synapse Analytics, 278
plano de control, 221 - 226
Lago Delta, 218
características, 35 - 36 , 217 - 229 , 262 - 263
unión de datos, 267
montaje de almacenamiento externo, 227 - 229
aprovisionamiento, 220 - 224 , 227 - 229
PySpark, 267 - 268
datos de origen en PySpark, 266
y Spark, 263 - 264
RDD de Spark, 219 - 220
especificar esquemas, 264 - 265
Sistema de archivos Azure Databricks, 226
Centros de eventos de Azure, 206
Sincronización de archivos de Azure, 174
Almacenamiento de archivos de Azure. Ver también almacenamiento
información de mapeo de cuenta, 173
autenticación, 171 - 173
autorización, 173
Sincronización de archivos de Azure, 174
compartido de archivos en la unidad local, 173 - 174
La autenticación Kerberos, 171 - 173
net usecomando, 174

resumen, 170
Protocolo SMB (bloque de mensajes del servidor), 170 , 174
carga de archivos, 196
Azure HDInsight
Ambari ve, 214 - 215
agregar contenido, 261
escala automática, 211
y Azure Portal, 212 - 216
y Azure SQL Database, 213
racimos, 210 , 212 - 216
consideraciones, 211
opciones de procesamiento de datos, 257 - 262
tablas de destino, 260 - 261
características, 11 , 35 , 206 , 209 - 217
Optimización de Hive, 262
Tablas de Hive y almacenamiento de blogs de Azure, 260
Consola Hive View, 258
internos y externos mesas, 258 - 259
y Linux, 212
lenguajes de programación, 216
aprovisionamiento de clúster Hadoop, 216 - 217
SDK e IDE, 215
versiones de componentes, 211
Azure Key Vault, 108 , 185 , 248 . Ver también cifrado
Servicio Azure Kubernetes (AKS), 27
Azure Marketplace, 18
Azure ML (Machine Learning) Designer, 26 de - 27 de
Azure bibliotecas .NET, 181 - 182
Portal de Azure
Plantillas ARM, 102 - 103
y Azure HDInsight, 212 - 216
creando una cuenta de Cosmos DB desde 177
características, 67 - 69 , 90 - 95
Servicios de Azure, autorizados de forma predeterminada, 183
Base de datos SQL de Azure. Consulte también SQL (lenguaje de consulta
estructurado)
y Azure HDInsight, 213
creando, 67 - 69
características, 63
compra de modelos, 64
segmentaciones, 64 - 66
modelos de servicio, 67 - 69
usando, 15 , 89 , 92 , 108
Azure SQL-MI (instancia administrada), 83 - 86 , 108
Almacenamiento de Azure
niveles de acceso, 156 - 157
tipos de cuenta, 156
creación de cuentas, 158
despliegue, 178 - 179
gestión del ciclo de vida, 157
NFS v3, 158
niveles de rendimiento, 155
opciones de replicación, 157
exposición de servicio, 156
Azure Stream Analytics, 10 , 206
Análisis de Azure Synapse. Consulte también Lenguaje de consulta
PolyBase T-SQL ; Piscina Synapse
configurar PolyBase en, 269
CREATE EXTERNAL TABLE AS SELECTdeclaración, 270
creando piscinas, 74
capacidades de procesamiento de datos, 231
tablas externas, 269 - 270
descripción general, 229 - 231
vista previa pública y privada, 276
aprovisionamiento de grupo de SQL, 231 - 232
usando, 12 - 13 , 36 , 69 - 74 , 229 - 232
escribir en el almacenamiento de blobs, 270 - 271
API de Azure Table, 151
Almacenamiento de Azure Table. Ver también tablas
API, 159 - 161
conectando a, 162 - 163
creación de tablas, 161 - 162
cargas de trabajo no relacionales, 144
Especificación OData, 159
visión general, 158 - 159

B
datos por lotes
enfoque, 18 - 19
descrito, 10 - 12
frente a la transmisión de datos, 19 - 20
tipo de carga de trabajo, 2
capa de lote versus capa de velocidad, 14
carga de trabajo por lotes, 205 - 206
Proyectos de BI (inteligencia empresarial), 29 , 42 . Consulte también
el servicio Power BI
big data
valor, 18
variedad, 14 - 16
velocidad, 14
veracidad, 17 - 18
volumen, 12 - 14
formatos de archivo binario, 16
Controlador de blobs, 165
Blob API de servicio REST, 167 - 168
almacenamiento de blobs. Ver Azure Blob Storage
gestión de contenido en, 168 - 170
escribiendo en Azure Synapse Analytics, 270 - 271
blobs, cargando contenido en, 196
bloqueando transformaciones, 31
BSON (JSON binario), 139
Árbol B de almacenamiento, 137 - 138

C
Modo en caché frente a DirectQuery, 71
tarjeta visual, uso en informes, 41
API Cassandra, 150 - 151
tipo de datos de caracteres, 55
gráficos
y visualización de datos, 36 - 42
usar en informes, 38 - 39 , 41
CLI (interfaz de línea de comandos), utilizando con almacenamiento
Blob, 169 - 170
nube, moviendo datos a, 89
Nube de Shell, utilizando CLI con Azure, 106 - 107
índices de almacén de columnas agrupados, 63 . Ver también índices
Codd, Edgar F., 20 años
almacén de datos en columnas, 139 - 140 , 144
índices de almacén de columnas, 63
comandos
ALTER, 124
DROP, 124
RENAME, 125

nodos de computación, 72
problemas de conectividad, de datos no relacionales, 190 - 194
problemas de conectividad, la identificación, 112 - 114 . Ver
también seguridad de la red
consistencia en ACID, 49
limitaciones, 21
grupos de consumidores, 5-6
consumidores 4
Asistente para copiar datos, 250 - 254
API de Core (SQL), 150
Explorador del cosmos, 197
costos, estimando para el servidor SQL en VM, 76
CREATE EXTERNAL TABLE AS SELECTdeclaración, 270
CREATE TABLE AS SELECTdeclaración, 277

CRM (gestión de la relación con el cliente), 62


estructura de cubo, servicios de análisis de SQL Server, 70
abandono de clientes, 24
D
acceso al tablero de instrumentos, 37
cuadros de mando, 294 - 297 . Consulte también el servicio Power BI
datos
acceso en capas a, 37
migrar con DMS, 84
volatilidad de, 14
análisis de datos. Consulte también el proceso de análisis ; análisis de
datos bajo demanda
conceptos básicos, 23
técnicas, 23 - 28
Lenguaje de control de datos, 126
cifrado de datos, 108 , 184 - 185 . Consulte también Azure Key Vault
flujos de datos, mapeo en Azure Data Factory, 271 - 276
gobernanza de datos, 18
ingesta y procesamiento de datos
Fábrica de datos de Azure, 233 - 249
resumen, 232
unidades de integración de datos, Azure Data Factory, 238
lago de datos, 2
los datos de carga, 276 - 278
La herramienta de migración de datos, descarga, 154 - 155 . Consulte
también migración de datos con DMS
canalizaciones de datos
transformaciones de datos, 28
fuentes y destinos, 28
opciones de procesamiento de datos
Fábrica de datos de Azure, 271 - 276
Azure Databricks, 262 - 268
Azure HDInsight, 257 - 262
Azure Synapse Analytics, 268 - 271
lista de campos de salida, 256 - 257
resumen, 254 - 257
protección de datos, los datos no relacionales, 185 - 186
Servicios de calidad de datos, 17
capas seguras de datos, 107
componentes de seguridad de datos
AzCopy, 196
Explorador de datos de Azure, 194 - 196
problemas de conectividad, 190 - 194
Explorador del cosmos, 197
herramientas de gestión, 194 - 198
cargas de trabajo no relacionales de datos, 182 - 190
componentes de seguridad de datos, identificación, 107 - 110
conjuntos de datos, 294
almacenes de datos para datos no relacionales
elegir, 142
tipos, 137 - 142
narración de datos, 294
flujo de datos, 3
flujo de flujo de datos
adquisición, 4
agregación y transformación, 4
producción, 3
almacenamiento, 4
estructuras de datos, clasificaciones, 15 - 16
virtualización de datos, 13 , 35
visualización de datos y tipos de gráficos, 36 - 42
arquitectura de almacenamiento de datos, 2, 19 , 53 , 207 - 208 . Ver
también almacenes de datos modernos
almacenamiento de datos
Servicios de datos de Azure, 208 - 209
Azure HDInsight, 209 - 216
cargas de trabajo de datos
datos de lote, 10 - 19
transmisión de datos, 3- 10
tipos de, 1-2
esquema de base de datos versus modelo semántico, 50 . Ver
también bases de datos multidimensionales
DBFS (sistema de archivos de Databricks), 225
DDL (lenguaje de definición de datos), 123 - 125
Eliminar estructura, 125
Delta Lake, Azure Databricks, 218
despliegue
gestionar con Azure CLI, 105 - 107
administrar con PowerShell, 103 - 105
análisis descriptivo, 23
análisis de diagnóstico, 23
diccionario y almacén de valores-clave, 137
gráfico dirigido, 140
DirectQuery frente al modo en caché, 71
imágenes de disco, creación, 76
DISM (Administración y mantenimiento de imágenes de
implementación), 76
DML (lenguaje de manipulación de datos), 125 - 126
DMS (Servicio de migración de bases de datos), 84
almacén de documentos, 138 - 139 , 144
dominios, 21
DROPcomando, 124

DTS (transformación de datos), 30


Modelo de compra basado en DTU, 64 - 67
durabilidad en ACID, 50
DWU (unidades de almacenamiento de datos), 73
Enmascaramiento dinámico de datos, 108

MI
EDW (almacén de datos empresarial), 42
elasticidad, 60 - 61
ELT (extracción-carga-transformación), 34 - 36 , 205
cifrado. Ver el cifrado de datos , 108 , 184 - 185 . Consulte también Azure
Key Vault
claves de cifrado, configuración y almacenamiento, 185
ERP (planificación de recursos empresariales), 62
errores, buscando, 114
ETL (extracción-transformación-carga), 29 - 34 , 205
Captura de Event Hub, 5
centros de eventos, auditoría, 109
eventos y ventanas de sesión, 9- 10
almacenamiento externo, montaje, 227 - 229

F
El violinista de herramientas de conectividad y problemas, 190 - 191
almacenamiento de archivos. Ver almacenamiento de archivos de Azure
reglas de cortafuegos, la no relacional de datos, 182 - 183
cortafuegos
gestionar, 107 - 111
datos no relacionales, 182 - 183
reconocimiento de formularios, 16
FQDN (nombre de dominio completo), 94
detección de fraude, 24
Cuenta de capa gratuita, datos no relacionales, 177
FROM cláusula, 128
Búsqueda aproximada / Agrupación aproximada, 17

GRAMO
geo-redundancia, API Azure Cosmos DB, 153 - 154
GIGO (entrada de basura, salida de basura), 17
distribución global, 59
tienda gráfica, 140 - 141 , 144
API de Gremlin (almacenamiento de gráficos), 151
GRS (almacenamiento con redundancia geográfica), 157
GZRS (almacenamiento con redundancia de zona geográfica), 157

H
Marco de Hadoop, 12 - 13 , 209
tabla hash y almacén de valores-clave, 137
HBase en HDInsight, 144
HDFS (sistema de archivos distribuido Hadoop), 35 , 210
HiveQL, 257
ventana de salto, 7-8
tabique horizontal, 30

I
IaaS (infraestructura como servicio), 17 , 60 , 62
clasificación de imágenes, 16
eventos entrantes, descarga, 5
información indexada, búsqueda, 144
índices, estructuras de bases de datos relacionales, 55 - 56 . Consulte
también índices de almacén de columnas agrupados
información
protección, 108
recuperación, 16
tecnologías en memoria, 63
INNER JOINcláusula 128

atributos de entrada como características, 24


tasa de entrada versus tasa de procesamiento, 5
Insertar estructura, 125
IntelliSense, Azure Data Studio, 118
aislamiento en ACID, 49
Infraestructura de TI (tecnología de la información), 58

J
JSON (notación de objetos JavaScript), 15 - 16 , 138 - 139

K
La autenticación Kerberos, Azure de almacenamiento de
archivos, 171 - 173
almacén de pares clave-valor, 137 - 138 , 144
KPI (indicador clave de rendimiento)
y cuadros de mando, 294
y servicios de análisis de SQL Server, 71
uso en informes, 41

L
ley del instrumento, 254
LEFT OUTER JOIN, 129

gestión del ciclo de vida, Azure Storage, 157


gráfico de líneas, uso en informes, 39
Linux y Azure HDInsight, 212
nombres largos, alias, 128
LRS (almacenamiento con redundancia local), 157
METRO
predicción de aprendizaje automático, 16 . Consulte también AutoML
(aprendizaje automático automatizado)
gráfico de mapa, uso en informes, 41 - 42
MariaDB, 81 - 82
Servicios de datos maestros, 17
visual de matriz, uso en informes, 38
identificaciones de mensajes, 192
Microsoft
Ruta de aprendizaje, 10 , 19
SQL Server, 15
Microsoft SQL Server Enterprise Edition, 17
migrar datos con DMS, 84 . Ver también herramienta de migración de
datos
Plataforma MLFlow, 26
MLOP (operaciones de aprendizaje automático), 26
almacenamiento de datos moderno. Consulte también la arquitectura del
almacén de datos.
la arquitectura y la carga de trabajo, 207 - 208
Azure Databricks, 217 - 229
Azure HDInsight, 209 - 217
Azure Synapse Analytics, 229 - 232
definido, 204
servicios, 208 - 209
API de MongoDB, 149 - 150
monitorear registros, 109
montaje de almacenamiento externo, 227 - 229
Arquitecturas MPP (procesamiento masivo paralelo), 12 , 35 , 72 , 205
bases de datos multidimensionales, 69 . Ver también esquema de base de
datos versus modelo semántico
MySQL, 82 - 83 , 131
NORTE
nombres, aliasing, 128
Herramienta NetMon (Monitor de red), 191
seguridad de la red, 111 - 112 , 192 . Ver también problemas de
conectividad
NFS v3, 158
datos no relacionales. Ver también datos relacionales
autenticación, 186 - 189 , 193 - 194
autorización, 189 - 190
Servicios de datos de Azure para, 144
características, 136
elegir almacenes de datos, 142
almacén de datos en columnas, 139 - 140
problemas de conectividad, 190 - 193
protección de datos, 185 - 186
implementación de Azure Cosmos DB, 176
almacén de documentos, 138 - 139
reglas de cortafuegos, 182 - 183
Cuenta de nivel gratuito, 177
tienda de gráfica, 140 - 141
servicios de datos de identificación para, 144
almacén de pares clave-valor, 137
almacén de datos de objeto, 142
aprovisionamiento y despliegue, 175
razones para usar, 143
transferencia segura, 183 - 184
cifrado de datos de almacenamiento, 184 - 185
tienda de series temporales, 141
Versión TLS (Transport Layer Security), 184
carga de trabajo no relacional, 205
Bases de datos NoSQL, 15 , 136 - 142
tipo de datos de números, 55
nvarchar( nchar) (CARACTERES NACIONALES), 55

O
almacén de datos de objetos, 142 , 144
Especificación OData, Azure Tabla API de almacenamiento, 159 - 160
ODBC (conectividad abierta de bases de datos), 14
Office 365 SaaS, 62
OLAP (procesamiento analítico en línea), 19 , 22 , 52
OLTP (procesamiento de transacciones en línea), 22 , 48 - 51
análisis de datos a pedido, 13 . Ver también análisis de datos
ONNX (Intercambio de red neuronal abierta), 28
sistemas operativos y versiones de SQL, 75
ORDER BY, 127 , 130

PAG
PaaS (plataforma como servicio), 61 - 62
informes paginados, 297 - 299 . Ver también informes
informes paginados, 42
partición, 30
gráfico circular, uso en informes, 39 - 40
pinning objetos en cuadros de mando, 294 - 295
tubería
comprobando la riqueza de, 5
creando y ejecutando, 250 - 254
PoC (pruebas de concepto), 207
políticas y protección de datos, 186
Lenguaje de consulta PolyBase T-SQL. Consulte también Azure Synapse
Analytics
configuración para Azure Blob Storage, 268 - 269
configurar en Azure Synapse Analytics, 269
usando, 14 , 71 - 72
mesas de billar, 71
Bases de datos PostgreSQL, 79 - 81 , 129 - 131
Power BI Desktop, descarga, 280
Generador de informes de Power BI, 298
Servidor de informes de Power BI, 299
Servicio Power BI. Consulte también proyectos de BI (inteligencia
empresarial); cuadros de mando
conectores, 281 - 283
cuadros de mando, 294 - 297
alertas de datos / notificaciones, 295
modelado de datos, 280
Vista de datos, 285
mesas dobles, 283
exploración de datos, 296
Ventana Obtener datos, 282
informes interactivos, 279 - 293
Vista modelo, 284 , 287
descripción general, 278
informes paginados, 297 - 299
planes y características, 291
portal, 292
Editor de Power Query, 286 , 288
publicar y compartir, 293
vista de lectura, 293
liberación de, 42
Ver informe, 289 - 291
flujo de trabajo, 279
Potencia Shell
y Azure de almacenamiento, 178 - 179
comandos para Cosmos DB, 179
creando una cuenta de Cosmos DB desde 177
gestión de la implementación, 103 - 105
cuenta de almacenamiento y el recipiente, 180 - 182
Biblioteca PowerShell Azure, utilizando con el almacenamiento
BLOB, 168 - 170
análisis predictivo, 24
análisis prescriptivo, 24
clave principal, 21
vista previa pública y privada, 276
conexiones privadas, utilizando, 192 - 193
procedimientos, bases de datos relacionales, 58
tasa de proceso versus tasa de entrada, 5
productores, 3
PySpark
esquema de archivo en, 265
uniendo datos en, 267
fuente de datos en, 266
escribir datos en archivos, 267 - 268

Q
Editor de consultas, 115
Query Performance Insight, 64
técnicas de consulta, lenguaje SQL, 122 - 126
herramientas de consulta, identificación, 114 - 122
consulta de datos
MySQL, 131
Bases de datos PostgreSQL, 129 - 131
Bases de datos de SQL Server, 126 - 129
R
datos brutos, 4
RBAC (control de acceso basado en roles), 171
regex (expresiones regulares), 17
servicios de datos relacionales de Azure
IaaS (infraestructura como servicio), 60
resumen, 58 - 59
PaaS (plataforma como servicio), 61
SaaS (software como servicio), 61 - 62
datos relacionales. Ver también datos no relacionales
personajes, 55
columnas y restricciones, 53 - 55
despliegue de servicios, 87 - 90
índices, 55 - 56
números, 55
procedimientos, 58
aprovisionamiento, 87 - 90
consultas, 126 - 131
mesas, 53 - 55
teoría y práctica, 20 - 22
tipos de, 55
vistas, 56 - 58
servicios de datos relacionales, aprovisionamiento e
implementación, 87 - 90
carga de trabajo relacional, 204 - 205
RENAMEcomando, 125

replicación y protección de datos, 185


acceso a informes, 37
informes, elementos visuales utilizados en, 38 - 41 . Consulte
también informes paginados ; SSRS (SQL Server Reporting Services)
errores de recursos, 114
grupos de recursos, 92
proveedores de recursos, ARM, 95 - 96
recursos
aumentando y reduciendo, 60
errores de uso excesivo, 114
periodo de retención, 5
análisis de viajes en vehículos de carretera, 4
preferencias de enrutamiento, datos no relacionales, 183

S
SaaS (software como servicio), 61 - 62
gráfico de dispersión, uso en informes, 40
deriva del esquema, 14
transferencia segura, la no relacional de datos, 183 - 184
seguridad. Ver componentes de seguridad de datos
SELECTdeclaración, 126 - 128

modelo semántico versus esquema de base de datos, 50


datos semiestructurados, 15
análisis de sentimiento, 16
servidores, registro, 174
capa de servicio, 42
ventana de sesión, 9- 10
modelo de recurso compartido, 66
única fuente de verdad, 22
ventana deslizante, 8-9
SLO (objetivos de nivel de servicio), 73 - 74
Protocolo SMB (Server Message Block), almacenamiento de archivos de
Azure, 170
Pymes (expertos en la materia), 23
Sistemas SMP (multiprocesamiento simétrico), 12
soundex, 17
Spark, 35 - 36 , 268 . Consulte también Azure Databricks
capa de velocidad versus capa por lotes, 14
SQL (lenguaje de consulta estructurado). Consulte también Azure SQL
Database
operadores, 21
técnicas de consulta, 122 - 131
SQL DW (almacén de datos), 71
servidor SQL
sumando, 69
Grupos de disponibilidad Always On, 84
servicios de análisis, 69 - 74
evitar errores de sintaxis, 111
en Azure VM (máquina virtual), 74 - 79 , 89 - 90
predicción en el motor, 27 - 28
implementación dentro de VM, 74 - 79
consulta de datos, 126 - 129
Servicios de informes de SQL Server, 297
Versiones de SQL y sistemas operativos, 75
utilidad sqlcmd, 115 - 116
SQL-MI (instancia administrada), 83 - 86 , 89
SSIS (SQL Server Integration Services) Enterprise Edition, 17 , 30 - 33
Cargas de trabajo SSIS, migración, 238
SSMS (SQL Server Management Studio), 110 - 111 , 113 , 118 - 121 , 124
SSOT (fuente única de la verdad), 208
SSRS (SQL Server Reporting Services), 42 . Ver también informes
gráfico de columnas apiladas, que se utiliza en informes, 38 - 39
estadística, uso de, 57
almacenamiento, 4. Consulte también Almacenamiento de archivos de
Azure
cuenta de almacenamiento
Portal de Azure, 95
y el contenedor utilizando PowerShell, 180 - 182
creando, 158
cifrado de datos de almacenamiento, los datos no relacionales, 184 - 185
dispositivos de almacenamiento, 144
Explorador de almacenamiento, 161 - 162 , 166 - 167
descripción general del procesamiento de secuencias, 4
tubería de procesamiento de flujo, 3
agregación de ventana de flujo, 6
transmisión
conjuntos de datos, 294
carga de trabajo, 206
transmisión de datos
versus datos de lote, 19 - 20
caso de uso, 4
datos estructurados, 15

T
tabla visual, uso en informes, 38
tablas, estructuras de bases de datos relacionales, 53 - 55 . Consulte
también Almacenamiento de tablas de Azure
modelos tabulares, 71
TCO (costo total de propiedad), 58
TDE (cifrado de datos transparente), 108
TDU (Datos Equipo Proceso Ciencia), 24 de - 26 de
URI de plantilla, que se usa para plantillas ARM, 181
protección contra amenazas, 109
tienda de series temporales, 141 , 144
agregaciones de ventanas de tiempo, 5-6
TLS (seguridad de la capa de transporte), 184
transformaciones
y agregación, 4
actuación, 34
procesos, 53
T-SQL (lenguaje de consulta estructurado de
transacciones), 21 , 126 - 129
Lenguaje de consulta T-SQL, PolyBase, 14
ventana cayendo, 7
tuplas, 21

U
plataforma de análisis unificada, 217
datos no estructurados, 16
Estructura de actualización, 125

V
valor y big data, 18
variedad y big data, 14 - 16
Modelo de compra basado en núcleos virtuales, 64 - 67
velocidad y big data, 14
veracidad y big data, 17 - 18
vistas, estructuras de bases de datos relacionales, 56 - 58
Visual Studio Nube Explorer, 197 - 198
visualización, 18
VM (máquina virtual)
implementación de SQL Server en, 74 - 79
plantillas, 61
volatilidad de los datos, 14
datos de volumen y lote, 12 - 14
VPN (redes privadas virtuales), 192

W
Controladores WASB o ABFS, 226
marcas de agua, 5-6
WHEREpredicado, 127

Analizador de redes Wireshark, 191


Documento de Word, estructura de 136
cargas de trabajo, tipos de, 2

X
Documentos XML (Extensible Markup Language), 15 , 138

Z
ZRS (almacenamiento con redundancia de zona), 157
Fragmentos de código
Muchos títulos incluyen código de programación o ejemplos de
configuración. Para optimizar la presentación de estos elementos, vea
el libro electrónico en modo horizontal de una sola columna y ajuste el
tamaño de fuente al valor más pequeño. Además de presentar el código
y las configuraciones en el formato de texto ajustable, hemos incluido
imágenes del código que imitan la presentación que se encuentra en el
libro impreso; por lo tanto, cuando el formato reajustable pueda
comprometer la presentación del listado de código, verá un enlace
"Haga clic aquí para ver la imagen del código". Haga clic en el enlace
para ver la imagen del código de fidelidad de impresión. Para volver a
la página anterior vista, haga clic en el botón Atrás en su dispositivo o
aplicación.

También podría gustarte