Tipos de Datos
Datos:
- Los datos son una colección de elementos, como números, descripciones y observaciones, que se usan para registrar información.
- Los datos son símbolos como números, letras o signos que son empleados para representar a través de un lenguaje un hecho, una condición, un valor, una cantidad,etc
- Las estructuras de datos en las que se organizan estos datos suelen representar entidades
- Normalmente, cada entidad tiene uno o varios atributos o características
- Los datos se pueden clasificar según su tipo en:
- Estructurados
- Semiestructurados
- No Estructurados
Información:
- Datos e información no son lo mismo
- La información es el resultado ejecutar un procesamiento a un conjunto de datos dándole u significado o interpretación
Datos Estructurados
- Los datos estructurados son aquellos que se ajustan a un esquema fijo, por lo que todos los datos tienen los mismos campos o propiedades
- Suelen ser datos tabulares que se representan mediante filas y columnas en una base de datos
- Normalmente, el esquema de las entidades de datos estructurados es tabular; es decir, los datos se representan en una o varias tablas que constan de filas para representar cada instancia de una entidad de datos y columnas para representar los atributos de la entidad
- Los datos estructurados suelen almacenarse en una base de datos en la que varias tablas pueden hacer referencia entre sí mediante el uso de valores de clave en un modelo relacional
- Suelen ser datos tabulares que se representan mediante filas y columnas en una base de datos
- Las bases de datos que contienen tablas de este tipo se denominan BD relacionales
- Un servicio de Azure de este tipo es Azure SQL Database
Datos Semi-Estructurados
- Los datos semiestructurados son información que tiene cierta estructura, pero que permite alguna variación entre las instancias de entidad.
- Por ejemplo, aunque la mayoría de los clientes pueden tener una dirección de correo electrónico, algunos podrían tener varias y otros, ninguna.
- Un formato común para los datos semiestructurados es la notación de objetos JavaScript (JSON).
- Este tipo de documento permite almacenar datos de una manera más flexible ya que se pueden guardar datos distintos para cada registro
- Son información que no residen en una BD relacional pero que contienen cierta estructura
- Este tipo de documento permite almacenar datos de una manera más flexible ya que se pueden guardar datos distintos para cada registro
- Azure Cosmos DB permite almacenar documentos tipo JSON
- La estructura de un documento JSON se establece de la siguiente manera
- «EstudianteID»: se le conoce como objeto raíz y contiene toda la información de este documento JSON
- «Datos Personales»: es un objeto anidado
- «Asignaturas»: es una matriz anidada
Datos no estructurados
- No todos los datos están estructurados o semiestructurados.
- Por ejemplo, los documentos, imágenes, datos de audio y de vídeo y archivos binarios podrían no tener una estructura específica.
- Son datos que no cuentan con ningún tipo de estructura. Por ejemplo: archivos multimedia (audio, imágenes y vídeo)
- Se encuentran normalmente en plataformas de streamming
- Por ejemplo en una aplicación que reproduce música las canciones no son un datos estructural y se pueden representar en un formato JSON , sin embargo se deben poder almacenar en algún lugar pero no se modifican solo se consultan
- Azure Blob Storage es un servicio que permite almacenar este tipo de datos
Creación de Bases de Datos
Diseño Conceptual:
- Es construir un modelo llamado Entidad-Relación
- Por ejemplo tenemos la entidad «Producto» con los atributos: Identificador / Cantidad / Descripción
- Y normalmente una BD esta constituida por más de una entidad que se relacionan entre sí por un contexto
- Este modelo es independiente del sistema de administración de BD (DBMS) donde se va a implementar y no requiere conocimientos técnicos para ser interpretado
Diseño Lógico
- Es la transformación del diseño conceptual y la base del modelo relacional
- Es una forma estándar de representar las entidades, sus relaciones y los detalles técnicos de estas
- Por ejemplos características de los atributos, relaciones de los datos y los tipos de relaciones entre las entidades
- Este también es independiente al (DBMS) en que se va a implementar la BD
Diseño físico
- Se crea a partir del diseño lógico y la información del uso esperado de la BD, que se refiere al:
- Volumen de datos
- Transformaciones que el sistema deberá procesar
- Frecuencia de uso
- Calidad del servicio esperada
- Con esta información se definen las características y configuraciones físicas y lógicas que la BD deberá tener
Clasificación de BD Según Uso
OLTP
- OLTP: Online Transsaccion Processing
- Utilizada para realizar transacciones (cambios constantes en los datos)
- Un ejemplo es un sistema bancario ya que constantemente se realizan aumento y disminución de saldos
- Los usuarios profesionales pueden consumir estos datos agregadolos previamente en un modelo analítico como informes o paneles.
- Azure SQL Database es de tipo OLTP
Exploración del procesamiento de datos transaccionales
- Un sistema de procesamiento de datos transaccional es lo que la mayoría de los usuarios considera la función principal de la informática empresarial.
- Un sistema transaccional registra las transacciones que encapsulan eventos específicos de los que la organización quiere realizar un seguimiento.
- Los usuarios profesionales pueden consumir datos agregados previamente en un modelo analítico como informes o paneles.
- Piense en una transacción como una unidad de trabajo pequeña y discreta.
- Una transacción es una secuencia de operaciones atómicas
- —————————————————————————————————————————
- Esto significa que todas las operaciones de la secuencia se deben completar correctamente
- O si ocurre un error se deben revertir todas las operaciones
- Cada transacción de BD tiene un punto inicial definido, seguidos de los pasos para modificar los datos de la BD
- Al final BD confirma los cambios para que estos sean permanentes o los revierte al punto inicial
- —————————————————————————————————————————
- Los sistemas transaccionales suelen ser de gran volumen; a veces, controlan muchos millones de transacciones en un solo día.
- El trabajo que realizan los sistemas transaccionales a menudo se conoce como procesamiento de transacciones en línea (OLTP).
- Las soluciones OLTP se basan en un sistema de base de datos en el que el almacenamiento de datos está optimizado tanto para las operaciones de lectura como para las de escritura, con el fin de admitir cargas de trabajo transaccionales en las que se crean, recuperan, actualizan y eliminan registros de datos (a menudo denominadas operaciones CRUD).
- Los sistemas OLTP suelen usarse para admitir aplicaciones activas que procesan datos empresariales, a menudo denominadas aplicaciones de línea de negocio (LOB).
- Estas operaciones se aplican transaccionalmente, de una forma que garantiza la integridad de los datos almacenados en la base de datos.
ACID
- Para ello, los sistemas OLTP aplican transacciones que admiten la denominada semántica ACID:
- Atomicidad:
- Cada transacción se trata como una unidad única, la cual se completa correctamente o produce un error general.
- garantiza que cada transacción se trata como una unidad única, donde se completa correctamente o produce un error
- Coherencia:
- Las transacciones solo pueden pasar los datos de la base de datos de un estado válido a otro.
- garantiza que una transacción solo puede pasar de un estado valido a otro
- Aislamiento:
- Las transacciones simultáneas no pueden interferir entre sí y deben dar lugar a un estado coherente de la base de datos.
- garantiza que la ejecución simultanea de transacciones deja la BD como si estas se ejecutarán de manera secuencial
- Durabilidad:
- Cuando se ha confirmado una transacción, permanece confirmada. Una vez que la transacción de transferencia de la cuenta se ha completado, los saldos revisados de las cuentas se conservan, de modo que, incluso si el sistema de base de datos se desactiva, la transacción confirmada se refleje cuando se vuelva a activar
- garantiza que una vez confirmada la transacción permanecerá confirmada incluso se se produce un error en el sistema estos
OLAP
- OLAP: Online Analytical Processing
- Normalmente utilizada para el análisis ya que por lo general los datos almacenados permanecen estáticos y sin cambios
- Por ejemplo: sistema de respaldos que guarda datos históricos, los cuales pueden ser consultados para generar gráficas o informes
- Azure table Storage nos permite utilizar este servicio
Exploración del procesamiento de datos analíticos
- el procesamiento de datos analíticos usa sistemas de solo lectura (o principalmente de lectura) que almacenan grandes volúmenes de datos históricos o métricas empresariales
- Los análisis pueden basarse en una instantánea de los datos en un momento concreto o en una serie de instantáneas.
- Son sistemas de solo lectura
- Se utilizan para analizar datos y tomar decisiones
- Los lagos de datos son comunes en escenarios de procesamiento analítico de datos modernos, en los que se debe recopilar y analizar un gran volumen de datos basados en archivos.
- Los almacenamientos de datos son un recurso establecido para almacenar datos en un esquema relacional optimizado para operaciones de lectura, principalmente consultas para admitir informes y visualización de datos. El esquema de almacenamiento de datos puede requerir alguna desnormalización de los datos en un origen de datos OLTP (que introduce cierta duplicación para que las consultas se lleven a cabo con mayor rapidez).
- Un modelo OLAP es un tipo agregado de almacenamiento de datos optimizado para cargas de trabajo analíticas. Las agregaciones de datos se encuentran en diferentes dimensiones y distintos niveles, lo que permite rastrear agrupando datos y explorar en profundidad las agregaciones en varios niveles jerárquicos;
- Dado que los datos de OLAP se agregan previamente, las consultas para devolver los resúmenes que contiene se pueden ejecutar rápidamente.
- Los diferentes tipos de usuario pueden llevar a cabo el trabajo analítico de datos en distintas fases de la arquitectura general. Por ejemplo:
- Los científicos de datos pueden trabajar directamente con archivos de datos en un lago de datos para explorar los datos y crear modelos a partir de estos.
- Los analistas de datos pueden consultar tablas directamente en el almacenamiento de datos para generar informes y visualizaciones complejos.
- Los usuarios profesionales pueden consumir datos agregados previamente en un modelo analítico como informes o paneles.
- Los detalles específicos de un sistema de procesamiento analítico pueden variar según la solución, pero una arquitectura común para el análisis a escala empresarial tiene el siguiente aspecto:
- Los archivos de datos se pueden almacenar en un lago de datos central para analizarlos.
- Un proceso de extracción, transformación y carga (ETL) permite copiar datos de archivos y bases de datos OLTP en un almacenamiento de datos optimizado para la actividad de lectura. Normalmente, un esquema de almacenamiento de datos se basa en tablas de hechos que contienen valores numéricos que quiere analizar (por ejemplo, importes de ventas), con tablas de dimensiones relacionadas que representan las entidades por las que quiere medirlas (por ejemplo, cliente o producto).
- Los datos del almacenamiento de datos se pueden agregar y cargar en un modelo de procesamiento analítico en línea (OLAP) o un cubo. Los valores numéricos agregados (medidas) de las tablas de hechos se calculan para intersecciones de dimensiones a partir de tablas de dimensiones. Por ejemplo, los ingresos de ventas podrían sumarse por fecha, cliente y producto.
- Los datos del lago de datos, el almacenamiento de datos y el modelo analítico se pueden consultar para generar informes, visualizaciones y paneles.
Tipos de Análisis
Realizar una mejor toma de decisiones ayuda a alcanzar una mayor grado de eficiencia y reducir costos, esto se puede lograr por medio del análisis que se divide de la siguiente manera
Análisis de datos es un término comodín que cubre una variedad de actividades, cada una con su propio enfoque y objetivos. Estas actividades se pueden clasificar como análisis descriptivo, de diagnóstico, predictivo, prescriptivo y cognitivo.
Análisis Descriptivo
- Responde a: ¿Qué esta pasando? que ha sucedido? en función de datos históricos.
- Toma los datos sin procesar y proporciona información valiosa sobre el pasado
- Estos solo indican si algo esta bien o mal
- Por ejemplo: con base en los datos del último vez se puede ver que los ciberataques aumentaron 47% con respecto al mes anterior
- Mediante el desarrollo de KPI (indicadores clave de rendimiento), estas estrategias pueden facilitar el seguimiento del éxito o el fracaso de los objetivos clave. En muchos sectores se usan métricas como la rentabilidad de la inversión (ROI)
Análisis Diagnóstico
- Responde a: ¿Por qué está pasando? responder preguntas sobre las causas de algo
- Es decir explica algún suceso
- Los datos históricos pueden comenzar a medirse con otros datos para responder a la pregunta por que sucedió algo en el pasado
- Es el proceso de recopilar e interpretar diferentes conjuntos de datos para identificar anomalías, detectar patrones y determinar relaciones
- Por ejemplo: con ayuda de los datos históricos se puede determinar que hubo un periodo de actualizaciones en los equipos de computo que no se realizó
-
Las técnicas de análisis de diagnóstico complementan el análisis descriptivo más básico. Toman los resultados del análisis descriptivo y profundizan en la búsqueda de la causa. Los indicadores de rendimiento se investigan aún más para descubrir por qué han sido mejores o peores. Esto se suele realizar en tres pasos:
- Identificación de anomalías en los datos. Pueden ser cambios inesperados en una métrica o en un mercado determinado.
- Recopilación de datos relacionados con estas anomalías.
- Uso de técnicas estadísticas para detectar relaciones y tendencias que expliquen estas anomalías.
Análisis Predictivo
- Responde a: ¿Qué pasará? responder a preguntas sobre lo que ocurrirá en el futuro
- Es una categoría de inteligencia empresarial (Business Intelligence)
- Que utiliza variables descriptivas y predictivas del pasado para analizar e identificar la probabilidad de un resultado futuro
- Por ejemplo: si no se actualizan los equipos los ciberataques continuarán aumentando
- Las técnicas de análisis predictivo usan datos históricos para identificar tendencias y determinar la probabilidad de que se repitan. Las herramientas de análisis predictivo proporcionan conclusiones valiosas sobre lo que puede ocurrir en el futuro. Engloban diversas técnicas estadísticas y de aprendizaje automático, como las de redes neuronales, árboles de decisión y regresión.
Análisis Prescriptivo
- Responde a: ¿Qué se debe realizar? responder preguntas sobre las acciones que se deben llevar a cabo para lograr un objetivo.
- Es una combinación de datos, modelos matemáticos y reglas comerciales para determinar las acciones que influyan en los resultados futuros deseados
- Por ejemplo: es necesario realizar la actualización y crear un mecanismo de alertas que evite que este suceso vuelva a ocurrir
- Mediante las conclusiones del análisis predictivo, se pueden tomar decisiones basadas en datos. Esta técnica permite que, en caso de incertidumbre, las empresas tomen decisiones fundamentadas. Las técnicas de análisis prescriptivo dependen de estrategias de aprendizaje automático para buscar patrones en conjuntos de datos de gran tamaño. Mediante el análisis de eventos y decisiones anteriores, se puede calcular la probabilidad de otros resultados.
Análisis Cognitivo
- Puede ayudarnos a automatizar o mejorar procesos, ya que reúne tecnologías inteligentes
- Aplicando semántica, algoritmos de Inteligencia artificial y técnicas de aprendizaje como el aprendizaje profundo y automático
- Por ejemplo: con este análisis se podrían detectar amenazas en la red casi de manera inmediata al registrar algún comportamiento inusual incluso se podría ejecutar acciones correctivas evitando perder tiempo que es crucial en temas de seguridad
-
El análisis cognitivo intenta obtener inferencias a partir de datos y patrones existentes, derivar conclusiones en función de KB existentes y, después, agregar estos resultados a la KB para futuras inferencias, un bucle de comentarios de autoaprendizaje. El análisis cognitivo ayuda a saber lo que podría ocurrir si cambiaran las circunstancias y cómo se podrían controlar estas situaciones.
Las inferencias no son consultas estructuradas basadas en una base de datos de reglas, sino supuestos no estructurados que se recopilan de varios orígenes y se expresan con distintos grados de confianza. El análisis cognitivo eficaz depende de algoritmos de aprendizaje automático. Usa varios conceptos de NLP (Procesamiento de lenguaje natural) para entender orígenes de datos desaprovechados anteriormente, como los registros de conversaciones de centros de llamadas y revisiones de productos.
Teóricamente, al aprovechar las ventajas de la informática en paralelo y distribuida masiva, y los costos decrecientes del almacenamiento de datos y de la capacidad de computación, no hay ningún límite en el desarrollo cognitivo que estos sistemas pueden lograr.
Clasificación de BD Según Almacén
Las BD de pueden clasificar de acuerdo a su almacén de datos en:
- Almacenes de archivos
- Bases de Datos
Almacenes de archivos
Exploración del almacenamiento de archivos
La capacidad de almacenar datos en archivos es un elemento básico de cualquier sistema informático
El formato de archivo específico que se usa para almacenar datos depende de una serie de factores, entre los que se incluyen los siguientes:
- El tipo de datos que se almacenan (estructurados, semiestructurados o no estructurados).
- Las aplicaciones y los servicios que tendrán que leer, escribir y procesar los datos.
- La necesidad de que los archivos de datos sean legibles para los usuarios o estén optimizados para un almacenamiento y procesamiento eficientes.
Archivos de texto delimitado (CSV)
- El formato más común para los datos delimitados son los valores separados por comas (CSV), en los que los campos están separados por comas y las filas finalizan con un retorno de carro o una nueva línea. (Opcionalmente, la primera línea puede incluir los nombres de campo.)
- separados por tabulaciones (TSV)
- delimitados por espacios (en los que se usan tabulaciones o espacios para separar los campos),
- datos de ancho fijo en los que a cada campo se le asigna un número fijo de caracteres.
- El texto delimitado es una buena opción para los datos estructurados a los que necesita tener acceso una amplia gama de aplicaciones y servicios en un formato legible.
Notación de objetos JavaScript (JSON)
- usa un esquema de documento jerárquico para definir entidades de datos (objetos) que tienen varios atributos
- Cada atributo puede ser un objeto (o una colección de objetos ), lo que hace de JSON un formato flexible adecuado tanto para datos estructurados como semiestructurados.
- Tenga en cuenta que los objetos se incluyen entre llaves ({..}) y las colecciones se incluyen entre corchetes ([..]).
- Los atributos se representan mediante pares nombre:valor y se separan por comas (,).
{ «customers»: [ { «firstName»: «Joe», «lastName»: «Jones», «contact»: [ { «type»: «home», «number»: «555 123-1234» }, { «type»: «email», «address»: «joe@litware.com» } ] }, { «firstName»: «Samir», «lastName»: «Nadoy», «contact»: [ { «type»: «email», «address»: «samir@northwind.com» } ] } ] }
Lenguaje de marcado extensible (XML)
- formato de datos legible popular en la década de 1990 y 2000
- En gran medida lo ha reemplazado el formato JSON
- usa etiquetas entre corchetes angulares (../) para definir elementos y atributos
Objeto binario grande (BLOB)
- todos los archivos se almacenan como datos binarios (1 y 0), pero en los formatos legibles los bytes de datos binarios se asignan a caracteres imprimibles (normalmente a través de un esquema de codificación de caracteres como ASCII o Unicode).
- algunos formatos de archivo, especialmente para los datos no estructurados, almacenan los datos como datos binarios sin formato que las aplicaciones deben interpretar y representar
- Los tipos comunes de datos almacenados como datos binarios incluyen imágenes, vídeo, audio y documentos específicos de aplicaciones.
Formatos de archivo optimizados
- Aunque los formatos legibles para datos estructurados y semiestructurados pueden ser útiles, normalmente no están optimizados para el procesamiento o el espacio de almacenamiento. Con el paso del tiempo, se han desarrollado algunos formatos de archivo especializados que permiten la compresión, la indexación y un almacenamiento y procesamiento eficientes.
Avro
- formato basado en filas creado por Apache
- Cada registro contiene un encabezado que describe la estructura de los datos en ese registro
- Este encabezado se almacena como JSON.
- Los datos, se almacenan como información binaria
- Una aplicación usa la información del encabezado para analizar los datos binarios y extraer los campos que contienen
- es un formato adecuado para comprimir datos y reducir los requisitos de almacenamiento y ancho de banda de red.
ORC
- formato de columnas de filas optimizadas (organiza los datos en columnas en lugar de en filas)
- desarrolló HortonWorks para optimizar las operaciones de lectura y escritura en Apache Hive (Hive es un sistema de almacenamiento de datos que admite resúmenes de datos rápidos y consultas en grandes conjuntos de datos).
- Un archivo ORC contiene franjas de datos
- Cada franja contiene los datos de una columna o de un conjunto de columnas
- Una franja contiene un índice de las filas de dicha franja, los datos de cada fila y un pie de página que contiene información estadística (count, sum, max, min, etc.) de cada columna.
Parquet
- creado por Cloudera y Twitter
- Un archivo Parquet contiene grupos de filas.
- Los datos de cada columna se almacenan juntos en el mismo grupo de filas. Cada grupo de filas contiene uno o varios fragmentos de datos.
- Incluye metadatos que describen el conjunto de filas que hay en cada fragmento
- Parquet destaca por almacenar y procesar tipos de datos anidados de forma eficaz.
- Admite esquemas de compresión y codificación muy eficaces.
BASES DE DATOS RELACIONALES
Bases de datos relacionales
Introducción:
- Cuando se comenzó a utilizar las BD cada organización almacenan su información con su propio estructura lo que provocaba diversas complicaciones, por ejemplo
- Los desarrolladores requerían demasiada información sobre la estructura de los datos
- Era ineficaces y costosas de mantener y difícil de optimizar para que la aplicación tuviera un buen rendimiento
Características:
- Las bases de datos relacionales suelen usarse para almacenar y consultar datos estructurados.
- Los datos se almacenan en tablas que representan entidades
- A cada instancia de una entidad se le asigna una clave principal que la identifica de forma única
- estas claves se usan para hacer referencia a la instancia de entidad en otras tablas.
- Este uso de claves para hacer referencia a entidades de datos permite normalizar una base de datos relacional, esto conlleva la eliminación de valores de datos duplicados
- Las tablas se administran y consultan mediante el Lenguaje de consulta estructurado (SQL), que se basa en un estándar ANSII,
- Las bases de datos que contienen tablas para almacenar los datos denominan BD relacionales
- Un servicio de Azure de este tipo es Azure SQL Database
- El modelo relacional proporciona una forma estándar de representar y consultar datos que cualquier aplicación puede usar
- Los tipos de datos disponibles que se pueden usar al definir una tabla dependen del sistema de base de datos que se use, aunque hay tipos de datos estándar definidos por el American National Standards Institute (ANSI) que son compatibles con la mayoría de los sistemas de base de datos
- Las BD relacionales proporcionan el modelo de BD más sencillo de almacenamiento de datos
- En una BD relacional las colecciones de mundo real se modelan en forma de tablas
- Una entidad de describe como que información se debe conocerse o conservarse
- Su nombre es por que las entidades se pueden relacionar entre sí creando una nueva tablas
- Las estructura de filas y columnas facilitan el uso inicial, sin embargo esta forma puede provocar errores en como se relacionan los datos
- Por ejemplo que pasa si un cliente tiene más de una tarjeta de crédito para realizar los pagos
- Estos problemas se pueden resolver con la normalización, que hace que los datos se dividan en un gran nuevo de tablas, con pocas columnas y bien definidas
- En una BD relacional las colecciones de entidades del mundo real se modelan en forma de tablas
- Una entidad se define como: ¿Qué información debe conocerse o conservarse?
- Las filas de una tabla tienen 1 o más columnas que definen las propiedades de la entidad
- Todas las filas tienen las mismas columnas
- Algunas columnas se utilizan para mantener la relación entre las tablas, de aquí proviene el nombre de modelo relacional
- Su nombre es por que las entidades se pueden relacionar entre sí creando una nueva tablas
Características de una BD relacional
- Todos los datos son tabulares
- Las entidades se modelan como tablas
- Cada instancia de la entidad es una fila de la tabla
- Cada propiedad se define como una columna
- Todas las filas tienen las mismas columnas
- Una tabla puede tener cualquier número de filas
- La clave principal identifica de forma exclusiva cada fila de la tabla
- La clave externa hace referencia a las filas de otra tabla relacionada
- Cada tabla requiere una clave Principal (PK) que debe ser única e irrepetible y es el identificador de cada entidad
- Cuando una instancia tiene llaves primarias de otras entidades son llamadas claves externas (FK), estas si se pueden repetir y una tabla puede contener más de una clave externa
- La mayoría de la bases de datos relacionales admiten el Lenguaje de Consulta Estructurado (SQL)
Tipos de relación
Para representar la relación entre entidades se utilizan diferentes notaciones:
- Uno a uno: por ejemplo un cliente puede tener solo una tarjeta de crédito
- Uno a varios: un cliente puede tener varios pedidos
- Varios a uno: varios productos llegan a un almacén
- Varios a Varios: varios pedidos pueden solicitar varios productos
Modelado
Una BD puede tener muchas entidades y muchas relaciones por tanto necesario seguir una serie de reglas:
- Cada tabla requiere una clave Principal (PK) que debe ser única e irrepetible y es el identificador de cada entidad
- Cuando una instancia tiene llaves primarias de otras entidades son llamadas claves externas (FK), estas si se pueden repetir y una tabla puede contener más de una clave externa
Comprensión de la normalización
- La normalización es el proceso de organizar los datos de una base de datos. Se incluye la creación de tablas y el establecimiento de relaciones entre ellas según reglas diseñadas tanto para proteger los datos como para hacer que la base de datos sea más flexible al eliminar la redundancia y las dependencias incoherentes.
- La normalización es un término que usan los profesionales de bases de datos para referirse a un proceso de diseño de esquemas que reduce al mínimo la duplicación de los datos e impone la integridad de los datos.
- Aunque hay muchas reglas complejas que definen el proceso de refactorización de los datos en varios niveles (o formas) de normalización, una definición sencilla a efectos prácticos es:
- Separar cada entidad en su propia tabla.
- Separar cada atributo discreto en su propia columna.
- Identificar de forma única cada instancia de entidad (fila) mediante una clave principal.
- Usar columnas de clave externa para vincular entidades relacionadas.
- La descomposición de atributos en columnas individuales garantiza que cada valor esté restringido a un tipo de datos adecuado
- la creación de columnas individuales aporta un nivel útil de granularidad a los datos a la hora de realizar las consultas; por ejemplo, puede filtrar fácilmente los clientes que viven en una ciudad concreta.
- Las instancias de cada entidad se identifican de forma única mediante un identificador u otro valor de clave, conocido como clave principal;
- y cuando una entidad hace referencia a otra (por ejemplo, un pedido tiene un cliente asociado), la clave principal de la entidad relacionada se almacena como una clave externa
- Normalmente, un sistema de administración de bases de datos relacionales (RDBMS) puede aplicar la integridad referencial para garantizar que un valor especificado en un campo de clave externa tenga una clave principal correspondiente existente en la tabla relacionada (lo que, por ejemplo, impide la realización de pedidos para clientes que no existen).
- En algunos casos, se puede definir una clave (principal o externa) como una clave compuesta basada en una combinación única de varias columnas
Primera forma normal
- Elimine los grupos repetidos de las tablas individuales.
- Cree una tabla independiente para cada conjunto de datos relacionados.
- Identifique cada conjunto de datos relacionados con una clave principal.
¿Qué ocurre cuando se agrega un tercer proveedor? Agregar un campo no es la respuesta, requiere modificaciones en las tablas y el programa, y no admite fácilmente un número variable de proveedores. En su lugar, coloque toda la información de los proveedores en una tabla independiente denominada Proveedores y después vincule el inventario a los proveedores con el número de elemento como clave, o los proveedores al inventario con el código de proveedor como clave.
Segunda forma normal
- Cree tablas independientes para conjuntos de valores que se apliquen a varios registros.
- Relacione estas tablas con una clave externa.
Los registros no deben depender de nada que no sea una clave principal de una tabla, una clave compuesta si es necesario. Por ejemplo, considere la dirección de un cliente en un sistema de contabilidad. La dirección se necesita en la tabla Clientes, pero también en las tablas Pedidos, Envíos, Facturas, Cuentas por cobrar y Colecciones. En lugar de almacenar la dirección de un cliente como una entrada independiente en cada una de estas tablas, almacénela en un lugar, ya sea en la tabla Clientes o en una tabla Direcciones independiente.
Tercera forma normal
- Elimine los campos que no dependan de la clave.
Los valores de un registro que no sean parte de la clave de ese registro no pertenecen a la tabla. En general, siempre que el contenido de un grupo de campos pueda aplicarse a más de un único registro de la tabla, considere colocar estos campos en una tabla independiente.
Por ejemplo, en una tabla Contratación de empleados, puede incluirse el nombre de la universidad y la dirección de un candidato. Pero necesita una lista completa de universidades para enviar mensajes de correo electrónico en grupo. Si la información de las universidades se almacena en la tabla Candidatos, no hay forma de enumerar las universidades que no tengan candidatos en ese momento. Cree una tabla Universidades independiente y vincúlela a la tabla Candidatos con el código de universidad como clave.
EXCEPCIÓN: cumplir la tercera forma normal, aunque en teoría es deseable, no siempre es práctico. Si tiene una tabla Clientes y desea eliminar todas las dependencias posibles entre los campos, debe crear tablas independientes para las ciudades, códigos postales, representantes de venta, clases de clientes y cualquier otro factor que pueda estar duplicado en varios registros. En teoría, la normalización merece el trabajo que supone. Sin embargo, muchas tablas pequeñas pueden degradar el rendimiento o superar la capacidad de memoria o de archivos abiertos.
Puede ser más factible aplicar la tercera forma normal sólo a los datos que cambian con frecuencia. Si quedan algunos campos dependientes, diseñe la aplicación para que pida al usuario que compruebe todos los campos relacionados cuando cambie alguno.
Otras formas de normalización
La cuarta forma normal, también llamada Forma normal de Boyce Codd (BCNF, Boyce Codd Normal Form), y la quinta forma normal existen, pero rara vez se consideran en un diseño real. Si no se aplican estas reglas, el diseño de la base de datos puede ser menos perfecto, pero no debería afectar a la funcionalidad.
Normalización de una tabla de ejemplo
Estos pasos demuestran el proceso de normalización de una tabla de alumnos ficticia.
-
Tabla sin normalizar:
Nº alumno Tutor Despacho-Tut Clase1 Clase2 Clase3 1022 García 412 101-07 143-01 159-02 4123 Díaz 216 101-07 143-01 179-04 -
Primera forma normal: sin grupos repetidos
Las tablas sólo deben tener dos dimensiones. Puesto que un alumno tiene varias clases, estas clases deben aparecer en una tabla independiente. Los campos Clase1, Clase2 y Clase3 de los registros anteriores son indicativos de un problema de diseño.
Las hojas de cálculo suelen usar la tercera dimensión, pero las tablas no deberían hacerlo. Otra forma de considerar ese problema es con una relación de uno a varios y poner el lado de uno y el lado de varios en tablas distintas. En su lugar, cree otra tabla en la primera forma normal eliminando el grupo repetido (Nº clase), según se muestra a continuación:
Nº alumno Tutor Despacho-Tut Nº clase 1022 García 412 101-07 1022 García 412 143-01 1022 García 412 159-02 4123 Díaz 216 101-07 4123 Díaz 216 143-01 4123 Díaz 216 179-04 -
Segunda forma normal: eliminar los datos redundantes
Observe los diversos valores de Nº clase para cada valor de Nº alumno en la tabla anterior. Nº clase no depende funcionalmente de Nº alumno (la clave principal), de modo que la relación no cumple la segunda forma normal.
Las tablas siguientes demuestran la segunda forma normal:
Alumnos:
Nº alumno Tutor Despacho-Tut 1022 García 412 4123 Díaz 216 Registro:
Nº alumno Nº clase 1022 101-07 1022 143-01 1022 159-02 4123 101-07 4123 143-01 4123 179-04 -
Tercera forma normal: eliminar los datos que no dependen de la clave
En el último ejemplo, Despacho-Tut (el número de despacho del tutor) es funcionalmente dependiente del atributo Tutor. La solución es pasar ese atributo de la tabla Alumnos a la tabla Personal, según se muestra a continuación:
Alumnos:
Nº alumno Tutor 1022 García 4123 Díaz Personal:
Nombre Sala Dept. García 412 42 Díaz 216 42
SQL
- SQL significa Lenguaje de consulta estructurado
- Se usa para comunicarse con una base de datos relacional
- Se trata del lenguaje estándar para los sistemas de administración de bases de datos relacionales
- Algunos sistemas de administración de bases de datos relacionales habituales que utilizan SQL incluyen Microsoft SQL Server, MySQL, PostgreSQL, MariaDB y Oracle.
- El Instituto Nacional Estadounidense de Estándares (ANSI) estandarizó originalmente el lenguaje SQL en 1986 y, luego, la Organización Internacional de Normalización (ISO), en 1987. Desde entonces, el estándar se ha ampliado varias veces a medida que los proveedores de bases de datos relacionales han agregado nuevas características a sus sistemas. Además, la mayoría de los proveedores de bases de datos incluyen sus propias extensiones que no forman parte del estándar, lo que ha dado lugar a la creación de varios dialectos de SQL.
- muchos sistemas de administración de bases de datos también cuentan con extensiones propias adicionales, estas extensiones proporcionan una funcionalidad que no se incluye en el estándar de SQL y contienen áreas como la administración de la seguridad y la capacidad de programación.
- muchos sistemas de administración de BD’s tienen extensiones propias que proporcionan funcionalidades extras en temas de seguridad o programación que no se incluyen en el estándar SQL, es estos se les llama «Dialectos»
- Por ejemplo, Microsoft SQL Server y los servicios de base de datos de Azure basados en el motor de base de datos de SQL Server usan Transact-SQL.
-
Algunos dialectos populares de SQL incluyen:
- Transact-SQL (T-SQL). Esta versión de SQL la usan los servicios Microsoft SQL Server y Azure SQL.
- pgSQL. Se trata del dialecto, con extensiones, que se implementa en PostgreSQL.
- PL/SQL. Se trata del dialecto que utiliza Oracle. PL/SQL significa «lenguaje de procedimientos/SQL».
Tipos de instrucción SQL
Las instrucciones SQL se agrupan en tres grupos lógicos principales:
- Lenguaje de definición de datos (DDL):que se aplican sobre los componentes, columnas o sobre la tabla
- Lenguaje de control de datos (DCL)
- Lenguaje de manipulación de datos (DML): que se aplican a los registros de una tabla
Instrucciones DDL
Las instrucciones DDL se usan para crear, modificar y quitar tablas y otros objetos de una base de datos (tabla, procedimientos almacenados, vistas, etc.).
Las instrucciones de DDL más habituales son las siguientes:
Advertencia: La instrucción DROP es muy eficaz. Al quitar una tabla, se pierden todas las filas de esa tabla. Salvo en el caso de que tenga una copia de seguridad, no podrá recuperar los datos.
- En el siguiente ejemplo se crea una nueva tabla de base de datos.
- Los elementos entre paréntesis especifican los detalles de cada columna, como el nombre, el tipo de datos, si la columna debe contener siempre un valor (distinto de NULL) y si los datos de la columna se usan para identificar de forma única una fila (CLAVE PRINCIPAL).
- Cada tabla debe tener una clave principal, aunque SQL no aplica forzosamente esta regla.
Nota
- Las columnas marcadas como NOT NULL se denominan columnas obligatorias. Si omite la cláusula NOT NULL, puede crear filas que no contengan un valor en la columna.
- Se considera que una columna vacía de una fila tiene un valor NULL.
CREATE TABLE Product
(
ID INT PRIMARY KEY,
Name VARCHAR(20) NOT NULL,
Price DECIMAL NULL
);
- Los tipos de datos disponibles para las columnas de una tabla variarán en función del sistema de administración de bases de datos.
- Aun así, la mayoría de los sistemas de administración de bases de datos admiten tipos numéricos como INT (un número entero), DECIMAL (un número decimal) y tipos de cadena como VARCHAR (VARCHAR significa «datos de caracteres de longitud variable»).
MCT
- Para crear una tabla se utiliza la instrucción CREATE TABLE
- Dentro de los paréntesis se definen los campos (nombre_campo tipo_dato restricciones)
- restricciones:
- Primary Key: clave primaria
- NOT NULL: indica que la columna no puede estar vacia
- UNIQUE: indica que lo valores de na columna no se pueden repetir
Palabras reservadas
- CREATE: permite crear objetos
- INSERT: almacena datos en una tabla
- UPDATE: actualiza datos de una tabla
- DELETE: quita filas de una tabla
- SELECT: consulta datos de una tabla
- FROM: indica que tabla se va a consultar
- WHERE: permite agregar una condición
- JOIN: unión de tablas
- ON: comparación entre columnas
Instrucciones DDL
- Se utilizan para crear, modificar y eliminar tablas u otros objetos como índices, vistas, procedimientos almacenados
- Las más comunes son:
- CREATE: permite crear objetos
- ALTER: modifica la estructura de un objeto (Ej: agregar o quitar columna)
- DROP: eliminar un objeto
- RENAME: renombrar un objeto
Consideraciones
- Al aplicar DROP sobre una tabla esta y sus filas son eliminadas y no se pueden recupar a menos que tenga un respaldo
- Las columnas con NOT NULL se consideran obligatorias
- Las columnas NULL pueden tener o no datos
Instrucciones DCL
Los administradores de bases de datos suelen usar instrucciones DCL para administrar el acceso a objetos de una base de datos mediante la concesión, denegación o revocación de permisos a usuarios o grupos específicos.
Las tres instrucciones DCL principales son las siguientes:
Por ejemplo, la siguiente instrucción GRANT permite a un usuario denominado user1 leer, insertar y modificar datos en la tabla Product.
GRANT SELECT, INSERT, UPDATE
ON Product
TO user1;
Instrucciones DML
Las instrucciones DML se usan para manipular las filas de las tablas. Estas instrucciones permiten recuperar (consultar) datos, insertar nuevas filas o modificar filas existentes. También puede eliminar filas si ya no las necesita.
Las cuatro instrucciones DML principales son las siguientes:
- La forma básica de una instrucción INSERT insertará una fila cada vez
- De forma predeterminada, las instrucciones SELECT, UPDATE y DELETE se aplican a todas las filas de una tabla
- Normalmente, se aplica una cláusula WHERE con estas instrucciones para especificar criterios, de forma que solo se seleccionen, actualicen o eliminen las filas que cumplan estos criterios.
- SQL no ofrece solicitudes de confirmación, por lo que debe tener cuidado al usar DELETE o UPDATE sin una cláusula WHERE, ya que podría perder o modificar una gran cantidad de datos.
El código siguiente es un ejemplo de una instrucción SQL que permite seleccionar todas las filas (indicadas con *) de la tabla Customer, donde el valor de la columna Ciudad es «Seattle»:
SELECT *
FROM Customer
WHERE City = 'Seattle';
Para recuperar solo un subconjunto específico de columnas de la tabla, puede enumerarlas en la cláusula SELECT, tal como se muestra a continuación:
SELECT FirstName, LastName, Address, City
FROM Customer
WHERE City = 'Seattle';
Si una consulta devuelve muchas filas, estas no necesariamente aparecen en una secuencia concreta. Si quiere ordenar los datos, puede agregar una cláusula ORDER BY. Los datos se ordenarán por la columna especificada:
SELECT FirstName, LastName, Address, City
FROM Customer
WHERE City = 'Seattle'
ORDER BY LastName;
También puede ejecutar instrucciones SELECT que recuperen datos de varias tablas mediante una cláusula JOIN. Las combinaciones indican cómo las filas de una tabla se conectan con las filas de la otra para determinar qué datos se van a devolver. Una condición de combinación típica coincide con una clave externa de una tabla y su clave principal asociada en la otra tabla.
En la consulta siguiente se muestra un ejemplo que une las tablas Customer y Order. La consulta usa alias de tabla para abreviar los nombres de tabla al especificar qué columnas deben recuperarse en la cláusula SELECT y qué columnas deben coincidir en la cláusula JOIN.
SELECT o.OrderNo, o.OrderDate, c.Address, c.City
FROM Order AS o
JOIN Customer AS c
ON o.Customer = c.ID
En el ejemplo siguiente se muestra cómo modificar una fila existente mediante SQL. Se cambia el valor de la columna Address de la tabla Customer para las filas que tienen el valor 1 en la columna ID. Todas las demás filas permanecen sin cambios:
UPDATE Customer
SET Address = '123 High St.'
WHERE ID = 1;
Advertencia: Si omite la cláusula WHERE, una instrucción UPDATE modificará todas las filas de la tabla.
Use la instrucción DELETE para quitar filas. Debe especificar la tabla en la que se va a realizar la eliminación y una cláusula WHERE que identifique las filas que se van a eliminar:
DELETE FROM Product
WHERE ID = 162;
Advertencia: Si omite la cláusula WHERE, una instrucción DELETE quitará todas las filas de la tabla.
La instrucción INSERT tiene un formato ligeramente diferente. Debe especificar una tabla y las columnas en una cláusula INTO, y una lista de valores que se van a almacenar en estas columnas. El lenguaje SQL estándar solo admite la inserción de una fila cada vez, tal como se muestra en el ejemplo siguiente. Algunos dialectos le permiten especificar varias cláusulas VALUES para agregar varias filas a la vez:
INSERT INTO Product(ID, Name, Price)
VALUES (99, 'Drill', 4.99);
Nota:
En este tema se describen algunas instrucciones SQL y sintaxis básicas para ayudarle a comprender cómo se usa SQL para trabajar con objetos en una base de datos. Si quiere obtener más información sobre cómo consultar datos con SQL, revise la ruta de aprendizaje Introducción a las consultas con Transact-SQL en Microsoft Learn.
MCT:
Instrucciones DML
- Se utilizan para manipular las filas de una tabla ( insertar / modificar / eliminar / consultar )
- SET: Permite indicar el valor por el cual se modificará un campo en una instrucción UPDATE
- *: Se utiliza después del SELECT para indicar que se deben obtener todas las columnas
Consideraciones
- La forma básica de una instrucción INSERT insertará una fila de forma predeterminada
- Las instrucciones SELECT / UPDATE / DELETE se aplican a todas las filas de una tabla
- La clausula WHERE es el medio para determinar a que filas deseamos aplicarle la instrucción
- SQL: no ofrece solicitudes de confirmación por lo que se debe tener cuidado al usar DELETE / UPDATE sin una clausula WHERE por que podría perder o modificar una gran cantidad de datos
Cláusulas y condiciones
- FROM: indica la tabla que se desea utilizar
- JOIN: permite la combinación de tablas
- ORDER BY: permite ordenar las filas
- Algunas condiciones puede utilizar operadores lógicos (= < >)
Vista
- Una vista es una tabla virtual basada en los resultados de una consulta SELECT.
CREATE VIEW Deliveries
AS
SELECT o.OrderNo, o.OrderDate,
c.FirstName, c.LastName, c.Address, c.City
FROM Order AS o JOIN Customer AS c
ON o.CustomerID = c.ID;
- Puede consultar la vista y filtrar los datos de la misma forma que una tabla.
SELECT OrderNo, OrderDate, LastName, Address
FROM Deliveries
WHERE City = 'Seattle';
MCT
- Existen consultas que son constantemente utilizadas por lo que para mejorar el rendimiento de la BD y que estas consultas se procesen desde cero se pueden utilizar vistas
- Es una tabla virtual definida a partir de una consulta determinada que puede contener distintas columnas de varias tablas
- También se pueden utilizar para combinar datos de dos tablas que se consultan constantemente
Tipos de vistas
- Vistas indexadas: vistan en las que se crean un índice y que mejoran el rendimiento de las consultas
- Vistas con particiones: combina datos horizontales con particiones de un conjunto de tablas miembro en uno o más servidores
- Vistas del sistemas: expone metadatos que se usan para devolver información de la instancia de SQL Server u objetos definidos en la instancia. Por ejemplo la vista del catalogo sys.database
Procedimiento almacenado
- Un procedimiento almacenado define instrucciones SQL que se pueden ejecutar a petición
- Los procedimientos almacenados se usan para encapsular la lógica de programación en una base de datos para las acciones que las aplicaciones deben realizar al trabajar con datos.
- Puede definir un procedimiento almacenado con parámetros
CREATE PROCEDURE RenameProduct @ProductID INT, @NewName VARCHAR(20) AS UPDATE Product SET Name = @NewName WHERE ID = @ProductID;
Cuando haya que cambiar el nombre de un producto, puede ejecutar el procedimiento almacenado y pasar el identificador del producto y el nuevo nombre que se va a asignar:
EXEC RenameProduct 201, 'Spanner';
índice
- Un índice le ayuda a buscar datos en una tabla
- Piense en el índice de una tabla como en el índice de la parte final de un libro. El índice de un libro contiene un conjunto ordenado de contenido, junto a las páginas en las que aparece. El índice le servirá para buscar la referencia a un elemento del libro.
-
Cuando se crea un índice en una base de datos, se especifica una columna de la tabla
-
el índice contiene una copia de estos datos con un criterio de ordenación y punteros a las filas correspondientes de la tabla.
- Cuando el usuario ejecuta una consulta que especifica esa columna en la cláusula WHERE, el sistema de administración de bases de datos puede utilizar el índice para capturar los datos más rápidamente que si tuviera que examinar toda la tabla fila por fila.
- Por ejemplo, podría usar el código siguiente para crear un índice en la columna Name de la tabla Product:
CREATE INDEX idx_ProductName
ON Product(Name);
El índice crea una estructura basada en árbol que el optimizador de consultas del sistema de base de datos puede usar para buscar rápidamente filas en la tabla Product en función de un nombre específico (Name).
- Para una tabla que contiene pocas filas, el uso del índice probablemente no sea más eficaz que simplemente leer toda la tabla y buscar las filas solicitadas por la consulta (en cuyo caso, el optimizador de consultas omitirá el índice).
- Pero cuando una tabla tiene muchas filas, los índices pueden mejorar drásticamente el rendimiento de las consultas.
- Puede crear muchos índices en una tabla.
- Sin embargo, los índices no son gratuitos.
- Un índice consume espacio de almacenamiento y, cada vez que inserte datos en una tabla, los actualice o los elimine, tendrá que hacer el mantenimiento de sus índices.
- Este trabajo adicional puede ralentizar las operaciones de inserción, actualización y eliminación. Debe conseguir un equilibrio entre tener índices que aceleren las consultas y el coste de realizar otras operaciones.
MCT:
- Es una estructura asociada con una tabla o vista contiene claves generadas a partir de una o varias columnas
- Sirve para hacer referencia a algunos elementos determinados lo que al hacer consultas acelera la recuperación de filas de una tabla
- Cuando se crea un índice se debe especificar una columna de una tabla, el índice contiene una copia de estos datos como un criterio de ordenación y punteros a las filas correspondientes de la tabla
- Cuando el usuario realiza una consulta que contiene la columna de la cláusula WHERE el sistema de administración de BD puede utilizar el índice obtener los datos más rápidamente que si tuviera que analizar toda la fila
Índice vs Almacenamiento
- Los índices requiere espacio de almacenamiento y mantenimiento que se realiza de forma automática al modificar o eliminar datos de la tabla original
- Por esto no se recomienda crear índices para todas las columnas existentes en una tabla
- Se recomiendan solo cuando la columna sea constantemente requerida en las consultas o en tablas de solo lectura ya que tener una gran cantidad de índices puede afectar el rendimiento de una BD
Índices automáticos
- Existen índices que se crean automáticamente, por ejemplo cuando se crea una restricción «Primary Key» se crea un índice clúster único en las columnas si aún no existe un índice cluster en la tabla o o se ha especificado un índice no cluster
- Cuando se crea una restricción «UNIQUE» se creara un índice no cluster único, puede especificarse un índice cluster único si todavía no existe un índice cluster en la tabla
- Para crear un índice se requiere la siguiente sentencia
BASES DE DATOS NO RELACIONALES
Bases de datos no relacionales
- Son sistemas de administración de datos que no aplican un esquema relacional a los datos
- Una BD no relacional es la BD que no utiliza el esquema tabular de filas y columnas
- Utilizan un modelo al almacenamiento optimizado para para el tipo de datos que almacena
- Se conocen como bases de datos NoSQL
- Algunas admiten una variante del lenguaje SQL.
- Las bases de datos no relacionales permiten almacenar los datos en un formato que coincide más con la estructura original
- Si dos clientes tienen la misma dirección en una BD relacional solo se almacena la dirección una única vez, pero en una BD no relacional o de documentos la dirección se duplicará, esto aumenta el tamaño del almacenamiento y hará que el mantenimiento de los datos sea más complejo ya que si la dirección cambia se debe modificar en 2 documentos
Tipos de almacenes
- Para los datos no relacionales existen diferentes tipos de almacenes, por ejemplo:
- clave:valor
- documentos
- JSON
- grafos
- familias de columnas
- Series temporales
- Archivos compartidos
- Almacenamiento de objetos
- Bases de datos de clave-valor:
- en las que cada registro consta de una clave única y un valor asociado, que puede estar en cualquier formato.
- Asocia cada valor de datos a una clave única
- Están optimizados para las aplicaciones que realizan búsquedas simples
- Se almacenan mediante una tablas HASH
- Estas pueden recibir un gran número de compras en segundos
- Las BD de clave:valor pueden manejar el escalado de datos y cambios de estad
- Bases de datos de documentos
- que son una forma específica de base de datos de clave-valor, en la que el valor es un documento JSON (que el sistema está optimizado para analizar y consultar).
- Una BD de documentos, almacena una colección de documentos
- donde cada documento consta de campos como nombre y datos
- Los documentos se recuperan mediante claves únicas
- Normalmente los documentos contienen los datos de una sola identidad como: un cliente, producto o un pedido
- No es necesario que los documentos tengan la misma estructura
- Bases de datos de familia de columnas
- que almacenan datos tabulares con filas y columnas, pero con la posibilidad de dividir esas columnas en grupos, conocidos como familias de columnas. Cada familia de columnas contiene un conjunto de columnas que tienen una relación lógica entre sí.
- Una BD de familias de columnas organiza los datos en filas y columnas, pero a diferencias de una BD relacional permite organizar los datos con un enfoque desnormalizado para estructurar datos dispersos
- Facebook messenger hace uso del sistema de ficheros de almacenamiento masivo de de datos, por lo que esta preparado para almacenar una enorme cantidad de información en tablas de manera que después pueda ser recuperada mediante consultas por rangos, es decir mediante consultas de columnas
- Bases de datos de grafos
- que almacenan entidades como nodos con vínculos para definir relaciones entre ellas.
- Una BD de grafos almacena dos tipos de información:
- Nodos
- Bordes: especifican las relación entre los nodos
- Esta estructura hace que sea fácil realizar consultas donde las relaciones son complejas
- Por ejemplo: es el análisis de relaciones entre los usuarios de las redes sociales o hábitos de compras de los clientes en las tiendas onlines
- Series Temporales
- los almacenes de datos de series temporales son un conjunto de valores que se organizan por horas
- Recopilan grandes cantidades de datos en tiempo real a partir de una gran número de orígenes
- Normalmente tienen muchos registros y el total de los datos puede crecer rápidamente
- Archivos compartidos
- Permiten acceder a los archivos a través de una red
- Permiten establecer la seguridad y mecanismos de control de acceso
- Permiten también permitir a los servicios distribuidos proporcionar un acceso para operaciones básicas como lectura y escritura
- Permite acceder al mismo archivo desde dos ubicaciones distintas, por ejemplo 2 desarrolladores que acceden a los mismos recursos desde dos ubicaciones distintas
-
Almacenamiento de objetos
- Esta optimizado para almacenar y recuperar objetos binarios grandes, como imágenes, archivos, transmisiones de vídeo y audio, objetos de datos de gran tamaño, documentos y imágenes de disco de una MV
- Ejemplos: sitios web estáticos o de consulta es decir que no requieren interacción del usuario o modificación constante de sus datos
Exploración de roles y servicios de datos
Estos son los tres roles de trabajo principales que se ocupan de los datos de la mayoría de las organizaciones:
Administrador de base de datos
- administran bases de datos
- asignan permisos a los usuarios
- almacenan copias de seguridad de datos
- restauran datos en caso de que se produzca un error.
- Responsable del diseño, la implementación, el mantenimiento y los aspectos operativos de los sistemas de bases de datos locales y los basados en la nube.
- Son responsables de la disponibilidad general y de las optimizaciones y el rendimiento coherentes de las bases de datos
- Trabajan con las partes interesadas para implementar directivas, herramientas y procesos para la realización de copias de seguridad, así como planes de recuperación que permiten reponerse tras un desastre natural o un error humano.
- Los administradores de base de datos también son responsables de administrar la seguridad de los datos en la base de datos, conceder privilegios sobre los datos, y conceder o denegar el acceso a los usuarios según corresponda.
MCT:
- Responsabilidades más comunes:
- Instalar y actualizar las herramientas de la aplicación y servidor de BD
- Asignar el almacenamiento del sistema y planear los requerimientos de almacenamiento
- Modificar la estructura de la base de datos, cuando sea necesario a partir de la información que brindan los desarrolladores de la aplicaciones
- Controlar y supervisar el acceso de los usuarios
- Garantizar el cumplimento del contrato de licencia con el proveedor
- Agregar usuarios mantener la seguridad del sistema
- Supervisar y optimizar el rendimiento de la base de datos
- Planeamiento de respaldos y recuperación
- Mantener los datos archivados
- Realizar copias de seguridad de la bases de datos
- Ponerse en contacto con el proveedor para obtener soporte técnico
- Administrar y supervisar la aplicación de los datos
- Generar informes consultando la BD
Ingeniero de datos
- administran la infraestructura y los procesos para la integración de datos en una organización, aplican rutinas de limpieza de datos, identifican reglas de gobernanza de datos e implementan canalizaciones para transferir y transformar datos entre sistemas.
- Los ingenieros de datos colaboran con las partes interesadas para diseñar e implementar cargas de trabajo relacionadas con datos, incluidas canalizaciones de ingesta de datos
- actividades de limpieza y transformación
- almacenes de datos para cargas de trabajo analíticas
- Usan una amplia gama de tecnologías de plataforma de datos, como bases de datos relacionales y no relacionales, almacenes de archivos y flujos de datos.
- También son responsables de garantizar que la privacidad de los datos se mantenga dentro de la nube y que abarque desde el entorno local hasta los almacenes de datos en la nube.
- Se ocupan de la administración y la supervisión de canalizaciones de datos para asegurarse de que las cargas de datos funcionen según lo previsto.
MCT:
- Los ingenieros de datos son un cargo muy técnico que requiere experiencia y conocimientos en áreas como programación, matemáticas e informática
- Se encargan de administrar y organizar los datos al mismo tiempo que supervisan las tendencias e incoherencias que afectan a los objetivos empresariales
- Ademas deben contar con habilidades interpersonales para poder comunicar las tendencias de los datos a los demás miembros de la organización y ayudar a la empresa a usar los datos que se recopilan
Tareas y responsabilidades de los ingenieros de datos
- Desarrollar, construir, probar y mantener bases de datos y estructuras de BD
- Adaptar la arquitectura de datos a los requisitos empresariales
- Adquirir datos
- Desarrollar procesos para crear y recuperar información de conjuntos de datos
- Usar herramientas y lenguajes de programación para examinar los datos
- Identificar maneras de mejorar la confiabilidad, eficacia y calidad de los datos
- Investigar cuestiones comerciales y empresariales
- Implementar programas de análisis sofisticados Machinne Learning y métodos estadísticos
- Preparar los datos para el modelado predictivo y descriptivo
- Usar datos para detectar tareas que se pueden automatizar
Herramientas habituales de la ingeniería de datos
- Para el dominio de la ingeniería de datos, se debe tener dominio de diversas herramientas que le permiten crear bases de datos bien diseñadas y optimizadas para los procesos empresariales que se ejecutarán
- Debe tener conocimiento exhaustivo del sistema de administración de BD la plataforma en donde se ejecutará el sistema y los requisitos empresariales que se aplican a los datos almacenados en la BD
- Si se utiliza un sistema de administración de BD relacionales se deben tener conocimientos de SQL para poder crear bases de datos, tablas, indices, vistas, etc
- Muchos sistemas de administración de BD proporcionan una interfaz de lineas de comando que permiten operaciones
- Por ejemplo se puede utilizar SQL CMD para conectarse a la Azure SQL Sever y Databases que permite ejecutar consultas y comandos ad hoc
Analista de datos
- exploran y analizan los datos con el fin de crear visualizaciones y gráficos que permiten que las organizaciones tomen decisiones fundamentadas.
- Un analista de datos ayuda a las empresas a maximizar el valor de sus recursos de datos.
- Son los responsables de explorar datos para identificar tendencias y relaciones, diseñar e implementar modelos analíticos, y habilitar funcionalidades de análisis avanzado mediante informes y visualizaciones.
- Los analistas de datos se ocupan del procesamiento de los datos sin procesar para convertirlos en información pertinente, en función de los requisitos empresariales establecidos, con el fin de ofrecer conclusiones de interés.
MCT:
- Los analistas de datos se encargar de descifrar el significado real de los datos y explorar los datos
- Los datos se utilizan para determinar las tendencias de los problemas y otra información que pueda ser útil para la empresa
- Gran parte del rol del analista de datos se centra en:
- La visualización de los datos que es fundamental para presentar grandes cantidades de información de manera que se entiendan universalmente o que se puedan interpretar con facilidad
- Detectar patrones y tenencias correlacionales
- Estas representaciones incluyen gráficos, grafos, infografias y otros recursos visuales
Principales funciones de un analista de datos
- Hacer que los conjuntos de datos grandes o complejos sean más accesibles, comprensibles e utilizables
- Creación de grafos, gráficos, histogramas, mapas geográficos y otros modelos visuales que ayudan a explicar el significado de grandes volúmenes de datos e aislar las áreas de interés
- Transformar, mejorar e integrar datos de varios orígenes en función de los requerimientos empresariales,
- Combinar los conjuntos de resultados de datos de varios orígenes
- Buscar patrones ocultos mediante el uso de datos
- Proporcionar información de manera práctica y atractiva a los usuarios mediante la creación de informes y paneles gráficos enriquecidos
Herramientas habituales de visualización de datos
- Power BI:
- Es una colección de servicios de software, aplicaciones y conectores que funcionan conjuntamente para convertir orígenes de datos relacionados entre sí, en información coherente, interactiva y atractiva visualmente
- Permite conectarse fácilmente a los orígenes de datos, hojas de cálculo de excel, BD locales y en la nube
- Descubrir que es importante en estos datos y compartir sus hallazgos con otras personas de la organización
NOTA:
Hay roles adicionales de este tipo que no se mencionan aquí, como científico de datos y arquitecto de datos; además, existen otros profesionales técnicos que trabajan con datos, como los desarrolladores de aplicaciones y los ingenieros de software.
Herramientas de Administración
Azure Portal
- Tiene una serie de páginas que nos permite aprovisionar los servicios
- Antes de la creación esta es validada
Azure Mobile App
- Permite conectar dispositivos móviles a Azure
- Para ver o administrar los recursos
CLI Azure
- Proporciona comandos que se pueden ejecutar de la shell del sistema operativo
- Con estos comandos puede administrar los recursos de Azure
- Ideal para automatizar la creación de servicios, con script’s de programación
- Se puede ejecutar en Windows, Mac OS y LInux
- La curva de aprendizaje es más grande
Azure PowerShell
- Muchos administradores están familiarizados con comandos de PowerShell para crear script y programar tareas administrativas
- Utiliza cmdlets comandos específicos de Azure que permiten administrar recursos de Azure
- Esta disponible para Windows, MAc OS y Linux
Plantillas de Azure Resources Manager
- Una plantilla de ARM describe el o los servicios que se desean crear en un archivo de texto tipo JSON que contiene objetos de Javascript
- Es conveniente utilizarlas cuando no solo se desea crear el servicio sino también la infraestructura de red, sistemas de almacenamiento y otros recursos
- Y cuando el servicios de debe replicar varias veces y de forma coherente
- Tiene la ventaja que Resources Manager comprueba la plantilla antes de implementarla
- También puede importar la plantilla de un conjunto de recursos ya existentes
Herramientas de Consulta
- Existen a Azure diferentes herramientas para realizar las consultas de datos
- Editor de consultas en Azure Portal
- SQLCMD: desde la línea de comandos
- SQL Managent Studio
- Azure Data Studio
- Primero se debe establecer una conexión con la BD para que se requiere
- El nombre de la BD
- Nombre del servidor
- Y credenciales del usuario
- La mayoría de los sistemas de administración de BD’s proporcionan su propio conjuntos de herramientas para ayudar a la administración
- Por ejemplo
- SQL Server -> SQL Server Management Studio
- PostgreSQL -> PGAdmin
- Mysql -> Worbench
- Además existen muchas herramientas de administración de BD’s multiplaforma como por ejemplo Azure Data Studio
Azure Data Studio
- Proporciona una interfaz gráfica de usuario para administrar números sistemas de BD’s
- Actualmente tiene soporte para:
- SQL Sever (local)
- Azure SQL Database
- PostgreSQL
- Azure SQL Data WereHouse
- Y clusters de macrodatos de SQL Server
- Es una herramienta extensible que permite descargar e instalar extensiones desde desarrolladores terceros que se conectan a otro sistemas
- Y proporciona asistentes que ayudan a automatizar muchas tareas administrativas
SQL Server Management Studio? SSMS
- Proporciona una interfaz gráfica de usuario que permite:
- Consultar datos
- Realizar tareas generales de administración
- Y Generación de script para automatización las operaciones de mantenimiento y soporte técnico
- Una característica es la capacidad de crear scripts de TRANSACT-SQL para casi todas las funcionalidades que brinda SSMS
- Esto le permite al administrador de BD’s programar y automatizar muchas tareas comunes
- Transact-SQL es un conjunto de extensiones de programación Microsoft que agregan características al lenguaje de consulta estructurado SQL incluido:
- El control de transacciones
- El control de excepciones y errores
- Procesamiento de filas
- Y variables declaradas
Uso de Azure Portal para administrar Azure SQL Database
- Azure SQL Database proporciona servicios de BD’s que se ejecutan en la nube
- Para administrar estas BD’s se puede utilizar Azure Portal para las tareas habituales como:
- Como aumento del tamaño de la BD
Creación y eliminación de una BD
Configuración de Servicios
- La primera configuración es «Denegar acceso a red pública» que si indicamos que «Sí» la BD no tendrá acceso a ninguna red pública y solo se aceptarán conexiones por un punto de red privado y se dehabilitara cualquier regla de firewall
- En «Reglas de Azure» si tenemos más servicios de Azure y estos deben ingresar al servicio que estamos configurando, es aquí donde los configuramos y lo que hacemos es crear una regla de firewall para la o las Ip’s que se les dará el acceso
Configurar la autenticación
- Con la autenticación de Azure podemos administrar de forma centralizada las identidades de los usuarios de la BD en un único lugar y gestionar los permisos
- Este servicio esta para Azure SQL Database, Azure PostgreSQL, Azure Mysql
Configuración del control de acceso
- Azure permite especificar quien o quienes pueden acceder a nuestros recursos
- Para configurarlo debe ingresar al servicio sección «Control de Acceso (IAM)»
Configuración de Advanced Data Security
- Además de la autenticación y autorización muchos servicios brindan una protección extra de configuración Avanzada de los datos
- Que le brinda protección contra amenazas y una serie de evaluaciones
- Le agrega inteligencia que busca patrones de movimientos inusuales y identifica posibles vulnerabilidades de seguridad y brinda recomendaciones
Data Base Management System (DBMS)
- Es un conjunto de software específico para la administración de BD’s
- Cuya función es una interfaz entre el usuario, la BD y las aplicaciones
- Controlan los aspectos físicos de una BD, por ejemplo
- Donde y como se almacena
- Quién puede acceder a ella y como se garantiza la disponibilidad
- Azure se encarga de:
- Configuración
- Administración
- Actualizaciones
- Seguridad
- El usuario se encarga de
- Administrar y asegurar sus datos
Procesamiento de Datos
- El procesamiento de datos es la conversión datos a información significativa
- En función de como llegan los datos al sistemas se pueden clasificar en
- Streaming:
- Donde se procesan cada uno de los datos según como llegan
- Procesamiento por lotes:
- Se pueden almacenar el el bufer de datos sin procesar y procesarlos en grupos
- Streaming:
Tipo | SaaS |
- Es un método de ejecución de tareas repetitivas, de gran volumen que permite a los usuarios procesar datos cuando se disponga de recursos informáticos con poco o nula interacción del usuario
Parámetros esenciales
- Quien envía la tarea
- Que programa se ejecutará
- Ubicación de archivos de entrada y salida
- Cuando se debe ejecutar la tarea
Características
- En el procesamiento por lotes los alimentos de datos se recopilan en un grupo conforme van llegando
- Después todo el grupo se procesa más adelante como un lote
- La forma en como se procesa cada grupo se puede determinar de varias maneras
- Use Azure Batch para ejecutar aplicaciones de informática de alto rendimiento (HPC) en paralelo y a gran escala, de manera eficaz en Azure.
- Azure Batch permite crear y administrar un conjunto de nodos de proceso (máquinas virtuales), instalar las aplicaciones que desea ejecutar y programar trabajos para que se ejecuten en los nodos.
- Los desarrolladores pueden usar Batch como un servicio de plataforma para compilar aplicaciones SaaS o aplicaciones cliente en las que se requiere una ejecución a gran escala.
- Por ejemplo, puede compilar un servicio con Batch para que ejecute una simulación de riesgo Monte Carlo para una empresa de servicios financieros o un servicio que procese muchas imágenes.
- Batch funciona bien con cargas de trabajo intrínsecamente paralelas (a veces llamadas «embarazosamente paralelas»).
- Estas cargas de trabajo tienen aplicaciones que se pueden ejecutar de manera independiente y donde cada instancia completa una parte del trabajo.
Ventajas
- Se pueden procesar grandes volúmenes de datos en un momento determinado y se pueden programar en la noche o momento de poca actividad
Desventajas
- El tiempo de retardo entre la ingesta de datos y la obtención de los resultados
- Todos los datos deben estar listos para poder procesar un lote, es decir los datos deben comprobarse con cuidado
- Los problemas que se dan con los datos, errores y bloqueos de los programas que se dan mientras se realiza la carga de los datos
A continuación puede ver algunos ejemplos de cargas de trabajo intrínsecamente paralelas con las que puede trabajar en Batch:
- Modelado de riesgos financieros mediante simulaciones Monte Carlo
- Representación de imágenes VFX y 3D
- Análisis y procesamiento de imágenes
- Transcodificación de elementos multimedia
- Análisis de secuencia genética
- Reconocimiento óptico de caracteres (OCR)
- Ingesta, procesamiento, extracción, transformación y carga de datos
- Ejecución de pruebas de software
También puede usar Batch para ejecutar cargas de trabajo estrechamente acopladas donde las aplicaciones que se ejecutan necesitan comunicarse entre sí, en lugar de hacerlo de forma independiente. Las aplicaciones estrechamente acopladas normalmente utilizan Message Passing Interface (MPI) API. Puede ejecutar cargas de trabajo estrechamente acopladas con Batch mediante Microsoft MPI o Intel MPI. Mejore el rendimiento de la aplicación con informática de alto rendimiento especializada y tamaños de máquina virtual optimizados para GPU.
Estos son algunos ejemplos de cargas de trabajo estrechamente acopladas:
- Análisis de elementos finitos
- Dinámica de fluidos
- Aprendizaje de inteligencia artificial multinodo
Batch admite cargas de trabajo de representación a gran escala con herramientas de representación que incluyen Autodesk Maya, 3ds Max, Arnold, y V-Ray.
Azure Batch también se puede ejecutar como parte de un flujo de trabajo mayor de Azure para transformar datos, administrado mediante herramientas como Azure Data Factory.
El siguiente diagrama muestra los pasos de un flujo de trabajo común de Batch, con una aplicación cliente o un servicio hospedado usando Batch para ejecutar una carga de trabajo paralela.
Streaming data
- Los sistemas de streaming poseen una arquitectura orientada a manejar eventos individualmente, para que los datos de puedan procesar tan pronto como se genera el evento
- Los casos de uso:
- Donde se requiere respuesta activa de los usuarios tan pronto ocurran los eventos
- Por ejemplo: el monitoreo de datos provenientes de sensores, redes sociales, servidores, aplicaciones, etc
- Esta arquitectura puede tener problemas de accesibilidad y calidad de datos}
¿Qué es Streaming?
- Es la tecnología de transmisión de datos por Internet que pueden ser accedidos por los usuarios sin la necesidad de la descarga previa
- La carga del contenido publicado en este formato se realiza mientras el archivo esta siendo accedido, lo que disminuye el tiempo de espera de los usuarios, permitiendo el acceso casi instantáneo
- Con streaming se puede transmitir contenido en vivo o grabados anteriormente, sin que los datos tengan que ser almacenados en computadoras u otro dispositivo
¿Qué son los datos de Streaming?
- Son datos que se generan constantemente a partir de muchas fuentes de datos, que envían los datos simultáneamente en conjuntos de datos pequeños
- Estos datos deben procesarse de manera secuencial de registro por registro o en ventanas graduales
- Se utilizan para diferentes tipos de análisis como correccionales, agregaciones, filtrado y muestreo
Ventajas
- Tiene ventaja cuando se generan datos nuevos y dinámicos en forma constante
- Se basa en procesar transmisiones, para realizar acciones sencillas como respuesta
- Por ejemplo emitir alertas cuando se supera cierto umbral
- Y con el tiempo pueden realizar análisis más sofisticados, como algoritmos de aprendizaje automático
Procesamiento de datos de streaming y en tiempo real
- En el procesamiento en streaming cada nuevo fragmento de datos se procesa cuando llega
- Trata los datos en tiempo real
- Ejemplos:
- Institución financiera: seguimiento en tiempo real de la bolsa de valores
- Vídeo juegos en linea: registra las acciones de los jugadores
Diferencias entre los datos de streaming y por lotes
Lote | Streaming | |
Ámbito de los datos | puede procesar todos los datos del conjunto de datos | Solo tiene los últimos datos |
Tamaño | Puede procesar grandes conjuntos de datos de manera eficaz | Esta diseñado para registros individuales o microlotes que constan de pocos registros |
Rendimiento | La latencia es de unas horas | Es casi inmediato, lantencia de segundos o milisegundos |
Análisis | Para análisis complejos | Para análisis de respuestas simples, agregaciones o cálculos, como la media acumulada |
Servicios Azure BD Relacionales
Introducción
- BD Relacional
- Tipo por uso: OLTP
- Es un sistema de gestión de BD Relacionales
- Azure SQL es el nombre colectivo de una familia de soluciones de bases de datos relacionales basadas en el motor de base de datos de Microsoft SQL Server.
- Su lenguaje principal es TRANSCT-SQL un lenguaje estándar de ANSI
- Normalmente, los administradores de bases de datos aprovisionan y administran sistemas de bases de datos de Azure SQL para admitir aplicaciones de línea de negocio (LOB) que necesitan almacenar datos transaccionales.
- Los ingenieros de datos pueden usar sistemas de bases de datos de Azure SQL como orígenes para canalizaciones de datos que realizan operaciones de extracción, transformación y carga (ETL) para ingerir los datos transaccionales en un sistema analítico.
- Los analistas de datos pueden consultar las bases de datos de Azure SQL directamente para crear informes, aunque en organizaciones grandes los datos suelen combinarse con datos de otros orígenes en un almacén de datos analíticos para admitir análisis empresariales.
Los servicios específicos de Azure SQL incluyen:
SQL Server en máquina virtual de Azure (VM):
- IaaS
- Consiste en una máquina virtual con una instalación de SQL Server, lo que ofrece una capacidad de configuración máxima con una responsabilidad de administración completa.
- Se trata de una opción excelente para la migración lift-and-shift de instalaciones locales de SQL Server a la nube.Las máquinas virtuales de SQL están listas para migrar mediante lift-and-shift las aplicaciones existentes que requieren una migración rápida a la nube con unos cambios mínimos
- le permite usar versiones completas de SQL Server en la nube sin tener que administrar ningún hardware local
- Al ejecutar SQL Server en una máquina virtual de Azure, se replica la base de datos que se ejecuta en un hardware local real.
- La migración desde el sistema local a una máquina virtual de Azure no es diferente a migrar las bases de datos de un servidor local a otro
- Este enfoque es adecuado para las migraciones y aplicaciones que requieren acceso a características del sistema operativo que podrían no admitirse en el nivel de PaaS
- También puede usar SQL Server en máquinas virtuales de Azure para ampliar las aplicaciones locales existentes a la nube en implementaciones híbridas
- Permite crear entornos de pruebas y desarrollo en la nube
- Puede usar SQL Server en una máquina virtual para desarrollar y probar aplicaciones de SQL Server tradicionales.
- Cree escenarios de desarrollo y prueba rápidos cuando no quiera comprar hardware de SQL Server local y que no sea de producción.
- Tener todo preparado para migrar mediante lift-and-shift las aplicaciones existentes que requieren una migración rápida a la nube con cambios mínimos o sin cambios.
- Escalar verticalmente la plataforma en la que se ejecuta SQL Server asignando más memoria, potencia de CPU y espacio en disco a la máquina virtual. Puede cambiar rápidamente el tamaño de una máquina virtual de Azure sin tener que reinstalar el software que se ejecuta en ella.
Ventajas
- permite satisfacer necesidades empresariales exclusivas y diversas a través de una combinación de implementaciones locales y hospedadas en la nube,
- no elimina la necesidad de administrar el DBMS tan cuidadosamente como lo haría en el entorno local.
Azure SQL Managed Instance
- PaaS
- Es una instancia hospedada de SQL Server con mantenimiento automatizado, que permite una configuración más flexible que Azure SQL Database, pero con más responsabilidad administrativa para el propietario.
- permite ejecutar eficazmente una instancia totalmente controlable de SQL Server en la nube.
- Proporciona una compatibilidad casi completa con instancias de SQL Server locales y permite abstraer el hardware y el sistema operativo subyacentes
- Este servicio incluye administración automatizada de actualizaciones de software, copias de seguridad y otras tareas de mantenimiento, lo que reduce la carga administrativa
- puede instalar varias bases de datos en la misma instancia y tiene un control total sobre esta instancia, como el que tendría sobre un servidor local.
- se automatizan las copias de seguridad, la aplicación de revisiones de software, la supervisión de bases de datos y otras tareas generales, pero sigue teniendo control total sobre la seguridad y la asignación de recursos para las bases de datos
- tiene casi un 100 % de compatibilidad con el motor de base de datos más reciente de SQL Server (Enterprise Edition), lo que proporciona una implementación nativa de la red virtual (VNet) que permite solucionar problemas de seguridad habituales
- permite a los clientes existentes de SQL Server migrar mediante lift-and-shift sus aplicaciones locales a la nube con cambios mínimos en la aplicación y la base de datos
- conserva todas las funcionalidades de PaaS (aplicación de revisiones y actualizaciones de versión automáticas, copias de seguridad automáticas, alta disponibilidad), que reducen enormemente la sobrecarga de administración y el costo total de propiedad.
- Cuando se necesita poder administrar características avanzadas como Service Broker, SQL Server Agent, CLR, servicios de aprendizaje automático,entre otros se requiere una Instancia Administrada.
- Azure SQL Managed Instance incluye características que no están disponibles en Azure SQL Database (se describen a continuación). Si su sistema usa características como servidores vinculados, Service Broker (un sistema de procesamiento de mensajes que se puede usar para distribuir el trabajo entre servidores) o Correo electrónico de base de datos (que permite a la base de datos enviar mensajes de correo electrónico a los usuarios), debe usar la opción Instancia administrada.
- Permite la migración en linea de entornos locales a la nube
- Le da las instancias con ventajas como replicas, respaldos, actualizaciones, distribución geográfica y elasticidad que de la nube
- Permite a un administrador del sistema dedicar menos tiempo a tareas administrativas, ya que el servicio las realiza automáticamente o las simplifica en gran medida.
- En el diagrama siguiente se describen las características principales de SQL Managed Instance:
- Azure SQL Managed Instance está diseñada para aquellos clientes que quieran migrar un gran número de aplicaciones desde un entorno local o de IaaS, compilado automáticamente o que hayan proporcionado los fabricantes de software independientes, a un entorno en la nube de PaaS totalmente administrado, con el menor esfuerzo de migración posible.
- Mediante el uso del Azure Data Migration Service, los clientes pueden migrar mediante lift-and-shift su instancia de SQL Server existente a SQL Managed Instance, que ofrece compatibilidad con SQL Server y aislamiento completo de las instancias de cliente con compatibilidad nativa con redes virtuales.
- Con Software Assurance, puede intercambiar sus licencias existentes para obtener descuentos en SQL Managed Instance
- SQL Managed Instance combina las mejores características que están disponibles tanto en Azure SQL Database como en el motor de base de datos de SQL Server.
- Instancia administrada de SQL se ejecuta con todas las características de la última versión de SQL Server, incluidas las operaciones en línea, las correcciones automáticas del plan y otras mejoras de rendimiento empresarial.
Ventajas de PaaS | Continuidad del negocio |
---|---|
No hay compras de hardware ni administración Ninguna sobrecarga de administración a la hora de administrar la infraestructura subyacente Aprovisionamiento y escalado de servicio rápidos Aplicación de revisiones y actualización de versiones automatizadas Integración con otros servicios de datos de PaaS |
Acuerdo de Nivel de Servicio de tiempo de actividad del 99,99 % Alta disponibilidad integrada Datos protegidos con copias de seguridad automatizadas Período de retención de copia de seguridad configurable por el cliente Copias de seguridad que haya iniciado el usuario Funcionalidad de restauración de base de datos a un momento dado |
Seguridad y cumplimiento normativo | Administración |
Entorno aislado (integración con red virtual, servicio de inquilino único y procesos y almacenamiento dedicados) Cifrado de datos transparente (TDE) Autenticación de Azure Active Directory (Azure AD), compatibilidad con el inicio de sesión único Entidades de seguridad (inicios de sesión) de un servidor de Azure AD ¿Qué es autenticación de Windows para entidades de seguridad de Azure AD (versión preliminar)? Se adhiere a las mismas normas de cumplimiento estándar que Azure SQL Database Auditoría de SQL Advanced Threat Protection |
API de Azure Resource Manager para automatizar el aprovisionamiento y escalado del servicio Funcionalidad de Azure Portal para el aprovisionamiento y escalado manuales del servicio Data Migration Service |
- Las características principales de Instancia administrada de SQL se muestran en la tabla siguiente:
Característica | Descripción |
---|---|
Versión/compilación de SQL Server | Motor de base de datos de SQL Server (versión estable más reciente) |
Administración de copias de seguridad automatizadas | Sí |
Supervisión y métricas integradas de instancias y bases de datos | Sí |
Aplicación automática de revisiones de software | Sí |
Características del motor de base de datos más recientes | Sí |
Número de archivos de datos (ROWS) por base de datos | Múltiple |
Número de archivos de registro (LOG) por base de datos | 1 |
Redes virtuales: implementación de Azure Resource Manager | Sí |
Redes virtuales: modelo de implementación clásica de Azure | No |
Soporte técnico del portal | Sí |
Integration Service (SSIS) integrado | No: SSIS es una parte de PaaS de Azure Data Factory |
Analysis Service (SSAS) integrado | No: SSAS es un servicio PaaS independiente. |
Reporting Service (SSRS) integrado | No: use informes paginados de Power BI en su lugar u hospede SSRS en una máquina virtual de Azure. Si bien SQL Managed Instance no puede ejecutar SSRS como servicio, sí puede hospedar las bases de datos del catálogo de SSRS para un servidor de informes instalado en una máquina virtual de Azure, mediante la autenticación de SQL Server. |
Modelo de compra basado en núcleo virtual
- permite cambiar los recursos de proceso, memoria y almacenamiento en función de las necesidades de la carga de trabajo
- El modelo de núcleos virtuales también permite disfrutar de hasta un 55 % de ahorro con la Ventaja híbrida de Azure
- En el modelo de núcleo virtual, puede elegir las configuraciones de hardware como se indica a continuación:
- Las CPU lógicas de la serie estándar (Gen5) se basan en los procesadores Intel® E5-2673 v4 (Broadwell) de 2,3 GHz y en los procesadores Intel® SP-8160 (Skylake) e Intel® 8272CL (Cascade Lake) de 2,5 GHz, 5,1 GB de RAM por núcleo virtual de CPU, un SSD NVMe rápido, un núcleo lógico con Hyper-Threading y tamaños de proceso de entre 4 y 80 núcleos.
- Las CPU lógicas de la serie prémium se basan en los procesadores Intel® 8370C (Ice Lake) de 2,8 GHz, con 7 GB de RAM por núcleo virtual de CPU, un SSD NVMe rápido, un núcleo lógico Hyper-Threading y tamaños de proceso de entre 4 y 80 núcleos.
- Las CPU lógicas de la serie prémium optimizada para memoria se basan en los procesadores Intel® 8370C (Ice Lake) de 2,8 GHz, con 13,6 GB de RAM por núcleo virtual de CPU, un SSD NVMe rápido, un núcleo lógico Hyper-Threading y tamaños de proceso de entre 4 y 64 núcleos.
Niveles de servicio:
Uso general:
- Diseñada para aplicaciones con rendimiento y requisitos de latencia de E/S comunes.
- Diseñado para la mayoría de las aplicaciones empresariales con requisitos típicos de alto rendimiento
- Azure Blob Storage de alto rendimiento (16 TB)
- Alta disponibilidad integrada basada en los servicios confiables Azure Blob Storage y Azure Service Fabric
Crítico para empresa:
- diseñada para aplicaciones con requisitos de latencia baja de E/S y un impacto mínimo subyacente de operaciones de mantenimiento en la carga de trabajo.
- El nivel de servicio Crítico para la empresa se ha creado para las aplicaciones con elevados requisitos de E/S.
- Diseñado para aplicaciones empresariales con mayor rendimiento y requisitos de alta disponibilidad
- Incluye almacenamiento SSD local extremadamente rápido [hasta 4 TB en la serie estándar (Gen5), hasta 5,5 TB en la serie prémium y hasta 16 TB en la serie prémium optimizada para memoria]
- Alta disponibilidad integrada basada en los Grupos de disponibilidad Always On y Azure Service Fabric
- Réplica de base de datos de solo lectura adicional integrada que se puede usar para informes y otras cargas de trabajo de solo lectura.
- OLTP en memoria, que se puede usar para la carga de trabajo con requisitos de alto rendimiento.
Ambos niveles de servicio garantizan una disponibilidad del 99,99 % y le permiten seleccionar el tamaño de almacenamiento y la capacidad de proceso de forma independiente.
Aislamiento de seguridad
El aislamiento de seguridad incluye:
- Implementación nativa de redes virtuales y conectividad al entorno local mediante Azure ExpressRoute o VPN Gateway.
- En una implementación predeterminada, el punto de conexión de SQL se expone solo mediante una dirección IP privada, lo que permite una conectividad segura desde una nube privada de Azure o desde redes híbridas.
- Inquilino único con infraestructura subyacente dedicada (proceso, almacenamiento).
El diagrama siguiente describe distintas opciones de conectividad para las aplicaciones:
Características de seguridad
- La auditoría de Instancia administrada de SQL realiza un seguimiento de los eventos de bases de datos y los escribe en un archivo de registro de auditoría de su cuenta de Azure Storage.
- Cifrado de datos en movimiento: protege los datos gracias al cifrado de datos en movimiento mediante la Seguridad de la capa de transporte. Ofrece la protección de la información confidencial en tránsito, en reposo y durante el procesamiento de consultas con Always Encrypted. Por ejemplo, con Always Encrypted, los números de las tarjetas de crédito siempre se almacenan cifrados en la base de datos, incluso durante el procesamiento de las consultas, lo que permite que solo los descifren personal autorizado o las aplicaciones que los necesitan
- Advanced Threat Protection complementa la auditoría, ya que proporciona una capa adicional de inteligencia de seguridad integrada en el servicio que detecta intentos inusuales y potencialmente dañinos para obtener acceso a las bases de datos o vulnerarlas. Recibirá alertas de actividades sospechosas, vulnerabilidades potenciales y ataques por inyección de código SQL, así como patrones anómalos de acceso a bases de datos.Las alertas de Advanced Threat Protection se pueden ver en Microsoft Defender para la nube.
- El enmascaramiento dinámico de datos limita la exposición de información confidencial mediante su enmascaramiento a los usuarios sin privilegios. El enmascaramiento dinámico de datos ayuda a impedir el acceso no autorizado a datos confidenciales Se trata de una característica de seguridad basada en directivas que oculta la información confidencial
- La seguridad de nivel de fila (RLS) le permite controlar el acceso a las filas de una tabla de base de datos en función de las características del usuario que ejecuta una consulta (por ejemplo, la pertenencia a un grupo o el contexto de ejecución). RLS simplifica el diseño y la codificación de la seguridad de la aplicación. RLS permite implementar restricciones de acceso a filas de datos. Por ejemplo, garantiza que los empleados únicamente puedan acceder a aquellas filas de datos necesarios para su departamento o restringe el acceso solo a los datos relevantes.
- Cifrado de datos transparente (TDE) cifra los archivos de datos de Instancia administrada de SQL, lo que se conoce como cifrado de datos en reposo. TDE realiza el cifrado y descifrado de E/S en tiempo real de los archivos de datos y de registro. El cifrado usa una clave de cifrado de base de datos (DEK), que se almacena en el registro de arranque de la base de datos de disponibilidad durante la recuperación. Puede proteger todas las bases de datos en una instancia administrada con cifrado de datos transparente. TDE es la probada tecnología de cifrado en reposo de SQL Server que requieren muchos estándares de cumplimiento normativo para proteger contra el robo de soportes de almacenamiento.
Integración de Azure Active Directory
- admite los inicios de sesión tradicionales del motor de base de datos de SQL Server, así como los inicios de sesión integrados con Azure AD
- Las entidades de seguridad (inicios de sesión) de un servidor de Azure AD le permiten especificar usuarios y grupos del inquilino de Azure AD como entidades de seguridad de la instancia con capacidad para llevar a cabo operaciones dentro del ámbito de la misma, incluidas consultas entre bases de datos dentro de la misma instancia administrada.
Autenticación
Admite tres tipos de autenticación:
- Autenticación de SQL:Este método de autenticación utiliza un nombre de usuario y una contraseña.
- Autenticación con Azure Active Directory:Este método de autenticación usa las identidades administradas por Azure Active Directory y es compatible con dominios administrados e integrados. Use la autenticación de Active Directory (seguridad integrada) siempre que sea posible.
- Autenticación de Windows para entidades de seguridad de Azure AD (versión preliminar):La autenticación Kerberos para entidades de seguridad de Azure AD (versión preliminar) habilita la autenticación de Windows para Azure SQL Managed Instance. La autenticación de Windows para instancias administradas permite a los clientes trasladar los servicios existentes a la nube y, al mismo tiempo, mantener una experiencia de usuario fluida, proporcionando la base para la modernización de la infraestructura.
Copia de seguridad y restauración
- aprovecha las copias de seguridad de SQL en Azure Blob Storage. Las copias de seguridad almacenadas en una instancia de Azure Storage Blob se pueden restaurar directamente en una instancia administrada mediante el comando T-SQL RESTORE.
Database Migration Service
- Azure Database Migration Service es un servicio totalmente administrado diseñado para permitir migraciones completas desde varios orígenes de base de datos hasta las plataformas de datos de Azure con un tiempo de inactividad mínimo
Características de SQL admitidas
SQL Managed Instance admite versiones anteriores hasta bases de datos de SQL Server 2008. Se admite la migración directa de servidores de base de datos de SQL Server 2005 y el nivel de compatibilidad con las bases de datos de SQL Server 2005 migradas se actualiza a SQL Server 2008.
Diferencias principales entre SQL Server local y SQL Managed Instance
- SQL Managed Instance tiene la ventaja de estar siempre actualizada en la nube, lo cual significa que algunas características de SQL Server pueden ser obsoletas, estar retiradas o presentar alternativas.
- La alta disponibilidad está integrada y preconfigurada con tecnología similar a los Grupos de disponibilidad Always On.
- Solo hay copias de seguridad automatizadas y restauración a un momento dado. Los clientes pueden iniciar copias de seguridad
copy-only
que no interfieren con la cadena de copias de seguridad automáticas. - No se permite especificar rutas de acceso físicas completas, por lo que todos los escenarios correspondientes tienen que ser compatibles de manera diferente: RESTORE DB no es compatible con WITH MOVE, CREATE DB no permite rutas de acceso físicas, BULK INSERT funciona solo con Azure Blobs, etc.
- SQL Managed Instance admite autenticación de Azure AD y Autenticación de Windows para entidades de seguridad de Azure Active Directory (versión preliminar).
- SQL Managed Instance administra automáticamente el grupo de archivos XTP y los archivos de bases de datos que contienen objetos OLTP en memoria.
- SQL Managed Instance es compatible con SQL Server Integration Services (SSIS) y puede hospedar un catálogo de SSIS (SSISDB) que almacena paquetes SSIS, pero se ejecutan en una instancia administrada de Azure-SSIS Integration Runtime (IR) en Azure Data Factory (ADF). Consulte Creación de una instancia de Azure-SSIS IR en Azure Data Factory. Para comparar las características de SSIS, vea una comparación entre SQL Database con Instancia administrada de SQL.
- SQL Managed Instance solo admite la conectividad a través del protocolo TCP. No admite la conectividad a través de canalizaciones con nombre.
Continuamos con Instancia administrada de Azure SQL Database
- Las instancias administradas dependen de otros servicios de Azure, como Azure Storage para las copias de seguridad, Azure Event Hubs para la telemetría, Azure Active Directory para la autenticación, Azure Key Vault para el cifrado de datos transparente (TDE), y un par de servicios de la plataforma de Azure que proporcionan características de seguridad y compatibilidad. Las instancias administradas realizan conexiones con estos servicios.
- Todas las comunicaciones se cifran y firman mediante certificados
- Es un servicio de BD en la nube inteligente y escalable
- Tiene la mayor compatibilidad con SQL Server y todas las ventajas de PaaS
- Esta diseñada para migrar un gran número de aplicaciones de un entrono local o IaaS a un entorno en la nube PaaS con el menor esfuerzo
- Se utiliza si se quiere migrar mediante lift-and-shift a una instancia local de SQL Sever y todas sus BD a la nube quitando todas las tareas de administración de la BD como sería en una MV
Azure SQL Database
- PaaS
- 99.99%
- BD Relacional
- un servicio de base de datos PaaS totalmente administrado y altamente escalable que se ha diseñado para la nube
- Este servicio incluye las principales capacidades de base de datos de SQL Server local y es una buena opción cuando hay que crear una aplicación en la nube.
- Azure SQL Database es una oferta de PaaS de Microsoft. Después de crear un servidor de bases de datos administrado en la nube, debe implementar las bases de datos en este otro servidor.
- Un servidor de SQL Database es una construcción lógica que actúa como punto administrativo central para varias bases de datos individuales o agrupadas, inicios de sesión, reglas de firewall, reglas de auditoría, directivas de detección de amenazas y grupos de conmutación por error.
- Azure SQL Database está disponible como una base de datos única o un grupo elástico.
Base de datos única
- Esta opción le permite configurar y ejecutar rápidamente una sola base de datos de SQL Server.
- Microsoft administra el servidor, por lo que solo tiene que configurar la base de datos, crear las tablas y rellenarlas con sus datos
- Puede escalar la base de datos si necesita más espacio de almacenamiento, memoria o potencia de procesamiento.
- se le cobra por hora por los recursos solicitados
- También puede especificar una configuración sin servidor. En esta configuración, Microsoft crea su propio servidor, que se puede compartir entre las bases de datos que pertenecen a otros suscriptores de Azure. En este caso, Microsoft garantiza la privacidad de su base de datos. Su base de datos se escala automáticamente y los recursos se asignan o desasignan según sea necesario.
- Pero también se puede configurar para trabajar sin servidor, aquí Azure crea su propio servidor que se puede compartir entre varias bases de datos que pertenecen a otros usuarios de Azure y se garantiza la privacidad de las BD y la BD se escala automáticamente
- Cada BD esta aislada y se puede transportar
- Los recursos están predefinidos y se cobrar por estos x hora
Grupo elástico
- Esta opción es similar a la opción Base de datos única excepto en que, de forma predeterminada, varias bases de datos pueden compartir los mismos recursos, como la memoria, el espacio de almacenamiento de datos y la capacidad de procesamiento mediante la arquitectura multiinquilino.
- Este modelo es útil si tiene bases de datos con requisitos de recursos que varían con el tiempo
- La opción Grupo elástico le permite usar los recursos disponibles en el grupo y liberarlos una vez que se haya completado el procesamiento
- Aquí varias BD pueden compartir los recursos (grupo de recursos) y puede ser multi-inquilino
- Es útil cuando se tienen BD’s que pueden variar sus recursos en un tiempo
- Es decir una BD puede aprovechar los recursos disponibles en el grupo de recursos y liberarlos cuando no los necesita
Casos de uso
- Aplicaciones modernas en la nube que necesitan usar las características estables más recientes de SQL Server.
- Aplicaciones que requieren alta disponibilidad.
- Sistemas con una carga variable que necesitan escalar y reducir verticalmente el servidor de bases de datos de forma rápida.
- Cuando se quieren crear aplicaciones modernas en la nube, con una BD Relacional, que este actualizado, procesos sin servidor, almacenamiento, escalado, y características avanzas de inteligencia artificial que optimicen el rendimiento y durabilidad
- Aplicaciones que requieren alta disponibilidad
- O sistemas con carga variable
Ventajas
- Azure SQL Database actualiza automáticamente el software de SQL Server y le aplica revisiones para asegurarse de que siempre se ejecuta la versión más reciente y más segura del servicio.
- Escalabilidad: garantizan que pueda aumentar los recursos disponibles para almacenar y procesar los datos sin tener que llevar a cabo una actualización manual costosa
- Este servicio proporciona garantías de alta disponibilidad para garantizar que las bases de datos están disponibles al menos el 99,99 % del tiempo
- admite la restauración a un momento dado, lo que le permite recuperar una base de datos al estado en que se encontraba en cualquier momento del pasado
- Las bases de datos se pueden replicar en distintas regiones para proporcionar más resistencia y una mayor recuperación ante desastres.
- Advanced Threat Protection proporciona funcionalidades de seguridad avanzadas, como las evaluaciones de vulnerabilidad, para ayudar a detectar y corregir posibles problemas de seguridad con las bases de datos.
- Las alertas de detección de amenazas proporcionan detalles de la actividad sospechosa y recomiendan acciones para investigar y mitigar la amenaza.
- La auditoría hace un seguimiento de los eventos de una base de datos y los escribe en un registro de auditoría de su cuenta de almacenamiento de Azure.
- La auditoría puede ayudarle a mantener el cumplimiento de normativas, comprender la actividad de las bases de datos y conocer las discrepancias y anomalías que pueden indicar problemas en el negocio o infracciones de seguridad sospechosas.
- Actualización automática
- Alta disponibilidad
- Funcionalidades Advance Thread Protection: seguridad avanzada como evaluaciones de seguridad
- Auditoria de los eventos de BD
- Cifrado de datos para datos en transito (Always Encrypt) y en reposo se utiliza el cifrado transparente
facilita la protección de los datos con un cifrado que protege los datos almacenados en la base de datos (en reposo) y mientras se transfieren a través de la red (en movimiento).
Azure SQL Edge
- Un motor SQL optimizado para escenarios de Internet de las cosas (IoT) en los que es necesario trabajar con datos de serie temporal de streaming.
Comparación de los servicios de Azure SQL
¿Qué son MySQL, MariaDB y PostgreSQL?
- son sistemas de administración de bases de datos relacionales
Azure Database for MySQL
MYSQL
- Es la base de datos relacional de código abierto líder para aplicaciones de pila de Linux, Apache, MySQL y PHP (LAMP)
- Está disponible en varias ediciones; Community, Estándar y Enterprise
- La edición Community está disponible de forma gratuita y se ha usado históricamente como sistema de administración de bases de datos para aplicaciones web que se ejecutan en Linux.
- La edición Estándar ofrece mayor rendimiento y usa una tecnología diferente para almacenar los datos
- La edición Enterprise proporciona un completo conjunto de herramientas y características, entre las que se incluyen seguridad mejorada, disponibilidad y escalabilidad
- Las ediciones Estándar y Enterprise son las más usadas por las organizaciones comerciales, aunque estas versiones del software no son gratuitas.
- Tiene 3 ediciones
- Community: versión principal para sistemas Web que corren en Linux y Windows
- Estándar: Ofrece un mayor rendimiento y posee una tecnología diferente para almacenar los datos
- Enterprise: proporciona un conjunto grupo de herramientas y características como seguridad mejorada, disponibilidad y escalabilidad
Azure
- PaaS
- se basa en la edición Community de MySQL.
- incluye alta disponibilidad sin costos adicionales y escalabilidad según sea necesario
- Solo paga por lo que usa
- proporcionan copias de seguridad automáticas con restauración a un momento dado.
- El servidor ofrece seguridad de conexión para aplicar las reglas de firewall y, opcionalmente, requerir conexiones SSL.
- parámetros de servidor permiten configurar opciones del servidor, como los modos de bloqueo, el número máximo de conexiones y los tiempos de espera.
- proporciona un sistema de base de datos global que se puede escalar verticalmente a bases de datos grandes sin necesidad de administrar el hardware, los componentes de red, los servidores virtuales, las revisiones de software y otros componentes subyacentes.
- Hay algunas operaciones que no están disponibles con Azure Database for MySQL. Estas funciones están relacionadas principalmente con la seguridad y la administración. Azure administra estos aspectos del propio servidor de bases de datos.
- Azure Database for MySQL tiene dos opciones de implementación: servidor único y servidor flexible.
Servidor flexible para Azure Database for MySQL
- es una base de datos totalmente administrada como una oferta de servicio, con rendimiento predecible y escalabilidad dinámica
- Servidor flexible proporciona un control y una flexibilidad más pormenorizados sobre las funciones y la configuración de la administración de la base de datos
- El servidor flexible es la opción de implementación recomendada para todos los nuevos desarrollos o migraciones.
Servidor único de Azure Database for MySQL
- es una base de datos totalmente administrada como una oferta de servicio, con rendimiento predecible y escalabilidad dinámica
- Los servidores únicos son más adecuados para las aplicaciones que ya usan un servidor único.
Ventajas
- Características de alta disponibilidad integradas.
- Alta disponibilidad sin costos adicionales
- Rendimiento predecible.
- Escalado sencillo que responde rápidamente a la demanda.
- Protección de los datos, tanto en reposo como en movimiento.
- Copias de seguridad automáticas y restauración a un momento dado de los últimos 35 días.
- Seguridad de categoría empresarial y cumplimiento normativo.
- Alta disponibilidad sin costos adicionales
- Escalabilidad según sea necesario (Solo paga por lo que usa)
- Se brindan copias de seguridad automáticas
- Proporciona seguridad de conexión para aplicar reglas de firewall y conexiones SSL
- Permite configurar los modos de bloqueo, número máximo de conexión y tiempos de espera
- Es un sistema de BD global
- Se puede escalar verticalmente sin necesidad de administrar hardware, componentes de red, servidores virtuales, revisiones de software y otros componentes
- Alta disponibilidad
- Rendimiento predecible
- Escalado sencillo
- Protección de datos tanto en reposo como en transito
- Copias de seguridad automáticas
- Restauración de hasta 35 días
- Seguridad de categoría empresarial y cumplimiento normativo
- Pago por us
MariaDB
MariaDB
- es un sistema de administración de bases de datos más reciente creado por los desarrolladores originales de MySQL
- El motor de base de datos se ha reescrito y se ha optimizado para mejorar el rendimiento
- MariaDB ofrece compatibilidad con Oracle Database
- Una característica notable de MariaDB es su compatibilidad integrada con los datos temporales. Una tabla puede contener varias versiones de datos, lo que permite que una aplicación consulte los datos tal y como aparecían en algún momento del pasado.
- Una característica es compatibilidad integrada con los datos temporales, es decir una tabla puede contener varias versiones de datos, permitiendo que una aplicación pueda consultar los datos en un periodo anterior
Azure
- Se basa en la edición Community de MariaDB
- Azure administra y controla totalmente la base de datos.
- Azure administra y controla totalmente la base de datos.
Ventajas
- Alta disponibilidad integrada sin coste adicional.
- Rendimiento predecible, con precios de pago por uso inclusivos.
- Escalado según sea necesario en cuestión de segundos.
- Protección segura de los datos confidenciales en reposo y en movimiento.
- Copias de seguridad automáticas y restauración a un momento dado durante un máximo de 35 días.
- Seguridad y cumplimiento de nivel empresarial.
- Alta disponibilidad sin costo adicional
- Rendimiento predecible de precio por uso
- Escalado sencillo
- Protección de los datos (reposo y movimiento)
- Copias de seguridad automáticas
- Recuperación hasta de 35 días
- Seguridad y cumplimiento a nivel empresarial
PostgreSQL
PostgreSQL
- es una base de datos híbrida de objetos relacionales
- permite almacenar datos en tablas relacionales, pero también tipos de datos personalizados con sus propias propiedades no relacionales
- El sistema de administración de bases de datos es extensible, es decir, se pueden agregar módulos de código a la base de datos, los cuales pueden ejecutarse mediante consultas.
- Otra característica clave es su capacidad de almacenar y manipular datos geométricos, como líneas, círculos y polígonos.
- dispone de su propio lenguaje de consulta llamado pgsql.
- Este lenguaje es una variante del lenguaje de consulta relacional estándar, SQL, y cuenta con características que permiten escribir procedimientos almacenados que se ejecutan en la base de datos.
- Posee su propio lenguaje de consulta llamado PG-SQL que es una variante del Lenguaje de Consultas Estructuradas (SQL)
Azure
- Paas
- Algunas características de las bases de datos locales de PostgreSQL no están disponibles en Azure Database for PostgreSQL. Estas características están relacionadas principalmente con las extensiones que los usuarios pueden agregar a una base de datos para realizar tareas especializadas, como escribir procedimientos almacenados en varios lenguajes de programación (distintos de pgsql, el cual está disponible) e interactuar directamente con el sistema operativo. Se admite un conjunto básico de las extensiones que se usan con más frecuencia, y la lista de extensiones disponibles se revisa continuamente.
- tiene tres opciones de implementación: Servidor único, Servidor flexible e Hiperescala.
Azure Database for PostgreSQL con la opción Servidor único
La opción de implementación de servidor único para PostgreSQL proporciona ventajas similares a Azure Database for MySQL. Puede elegir entre tres planes de tarifa: Básico, De uso general y Optimizado para memoria. Cada nivel admite una cantidad de procesadores, una capacidad de memoria y tamaños de almacenamiento diferentes (puede seleccionar uno en función de la carga que espera admitir).
- Es un modelo de implementación que tiene 3 planes de tarifas y cada nivel admite una cantidad de procesadores, memoria y tamaños de almacenamiento diferentes
- Básico
- De uso general
- Optimizado para memoria
Servidor flexible de Azure Database for PostgreSQL
La opción de implementación de servidor flexible para PostgreSQL es un servicio de base de datos totalmente administrado. Proporciona más personalizaciones de configuración de servidor y control, y tiene mejores controles de optimización de costos.
Hiperescala (Citus) de Azure Database for PostgreSQL
Hiperescala (Citus) es una opción de implementación que escala las consultas entre varios nodos de servidor para admitir grandes cargas de base de datos. Una base de datos se divide en nodos y los datos se dividen en fragmentos según el valor de una clave de partición o de particionamiento. Se recomienda usar esta opción de implementación para las implementaciones de PostgreSQL de bases de datos más grandes en la nube de Azure.
- Es una opción de implementación que escala una consulta entre varios nodos del servidor para admitir grandes cargas de bases de datos
- Una BD se divide en nodos y los datos se dividen en fragmentos según el valor de una clave de partición o de particionamiento
- Se recomienda usar esta opción para implementaciones de BD grandes
Ventajas
- es un servicio de alta disponibilidad
- Integra mecanismos de conmutación por error y de detección de errores.
- Los usuarios de PostgreSQL estarán familiarizados con la herramienta pgAdmin, que puede usar para administrar y supervisar una base de datos de PostgreSQL.Aun así, algunas funcionalidades centradas en el servidor, como la realización de copias de seguridad y la restauración del servidor, no están disponibles porque Microsoft se encarga de administrar y mantener el servidor.
- Azure Database for PostgreSQL registra información de las consultas que se ejecutan en las bases de datos del servidor y las guarda en una base de datos llamada azure_sys. Puede consultar la vista query_store.qs_view para ver esta información y usarla para supervisar las consultas que ejecutan los usuarios. Esta información puede resultar muy valiosa si necesita ajustar las consultas que realizan las aplicaciones.
- Registran las consultas que ejecutan los usuarios y las almacena en una BD llamada azure_sys, puede consultar la vista query_store-qs_view para consultar esta información
- La migración de datos se puede hacer con Database Migration Service que permite sacar un respaldo de una BD local y migrarla a la nube
- También se puede configurar la replicación desde una BD local para que los datos que se administran local también se guarden en la BD de Azure permitiendo que las aplicaciones se puedan conectar al a BD de Azure mientras el sistema local sigue funcionando, es decir no es necesario apagar el sistema local mientras se hace la migración
- Alta disponibilidad sin costo adicional
- Rendimiento predecible de precio por uso
- Escalado sencillo
- Protección de los datos (reposo y movimiento)
- Copias de seguridad automáticas
- Recuperación hasta de 35 días
- Seguridad y cumplimiento a nivel empresarial
- Al igual que sucede con los sistemas de bases de datos de Azure SQL, los administradores de bases de datos son los responsables de administrar las bases de datos relacionales de código abierto para admitir aplicaciones transaccionales. Dichas bases de datos proporcionan un origen de datos para los ingenieros de datos que crean canalizaciones destinadas a soluciones analíticas, así como para los analistas de datos que crean informes.
Servicios Azure No Relacionales
-
Azure Storage es un servicio básico de Azure que permite almacenar datos en:
- Contenedores de blobs: almacenamiento escalable y rentable para archivos binarios.
- Recursos compartidos de archivos: recursos compartidos de archivos de red, como es habitual en redes corporativas.
- Tablas: almacenamiento de clave-valor para aplicaciones que necesitan leer y escribir valores de datos rápidamente.
-
Los ingenieros de datos usan Azure Storage para hospedar lagos de datos, es decir, almacenamiento de blobs con un espacio de nombres jerárquico que permite organizar los archivos en carpetas en un sistema de archivos distribuido.
-
Todos los datos incluidos en una cuenta de Azure Storage son cifrados
- De forma predetermina se cifran con las claves de cifrado que son propiedad de Microsoft
- Pero también se pueden proporcionar claves propias de cifrado
- Para hacer esto es necesario agregar estas claves en el servicio de Azure Key Vault
Servicios Azure:
- Azure Blob Storage
- Azure Data Lake Storage Gen2
- Azure File
- Azure Table Storage
Configuración de las firmas de acceso compartido
- Se pueden utilizar formas de acceso compartido para conceder derechos limitados a los recursos de una cuenta de Azure Storage durante un periodo de tiempo especificado
- Esto permite que las aplicaciones accedan a recursos como blob’s y archivos sin la necesidad de autenticarse primero
- Solo debe utilizar SAS para los datos que se deban hacer públicos
- La aplicación anexa el token a la URL del recurso, después la aplicación puede enviar solicitudes para leer o escribir datos mediante esta dirección URL
- Se puede crear un token que conceda acceso temporal a todo el servicio, a los contenedores del servicio o a objetos individuales como blob’s o archivos
- Se debe especificar:
- Los permisos
- El periodo de tiempo donde el token es válido
- E intervalo de direcciones IP de los equipos que tienen permiso de utilizar el token
Tipo de datos | No estruturados |
Características
- Azure Blob Storage es un servicio que le permite almacenar grandes cantidades de datos no estructurados como objetos binarios grandes, o blobs, en la nube.
- Muchas aplicaciones requieren almacenar objetos de datos binarios en la nube
- Como imágenes, audio y secuencias de vídeo
- Los blobs son una manera eficaz de almacenar archivos de datos en un formato optimizado para el almacenamiento basado en la nube, y las aplicaciones pueden leerlos y escribirlos mediante la API de Azure Blob Storage.
Tipo de Blob Storage
- Blobs en bloques.
- Un blob en bloques se trata como un conjunto de bloques.
- Cada bloque puede tener un tamaño distinto, de hasta 100 MB.
- Un blob en bloques puede contener hasta 50 000 bloques, con un tamaño máximo de más de 4,7 TB.
- El bloque es la cantidad más pequeña de datos que se puede leer o escribir como una unidad individual.
- Los blobs en bloques se recomiendan especialmente para almacenar objetos binarios grandes discretos que cambian con poca frecuencia.
- Blobs en páginas.
- Un blob en páginas se organiza como una colección de páginas de tamaño fijo de 512 bytes.
- Un blob en páginas está optimizado para admitir operaciones de lectura y escritura aleatorias;
- puede capturar y almacenar datos para una sola página si es necesario.
- Un blob en páginas puede contener hasta 8 TB de datos.
- Azure usa blobs en páginas para implementar el almacenamiento de discos virtuales de las máquinas virtuales.
- Blobs en anexos.
- Un blob en anexos es un blob en bloques optimizado para admitir operaciones de anexión.
- Solo puede agregar bloques al final de un blob en anexos;
- no se admite la actualización o eliminación de bloques existentes.
- Cada bloque puede tener un tamaño distinto, de hasta 4 MB.
- El tamaño máximo de un blob en anexos es de algo más de 195 GB.
Contenedores
- En una cuenta de Azure Storage, los blobs se almacenan en contenedores.
- Un contenedor proporciona una manera cómoda de agrupar blobs relacionados
- Puede controlar quién puede leer y escribir blobs dentro de un contenedor en el nivel de contenedor.
- Dentro de un contenedor, puede organizar los blobs en una jerarquía de carpetas virtuales, similares a los archivos de un sistema de archivos en un disco.
- Sin embargo, de manera predeterminada, estas carpetas no son más que una forma de utilizar un carácter «/» en el nombre de un blob para organizar los blobs en espacios de nombres. Las carpetas son puramente virtuales y no es posible hacer operaciones de nivel de carpeta para controlar el acceso ni hacer operaciones masivas.
Niveles de Acceso
-
Frecuente
- El nivel de acceso frecuente es el predeterminado.
- Este nivel se usa para los blobs a los que se accede con frecuencia.
- Los datos de blob se almacenan en medios de alto rendimiento.
-
Esporádico
- El nivel Esporádico tiene un rendimiento inferior e incurre en cargos de almacenamiento reducidos en comparación con el nivel Frecuente.
- Tiene un rendimiento y costo menor
- Use el nivel de acceso esporádico para los datos a los que se accede con poca frecuencia.
- Es habitual que el acceso a los blobs recién creados sea más frecuente al principio y menos frecuente a medida que pasa el tiempo.
- En estas situaciones, puede crear el blob en el nivel de acceso frecuente, pero migrarlo al nivel de acceso esporádico más adelante.
- Puede migrar un blob del nivel de acceso esporádico al frecuente.
-
Acceso de archivo
- El nivel Archivo proporciona el menor costo de almacenamiento, pero una mayor latencia.
- El nivel de acceso de archivo está pensado para los datos históricos que no deben perderse, pero que raramente se necesitan.
- Los blobs del nivel de acceso de archivo se almacenan de forma eficaz en un estado sin conexión.
- La latencia de lectura típica para los niveles de acceso frecuente y esporádico es de unos milisegundos, pero para el nivel de acceso de archivo los datos pueden tardar horas en estar disponibles.
- Para recuperar un blob desde el nivel de acceso de archivo, debe cambiar el nivel de acceso a acceso frecuente o esporádico.
- Con ello, el blob se rehidratará.
- Solo puede leer el blob una vez que se ha completado el proceso de rehidratación.
Directivas
- Puede crear directivas de administración del ciclo de vida para los blobs de una cuenta de almacenamiento.
- Una directiva de administración del ciclo de vida puede trasladar automáticamente un blob de acceso frecuente a acceso esporádico y, a continuación, al nivel de acceso de archivo, a medida que pasa el tiempo y se usa con menos frecuencia (la directiva se basa en el número de días transcurridos desde la última modificación).
- La directiva se basaría en el tiempo transcurrido desde la última modificación
- Una directiva de administración del ciclo de vida también puede organizarse para eliminar blobs obsoletos.
Ventajas
- Control de versiones: se pueden restablecer versiones anteriores de un blob
- Eliminación temporal: permite recuperar un blob que se ha eliminado o se ha sobreescrito
- Instantánea: es una versión de solo lectura de un blob en un momento determinado
- Fuente de cambios: proporciona un registro ordenado de solo lectura de actualizaciones realizadas en un blob, se utiliza para supervisar cambios y realizar operaciones como:
- Extraer métricas e información de análisis de negocio
- Almacenar, auditar y analizar cambios del objeto en un periodo de tiempo por seguridad, cumplimiento normativo o inteligencia de administración de datos empresariales
- Crear soluciones para las copias de seguridad el reflejado o las replicaciones del estado de los objetos para la administración de desastres o el cumplimiento
- Crear canalizaciones de aplicaciones conectadas para que reaccionen a eventos de cambio o para que programen ejecuciones basadas en objetos creados o modificados
- Garantiza la disponibilidad Azure Blob Storage brinda redundancia, estos siempre se replican 3 veces en la región en que se creó la cuenta, pero también se puede configurar para crear la redundancia en una segunda región por un costo adicional
Casos de uso
- Suministrar imágenes o documentos a un sitio web estático (es decir que aquellos que están enfocados a brindar información y no a una interacción con el usuario)
- Almacenar archivos para el acceso distribuido
- Realizar streaming de audio y vídeo
- Almacenar datos para copias de seguridad, recuperación ante desastres, archivado o para el análisis realizado por un servicio local u hospedado por Azure
Exploración de Azure Data Lake Storage Gen2
Azure Data Lake Store (Gen1)
- Azure Data Lake Store (Gen1) es un servicio independiente para el almacenamiento jerárquico de los datos de lagos de datos analíticos que, con frecuencia, usan las denominadas soluciones de análisis de macrodatos que funcionan con datos estructurados, semiestructurados y no estructurados, almacenados en archivos.
Azure Data Lake Storage Gen2
- es una versión más reciente de este servicio que se integra en Azure Storage
- permite aprovechar la escalabilidad del almacenamiento en blobs y el control de costos de los niveles de almacenamiento
- combinado con las capacidades del sistema de archivos jerárquico y la compatibilidad con los principales sistemas de análisis de Azure Data Lake Store.
- Sistemas como Hadoop en Azure HDInsight, Azure Databricks y Azure Synapse Analytics pueden montar un sistema de archivos distribuido hospedado en Azure Data Lake Store Gen2 y usarlo para procesar grandes volúmenes de datos.
- PARA HABILITARLO:
- Para crear un sistema de archivos de Azure Data Lake Store Gen2, debe habilitar la opción Espacio de nombres jerárquico de una cuenta de Azure Storage.
- Puede hacerlo al crear inicialmente la cuenta de almacenamiento, o bien puede actualizar una cuenta de Azure Storage ya existente para que admita Data Lake Gen2. Sin embargo, tenga en cuenta que la actualización es un proceso unidireccional: después de actualizar una cuenta de almacenamiento para que admita un espacio de nombres jerárquico de almacenamiento de blobs, no se puede revertir a espacio de nombres plano.
Explorar Azure Files Storage
- Azure File Storage se crea en una cuenta de almacenamiento.
- Azure Files le permite compartir hasta 100 TB de datos en una sola cuenta de almacenamiento.
- Estos datos se pueden distribuir en cualquier número de recursos compartidos de archivos de la cuenta.
- Muchos sistemas locales que comprenden una red de equipos internos usan recursos compartidos de archivos.
- Un recurso compartido de archivos permite almacenar un archivo en un equipo y conceder acceso a ese archivo a los usuarios y las aplicaciones que se ejecutan en otros equipos.
- Azure Files es una manera de crear recursos compartidos de red basados en la nube,
- Permite crear recursos de archivos compartidos en la nube y acceder a ellos desde una conexión a Internet
- Al hospedar recursos compartidos de archivos en Azure, las organizaciones pueden eliminar los costos de hardware y la sobrecarga de mantenimiento, y beneficiarse de la alta disponibilidad y el almacenamiento escalable en la nube para los archivos.
- El tamaño máximo de un solo archivo es de 1 TB
- pero puede establecer cuotas para limitar el tamaño de cada recurso compartido por debajo de esta cifra
- Actualmente, Azure File Storage admite hasta 2000 conexiones simultáneas por cada archivo compartido.
- Una vez que crea una cuenta de almacenamiento, puede cargar archivos en Azure File Storage mediante Azure Portal, o bien mediante herramientas como la utilidad AzCopy
- Asimismo, puede usar el servicio Azure File Sync para sincronizar las copias almacenadas localmente en caché de archivos compartidos con los datos de Azure File Storage.
Niveles de rendimiento
Estándar
- usa hardware basado en disco duro en un centro de datos
- que se basa en discos duros mecánicos
Premium
- usa discos de estado sólido.
- ofrece un mayor rendimiento, pero se cobra a una tarifa superior.
Protocolos comunes de uso compartido de archivos de red
SMB
- Bloque de mensajes del servidor / Server Message Block (SMB)
- se utiliza generalmente entre varios sistemas operativos (Windows, Linux, macOS).
- MCT: es un protocolo de red que permite compartir archivos entre los nodos de una red que comparten el mismo Sistema Operativo Windows
NFS
- Los utilizan algunas versiones de Linux y macOS
- Para crear un recurso compartido NFS, debe usar una cuenta de almacenamiento de nivel Premium y crear y configurar una red virtual a través de la cual se pueda controlar el acceso al recurso compartido.
Casos de uso
- Migrar aplicaciones existentes a la nube sin tener que aprovisionar MV
- Compartir datos entre un servidor local y uno en la nube como archivos de registro, datos de eventos y copias de seguridad
- Se pueden integrar las aplicaciones heredadas por aplicaciones modernas en la nube
- O desarrollar nuevas aplicaciones basadas en archivos compartidos
- Se ofrece disponibilidad continua lo que permite alojar aplicaciones como SQL Server con datos almacenados en la cuenta de archivos compartidos
- Es importante no utilizar Azure File Storage para archivo que requieren acceso simultaneo (Que se necesite escribir al mismo tiempo)
Ventajas
- Es un servicio totalmente administrado es decir los recursos se pueden crear sin la necesidad de administrar el hardware ni el SO
- Los datos compartidos se replican localmente dentro de una región pero también se puede hacer en otra
- Todos los datos se cifran en reposo y se puede habilitar el cifrado para los datos en transito
Exploración de tablas de Azure
- Tipo por uso: OLAP
- Datos: No estructurados / Semiestruturados
- Azure Table Storage es una solución de almacenamiento NoSQL que usa tablas que contienen elementos de datos de clave-valor.
- Azure Table Storage implementa el modelo clave-valor de NoSQ
- En este modelo los datos se almacenan como un conjunto de campos y el elemento se identifica con una clave única
- Los elementos se conocen como filas y los campos se denominan columnas
- Cada elemento se representa mediante una fila que contiene columnas para los campos de datos que deben almacenarse.
- Sin embargo, no se confunda al pensar que una tabla de Azure Table Storage es como una tabla de una base de datos relacional.
- Una tabla de Azure le permite almacenar datos semiestructurados
- Todas las filas de una tabla deben tener una clave única (compuesta de una clave de partición y una clave de fila)
- al modificar los datos de la tabla, una columna de marca de tiempo registra la fecha y la hora en las que se realizó la modificación; pero, aparte de eso, las columnas de cada fila pueden variar.
- Las tablas de Azure Table Storage no tienen los conceptos de claves externas, relaciones, procedimientos almacenados, vistas u otros objetos que puede encontrar en una base de datos relacional.
- Normalmente, los datos en Azure Table Storage se desnormalizan y cada fila contiene los datos completos de una entidad lógica
Acceso de datos
- Para garantizar que el acceso sea rápido, Azure Table Storage divide una tabla en particiones
- La creación de particiones es un mecanismo para agrupar filas relacionadas según una propiedad común o clave de partición.
- Las filas que comparten la misma clave de partición se almacenarán juntas
- Además de ayudar a organizar los datos, la creación de particiones también puede mejorar la escalabilidad y el rendimiento de las siguientes formas:
- Las particiones son independientes entre sí, y pueden agrandarse o reducirse a medida que se agregan o se quitan filas de una partición. Una tabla puede contener cualquier número de particiones.
- Al buscar datos, puede incluir la clave de partición en los criterios de búsqueda. Esto ayuda a reducir el volumen de datos que se va a examinar y mejora el rendimiento, ya que reduce la cantidad de E/S (operaciones de entrada y salida o lecturas y escrituras) necesaria para localizar los datos.
- La clave de una tabla de Azure Table Storage consta de dos elementos: la clave de partición, que identifica la partición que contiene la fila, y una clave de fila, que es única para cada fila de la misma partición.
- Los elementos de una misma partición se almacenan en el orden de las claves de fila
- Si una aplicación agrega una nueva fila a una tabla, Azure garantiza que la fila se coloca en la posición correcta de la tabla
- Este esquema permite que una aplicación realice rápidamente consultas de punto, que identifican una sola fila, y consultas por rango, que capturan un bloque contiguo de filas en una partición.
- El acceso de datos se realiza a través de particiones
- Que es un mecanismo de agrupación de filas según la propiedad o clave
- Cada partición es independiente entre sí
- La clave de una Azure Table Storage consta de 2 elementos:
- Clave de la partición: que identifica la partición que contiene la fila
- Clave de fila: que es única para cada fila de una partición
- Los elementos de una partición se almacenan en el orden de las claves de la fila
- Este esquema permite que una aplicación realice rápidamente consultas de punto que identifican una sola fila
Datos
- Las columnas de una tabla pueden contener valores numéricos / Cadena / Binarios de hasta 64KB
- Lata tabla puede tener hasta 252 columnas ademas de la clave de fila y partición
- El tamaño máximo de las filas es de 1 MB
- Y los más importante es elegir correctamente las claves de fila-partición
Ejemplo
- Una organización de seguridad informática estudia los ciberataques que son reportados por varias empresas, para ellos se lleva un registro donde los ataques se clasifican por tipo y fecha
- cada uno es distinto por lo que la información a almacenar es distinta para cada uno
- Se pueden guardar archivos, imágenes, audios, etc
- Esto se puede almacenar en Azure Table Storage con la siguiente estructura
- La clave de la partición es el tipo de ciberataque
- Y la clave de la fila es la fecha
- Y cada partición permite almacenar distintos datos
Ventajas
- Es fácil de escalar
- Se tarda el mismo tiempo en insertar datos en una tabla vacía que en una tabla como miles de millones de registros
- Una cuenta de almacenamiento de Azure puede almacenar hasta 500TB de datos
- No es necesario asignar y mantener las relaciones complejas que se deben tener en una BD relacional
- La inserción de filas es rápida
- La recuperación de datos también es rápida si se brinda la clave de fila y partición como criterios de búsqueda
- Esta diseñado para manejar grandes volúmenes de datos con hasta cientos de TB’s
- Ofrece garantías de alta disponibilidad en una sola región, los datos se replican hasta 3 veces en la misma región, pero también lo puede configurar para tener redundancia en otra zona geográfica pero con un precio
- Permite proteger los datos ya que puede configurar la seguridad y control de acceso basado en roles RBAC
Desventajas
- Se debe tener en cuenta la coherencia de los datos ya que no esta restringido como en las BD relacionales
- No hay integridad referencial lo que quiere decir que cualquier relación entre filas debe mantenerse en forma externa a la tabla
- Es difícil filtrar y ordenar los datos que no son claves, las consultas que se realizan en función de campos que no son clave pueden dar lugar a recorridos de la tabla completa
Azure Cosmos DB
- Azure Cosmos DB es un sistema de base de datos no relacional (NoSQL)
- a escala global
- Azure Cosmos DB es un servicio de base de datos en la nube altamente escalable para datos NoSQL.
- admite varias interfaces de programación de aplicaciones (API), lo que permite almacenar y administrar datos como documentos JSON, pares clave-valor, familias de columnas y gráficos.
- Una API es una interfaz de programación de aplicaciones. Los sistemas de administración de bases de datos (y otros marcos de software) proporcionan un conjunto de API que los desarrolladores pueden usar para escribir programas que necesitan tener acceso a datos. Las API serán diferentes para los distintos sistemas de administración de bases de datos.
- En algunas organizaciones, los administradores de base de datos pueden aprovisionar y administrar las instancias de Cosmos DB, aunque suelen ser los desarrolladores de software quienes administran el almacenamiento de datos NoSQL como parte de la arquitectura general de la aplicación.
- A menudo, los ingenieros de datos necesitan integrar orígenes de datos de Cosmos DB en soluciones analíticas empresariales que admitan el modelado y la elaboración de informes por parte de los analistas de datos.
- Cosmos DB usa índices y particiones para proporcionar un rendimiento rápido de lectura y escritura y se puede escalar a volúmenes masivos de datos.
- Cosmos administra los datos como un conjunto de documentos con particiones
- Un documento es una colección de campos identificados por una clave
- Los campos de cada documento puede variar
- Y un campo puede contener documentos secundarios
- Puede habilitar escrituras en varias regiones, agregando las regiones de Azure que prefiera a su cuenta de Cosmos DB para que los usuarios distribuidos globalmente puedan trabajar con datos en su réplica local.
JSON
- Normalmente se utiliza el formato JSON para crear los documentos No SQL
- Los campos se colocan entre llaves y tienen un prefijo como nombre
- Un documento puede contener hasta 2 MB de datos entre los que se incluyen objetos binario pequeños, si se requiere almacenar más datos puede utilizar Azure Blob Storage y agregando la referencia al documento
Contenedores
- Los documentos de una BD se organizan en contenedores y los documentos de un contenedor se agrupan en particiones las cuales contienen un conjunto de documentos que comparten una clave de partición
- Estro ayuda a reducir las operaciones de E/S de disco
- Una cuenta de CosmosDB crear muy pocos recursos entre los principales las BD’s y los contenedores
- Azure Cosmos DB utiliza el concepto de unidades de solicitudes por segundo RU/s para administrar el rendimiento y el costo de las BD’s
- El rendimiento mínimo que se puede asignar a una BD o contener es de 400RU/s
- Se pueden aumentar o disminuir la RU/s de un contenedor en cualquier momento
- Pero el aumento de RU/s aumenta el costo también
Replicación
- Azure Cosmos DB permite replicar las BD y contenedores en varias regiones
- Esto se puede realizar al momento de aprovisionar el servicio
- Pero también existe dentro del servicio una página para configurar la replicación
- NOTA: la replica donde se creó el servicio es la única con permisos de escritura las demás son solo de lectura, se puede habilitar la escritura en otras regiones pero no hay garantía que se modifiquen los mismos datos en dos regiones distintas
- La modificación es asíncrona y al tener un retraso puede se que exista un retraso mientras se actualizan los datos entre regiones
- Cada replica aumenta el costo del servicio
Coherencia
Lectura/Escritura
- Dentro de una región Cosmos DB utiliza un clúter de servidores este enfoque ayuda a mejorar la escalabilidad y disponibilidad
- En cada servidor se guarda una copia de los datos
- Cuando una aplicación escribe datos en un servidor se registra un cambio que después se replica en los demás servidores del cluster
- Por ejemplo si al APP A actualiza datos en le servidor 1 y la APP B lee los datos aún no actualizados del servidor 2
- Y este problema no solo se puede dar si se utilizan dos APP’s diferentes, sino que también una misma aplicación que escribe en el servidor 1 y leer del servidor 2
- Por estos Cosmos DB permite especificar como se deben controlar las incoherencias esto dentro de la página de «Coherencia predeterminada»
- Se ofrecen las siguientes opciones:
- Fuerte: es la menos coherente, los cambios no se perderán ya que en algún momento aparecerán pero es posible que no aparezcan de inmediato, por lo que los cambios pueden parecer desordenados
- Obsolescencia Limitada: hay un retraso entre la escritura y la lectura de los datos actualizados
- Sesión: si una aplicación realiza una serie de cambios todos esos cambios estarán actualizados y en orden para esa aplicación, pero otras aplicaciones los podrán ver cuando se sincronicen
- Prefijo Coherente: esta opción garantiza que los cambios aparezcan en orden aunque puede existir un retraso antes que sean visibles
- Posible: todas las escrituras son visibles para los clientes después de confirmar que se han escrito correctamente, esta opción no esta disponible si se necesita distribuir los datos en varias regiones globales
Cuándo usar Cosmos DB
- Cosmos DB asigna automáticamente espacio para las particiones en un contenedor y cada partición puede crecer hasta un tamaño de 10 GB.
- Los índices se crean y se mantienen de forma automática. No hay prácticamente ninguna sobrecarga administrativa.
- Muchos de los productos de Microsoft usan Cosmos DB para aplicaciones críticas a escala global, como Skype, Xbox, Microsoft 365 y Azure
- Cosmos DB es muy recomendable para los escenarios siguientes:
- IoT y telemática. Estos sistemas suelen ingerir grandes cantidades de datos en ráfagas de actividad frecuentes. Cosmos DB puede aceptar y almacenar esta información con rapidez. lo que permite que servicios analíticos como Azure Machine Learning, Azure HDInsight o Power BI puedan hacer uso de esos datos. Además, los datos se pueden procesar en tiempo real a través de funciones de Azure Functions que se activan a medida que los datos van llegando a la base de datos. MCT: En IoT se necesita realizar la ingesta de muchos datos procedentes de muchos sensores que luego deben ser procesados para obtener perspectivas en tiempo real
- Comercio y marketing. Microsoft usa Cosmos DB en sus plataformas de comercio electrónico propias que se ejecutan como parte de la Tienda Windows y Xbox Live. También se usa en el sector comercial para almacenar los datos de catálogo y para el suministro de eventos en las canalizaciones de procesamiento de pedidos.
- Juegos. El nivel de base de datos es un componente fundamental de las aplicaciones de juegos. Los juegos modernos realizan el procesamiento de los elementos grafos en los clientes de consola o dispositivos móviles, pero utilizan la nube para ofrecer contenido personalizado y a medida, como estadísticas dentro del juego, integración con las redes sociales y los marcadores de puntuaciones. A menudo, los juegos requieren latencias de un solo milisegundo en las lecturas y escrituras para proporcionar una experiencia de juego inmersiva. Una base de datos de un juego debe ser rápida y capaz de manejar los picos masivos en la velocidad de las solicitudes cuando se inicia un nuevo juego y se actualizan las características.
- Aplicaciones web y para dispositivos móviles. Azure Cosmos DB se usa normalmente en aplicaciones web y móviles y sirve para modelar interacciones sociales, para la integración con servicios de terceros y para la creación de experiencias personalizadas enriquecidas. Se pueden usar SDK de Cosmos DB con el fin de compilar aplicaciones para iOS y Android completas con el marco Xamarin Framework, muy popular.
- Redes Sociales: Otro caso es almacenar y consultar el contenido generado por usuarios para aplicaciones Web, móviles o redes sociales Ejemplos de contenidos generados por usuarios son: chat’s , twitt’s, entradas a un blog, valoraciones y comentarios
Identificación de las API de Azure Cosmos DB
Azure Cosmos DB admite varias API, lo cual permite a los desarrolladores migrar fácilmente datos desde almacenes NoSQL usados habitualmente y aplicar sus aptitudes de programación existentes. Al aprovisionar una nueva instancia de Cosmos DB, seleccione la API que quiere usar. La elección de la API depende de muchos factores, como el tipo de datos que se van a almacenar, la necesidad de admitir aplicaciones existentes y las aptitudes de API de los desarrolladores que trabajarán con el almacén de datos.
API Core (SQL)
- La API nativa de Cosmos DB administra los datos en formato de documento JSON
- a pesar de ser una solución de almacenamiento de datos NoSQL, usa sintaxis SQL para trabajar con los datos.
- Permite identificar y recuperar documentos mediante las instrucciones SELECT
-
Una consulta SQL para una base de datos de Cosmos DB que contiene datos del cliente podría ser similar a esta:
SELECT * FROM customers c WHERE c.id = "joe@litware.com"
El resultado de esta consulta consta de uno o varios documentos JSON, como se muestra aquí:
{ "id": "joe@litware.com", "name": "Joe Jones", "address": { "street": "1 Main St.", "city": "Seattle" } }
MongoDB API
- MongoDB es una base de datos de código abierto popular en la que los datos se almacenan en formato JSON binario (BSON).
- La API de MongoDB de Azure Cosmos DB permite a los desarrolladores usar bibliotecas de cliente de MongoDB en y código para trabajar con datos en Azure Cosmos DB.
- El lenguaje de consulta de MongoDB (MongoDB Query Language, MQL) usa una sintaxis compacta orientada a objetos en la que los desarrolladores usan objetos para llamar a métodos
- Se creó para que una aplicación que normalmente funciona de forma local con MongoDB pueda se implementada en la nube
Por ejemplo, la consulta siguiente usa el método find para consultar la colección products en el objeto db:
db.products.find({id: 123})
Los resultados de esta consulta constan de documentos JSON, similares a los siguientes:
{
"id": 123,
"name": "Hammer",
"price": 2.99}
}
Table API
- Table API se usa para trabajar con datos en tablas de clave-valor, de forma similar a Azure Table Storage.
- Table API de Azure Cosmos DB ofrece mayor escalabilidad y rendimiento que Azure Table Storage.
- Permite utilizar la API de Azure Table Storage para almacenar y recuperar documentos
- La función se creó para que pueda pasar de Azure Table Storage a Comos DB sin modificar las aplicaciones existentes
-
Por ejemplo, puede definir una tabla denominada Clientes de la siguiente forma:
Posteriormente, puede usar Table API de Cosmos DB a través de uno de los SDK específicos del lenguaje para realizar llamadas al punto de conexión de servicio para recuperar datos de la tabla. Por ejemplo, la siguiente solicitud devuelve la fila que contiene el registro de Samir Nadoy en la tabla anterior:
https://endpoint/Customers(PartitionKey='1',RowKey='124')
Cassandra API
- Cassandra API es compatible con Apache Cassandra, que es una base de datos de código abierto popular que usa una estructura de almacenamiento de familia de columnas
- Las familias de columnas son tablas, similares a las de una base de datos relacional, con la excepción de que no es obligatorio que cada fila tenga las mismas columnas.
- Cassandra es otro sistema de administración de BD que muchas organizaciones ejecutan de manera local
- Se proporciona una API similar al entorno local
- Su función es migrar las aplicaciones de cassandra a Cosmos DB
-
Por ejemplo, puede crear una tabla de Empleados como esta:
id Nombre Manager 1 Sue Smith 2 Ben Chan Sue Smith Cassandra admite una sintaxis basada en SQL, por lo que una aplicación cliente podría recuperar el registro de Ben Chan como se muestra a continuación:
SELECT * FROM Employees WHERE ID = 2
API de Gremlin
- Gremlin API se usa con datos en una estructura de grafos
- En el que las entidades se definen como vértices que forman nodos en el gráfico conectado.
- Implementa una interfaz de grafos en Cosmos DB
- Los datos se conservan como un conjunto de documentos en Cosmos DB pero Gremlin permite realizar consultas de grafos en los datos
- Mediante esta API se pueden examinar los objetos y las relaciones de los grafos para detectar todo tipo de relaciones complejas
- Su función es permitir la migración de BD gremlin locales en la nube
Los nodos se conectan mediante bordes que representan relaciones, como esta:
- En el ejemplo de la imagen se muestran dos tipos de vértices (empleado y departamento) y bordes que los conectan (el empleado «Ben» depende de la empleada «Sue» y ambos empleados trabajan en el departamento «Hardware»).
-
La sintaxis de Gremlin incluye funciones para operar en vértices y bordes, y esto permite insertar, actualizar, eliminar y consultar datos en el gráfico. Por ejemplo, puede usar el código siguiente para agregar un nuevo empleado llamado Alice que dependa de la empleada con el identificador 1 (Sue)
g.addV('employee').property('id', '3').property('firstName', 'Alice') g.V('3').addE('reports to').to(g.V('1'))
La consulta siguiente devuelve todos los vértices de empleado, por orden de identificador.
g.V().hasLabel('employee').order().by('id')
Nota:
- Si va a crear una nueva aplicación debe utilizar mejor SQL API
Ventajas
- Servicio totalmente administrado (brinda administración / Actualizaciones / Revisiones automáticas)
- Garantiza una alta disponibilidad de 99.99)%
- Se pueden replicar los datos entre regiones por un costo adicional
- garantiza una latencia menor a 10 milisegundos para lecturas indexadas y para escritura de 99% de los casos en todo el mundo lo que permite que la ingesta de datos y lecturas se realicen de forma rápida
- Permite un gran volumen de solicitudes de millones al día
- Todos los datos están cifrados
- La fuente de cambios facilita el seguimiento y administración de los cambios y desencadenación de eventos
Servicios Azure Almacenamiento Datos Moderno
Almacenamiento de datos moderno
- Es un término genérico que describe la infraestructura y los procesos que se usan para admitir el análisis de datos a gran escala
- Un almacenamiento de datos recopila datos de muchos orígenes que se utilizan para el análisis de informes y el procesamiento analítico en línea
- Normalmente implica copiar datos de almacenes de datos transaccionales en una base de datos relacional con un esquema optimizado para consultar y crear modelos multidimensionales; esto se realiza con técnicas usadas para los denominados análisis de «macrodatos», donde grandes volúmenes de datos en varios formatos se cargan o capturan por lotes en flujos en tiempo real y se almacenan en un lago de datos desde el que se usan motores de procesamiento distribuido como Apache Spark para procesar los datos a escala.
- Los almacenamiento de datos tienen que administrar macrodatos
Macrodatos
- son grandes cantidades de datos recopilados
- En volúmenes escalables
- A velocidades muy altas
- Y una variedad de formatos
- Pueden ser datos históricos: es decir datos almacenados
- O puede ser en tiempo real: es decir que se transmiten desde un orígen
Descripción del almacenamiento de datos moderno
La arquitectura moderna de almacenamiento de datos puede variar, al igual que las tecnologías específicas que se usan para implementarla; de todos modos, en general, se incluyen los siguientes elementos:
- Ingesta y procesamiento de datos: los datos de uno o varios almacenes de datos transaccionales, archivos, flujos en tiempo real u otros orígenes se cargan en un lago de datos o en un almacenamiento de datos relacional. Normalmente, la operación de carga implica un proceso de extracción, transformación y carga (ETL) o de extracción, carga y transformación (ELT) en el que los datos se limpian, filtran y reestructuran para su análisis. En los procesos de ETL, los datos se transforman antes de cargarse en un almacén analítico, mientras que en un proceso de ELT los datos se copian en el almacén y, posteriormente, se transforman. En cualquier caso, la estructura de datos resultante está optimizada para las consultas analíticas. El procesamiento de datos suele realizarse mediante sistemas distribuidos que pueden procesar grandes volúmenes de datos en paralelo mediante clústeres de varios nodos. La ingesta de datos incluye el procesamiento por lotes de datos estáticos y el procesamiento en tiempo real de los datos de streaming.
- Almacén de datos analíticos: los almacenes de datos para análisis a gran escala incluyen almacenamientos de datos relacionales, lagos de datos basados en sistema de archivos y arquitecturas híbridas que combinan características de almacenes de datos y lagos de datos (a veces bajo la denominación de lagos de almacenamiento de datos o bases de datos de lago). Los trataremos con más detalle más adelante.
- Modelo de datos analíticos: aunque los analistas de datos y los científicos de datos pueden trabajar con los datos directamente en el almacén de datos analíticos, es habitual crear uno o varios modelos de datos que agreguen previamente los datos para facilitar la generación de informes, paneles y visualizaciones interactivas. A menudo, estos modelos de datos se describen como cubos, en los que los valores de datos numéricos se agregan en una o varias dimensiones (por ejemplo, para determinar las ventas totales por producto y región). El modelo encapsula las relaciones entre los valores de datos y las entidades dimensionales para admitir el análisis de tipo «rastrear agrupando datos/explorar en profundidad».
- Visualización de datos: los analistas de datos consumen datos de modelos analíticos y directamente de almacenes analíticos para crear informes, paneles y otras visualizaciones. Además, los usuarios de una organización, que pueden no ser profesionales de la tecnología, pueden realizar informes y análisis de datos de autoservicio. Las visualizaciones de los datos muestran tendencias, comparaciones e indicadores clave de rendimiento (KPI) para una empresa u otra organización, y pueden tomar la forma de informes impresos, diagramas y gráficos en documentos o presentaciones de PowerPoint, paneles basados en web y entornos interactivos en los que los usuarios pueden explorar los datos visualmente.
Arquitectura y Flujos
- Datos: principalmente se dividen en dos:
- Los datos de los servicios relacionales (con estructura)
- Y los datos No relacionales (sin estructura)
- Ingesta de datos:
- Los datos primero se recuperan mediante Azure Data Factory
- Sirve también para darle formato a los datos, a este proceso se le denomina ingesta de datos
- Almacenamiento:
- Los datos con formato de almacenan en Azure Data Lake Storage:
- Permite almacenar grandes volúmenes de datos de forma muy rápida y sencilla antes de analizarlos
- A partir de aquí los datos pueden seguir dos caminos
- Modelar y servir
- Los datos se convierten a un formato normalizado, adecuado para su análisis
- Y se almacenan mediante Azure Synapse Analytic
- Preparación:
- Los datos también se pueden almacenar con Azure Databrick, para aplicar otra forma de preparación de datos
- Por ejemplo es posible que se requiera transformaciones de datos adicionales o limpiar
- Se pueden almacenar los datos limpios con Azure Synapse Analytic si es necesario, este funciona como un centro contenedor de datos empresariales ya limpios
- Este puede puede revisar de manera exhaustiva los datos analíticos mediante Azure Analysis Services
- Power BI:
- Puede tomar esta información y utilizarla
- También puede ejecutar consultas, sobre los datos procesados por Azure Databrick
- Azure Cosmos DB:
- Es un opción que no siempre es utilizada para facilitar el almacenamiento de aplicaciones Web
- Modelar y servir
- NOTA: Este es un flujo propuesto sin embargo este puede cambiar según nuestras necesidades
Características de la arquitectura moderna
Modular
- Se añaden componentes
- No hay limite de componentes que se pueden añadir
- Permite crecer junto al negocio, es decir se pueden quitar o agregar nuevos componentes según la necesidad
Elástica
- Como ejemplo una bola de ligas se pueden manipular lo componentes escalandolos o quitandolos como sea necesario
- Incluso pausar servicios que no se estén utilizando
Fluida
- Quiere decir que cualquier tipo de datos se puede añadir
- Los datos se añaden de forma fluida
- Y sin representar ningún tipo de problema ya que es en tiempo real o almacenamiento
Cómo se compone esta arquitectura moderna?
Se compone de 2 características
- Almacenamiento:
- Cuanta con el data Lake
- Métodos de análisis
- Metadatos
- Procesamiento
- Movimiento de datos
- Manipulación de datos
- Recuperación de datos
Exploración de canalizaciones de ingesta de dato
Ahora que comprende un poco la arquitectura de una solución de almacenamiento de datos moderna y algunas de las tecnologías de procesamiento distribuido que se pueden usar para controlar grandes volúmenes de datos, es el momento de explorar cómo se ingieren los datos en un almacén de datos analíticos de uno o varios orígenes.
- En Azure, la ingesta de datos a gran escala se implementa mejor mediante la creación de canalizaciones que organicen procesos de ETL.
- Puede crear y ejecutar canalizaciones mediante Azure Data Factory
- O puede usar el mismo motor de canalización en Azure Synapse Analytics si quiere administrar todos los componentes de la solución de almacenamiento de datos en un área de trabajo unificada.
- En cualquier caso, las canalizaciones constan de una o varias actividades que operan en los datos.
- Un conjunto de datos de entrada proporciona los datos de origen y las actividades se pueden definir como un flujo de datos que manipula incrementalmente los datos hasta que se genera un conjunto de datos de salida.
- Las canalizaciones utilizan servicios vinculados para cargar y procesar datos, y esto le permite usar la tecnología adecuada para cada paso del flujo de trabajo
- Por ejemplo, puede usar un servicio vinculado de Azure Blob Store para ingerir el conjunto de datos de entrada y, posteriormente, usar servicios como Azure SQL Database para ejecutar un procedimiento almacenado que busque valores de datos relacionados, antes de ejecutar una tarea de procesamiento de datos en Azure Databricks o Azure HDInsight, o aplicar lógica personalizada mediante una función de Azure. Por último, puede guardar el conjunto de datos de salida en un servicio vinculado, como Azure Synapse Analytics. Las canalizaciones también pueden incluir algunas actividades integradas, que no requieren un servicio vinculado.
Exploración de almacenes de datos analíticos
Hay dos tipos comunes de almacén de datos analíticos.
Almacenamientos de datos
- Un almacenamiento de datos es una base de datos relacional en la que los datos se almacenan en un esquema optimizado para el análisis de datos en lugar de en cargas de trabajo transaccionales.
- Normalmente, los datos de un almacén transaccional se organizan en un esquema en el que los valores numéricos se almacenan en tablas de hechos centrales, que están relacionadas con una o varias tablas de dimensiones que representan entidades por las que se pueden agregar los datos.
- Por ejemplo, una tabla de hechos podría contener datos de pedidos de ventas, que se pueden agregar por las dimensiones de cliente, producto, tienda y tiempo
- Este tipo de esquema de tabla de hechos y dimensiones se denomina esquema de estrella; aunque a menudo se extiende a un esquema de copo de nieve mediante la adición de tablas adicionales relacionadas con las tablas de dimensiones para representar jerarquías dimensionales
- Un almacenamiento de datos es una excelente opción si tiene datos transaccionales que se pueden organizar en un esquema estructurado de tablas y quiere usar SQL para consultarlos.
Lagos de datos
- Un lago de datos es un almacén de archivos
- normalmente en un sistema de archivos distribuido para el acceso a datos de alto rendimiento
- A menudo se usan tecnologías como Spark o Hadoop para procesar consultas en los archivos almacenados y devolver datos para informes y análisis.
- Estos sistemas suelen aplicar un enfoque de esquema en lectura para definir esquemas tabulares en archivos de datos semiestructurados en el punto donde se leen los datos para su análisis, sin aplicar restricciones cuando se almacenan.
- Los lagos de datos son excelentes para admitir una combinación de datos estructurados, semiestructurados e incluso no estructurados que quiere analizar sin necesidad de aplicar el esquema cuando los datos se escriben en el almacén.
Enfoques híbridos
- Puede usar un enfoque híbrido que combine características de lagos de datos y almacenamientos de datos en una base de datos de lago o un lago de almacenamiento de datos.
- Los datos sin procesar se almacenan como archivos en un lago de datos y una capa de almacenamiento relacional abstrae los archivos subyacentes y los expone como tablas, que se pueden consultar mediante SQL
- Los grupos de SQL de Azure Synapse Analytics incluyen PolyBase, que permite definir tablas externas basadas en archivos de un lago de datos (y otros orígenes) y consultarlas mediante SQL.
- Synapse Analytics también admite un enfoque de base de datos de lago en el que puede usar plantillas de base de datos para definir el esquema relacional del almacenamiento de datos, al tiempo que almacena los datos subyacentes en un almacenamiento de lago de datos, separando el almacenamiento y el proceso de la solución de almacenamiento de datos.
- Los lagos de almacenamiento de datos son un enfoque relativamente nuevo en los sistemas basados en Spark y se habilitan mediante tecnologías como Delta Lake, que agrega funcionalidades de almacenamiento relacional a Spark, por lo que se pueden definir tablas que exijan esquemas y coherencia transaccional, admitan orígenes de datos de streaming y cargados por lotes y proporcionen una API de SQL para realizar consultas.
Servicios de Azure para almacenes analíticos
-
Azure Synapse Analytic
-
Azure Databrick
-
Azure HDInsight
Nota
- Cada uno de estos servicios puede considerarse como un almacén de datos analíticos, en el sentido de que proporcionan un esquema y una interfaz a través de los cuales se pueden consultar los datos.
- Sin embargo, en muchos casos, los datos se almacenan realmente en un lago de datos y el servicio se usa para procesar los datos y ejecutar consultas.
- Algunas soluciones pueden incluso combinar el uso de estos servicios.
- Un proceso de ingesta de extracción, carga y transformación (ELT) puede copiar datos en el lago de datos y, posteriormente, usar uno de estos servicios para transformar los datos y otro para consultarlos.
- Por ejemplo, una canalización puede usar un trabajo de MapReduce que se ejecuta en HDInsight o un cuaderno que se ejecuta en Azure Databricks para procesar un gran volumen de datos en el lago de datos y, posteriormente, cargarlo en tablas de un grupo de SQL en Azure Synapse Analytics.
Azure Synapse Analytic
- Es la base de datos en la nube
- Rápida, flexible y de confianza
- Permite escalar, procesar y almacenar de forma elástica e independiente
- Con una arquitectura de procesamiento paralelo y masivo
- es una solución de un extremo a otro unificada para el análisis de datos a gran escala
- Reúne varias tecnologías y funcionalidades, y esto permite combinar la integridad y la confiabilidad de los datos de un almacenamiento de datos relacional basado en SQL Server escalable y de alto rendimiento con la flexibilidad de una solución Apache Spark de código abierto y lago de datos
- También incluye compatibilidad nativa para el análisis de registros y telemetría con grupos del Explorador de datos de Azure Synapse, así como canalizaciones de datos integradas para la ingesta y la transformación de datos
- Todos los servicios de Azure Synapse Analytics se pueden administrar a través de una única interfaz de usuario interactiva denominada Azure Synapse Studio, que incluye la capacidad de crear cuadernos interactivos en los que se pueden combinar código de Spark y contenido de Markdown
- Synapse Analytics es una excelente opción cuando se quiere crear una única solución de análisis unificada en Azure.
- Los ingenieros de datos pueden usar Azure Synapse Analytics para crear una solución de análisis de datos unificada que combine canalizaciones de ingesta de datos, almacenamiento en el almacén de datos y almacenamiento en el lago de datos mediante un único servicio.
- Los analistas de datos pueden usar grupos de Spark y SQL mediante cuadernos interactivos para explorar y analizar los datos. Además, pueden aprovechar la integración con servicios como Azure Machine Learning y Microsoft Power BI para crear modelos de datos y extraer información de los datos.
- Es un servicio de análisis de nivel empresarial
- Permite: gobernar, implementar, probar y proporcionar una solución de Business Intelligence (BI) con confianza
- Es un motor de análisis que esta diseño para procesar grandes cantidades de datos con mucha rapidez
- Se pueden ingerir datos de orígenes externos como archivos planos, Azure Data Lake u otros sistema de Administración de bases de datos
- Y después se pueden transformar estos datos y agregarlos a un formato adecuado para el procesamiento de análisis
- Se pueden realizar consultas complejas sobre estos datos y generar informes, grafos y gráficos
- La lectura y transformación de datos de un origen externo puede consumir bastantes recursos
- Azure Synapse Analytic permite almacenar los datos que ha leído y procesado localmente dentro del servicio
- Este enfoque permite consultar repetidamente los mismos datos sin la sobre carga que supone capturarlos y convertirlos
- también se pueden utilizar estos datos como la entrada para realizar un procesamiento analítico adicional mediante Azure Analytic Service
- Azure Synapse Analytic utiliza una arquitectura de procesamiento paralelo masivo
Funcionalidades
- Azure Synapse Analytics es una solución completa y unificada de análisis de datos que proporciona una interfaz de servicio única para varias funcionalidades analíticas, entre las que se incluyen las siguientes:
- Pipelines:
- se basa en la misma tecnología que Azure Data Factory.
- Son la forma como Azure Synapse proporciona integración de datos lo que le permite mover datos entre servicios y ordenar actividades
- Son agrupaciones lógicas de actividades que realizan una tarea en conjunto
- Se agrupan en 4 actividades lógicas
- Actividades: define acciones dentro de una canalización como copiar datos, ejecutar un cuaderno o script SQL
- Data Flow (Flujos): Proporciona una experiencia sin código para realizar la transformación de datos que utiliza Synapse-Spark
- Trigger: Ejecuta una canalización que se puede ejecutar de forma manual o automática
- Conjunto de datos de Integración: hacer referencia a los datos que se utilizan en una actividad como entrada y salida, pertenece a un servicio vinculado
- Synapse SQL:
- Se trata de un motor de base de datos SQL altamente escalable, optimizado para cargas de trabajo de almacenamiento de datos.
- Es un sistema de consultas distribuidas para T-SQL que permite escenarios de almacenamiento y virtualización de datos para abordar escenarios de transmisión y aprendizaje automático
- Ofrece modelos de recursos dedicados ofreciendo opciones de consumo y facturación que se adapten a las necesidades para obtener un rendimiento y costo predecibles se crean grupos SQL dedicados para reservar potencia de procesamiento para los datos almacenados en tablas SQL
- Se pueden utilizar las capacidades de transmisión , para transmitir datos de fuentes de datos en la nube a tablas SQL
- Se puede integrar inteligencia artificial con SQL, mediante el uso de modelos de aprendizaje automático para puntuar datos mediante la función de SQL Predict
- Apache Spark:
- Es un sistema de procesamiento de datos distribuidos de código abierto que admite varios lenguajes de programación y API, incluidos Java, Scala, Python y SQL.
- Es el motor de Big Data de código abierto más popular utilizado para la preparación de datos, ingeniería de datos ETL y aprendizaje automático
- Existen modelos de aprendizaje automático con algoritmos Spark ML, integración con Azure ML, para Apache Spark 2.4 con compatibilidad integrada para Linux Fundation Data Lake
- Además contiene soporte integrado para .NET para Spark lo que permite utilizar la experiencia en C# y código .NET
- Hay dos forma dentro de Synapse para utilizar Spark
- Spark Notebooks: para hacer ciencia en ingeniería de datos usando Scala, pipeSpark, C#, SparKSQL
- Definición de trabajos Spark que utiliza lotes mediante archivos .jar
- Azure Synapse Data Explorer: consiste en una solución de análisis de datos de alto rendimiento que está optimizada para consultas en tiempo real de datos de registro y telemetría mediante el Lenguaje de consulta Kusto (KQL).
Gestión, supervisión y Seguridad unificadas
- Azure Synapse proporciona una forma única para que las empresas administren los recursos de análisis, supervisen el uso, la actividad y apliquen la seguridad
- Para esto se le asignan usuarios a roles para simplificar el acceso a los recursos de análisis y también un control de acceso detallado sobre los datos y código
- Y un solo panel para monitorizar los recursos, el uso y los usuarios de SQL y Spark
Synapse Studio
- Es una interfaz Web que crea una solución de análisis de un extremo a otro en un solo lugar
- Con ayuda de la ingesta, exploración, preparación, organización y visualización
- ofrece productividad para ingenieros de datos que escriben código en SQL o Spark con ayuda de la creación, depuración y optimización del rendimiento
- Integración con los procesos de CI/CD empresariales
Nodo de Control
- Esta arquitectura incluye un nodo de control y un grupo de nodos de ejecución
- El nodo de control es el cerebro de la arquitectura, es el front end que interactuá con las aplicaciones
- El motor se ejecuta con el nodo de control para optimizar y coordinar las consultas en paralelo
- Cuando se envía una solicitud de procesamiento el nodo de control la transforma en solicitudes más pequeñas que se ejecutan en distintos sub-conjuntos de datos en paralelo
- Los nodos de ejecución proporcionan la potencia computacional
- Los datos que se van a procesar se distribuyen uniformemente entre los nodos
- Los usuarios y las aplicaciones que envían solicitudes de procesamiento al nodo de control, este envían las solicitudes a los nodos de ejecución que las ejecutan las en la porción de datos que ellos contienen
- Cuando todos los nodos finalizan el procesamiento los resultados se devuelven al nodo de control, donde se combinan en un resultado global
Azure Analysis Services
- Permite compilar modelos tabulares para admitir consultas de procesamiento analítico en linea
- Puede combinar datos de varios orígenes como: Azure SQL Data Base, Azure Synapse Analytic, Azure Data Lake Storage ; Azure Cosmos DB y muchos otros
- Estos orígenes de datos utilizan para compilar modelos que incorporan su conocimiento empresarial
- Un modelo es un conjunto de consultas y expresiones que recuperan datos de los distintos orígenes datos y generan resultados
- Incluye un diseño gráfico para ayudar a conectar orígenes de datos y definir consultar que Combinen, Filtren y Agreguen datos
- Se pueden explorar estos datos desde Azure Analytic Services o se puede utilizar una herramienta como Microsoft Power BI
Comparación de Analytics Services vs Synapse Analytic
Azure Analysis Services
- Tiene una superposición funcional considerable con Azure Synpase Analytic, pero es más adecuado para realizar un procesamiento a una escala menor
- Se utiliza para:
- Volúmenes pequeños de datos (pocos TB)
- varios orígenes
- Simultaneidad de lectura elevada (miles de usuarios)
- Análisis detallado y exploración en profundidad de los datos mediante las funciones de Power BI
- Desarrollo rápido de paneles a partir de datos tabulares
Azure Synpase Analytics
- Se utiliza para
- Volúmenes de datos muy grandes desde TB a pentabytes
- Consultas y agregaciones muy complejas
- Exploración y minería de datos
- Operaciones de WTL complejas
- Simultaneidad de baja a media
Combinación de Analytics Services con Synapse Analytic
- Si se tiene grandes cantidades de datos ingeridos que requieren procesamiento se puede utilizar Azure Synapse Analytic para leer estos datos y manipularlos en un modelo que incluya información empresarial en lugar de una gran cantidad de datos sin procesar
- Azure Synapse Analytic permite procesar y reducir muchos TB’s de datos en un conjunto de datos concisos y más pequeño que resumen y agrega gran parte de estos datos
- Posteriormente se puede utilizar Azure Analysis Service para realizar el interrogatorio detallado de esta información y visualizar los resultados de estas consultas con Power BI
Azure Data Factory
- Es un servicio de integración de datos
- Su propósito es recuperar datos de uno o más orígenes de datos
- Y convertirlos a una formato que se procese
- Azure Data Factory es un servicio de Azure que permite definir y programar canalizaciones de datos para transferir y transformar datos.
- Los orígenes de datos pueden presentar datos de formas distintas y contener ruido que se necesita filtrar
- Además permite extraer los datos interesantes y descartar el resto
- Es posible que los datos interesantes no estén en un formato adecuado para que el resto de los servicios de la solución de almacenamiento los procesen, así que se pueden transformar
- Ejemplo:
- Los datos pueden contener fechas y horas con distintos formatos en distintos orígenes de datos
- Se puede utilizar Azure Data Factory para transformar estos datos en una única estructura uniforme
- Posteriormente Azure data Factory puede escribir los datos ingeridos en un almacén de datos para su posterior procesamiento
- Puede integrar las canalizaciones con otros servicios de Azure, lo que le permite ingerir datos de almacenes de datos en la nube, procesar los datos mediante procesos basados en la nube y conservar los resultados en otro almacén de datos.
- El trabajo que realiza Azure Data Factory se define como una canalización de operaciones
- Una canalización se puede ejecutar continuamente ya que los datos se reciben desde los distintos orígenes de datos
- Se pueden crear las canalizaciones mediante la interfaz gráfica de usuario que proporciona Azure o escribiendo su propio código
- Los ingenieros de datos usan Azure Data Factory para compilar soluciones de extracción, transformación y carga (ETL) que rellenan almacenes de datos analíticos con datos de sistemas transaccionales de toda la organización.
- Es un servicio de integración de datos híbrido
- Permite crear, programar y orquestar flujos de trabajo
Azure Data Lake Storage
- Un lago de datos es un repositorio para una gran cantidad de datos sin procesar
- Como los datos están sin procesar es muy rápido cargarlos y actualizarlos
- Pero los datos no tienen una estructura adecuada para realizar un análisis eficaz
- Una lago de datos se puede considerar como un punto de almacenamiento provisional para los datos ingeridos, antes que se acomoden y se conviertan en un formato adecuado para realizar el análisis
- Combina la semántica jerárquica del sistema de archivos y la estructura de directorios de un sistema de archivos tradicional con la seguridad y la escalabilidad que ofrece Azure
- Básicamente es una extensión de Azure Blob Storage que se organiza como un sistema de archivos casi infinito
- Incluye toda la funcionalidad necesaria para facilitar a los desarrolladores, científicos de datos y analistas el almacenamiento de datos de cualquier tamaño y forma
- Cuenta con la velocidad para llevar a cabo cualquier tipo de procesamiento y análisis en diferentes plataformas y lenguajes
Características
- La mejor organización de los archivos: organiza los archivos en directorios y subdirectorios para mejorar la organización de los archivos. Blob Storage solo puede limitar una estructura de directorio
- Permisos de POSIX: admite los permisos del archivo y directorio Portable Operating System Interface para habilitar el control de acceso basado en roles RBAC
- Compatible con HDFS: es compatible con el sistema de archivos distribuido de Hadoop
- Hadoop es un servicio de análisis muy flexible y programable que utilizan muchas organizaciones para examinar grandes cantidades de datos. Todos los entornos de Apache Hadoop pueden acceder a los datos de Azurer Data Lake Storage a partir de la generación 2
Azure Databrick
- es una implementación de Azure de la popular plataforma Databricks.
- Es un entorno de Apache Spark que se ejecuta en Azure
- Proporciona procesamiento de macrodatos, streaming y aprendizaje automático
- Es un motor de procesamiento de datos muy eficaz que puede consumir grandes cantidades de datos y procesarlos con mucha rapidez
- Existe una considerable cantidad de bibliotecas de Spark que se pueden utilizar para realizar tareas como el procesamiento de SQL, las agregaciones, así como compilar y entrenar modelos de Machine Learning
- Databricks es una completa solución de análisis de datos integrada en Apache Spark
- ofrece funcionalidades nativas de SQL
- así como clústeres de Spark optimizados para cargas de trabajo para el análisis de datos y la ciencia de datos
- Debido a su uso común en varias plataformas en la nube, es posible que quiera considerar el uso de Azure Databricks como almacén analítico si quiere usar la experiencia existente con la plataforma o si necesita operar en un entorno de varias nubes o admitir una solución portátil en la nube.
- Azure Databricks es una versión integrada de Azure de la popular plataforma Databricks, que combina la plataforma de procesamiento de datos de Apache Spark con la semántica de base de datos SQL y una interfaz de administración integrada para habilitar el análisis de datos a gran escala.
- Los ingenieros de datos pueden usar las capacidades de Databricks y Spark para crear almacenes de datos analíticos en Azure Databricks.
- Los analistas de datos pueden usar la compatibilidad nativa con cuadernos en Azure Databricks para consultar y visualizar datos en una interfaz basada en web fácil de usar.
- Es una plataforma de análisis rápida, sencilla y colaborativa
- INTERFAZ:
- Databricks proporciona una interfaz de usuario interactiva a través de la cual se puede administrar el sistema y se pueden explorar los datos en cuadernos interactivos
- Existe una considerable cantidad de bibliotecas de Spark que se pueden utilizar para realizar tareas como el procesamiento de SQL, las agregaciones, así como compilar y entrenar modelos de Machine Learning
- SCRIPT’S:
- Se puede crear script’s de DataBricks y consultar datos mediante lenguajes como R, python,
- CUADERNOS:
- Al ejecutar un cuaderno el código de cada celda se pasa por Spark uno a uno para su ejecución
- El código de spark se escribe mediante cuadernos un cuaderno contiene celdas y cada una de estas incluye un bloque de código independiente
Azure HDInsight
- Es un modelo de servicio de procesamiento de macrodatos
- Que proporciona la plataforma para tecnologías como Spark en un entrono de Azure
- Implementa un modelo de cluster que distribuye el procesamiento en un conjunto de equipos
- Este modelo es similar al que utiliza Azure Synapse Analytic
- Pero los nodos ejecutan el modelo de procesamiento de spark en lugar de Azure SQL Database
- Se puede utilizar Azure HDInsight junto a Azure Synapse Analytic
- Ademas de Spark también permite tecnologías de streaming como apache o el modelo de procesamiento de Haddop
- es un servicio de Azure que admite varios tipos de clústeres de análisis de datos de código abierto.
- Aunque no es tan fácil de usar como Azure Synapse Analytics y Azure Databricks, puede ser una opción adecuada si la solución de análisis se basa en varios marcos de código abierto o si necesita migrar una solución local existente basada en Hadoop a la nube.
- Los ingenieros de datos pueden usar Azure HDInsight para admitir cargas de trabajo de análisis de macrodatos que dependan de varias tecnologías de código abierto.
- Azure HDInsight es un servicio de Azure que proporciona clústeres hospedados en Azure para tecnologías conocidas de procesamiento de macrodatos de código abierto de Apache, entre las que se incluyen las siguientes:
- Apache Spark: es un sistema de procesamiento de datos distribuidos que admite varios lenguajes de programación y API, incluidos Java, Scala, Python y SQL.
- Apache Hadoop: se trata de un sistema distribuido que usa trabajos de MapReduce para procesar grandes volúmenes de datos de forma eficaz en varios nodos de clúster. Los trabajos de MapReduce pueden escribirse en Java o abstraerse mediante interfaces como Apache Hive, una API basada en SQL que se ejecuta en Hadoop.
- Apache HBase: consiste en un sistema de código abierto para consultas y almacenamiento de datos NoSQL a gran escala.
- Apache Kafka: es un agente de mensajes para el procesamiento de flujos de datos.
- Apache Storm: se trata de un sistema de código abierto para el procesamiento de datos en tiempo real mediante una topología de spouts y bolts.
Microsoft Purview proporciona una solución para la gobernanza y la detectabilidad de datos de toda la empresa. Puede usar Microsoft Purview para crear un mapa de los datos y realizar un seguimiento del linaje de datos en varios orígenes de datos y sistemas, lo que le permite encontrar datos de confianza para el análisis y la elaboración de informes.
Los ingenieros de datos pueden usar Microsoft Purview para aplicar la gobernanza de datos en toda la empresa y garantizar la integridad de los datos que se usan para admitir cargas de trabajo analíticas.
Servicios Azure Análisis en Tiempo Real
Análisis en tiempo real
- Un mayor uso de la tecnología por parte de personas, empresas y otras organizaciones, junto con la proliferación de dispositivos inteligentes y acceso a Internet, ha generado un crecimiento masivo del volumen de datos que se pueden generar, capturar y analizar. Gran parte de estos datos se pueden procesar en tiempo real (o al menos, casi en tiempo real) como un flujo perpetuo de datos, lo que permite la creación de sistemas que revelan conclusiones y tendencias instantáneas, o toman medidas inmediatas de respuesta a los eventos a medida que se producen.
Procesamiento de flujos y por lotes
El procesamiento de datos es simplemente la conversión de datos sin procesar en información significativa a través de un proceso. Existen dos métodos generales para procesar los datos:
- Procesamiento por lotes, en el que se recopilan y almacenan varios registros de datos antes de procesarse juntos en una sola operación.
- Procesamiento de flujos, en el que un origen de datos se supervisa y procesa constantemente en tiempo real a medida que se producen nuevos eventos de datos.
Procesamiento por lotes
- En el procesamiento por lotes, los elementos de datos recién llegados se recopilan y se almacenan y todo el grupo se procesa de forma conjunta, como un lote.
-
El momento en el que se procesa cada grupo se puede determinar de varias maneras. Por ejemplo, los datos se pueden procesar según un intervalo de tiempo programado (por ejemplo, cada hora), o bien el procesamiento puede desencadenarse cuando se alcance una determinada cantidad de datos o como resultado de algún otro evento.
- Un ejemplo real de procesamiento por lotes es la forma en que las empresas de tarjetas de crédito controlan la facturación. El cliente no recibe una factura por cada compra que hace con su tarjeta de crédito, sino una factura mensual para todas las compras de ese mes.
Ventajas
- Se pueden procesar grandes volúmenes de datos en un momento especificado.
- Se puede programar para ejecutarse mientras los equipos o sistemas están inactivos, como por la noche o en horas de poca actividad.
Desventajas
- El tiempo de retardo entre la ingesta de los datos y la obtención de los resultados.
- Todos los datos de entrada de un trabajo por lotes deben estar listos para poder procesar un lote. Esto significa que los datos deben comprobarse con cuidado. Los problemas con los datos, los errores y los bloqueos de los programas que se producen durante los trabajos por lotes provocan la detención de todo el proceso. Los datos de entrada deben comprobarse cuidadosamente antes de volver a ejecutar el trabajo. Incluso los errores de datos menores pueden impedir la ejecución de un trabajo por lotes.
Procesamiento por flujos
- En el procesamiento en streaming, cada nuevo fragmento de datos se procesa cuando llega.
- El procesamiento de datos de flujos es beneficioso en los escenarios donde se generan datos dinámicos nuevos de forma continua.
- Por ejemplo, un enfoque mejor para nuestro hipotético problema de recuento de automóviles podría ser aplicar un enfoque de flujo de datos, contando los automóviles en tiempo real a medida que pasan:
Ejemplos
- Una institución financiera realiza un seguimiento de los cambios en el mercado de valores en tiempo real, calcula el valor en riesgo y reequilibra automáticamente las carteras en función de los movimientos de precio de las acciones.
- Una empresa de juegos en línea recopila datos en tiempo real sobre las interacciones de los jugadores con los juegos y los incorpora en su plataforma de juegos. Después, analiza los datos en tiempo real y ofrece incentivos y experiencias dinámicas para atraer a los jugadores.
- Un sitio web inmobiliario hace un seguimiento de un subconjunto de datos de dispositivos móviles y ofrece recomendaciones en tiempo real de las propiedades que pueden visitar los clientes en función de su ubicación geográfica.
Diferencias entre los datos de streaming y por lotes
Además de las diferencias en la forma en que el procesamiento por lotes y en streaming controlan los datos, hay otras diferencias:
- Ámbito de los datos: el procesamiento por lotes puede procesar todos los datos del conjunto de datos. Normalmente, el procesamiento en streaming solo tiene acceso a los datos recibidos más recientemente recibidos o dentro de un período de tiempo cambiante (los últimos 30 segundos, por ejemplo).
- Tamaño de los datos: el procesamiento por lotes es adecuado para administrar grandes conjuntos de datos de forma eficaz. El procesamiento en streaming está diseñado para registros individuales o microlotes que constan de pocos registros.
- Rendimiento: la latencia es el tiempo que se tarda en recibir y procesar los datos. la latencia del procesamiento por lotes suele ser de unas horas. Normalmente, el procesamiento en streaming se produce inmediatamente, con la latencia en segundos o milisegundos.
- Análisis: normalmente se usa el procesamiento por lotes para realizar análisis complejos. El procesamiento en streaming se usa para funciones de respuesta simples, agregaciones o cálculos, como el cálculo de la media acumulada.
Combinación del procesamiento por lotes y por flujos
Muchas soluciones de análisis a gran escala incluyen una combinación de procesamiento por lotes y de flujos, lo que permite el análisis de datos históricos y en tiempo real. Es habitual que las soluciones de procesamiento de flujos capturen datos en tiempo real, los filtren o agreguen para procesarlos y los presenten a través de paneles y visualizaciones en tiempo real (por ejemplo, muestran el total de automóviles que han pasado por una carretera durante la hora actual), al tiempo que también se conservan los resultados procesados en un almacén de datos para el análisis histórico junto con los datos procesados por lotes (por ejemplo, para habilitar el análisis de los volúmenes de tráfico durante el último año).
Incluso cuando no se requiere el análisis o la visualización en tiempo real de los datos, las tecnologías de flujos a menudo se usan para capturar datos en tiempo real y almacenarlos en un almacén de datos para su posterior procesamiento por lotes (esto equivale a redirigir todos los automóviles que viajan por una carretera a un aparcamiento antes de contarlos).
En el diagrama siguiente se muestran algunos métodos para combinar el procesamiento por lotes y de flujos en una arquitectura de análisis de datos a gran escala.
- Los eventos de datos de un origen de datos de flujos se capturan en tiempo real.
- Los datos de otros orígenes se ingieren en un almacén de datos (a menudo, un lago de datos) para el procesamiento por lotes.
- Si no es necesario llevar a cabo análisis en tiempo real, los datos de flujos capturados se escriben en el almacén de datos para su posterior procesamiento por lotes.
- Cuando se requiere un análisis en tiempo real, se usa una tecnología de procesamiento de flujos para preparar los datos de flujos para el análisis o visualización en tiempo real. A menudo, se filtran o suman los datos por periodos de tiempo.
- Los datos que no son de flujos se procesan por lotes periódicamente para prepararlos para el análisis y los resultados se conservan en un almacén de datos analíticos (a menudo denominado almacén de datos) para el análisis histórico.
- Los resultados del procesamiento de flujos también se pueden conservar en el almacén de datos analíticos para admitir el análisis histórico.
- Las herramientas analíticas y de visualización se usan para presentar y explorar los datos históricos y en tiempo real.
NOTA:
- Entre las arquitecturas de soluciones usadas con más frecuencia para un procesamiento de datos de flujos y por lotes de manera combinada, se encuentran arquitecturaslambda y delta.
Procesamiento por flujos
- En el procesamiento en streaming, cada nuevo fragmento de datos se procesa cuando llega.
- El procesamiento de datos de flujos es beneficioso en los escenarios donde se generan datos dinámicos nuevos de forma continua.
- Por ejemplo, un enfoque mejor para nuestro hipotético problema de recuento de automóviles podría ser aplicar un enfoque de flujo de datos, contando los automóviles en tiempo real a medida que pasan:
Ejemplos
- Una institución financiera realiza un seguimiento de los cambios en el mercado de valores en tiempo real, calcula el valor en riesgo y reequilibra automáticamente las carteras en función de los movimientos de precio de las acciones.
- Una empresa de juegos en línea recopila datos en tiempo real sobre las interacciones de los jugadores con los juegos y los incorpora en su plataforma de juegos. Después, analiza los datos en tiempo real y ofrece incentivos y experiencias dinámicas para atraer a los jugadores.
- Un sitio web inmobiliario hace un seguimiento de un subconjunto de datos de dispositivos móviles y ofrece recomendaciones en tiempo real de las propiedades que pueden visitar los clientes en función de su ubicación geográfica.
Una arquitectura general para el procesamiento de flujos
En su forma más simple, una arquitectura de alto nivel para el procesamiento de flujos tiene el siguiente aspecto:
- Un evento genera algunos datos. Podría ser una señal que emite un sensor, un mensaje de redes sociales que se publica, una entrada de archivo de registro que se escribe o cualquier otro evento que da como resultado algunos datos digitales.
- Los datos generados se capturan en un origen de streaming para su procesamiento. En casos simples, el origen puede ser una carpeta de un almacén de datos en la nube o una tabla de una base de datos. En soluciones de flujos más sólidas, el origen puede ser una «cola» que encapsula la lógica para asegurarse de que los datos del evento se procesan en orden y que cada evento se procesa una sola vez.
- Los datos del evento se procesan, a menudo mediante una consulta perpetua que opera en los datos del evento para seleccionar datos para tipos específicos de eventos, valores de datos de proyectos o valores de datos sumados durante periodos de tiempo (basados en tiempo real, o plazos de tiempo), por ejemplo, mediante el recuento del número de emisiones de sensores por minuto.
- Los resultados de la operación de procesamiento de flujos se escriben en una salida (o receptor), que puede ser un archivo, una tabla de base de datos, un panel visual en tiempo real u otra cola para su posterior procesamiento mediante una consulta de bajada posterior.
Análisis en tiempo real en Azure
- Azure Stream Analytics:
- solución de plataforma como servicio (PaaS) que puede usar para definir trabajos de flujos que ingieren datos de un origen de flujos, aplican una consulta perpetua y escriben los resultados en una salida.
- Spark Structured Streaming:
- biblioteca de código abierto que le permite desarrollar soluciones de flujos complejos en servicios basados en Apache Spark, como Azure Synapse Analytics, Azure Databricks, y Azure HDInsight.
- Azure Data Explorer:
- un servicio de análisis y bases de datos de alto rendimiento, optimizado para la ingesta y consulta de datos por lotes o en streaming con un elemento de serie temporal y que se puede usar como servicio de Azure independiente o como entorno de ejecución de Azure Synapse Data Explorer en un área de trabajo de Azure Synapse Analytics.
Orígenes para el procesamiento de flujos
- Azure Event Hubs:
- servicio de ingesta de datos que puede usar para administrar colas de datos de eventos, lo que garantiza que cada evento se procese en orden, exactamente una vez.
- Azure IoT Hub:
- servicio de ingesta de datos similar a Azure Event Hubs, pero optimizado para administrar datos de eventos de dispositivos de Internet de las cosas (IoT).
- Azure Data Lake Store Gen 2:
- servicio de almacenamiento altamente escalable que se usa a menudo en escenarios de procesamiento por lotes, pero que también se puede usar como origen de datos de flujos.
- Apache Kafka:
- solución de ingesta de datos de código abierto que se usa a menudo junto con Apache Spark. Puede usar Azure HDInsight para crear un clúster de Kafka.
Receptores para el procesamiento de flujos
La salida del procesamiento de flujos a menudo se envía a los siguientes servicios:
- Azure Event Hubs:
- se usa para poner en cola los datos procesados para su posterior procesamiento de bajada.
- Azure Data Lake Store Gen 2 o Azure Blob Storage:
- se usan para conservar los resultados procesados como un archivo.
- Azure SQL Database, Azure Synapse Analytics o Azure Databricks:
- se usan para conservar los resultados procesados en una tabla de base de datos para consultas y análisis.
- Microsoft Power BI:
- se usa para generar visualizaciones de datos en tiempo real en informes y paneles.
Azure Stream Analytics
- Es un servicio para el procesamiento de eventos complejos y el análisis de datos de flujos.
- Es un motor de procesamiento de eventos complejo y de análisis en tiempo real que está diseñado para analizar y procesar grandes volúmenes de datos de streaming rápido para varios orígenes de manera simultánea.
- se usa para:
- Ingerir datos de una entrada, como Azure Event Hubs, Azure IoT Hub o un contenedor de blobs de Azure Storage.
- Procesar los datos con una consulta para seleccionar, proyectar y sumar valores de datos.
- Escribir los resultados en una salida, como Azure Data Lake Gen 2, Azure SQL Database, Azure Synapse Analytics, Azure Functions, Azure Event Hubs, Microsoft Power BI u otros.
- Una vez iniciada, se ejecutará una consulta de Stream Analytics de forma perpetua para procesar nuevos datos a medida que llegan a la entrada y almacenar los resultados en la salida.
- Azure Stream Analytics es una opción tecnológica excelente cuando necesita capturar continuamente datos de un origen de streaming, filtrar o agregar esos datos y enviar los resultados a un almacén de datos o proceso de bajada para su análisis e informes.
-
Azure Stream Analytics es un motor de procesamiento de flujos en tiempo real que captura un flujo de datos de una entrada, aplica una consulta para extraer y manipular los datos del flujo de entrada y escribe los resultados en una salida para su análisis o procesamiento posterior.
-
Los ingenieros de datos pueden incorporar Azure Stream Analytics en arquitecturas de análisis de datos que capturan datos de streaming para su ingesta en un almacén de datos analíticos o para su visualización en tiempo real.
Escenarios de aplicación
Ingerir
Es fácil empezar a usar Azure Stream Analytics, es posible conectarse a varios orígenes y receptores, creando una canalización integral.
Stream Analytics puede conectarse directamente a Azure Event Hubs y Azure IoT Hub para la ingesta de datos de streaming, y con el servicio Azure Blob Storage para la ingesta de datos históricos o SQL Database que puede unir a los datos de streaming para realizar operaciones de búsqueda..
Entrega
Stream Analytics puede enrutar la salida del trabajo a muchos sistemas de almacenamiento como Azure Blob Storage, Azure SQL Database, Azure Data Lake Store y Azure Cosmos DB. También se pueden realizar análisis por lotes de los resultados de la transmisión con Azure Synapse Analytics o HDInsight, o bien enviar la salida a otro servicio, como a Event Hubs para su consumo, o a Power BI para la visualización en tiempo real.
Trabajos y clústeres de Azure Stream Analytics
La manera más fácil de usar Azure Stream Analytics es crear un trabajo de Stream Analytics en una suscripción de Azure, configurar sus entradas y salidas, y definir la consulta que usará el trabajo para procesar los datos. La consulta se expresa mediante la sintaxis del lenguaje de consulta estructurado (SQL) y puede incorporar datos de referencia estáticos de varios orígenes de datos para proporcionar valores de búsqueda que se pueden combinar con los datos de flujos ingeridos desde una entrada.
Si los requisitos del proceso de flujos son complejos o consumen muchos recursos, puede crear un clúster de Stream Analysis, que usa el mismo motor de procesamiento subyacente que un trabajo de Stream Analytics, pero en un inquilino dedicado (por lo que el procesamiento no se ve afectado por otros clientes) y con escalabilidad configurable que le permite definir el equilibrio adecuado entre rendimiento y costo para su escenario específico.
Apache Spark
-
Apache Spark es un marco de procesamiento distribuido para el análisis de datos a gran escala. Puede usar Spark en Microsoft Azure en los siguientes servicios:
- Azure Synapse Analytics
- Azure Databricks
- HDInsight de Azure
- Spark se puede usar para ejecutar código (normalmente escrito en Python, Scala o Java) en paralelo en varios nodos de clúster, lo que permite procesar volúmenes de datos muy grandes de forma eficaz. Spark se puede usar tanto para el procesamiento por lotes como para el procesamiento de flujos.
Spark Structured Streaming
-
Para procesar los datos de flujos en Spark, puede usar la biblioteca de Spark Structured Streaming, que proporciona una interfaz de programación de aplicaciones (API) para ingerir, procesar y generar resultados de flujos de datos perpetuos.
- Spark Structured Streaming se compila en una estructura ubicua en Spark denominada dataframe, que encapsula una tabla de datos. Puede usar la API de Spark Structured Streaming para leer datos de un origen de datos en tiempo real, como un centro de Kafka, un almacén de archivos o un puerto de red, a un objeto dataframe «sin límite» que se rellena continuamente con nuevos datos del flujo. A continuación, defina una consulta en el objeto dataframe que selecciona, proyecta o suma los datos, a menudo en ventanas temporales. Los resultados de la consulta generan otro objeto dataframe, que se puede conservar para su análisis o procesamiento posterior
- Structured Streaming de Spark es una excelente opción para el análisis en tiempo real cuando necesita incorporar datos de streaming en un almacén de datos analíticos o un lago de datos basado en Spark.
Delta Lake
Delta Lake es una capa de almacenamiento de código abierto que agrega compatibilidad con la coherencia transaccional, el cumplimiento del esquema y otras características comunes de almacenamiento de datos a Data Lake Storage. También unifica el almacenamiento para datos por lotes y de flujos, y se puede usar en Spark para definir tablas relacionales para el procesamiento por lotes y de flujos. Cuando se usa para el procesamiento de flujos, una tabla de Delta Lake se puede usar como un origen de flujos para las consultas en datos en tiempo real o como un receptor en el que se escribe un flujo de datos.
Los entornos de ejecución de Spark de Azure Synapse Analytics y Azure Databricks incluyen compatibilidad con Delta Lake.
El uso de Delta Lake combinado con Structured Streaming de Spark es una solución óptima cuando es necesario abstraer los datos procesados por lotes y flujos en un lago de datos detrás de un esquema relacional para realizar consultas y análisis basados en SQL.
Servicios Azure Visualización de datos
visualización de datos
- El modelado y la visualización de datos son el núcleo de las cargas de trabajo de inteligencia empresarial (BI) que son compatibles con las soluciones de análisis de datos modernas. Básicamente, la visualización de datos potencia la creación de informes y la toma de decisiones que ayudan a las organizaciones a tener éxito.
Microsoft Power BI
- Microsoft Power BI es una plataforma para el modelado de datos analíticos y la elaboración de informes que los analistas de datos pueden usar para crear y compartir visualizaciones de datos interactivas. Los informes de Power BI pueden crearse mediante la aplicación Power BI Desktop y, luego, publicarse y entregarse mediante informes y aplicaciones basados en web en el servicio Power BI, así como en la aplicación móvil de Power BI.
- Para el análisis de negocio a escala empresarial, a menudo se requiere una solución integrada que pueda admitir el modelado de datos complejo, los informes interactivos y el uso compartido seguro.
- Es una colección de servicios de software, aplicaciones y conectores que trabajan juntos para convertir los orígenes de datos no relacionados en información coherente, visualmente inmersiva e interactiva
- Permite conectarse fácilmente a cualquier origen de datos y visualizar lo que es más importante y compartirlo con cualquier persona o personas que deseamos
- Es un conjunto de herramientas de análisis empresarial, que proporciona información detallada hacer de toda la organización
- Conectar cientos de orígenes de datos
- Simplifica la preparación de los datos
- realiza análisis
- Permite crear informes atractivos y se pueden publicar en la organización para que se usen en la Web y dispositivos móviles
-
Microsoft Power BI es un conjunto de herramientas y servicios que los analistas de datos pueden usar para crear visualizaciones de datos interactivas para consumo por parte de usuarios profesionales.
-
Un flujo de trabajo típico para crear una solución de visualización de datos comienza con Power BI Desktop, una aplicación de Microsoft Windows en la que puede importar datos de una amplia gama de orígenes de datos, combinar y organizar los datos de estos orígenes en un modelo de datos de análisis y crear informes que contengan visualizaciones interactivas de los datos.
Después de crear modelos de datos e informes, puede publicarlos en el servicio Power BI, un servicio en la nube en el que los usuarios profesionales pueden publicar informes e interactuar con ellos.
Características de Power BI
- Colaboración inter-departamental: se pueden compartir informes
- Seguridad: se pueden establecer roles o perfiles de acceso
- Centralización de la información: con power BI podemos unificar datos, desde diferentes orígenes para un mismo informe
- Gráfismo: podemos visualizar nuestros datos con infografías sorprendentes, animadas o gráficos
Partes de Power BI
Power BI Desktop
- Aplicación gratuita
- Se puede instalar en el equipo local
- Y nos permite conectarnos a los datos, transformarlos y visualizarlos en un modelo de datos
- Usos:
- Conectarnos a los datos
- Transformación y limpieza de datos para crear un modelo de datos
- Creación de objetos visuales como: gráficos, grafos, estadísticas
- Creación de informes
- Compartir informes
Power BI Service
- Es un servicio basado en la nube
- Los orígenes de datos esta limitado
- Usos:
- Creación de paneles e informes
- Compartir paneles e informes
- Los panes y los informes se van a poder conectar en conjuntos de datos que van a reunir todos los datos relevantes en un solo lugar
Rol de Power BI
- La forma de usar Power Bi va depender del rol que cada persona tenga
Flujo de trabajo
Un flujo normal en power BI inicia en Power BI Desktop:
- Donde se crea un informe
- Se conecta con los datos
- Se modelan los datos
- Se podría publicar este informe en el servicio de Power BI
- y finalmente se comparte para que los usuarios de Power BI Mobil puedan consumir al información
Licencias de Power BI
- Free:
- No permite acceder a informes compartidos por otros usuarios
- No permite compartir esta información con otros usuarios
- Usos limitado del gateway
- No permite el uso de web pages o app’s
- 1GB
- Pro:
- Permite compartir pero ambos deben tener licencia
- Sin limite de gateway
- Conexiones en vivo
- Y ya tenemos una actualización de hasta 8 veces por día
- 10 GB
- Premium:
- Se paga por usuario
- Se le brinda una cantidad de recursos de procesamiento optimizados para sus informes y equipos
- Y puede hacer uso de AI, data flow’s,
- 100TB x Usuarios
- 48 actualizaciones por día
Informes en Power BI
- Es una vista de varias perspectivas de un conjunto de datos
- Con objetos visuales que representan diferentes hallazgos y conclusiones de ese conjunto de datos
- Puede tener un solo objeto visual o muchos
- Dependiendo del rol pueden existir personas que trabajan creando informes o personas que los consumen
- Pueden tener un interfaz interactiva y atractiva
- Presentar varios indicadores de rendimiento
- Respaldar la exploración de los datos
- E interacturar de forma segura
Panel en Power BI
- Son más limitados que los informes
- Es una página (que se denomina lienzo) que utiliza visualizaciones para contar una sola historia
- Debido a que esta limitado a una sola página, un panel bien diseñado solo contiene los elementos más importantes de la historia
Power BI Report Builder
- Es una herramienta que permite crear informes paginados que pueden ser publicados en el servicio de Power BI
- Cuando se crea un informe paginado se esta crean un informe que especifica:
- Que datos recuperar
- Donde obtenerlos
- y como mostrarlos
- Cuando se ejecuta el informe el procesador de informes, toma la definición del informe, recupera los datos y los combina con el diseño del informe, para crear el informe
- Se puede obtener una vista previa y luego publicarlo en el servicio de Power BI
Como usar Power BI
- Todo lo que se hace en Power BI se puede dividir en dos bloques básicos
- Y una vez que se comprendas estos bloques se pueden ampliar cada uno de ellos y comenzar a crear informes más elaborados y más complejos
Bloque 1: formado por
- Conjuntos de datos
- Visualizaciones
- Informes
- Paneles
- Iconos
Conjunto de datos
- Es una colección de datos que power BI usa para crear sus visualizaciones
- Se puede obtener un conjunto de datos simple (que se basa en un libro de trabajo de Excel o varias tablas de un mismo excel)
- O pueden ser la combinación de muchas fuentes distintas, por ejemplo un libro de Excel, una tabla de una BD SQL y resultados de una campaña de correo electrónicos y aunque vienen de fuentes distintas se determinan como un único conjunto de datos
Visualizaciones
- Se le denomina «visual»
- Es una representación visual de datos como un gráfico, un mapa codificado por colores u otra forma
- Power BI tiene muchos tipos de visualizaciones y constantemente se crean nuevas
- Pueden ser simples como un número que representa algo o ser visualmente más complejas como un mapa de degradado
Informes
- Es una colección de visualizaciones que aparecen juntas en una o más páginas
- Es una colección de elementos relacionados entre sí
- Y permiten organizar las visualizaciones de la mejor manera que se cuente la historia
Paneles
- Cuando se crea un informe (o una colección de visualizaciones) y lo publicamos se crea un panel
- Es una colección de elementos visuales en una sola página que se puede compartir con otras personas
Iconos
- Un icono es una visualización única en un panel
- Y cuando se crean en un panel se puede mover y organizar como se deseen
- Se puede modificar su tamaño
Resumen Power BI
- Power BI es una colección de servicios, aplicaciones y conectores que nos permiten conectarnos a diferentes tipos de datos, filtrarlos si es necesario y luego llevarlos a Power BI Desktop para crear visualizaciones atractivas que se pueden compartir con otros
- Podemos generar o ver el modelo de datos de nuestros orígenes o almacenes de datos cargarlos en PBI, publicarlos y compartirlo como panel en el Servicio de PBI
- Podemos monitorizar esta información desde nuestro dispositivo móvil
Modelado de datos
Los modelos analíticos permiten estructurar los datos para admitir el análisis. Los modelos se basan en tablas de datos relacionadas y definen los valores numéricos que se quieren analizar o notificar (conocidos como medidas) y las entidades por las que se quieren agregar (conocidas como dimensiones). Por ejemplo, un modelo podría incluir una tabla con medidas numéricas para las ventas (como ingresos o cantidad) y dimensiones para productos, clientes y tiempo. Esto le permitiría agregar medidas de venta en una o varias dimensiones (por ejemplo, para identificar los ingresos totales por cliente o el total de artículos vendidos por producto al mes). Conceptualmente, el modelo forma una estructura multidimensional, que normalmente se conoce como cubo, en la que cualquier punto en el que las dimensiones forman una intersección representa una medida agregada para esas dimensiones.
Tablas y esquema
Las tablas de dimensiones representan las entidades por las que se quieren agregar las medidas numéricas, por ejemplo, producto o cliente. Cada entidad se representa mediante una fila con un valor de clave único. Las columnas restantes representan los atributos de una entidad; por ejemplo, los productos tienen nombres y categorías, y los clientes tienen direcciones y ciudades. En la mayoría de los modelos analíticos es habitual incluir una dimensión Tiempo para poder agregar medidas numéricas asociadas a eventos en el tiempo.
Las medidas numéricas que agregarán las distintas dimensiones del modelo se almacenan en tablas de hechos. Cada fila de una tabla de hechos representa un evento registrado que tiene medidas numéricas asociadas. Por ejemplo, la tabla Sales (Ventas) del esquema siguiente representa las transacciones de ventas para elementos individuales e incluye valores numéricos para la cantidad vendida y los ingresos.
Este tipo de esquema, donde una tabla de hechos está relacionada con una o varias tablas de dimensiones, se conoce como esquema de estrella (imagine que hay cinco dimensiones relacionadas con una sola tabla de hechos: el esquema formaría una estrella de cinco puntas). También puede definir un esquema más complejo en el que las tablas de dimensiones están relacionadas con tablas adicionales que contienen más detalles (por ejemplo, podría representar atributos de categorías de productos en una tabla Categoría independiente relacionada con la tabla Producto, en cuyo caso el diseño se conoce como esquema de copo de nieve). El esquema de las tablas de hechos y dimensiones se usa para crear un modelo analítico, en el que las agregaciones de medida en todas las dimensiones se calculan previamente, lo que hace que el rendimiento de las actividades de análisis e informes sea mucho más rápido que calcular las agregaciones cada vez.
Jerarquías de atributos
atributos que le permiten rastrear agrupando datos o explorar en profundidad rápidamente para buscar valores agregados en distintos niveles en una dimensión jerárquica. Por ejemplo, considere los atributos de las tablas de dimensiones que se han analizado hasta ahora. En la tabla Product, puede formar una jerarquía en la que cada categoría incluya varios productos con nombre. De forma similar, en la tabla Customer, se podría formar una jerarquía para representar varios clientes con nombre en cada ciudad. Por último, en la tabla Time, puede formar una jerarquía de año, mes y día. El modelo se puede crear con valores agregados previamente para cada nivel de una jerarquía, lo que permite cambiar rápidamente el ámbito del análisis; por ejemplo, mediante la visualización del total de ventas por año y, después, la exploración en profundidad para ver un desglose más detallado del total de ventas por mes.
Tipos de Visualizaciones
Tablas y texto
Las tablas y el texto suelen ser la manera más sencilla de comunicar datos. Las tablas son útiles cuando se deben mostrar numerosos valores relacionados y los valores de texto individuales de las tarjetas pueden ser una manera útil de mostrar cifras o métricas importantes.
Gráficos de barras y de columnas
Los gráficos de barras y columnas son una buena manera de comparar visualmente valores numéricos para categorías discretas.
Gráficos de líneas
Los gráficos de líneas también se pueden usar para comparar valores clasificados y son útiles cuando es necesario examinar tendencias, a menudo a lo largo del tiempo.
Gráficos circulares
Los gráficos circulares se suelen usar en los informes empresariales para comparar visualmente los valores clasificados como proporciones de un total.
Gráficos de dispersión
Los gráficos de dispersión son útiles cuando se quieren comparar dos medidas numéricas e identificar una relación o correlación entre ellas.
Maps
Maps son una excelente manera de comparar visualmente los valores de diferentes áreas geográficas o ubicaciones.
Azure Data Explorer es un servicio independiente que permite consultar datos de telemetría y del registro con el mismo alto rendimiento que el runtime de Azure Synapse Data Explorer en Azure Synapse Analytics.
Los analistas de datos pueden usar Azure Data Explorer para consultar y analizar datos que incluyan un atributo de marca de tiempo, como es habitual en los archivos de registro y los datos de telemetría de IoT (Internet de las cosas).
Microsoft Purview proporciona una solución para la gobernanza y la detectabilidad de datos de toda la empresa. Puede usar Microsoft Purview para crear un mapa de los datos y realizar un seguimiento del linaje de datos en varios orígenes de datos y sistemas, lo que le permite encontrar datos de confianza para el análisis y la elaboración de informes.
Los ingenieros de datos pueden usar Microsoft Purview para aplicar la gobernanza de datos en toda la empresa y garantizar la integridad de los datos que se usan para admitir cargas de trabajo analíticas.