DP 900
DP 900
DP 900
Í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
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 .
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.
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.
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.
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.
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.
"Valores": [
"FirstName": "Parque",
"Apellido": "Dan",
"Edad": "43",
"Reseñas": [
"Calificación": 4.0
},
"Valoración": 3,7
]
},
"FirstName": "Kelly",
"MiddleName": "Jane",
"LastName": "Weadock",
"Edad": "27",
"Reseñas": [
"Valoración": 3,7
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.
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.
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.
SELECCIONE
mls.native_model_object
DE
dbo.mymodels AS mls
DÓNDE
mls.model_name = 'mymodel'
mls.model_version = 'v1'
);
SELECCIONE
D.*,
p. puntaje
DE
PREDECIR (
MODELO = @modelo,
DATOS = dbo.mytable AS d
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)
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.
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.
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.
Tabular Al igual que los modelos OLTP, este modelo utiliza conceptos como
columnas y relaciones.
País Caracteres 2 No
Comienzo Fecha No
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
fechas smallDateTime
fecha y hora
hora
espacio de tiempo
Lógico un poco
Otro binario
imagen
Etc.
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.
COMO
SELECCIONE
DE
UNIR INTERNAMENTE
EN
[Sod]. [Salesorderid]
= [Soh]. [Salesorderid]
UNIR INTERNAMENTE
EN
= [Sp]. [Businessentityid]
= [Sp]. [Businessentityid]
UNIR INTERNAMENTE
EN
[Sod]. [Productid]
= [Prod]. [Productid]
UNIR INTERNAMENTE
[Persona]. [Persona] AS [Per]
EN
[Sp]. [Businessentityid]
= [Per]. [Businessentityid]
AGRUPAR POR
, [Prod]. [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.
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
Básico Estándar
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
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
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.
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.
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.
$ Location = '<Inserte-su-ubicación-deseada-aquí>'
Connect-AzAccount
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.
"$ esquema":
"https://schema.management.azure.com/schemas/2019-04-01/
deploymentTemplate.json # ",
"contentVersion": "",
"apiProfile": "",
"parámetros": {},
"variables": {},
"funciones": [],
"recursos": [ ],
"salidas": {}
"<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>"
}
}
allowValues Esta es una matriz con los valores aceptados para el parám
asigna esta propiedad, solo se permiten valores coinciden
"condición": "<verdadero-para-despliegue-
este-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>"
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.
etiquetas Una matriz con las etiquetas deseadas y sus valores para
en el siguiente formato:
{
"<nombre-etiqueta1>": "<valor-etiqueta1>",
"<nombre-etiqueta2>": "<valor-etiqueta2>"
"nombre": "S0",
"tier": "Estándar"
"nombre": "<nombre-de-copia-loop>",
"recuento": <número-de-iteraciones>,
"modo": "<serial-o-paralelo>",
Nombre Obligatorio Descripción
"batchSize": <number-to-deploy-serially>
"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"
"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 ')]",
"servers_dp900sqlserver_name": {
"defaultValue": "dp900sqlserver",
"tipo": "Cadena"
},
"defaultValue": "DP900_1",
"tipo": "Cadena"
},
if ($ versión-lt'5.1.0 ') {
'Vaya a https://docs.microsoft.com/en-
us/powershell/scripting/install/installing-
demás {
-ListAvailable)) {
'https://docs.microsoft.com/en-
us/powershell/azure/uninstall-az-ps?view=azps-
demás {
}
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 .
[cadena] $ Nombre,
[cadena] $ ResourceGroup,
[string] $ TemplateFile,
[cadena] $ database_name,
[cadena] $ database_location
)
#Antes de cualquier acción de Azure, debe autenticarse para
conectarse con la plataforma Azure
Connect-AzAccount
$ subscriptions = Get-AzSubscription
la suscripción
$ resp = 0
$ contador = 1
foreach ($ s en $ suscripciones)
$ contador + = 1
'database_name' = $ database_name
'database_location' = $ database_location
#Ejecuta el despliegue
-ResourceGroupName $
ResourceGroup `
-TemplateUri $ TemplateFile
`
-TemplateParameterObject $
paramObject
< ParameterName_1 > = < Value_1 > < ParameterName_2 > = <
Value_2 >
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.
windows.net/<Your_Container_Name>/ <ARM_TemplateFileName>
.json "--parameters database_
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;
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.
SELECCIONAR nombre,
está desactivado
DESDE sys.sql_logins
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.
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 .
-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á.
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 .
)
EN [PRIMARIO];
DE
DÓNDE
PEDIR POR
VALORES
);
SET < Lista de <Columna para actualizar > = < Valor nuevo
>,
< Columna para actualizar > = < valor nuevo >
>
DÓNDE
Selección simple
Haga clic aquí para ver la imagen del código
SELECCIONE
DE
[SalesLT]. [Producto]
[Nombre],
[Número de producto],
[Color],
[Costo estándar],
[Precio de lista],
[Tamaño],
[Peso]
[Número de producto],
[Color],
[Costo estándar],
[Precio de lista],
[Tamaño],
[Peso]
[Tamaño];
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)
Tamaño;
PC.Name AS Categoría,
P. Nombre,
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;
PC.Name AS Categoría,
P. Nombre,
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.
PC.Name AS Categoría,
P. Nombre,
DE
SalesLT.Product AS P
UNIR INTERNAMENTE
SalesLT.ProductCategory COMO PC
ON P.ProductCategoryID = PC.ProductCategoryID
SalesLT.SalesOrderDetail AS SOD
ON P.ProductID = SOD.ProductID
AGRUPAR POR
PC.Name,
P. Nombre
PEDIR POR
Categoría,
P.Name;
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.
,nombre
,Número de producto
,color
,Talla
,peso
, productcategoryid
de public.product
,nombre
,Número de producto
,color
,Talla
,peso
, productcategoryid
de public.product
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.
, ProductCategory.Name AS Categoría
,Número de producto
,color
,Talla
,peso
de public.product
ProductCategoryID
, ProductCategory.Name AS Categoría
,Número de producto
,color
,Talla
,peso
de public.product
ProductCategoryID
DESDE Producto
ProductCategoryID
DESDE Producto
ProductCategoryID
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
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 .
deploymentTemplate.json ",
"contentVersion": "1.0.0.0",
"parámetros": {
"clusterLocation": {
"tipo": "cadena",
"defaultValue": "southcentralus",
"metadatos": {
}
},
"clusterName": {
"tipo": "cadena",
"metadatos": {
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
Documento Cosmos DB
Grafico Cosmos DB
Almacenamiento de mesa
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
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.
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.
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.
"CustomerID": "ALFKI",
"Ciudad": "Berlín",
"PostalCode": "12209",
"País": "Alemania"
},
"CustomerID": "ANATR",
"PostalCode": "05021",
"País": "México"
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
y
Haga clic aquí para ver la imagen del código
gV (). hasLabel (Clientes) .has ('País', 'Alemania'). out ('Ciudad',
'código postal')
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.
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
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.
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.
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 .
PartitionKey CD
Año 1974
Estilo Barroco
Pistas Primavera
Nombre de la propiedad Valor
Verano
Otoño
Invierno
PartitionKey Ejecutante
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
=
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 >
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 .
tipo de Puede optar por utilizar el tipo de autenticación o una clave de alma
autenticación para almacenar el contenido.
Subir a carpeta Úselo para definir una carpeta específica dentro del contenedor.
(nuevo azblob.AnonymousCredential));
-Blob "MainLogo.jpg" `
-Contexto $ contexto
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.
Connect-AzAccount
$ ResourceGroupName = "<Your_Resource-Group-Name>"
$ StorageAccountName = "<Your_Storage-Account-Name>"
-ResourceGroupName $ ResourceGroupName `
-Nombre $ StorageAccountName `
-KeyName $ KeyName
$ k = Get-AzStorageAccountKey `
-ResourceGroupName $ ResourceGroupName `
-Nombre $ StorageAccountName `
-ListKerbKey | '
Anfitrión claro
$ k. Valor
-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>"
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.
-ResourceGroupName $
ResourceGroup `
-TemplateUri $ TemplateFile `
-TemplateParameterObject $
paramObject
Connect-AzAccount
$ resourceGroupName = "<Resource_Group>"
New-AzCosmosDBAccount `
-ResourceGroupName $ resourceGroupName `
-Ubicación $ ubicaciones `
-Nombre $ accountName `
-ApiKind $ apiKind `
-EnableAutomaticFailover: $ true `
-DefaultConsistencyLevel $ consistenciaLevel `
-EnableFreeTier: $ true
-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 `
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
$ ubicación = $ ResourceGroup.Location
-ResourceGroupName $ resourceGroupName `
-CuentaNombre $ cuentaNombre `
-Kind $ accountKind `
-SkuName $ skuName `
-Ubicación $ ubicación
-Nombre $ containerName `
-Context $ storageAccount.Context
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
uri https://raw.githubusercontent.com/Azure/azure-quickstart-
templates/
- 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
(cartas credenciales);
(resourceGroupName, accountName,
parámetros
);
parámetros,
cancelaciónToken
);
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 .
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
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.
[Versión]
V3
[Sujeto]
CN = *. Dfs.core.windows.net
Nombre simple: * .dfs.core.windows.net
[Editor]
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 .
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.
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
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 .
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 .
¿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 .
IR
SELECCIONE
pm.ProductModelID,
pm.Name,
pm.rowguid,
pm.ModifiedDate
DE
SalesLT.ProductModel como pm
ID del Producto En t
Nombre cuerda
Color cuerda
Tamaño cuerda
Peso cuerda
ProductModelID En t
ProductModelName cuerda
ProductCategoryID En t
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 .
ProductModelID INT,
Nombre STRING,
rowguid STRING,
UBICACIÓN 'wasbs:
//[email protected]/extract/azur
esql/
SalesLT_ProductModel '
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.
ProductID INT,
Nombre STRING,
ProductNumber STRING,
COLOR STRING,
Talla STRING,
Peso STRING,
ProductModelID INT,
ProductModelName STRING,
ProductCategoryID INT,
ProductCategory STRING,
ProductSubcategoryID INT,
ProductSubcategoryName STRING
UBICACIÓN 'wasbs:
//[email protected]/transform/hd
i/products_info'
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_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.
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.
ProductModel.txt ');
# 2. Esquema explícito
de pyspark.sql.types import *;
fileSchema = StructType ([
]);
dfProductCategory.createOrReplaceTempView
('vwProductCategory');
dfProductSubcategory.createOrReplaceTempView
('vwProductSubcategory');
dfProduct.createOrReplaceTempView ('vwProduct');
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
'' ');
CON
IDENTIDAD = 'usuario',
SECRET = '<almacenamiento_cuenta_clave_acceso_aquí>';
TIPO = HADOOP,
windows.net ',
CREDENCIAL = dp900sablobCredential
);
FORMAT_TYPE = DELIMITEDTEXT,
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
ProductModelID INT,
CON (
FUENTE_DATOS = dp900sablob,
FILE_FORMAT = CsvFileFormat
);
CON (
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
pc.ProductCategoryID;
Fuente = Sql.Databases
("dp900sqlserver.database.windows.net"),
"ShipToAddressID", "BillToAddressID",
"CreditCardApprovalCode", "Comment", "rowguid",
"SalesLT.Customer", "SalesLT.SalesOrderDetail",
"ModifiedDate", "Estado"})
en
# "Columnas eliminadas"
Listado 4-15 Código generado automáticamente por Power Query que aplica las
transformaciones descritas
= companyblobs1 {[
# "Ruta de la carpeta" =
"https://dp900sablob.blob.core.windows.net/companyblobs/",
}[Contenido],
Delimitador = ",",
Columnas = 15,
Codificación = 1252,
QuoteStyle = QuoteStyle.Ninguno
]),
# "Encabezados promocionados",
{
{"CustomerID", Int64.Type}, {"NameStyle", escriba
lógico}, {"Título", escriba texto},
fecha y hora}
}),
# "Tipo cambiado",
})
en
# "Columnas eliminadas"
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.
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/ .
En el servicio Power BI, los usuarios también pueden crear paneles, que
se describen brevemente en la siguiente sección.
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.
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
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
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
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
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
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
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
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.