SlideShare une entreprise Scribd logo
1  sur  36
Diseño de aplicaciones de
bases de datos
SQL Azure
José Redondo - @redondoj
Chapter Leader SQL PASS Venezuela – DPA SolidQ – SC SynergyTPC
jredondo@solidq.com
http://redondoj.wordpress.com
AGENDA
• Windows Azure Storage
• Componentes
• Funcionamiento interno
• Arquitectura
• Mejores Practicas
• Demo
Diseño de aplicaciones de
bases de datos
SQL Azure
WINDOWS AZURE STORAGE
WINDOWS AZURE STORAGE
• Almacenamiento en la nube - En cualquier lugar y accesarlo en
cualquier momento
• Blobs, Discos, Tablas y Queues

• Altamente disponible y escalable

• Construir fácilmente aplicaciones "Escalable a internet"
• Capacidad de almacenaje de 10 trillones de objetos
• Solicitud de 900K/seg en promedio (2,3 trillones por mes)

• Se paga por lo que se usas
• Accesar por una vía sencilla y abierta a través de API’s
• Bibliotecas de cliente en .NET, Java, Node.js, Python, PHP, Ruby
COMPONENTES
COMPONENTES
Abstracciones – Blobs y discos
COMPONENTES
Abstracciones – Tablas y Queues
COMPONENTES
COMPONENTES
COMPONENTES

Conceptos

Container

Blobs

https://<account>.blob.core.windows.net/<container>

Account

Table

Entities

https://<account>.table.core.windows.net/<table>

Queue

Messages

https://<account>.queue.core.windows.net/<queue>
COMPONENTES
Como es utilizado el Azure Storage por parte de Microsoft?
• Xbox: Utilizado en datos Blobs, Tablas & Queues para Cloud Game Saves, Halo 4,
XBox Music, XBox Live, etc.
• Skype: Utilizado en datos Blobs, Tablas and Queues para videos mensajes en
Skype y almacenar metadatos para permitir a los clientes Skype conectarse con
otros
• Bing: Utilizado en datos Blobs, Tablas y Queues para proporcionar una ingestión
del motor de búsqueda que consume casi en tiempo real el consumo de datos de
Twitter y Facebook, indexándolo, para así luego, generar las búsqueda
optimizadas en Bing
• SkyDrive: Utilizado en datos Blobs para almacenar fotos, documentos, videos,
archivos, etc.
FUNCIONAMIENTO INTERNO
FUNCIONAMIENTO INTERNO
Objetivos
Alta disponibilidad con consistencia fuerte

• Proporcionar acceso a datos ante fallas | en particiones

Durabilidad

• Replicar los datos dentro de varios entornos y en todas las regiones

Escalabilidad

• Necesita escalar a zettabytes
• Proporcionar un espacio de nombres global para acceder a datos de todo el mundo
• Escalar automáticamente hacia fuera y cargar los datos, balanceándolos para con ello,
satisfacer las demandas de tráfico en puntos pico
FUNCIONAMIENTO INTERNO
Windows Azure Storage Stamps
Almacenamiento Blob para accesarlo a través de la URL: http://<account>.blob.core.windows.net/
Storage
Location
Service

Data access
LB

LB

Front-Ends

Front-Ends

Partition Layer

Partition Layer

Inter-stamp (Geo) replication

DFS Layer

DFS Layer

Intra-stamp replication

Intra-stamp replication
ARQUITECTURA
ARQUITECTURA
Disponibilidad con consistencia de
escritura
• Front-end Layer
• REST front-end (blob, tablas, queue)
• Autenticación/autorización
• Métricas/logging

• Partition Layer
• Entiende nuestras abstracciones de datos y
proporciona la concurrencia optimista
• Índice masivamente escalable
• Registro estructurado Merge Tree
•

Cada registro (stream) es una lista vinculada extendible

Partition Layer

Index

• Distributed File System Layer
• Persistencia de datos y replicación (JBOD)
• Los datos se almacenan en un archivo denominado
extent, que se repite 3 veces a través de distintos
nodos (UDs/FDs)
• Sistema de archivos sólo para anexar

Distributed File System
ARQUITECTURA
Architecture Layers inside Stamps
Todas las escrituras son anexa al final de un registro, que es un
anexar a la última medida en el registro
Escribe la consistencia a través de todas las réplicas en un extent:
• Anexa el ordenamiento a través de todas las 3 réplicas en
un extent (archivo)
• Sólo retorna las ejecuciones satisfactoria si todas las 3
réplicas se anexan a las comprometidas para el
almacenamiento de información
• Cuando el extent llega a un cierto tamaño o en escritura
sea falla/LB, el mismo set de extent se réplicas en la medida
de su necesidad y nunca añade más datos
Disponibilidad de escritura: Para manejar errores durante la escritura
• Conjunto de réplicas en extent
• Añade inmediatamente a un nuevo extent (conjunto de
réplicas) en otros 3 nodos disponibles
• Añade este nuevo extent al final del registro de la partición
(stream)

Partition Layer

Index

Distributed File System
ARQUITECTURA
Disponibilidad de consistencia
para la lectura
• Read Consistency: Puede leer desde
cualquier réplica, ya que los datos de
cada réplica para un extent bit-wise es
idéntico
• Read Availability: Envía solicitudes de
lectura paralelas si la primera lectura
está tomando una latencia superior al
95%

Partition Layer

Index

Distributed File System
ARQUITECTURA
Balanceo de Carga Dinámica –
Partition Layer
Se extiende el procesamiento a través de servidores
en particiones de índice/transacciones
• El Master supervisa la utilización de recursos y
carga de tráfico en servidores de particiones
• Dinámicamente se particiona el balanceo de
carga en los servidores para lograr una mejor
performance e incrementar la disponibilidad
• No se mueve los datos, solamente se reasigna
la parte del índice que es comprometido de un
servidor de particiones

Partition Layer

Index

Distributed File System
ARQUITECTURA
Balanceo de Carga Dinámico – DFS
Layer
DFS leer balanceo de carga en las réplicas
• Monitor de carga/latencia en cada nodo/réplica;
seleccionar dinámicamente qué réplica leer y empezar
adicional; y leer en paralelo basado en 95% de latencia

Partition Layer

DFS escribir balanceo de carga
• Monitor de carga/latencia en cada nodo; establecer el
conjunto de réplicas con un nodo sobrecargado, y
cambiarlo a un nuevo extent en otro conjunto de nodos
para anexarlo
DFS Balanceo de carga en la capacidad
• Lentamente desplaza las réplicas para asegurar los discos y
los nodos al tener igual cantidad de datos sobre ellos
• Importante para evitar la sobrecarga de temperatura en
los nodos/discos

Distributed File System
ARQUITECTURA
Resumen
• Durabilidad: Todos los datos almacenados con al menos tres réplicas
• Consistencia: Todos los datos comprometidos a través de las 3 réplicas son idénticos
• Disponibilidad: Puede leer desde cualquiera de las 3 réplicas; Si se generan problemas de escritura
en el extent, esta continúa añadiendo nuevos extent
• Rendimiento/Escalabilidad: Reintento basado en el 95% de las latencias; Escala automática hacia
fuera y equilibrio de carga basado en la capacidad de carga

• Información adicional puede encontrarse en el siguiente artículo SOSP:
• “Windows Azure Storage: A Highly Available Cloud Storage Service with Strong Consistency”,
ACM Symposium on Operating System Principals (SOSP), Oct. 2011
MEJORES PRACTICAS
MEJORES PRACTICAS
Mejores prácticas para el almacenamiento de Azure con .NET
• Deshabilitar Nagle para mensajes cortos(< 1400 b)
• ServicePointManager.UseNagleAlgorithm = false;

• Deshabilitar Expect 100-Continue*

• ServicePointManager.Expect100Continue = false;

• Incrementar el límite de conexión por defecto

• ServicePointManager.DefaultConnectionLimit = 100; (O mas)

• Toma ventaja de .Net 4.5 GC

• El funcionamiento GC es mejorado grandemente
• GC a fondo: http://msdn.microsoft.com/en-us/magazine/hh882452.aspx
MEJORES PRACTICAS
• Localizar cuentas de almacenamiento cerca de los escenarios de ejecución
y usuarios
• Entender el escenario de escalabilidad final

• Usar varias cuentas de almacenamiento para obtener más
• Distribuir sus cuentas de almacenamiento de información en todas las regiones

• Considerar la ejecución del almacenamiento de datos para un mejor
rendimiento
• Conjuntos de datos críticos en caché

• Para obtener más peticiones por segundo que las solicitudes en las particiones por cuenta
• Como un conjunto de datos de copia de seguridad

• Distribuir la carga sobre muchas particiones y evitar picos
MEJORES PRACTICAS
• Utilizar HTTPS
• Optimizar lo que envía & reciba

• Blobs: Leer rangos, Metadata, Head Requests
• Tablas: Upsert, Projection, Point Queries
• Queues: Mensaje de actualización

• Paralelismo de control en la capa de aplicación

• Paralelismo ilimitado puede conducir a baja latencia y pobre rendimiento

• Habilitar Logging & Métricas en cada servicio de almacenamiento
de información
MEJORES PRACTICAS
Entornos Blob
• Tratar de coincidir tanto con el tamaño de su lectura así como con el tamaño de su escritura
•
•

Evitar lectura de bloques pequeños en blobs conjuntamente con grandes bloques
CloudBlockBlob.StreamMinimumReadSizeInBytes/ StreamWriteSizeInBytes

• Cómo se puede subir una carpeta más rápida?
•

Cargar simultáneamente múltiples blobs

• Cómo puedo subir un blob más rápido?
•

Utilizar carga paralela en bloque

• Concurrencia (C)- Múltiple concurrencia al cargar diferentes blobs
• Paralelismo (P) – Múltiple cargas de trabajo al subir bloques diferentes para el misma blob
MEJORES PRACTICAS
Concurrencia Vs. Paralelismo Blob

10000

XL VM actualizando 512, 256MB Blobs (Total
tamaño de la carga = 128GB)
•
•
•

C=1, P=1 => Promedio ~ 13. 2 MB/s
C=1, P=30 => Promedio ~ 50.72 MB/s
C=30, P=1 => Promedio ~ 96.64 MB/s

8000

Única conexión TCP está limitado por el control de la
velocidad TCP & RTT
• P=30 vs. C=30: Prueba completada casi dos veces más
rápido!
• Blob solo está limitado por los límites de una única
partición
• Acceso simultáneamente a múltiples blobs escalables
•

6000

4000

Time (s)

2000

0
MEJORES PRACTICAS
Descarga Blob

140

• XL VM Descargando 50, 256MB Blobs
(Tamaño total de descargar = 12.5GB)
C=1, P=1 => Promedio ~ 96 MB/s
C=30, P=1 => Promedio ~ 130 MB/s

100

Time (s)

•
•

120

80

60

40

20

0
C=1, P=1

C=30, P=1
MEJORES PRACTICAS
Tablas de datos
• Queries Críticos: Select PartitionKey, RowKey para evitar hotspots
• Table Scans son muy costosos – Evitarlos a toda costa para escenarios sensibles de latencias

• Batch: El mismo PartitionKey para entidades que necesitan ser actualizados juntos
• Schema-less: Almacenar múltiples tipos de misma tabla
• Single Index – {PartitionKey, RowKey}: Si es necesario, concatenar columnas para
formar claves compuestas
• Entity Locality: {PartitionKey, RowKey} determina el orden de clasificación
• Almacenar entidades relacionadas para reducir IO y mejorar el rendimiento

• Table Service Client Layer en 2.1 y 2.2: Mejoras de rendimiento espectacular y mejor
interfaz NoSQL
MEJORES PRACTICAS
Queue
• Crear mensaje de procesamiento: Los mensajes se hacen visibles si el cliente no logra
borrar mensaje
• Beneficios de los mensajes de actualización: Extender el tiempo de visibilidad basado en
mensajes o guardar su estado intermitente
• Contador de mensaje: Usar esto para la escalabilidad de ejecución

• Contador Dequeue: Usar para identificar mensajes de errores o validar la invisibilidad de
tiempo usado
• Blobs para almacenar los mensajes grandes: Incrementan el rendimiento por tener
grandes lotes
• Múltiples colas: A más de un objetivo único (Partición)
DEMO
PREGUNTAS &
RESPUESTAS
CONTACTO
Sitio web:
http://venezuela.sqlpass.org/
Facebook:
https://www.facebook.com/sqlpassvzla
Twitter:
https://twitter.com/sqlpassve
Los Invitamos al
Muchas gracias por su
participación

Contenu connexe

Tendances

Webcast alta disponibilidad-exchange_2010
Webcast alta disponibilidad-exchange_2010Webcast alta disponibilidad-exchange_2010
Webcast alta disponibilidad-exchange_2010
Hector Cortes
 
Hosting presentacion
Hosting presentacionHosting presentacion
Hosting presentacion
waltergo
 

Tendances (20)

Cómo aumentar la disponibilidad y el rendimiento utilizando sql server 2012 w...
Cómo aumentar la disponibilidad y el rendimiento utilizando sql server 2012 w...Cómo aumentar la disponibilidad y el rendimiento utilizando sql server 2012 w...
Cómo aumentar la disponibilidad y el rendimiento utilizando sql server 2012 w...
 
Datos en la nube: colas, caché, topics y otras yerbas (Code Camp Argentina 2011)
Datos en la nube: colas, caché, topics y otras yerbas (Code Camp Argentina 2011)Datos en la nube: colas, caché, topics y otras yerbas (Code Camp Argentina 2011)
Datos en la nube: colas, caché, topics y otras yerbas (Code Camp Argentina 2011)
 
SQL Server Alta disponibilidad en ambientes empresariales
SQL Server Alta disponibilidad en ambientes empresarialesSQL Server Alta disponibilidad en ambientes empresariales
SQL Server Alta disponibilidad en ambientes empresariales
 
Alta disponibilidad SQL Server 2012
Alta disponibilidad SQL Server 2012Alta disponibilidad SQL Server 2012
Alta disponibilidad SQL Server 2012
 
Webcast alta disponibilidad-exchange_2010
Webcast alta disponibilidad-exchange_2010Webcast alta disponibilidad-exchange_2010
Webcast alta disponibilidad-exchange_2010
 
Recuperación de desastres y soluciones de alta disponibilidad con SQL Server
Recuperación de desastres y soluciones de alta disponibilidad con SQL ServerRecuperación de desastres y soluciones de alta disponibilidad con SQL Server
Recuperación de desastres y soluciones de alta disponibilidad con SQL Server
 
Arquitectura de las nuevas aplicaciones web: Como lograr escalabilidad, alta ...
Arquitectura de las nuevas aplicaciones web: Como lograr escalabilidad, alta ...Arquitectura de las nuevas aplicaciones web: Como lograr escalabilidad, alta ...
Arquitectura de las nuevas aplicaciones web: Como lograr escalabilidad, alta ...
 
Alta Disponibilidad con SQL Server 2012
Alta Disponibilidad con SQL Server 2012Alta Disponibilidad con SQL Server 2012
Alta Disponibilidad con SQL Server 2012
 
Devops Madrid Marzo - Caso de uso en AWS
Devops Madrid Marzo - Caso de uso en AWSDevops Madrid Marzo - Caso de uso en AWS
Devops Madrid Marzo - Caso de uso en AWS
 
De Mensajería hacia Logs con Apache Kafka
De Mensajería hacia Logs con Apache KafkaDe Mensajería hacia Logs con Apache Kafka
De Mensajería hacia Logs con Apache Kafka
 
Alta Disponibilidad y Recuperación ante de desastres en SQL Server 2012, 2014...
Alta Disponibilidad y Recuperación ante de desastres en SQL Server 2012, 2014...Alta Disponibilidad y Recuperación ante de desastres en SQL Server 2012, 2014...
Alta Disponibilidad y Recuperación ante de desastres en SQL Server 2012, 2014...
 
SQL Server 2017 soporte en Linux
SQL Server 2017 soporte en LinuxSQL Server 2017 soporte en Linux
SQL Server 2017 soporte en Linux
 
Hosting presentacion
Hosting presentacionHosting presentacion
Hosting presentacion
 
Loquemepasollibran
LoquemepasollibranLoquemepasollibran
Loquemepasollibran
 
Softonic Labs - Web Escalable
Softonic Labs - Web EscalableSoftonic Labs - Web Escalable
Softonic Labs - Web Escalable
 
SQL Server 2016 Tablas en Memoria
SQL Server 2016 Tablas en MemoriaSQL Server 2016 Tablas en Memoria
SQL Server 2016 Tablas en Memoria
 
Always On y grupos de disponibilidad SQL Server 2012
Always On y grupos de disponibilidad SQL Server 2012Always On y grupos de disponibilidad SQL Server 2012
Always On y grupos de disponibilidad SQL Server 2012
 
Estableciendo escenarios de Alta Disponibilidad en las empresas de hoy con MS...
Estableciendo escenarios de Alta Disponibilidad en las empresas de hoy con MS...Estableciendo escenarios de Alta Disponibilidad en las empresas de hoy con MS...
Estableciendo escenarios de Alta Disponibilidad en las empresas de hoy con MS...
 
AWS Summit Bogotá Track Básico: Bases de datos en AWS
AWS Summit Bogotá Track Básico: Bases de datos en AWSAWS Summit Bogotá Track Básico: Bases de datos en AWS
AWS Summit Bogotá Track Básico: Bases de datos en AWS
 
Alta disponiblidad en SQL Server 2012
Alta disponiblidad en SQL Server 2012Alta disponiblidad en SQL Server 2012
Alta disponiblidad en SQL Server 2012
 

En vedette

En vedette (18)

Implementando escenarios de reportes empresariales en Windows Azure con SQL R...
Implementando escenarios de reportes empresariales en Windows Azure con SQL R...Implementando escenarios de reportes empresariales en Windows Azure con SQL R...
Implementando escenarios de reportes empresariales en Windows Azure con SQL R...
 
Instalando y configurando PowerPivot para SharePoint 2013 y SQL Server 2014
Instalando y configurando PowerPivot para SharePoint 2013 y SQL Server 2014Instalando y configurando PowerPivot para SharePoint 2013 y SQL Server 2014
Instalando y configurando PowerPivot para SharePoint 2013 y SQL Server 2014
 
Novedades de SQL Server 2014 en motor relacional
Novedades de SQL Server 2014 en motor relacionalNovedades de SQL Server 2014 en motor relacional
Novedades de SQL Server 2014 en motor relacional
 
MS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datos
MS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datosMS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datos
MS SQL Server 2014 - In-Memory ColumnStore Index - Haciendo un almacén de datos
 
Big Data, Almacenes de Datos Empresariales (EDW) y Windows Azure (SQL Databas...
Big Data, Almacenes de Datos Empresariales (EDW) y Windows Azure (SQL Databas...Big Data, Almacenes de Datos Empresariales (EDW) y Windows Azure (SQL Databas...
Big Data, Almacenes de Datos Empresariales (EDW) y Windows Azure (SQL Databas...
 
MDS - Aplicando y gestionando centralizadamente los datos maestros en escenar...
MDS - Aplicando y gestionando centralizadamente los datos maestros en escenar...MDS - Aplicando y gestionando centralizadamente los datos maestros en escenar...
MDS - Aplicando y gestionando centralizadamente los datos maestros en escenar...
 
Implementando escenarios de reportes empresariales en Windows Azure con SQL R...
Implementando escenarios de reportes empresariales en Windows Azure con SQL R...Implementando escenarios de reportes empresariales en Windows Azure con SQL R...
Implementando escenarios de reportes empresariales en Windows Azure con SQL R...
 
Big Data, Almacenes de datos empresariales (EDW) y Windows Azure (SQL Databas...
Big Data, Almacenes de datos empresariales (EDW) y Windows Azure (SQL Databas...Big Data, Almacenes de datos empresariales (EDW) y Windows Azure (SQL Databas...
Big Data, Almacenes de datos empresariales (EDW) y Windows Azure (SQL Databas...
 
Building The Modern Architecture of Hybrid Data for Big Data with Microsoft D...
Building The Modern Architecture of Hybrid Data for Big Data with Microsoft D...Building The Modern Architecture of Hybrid Data for Big Data with Microsoft D...
Building The Modern Architecture of Hybrid Data for Big Data with Microsoft D...
 
Generando Toma de Decisiones Inteligente con Microsoft Big Data
Generando Toma de Decisiones Inteligente con Microsoft Big DataGenerando Toma de Decisiones Inteligente con Microsoft Big Data
Generando Toma de Decisiones Inteligente con Microsoft Big Data
 
Creación de aplicaciones de bases de datos con MS SQL Server 2012
Creación de aplicaciones de bases de datos con MS SQL Server 2012Creación de aplicaciones de bases de datos con MS SQL Server 2012
Creación de aplicaciones de bases de datos con MS SQL Server 2012
 
Data type[s] on MS SQL Server
Data type[s] on MS SQL ServerData type[s] on MS SQL Server
Data type[s] on MS SQL Server
 
MS SQL Server 2014 - In-Memory OLTP
MS SQL Server 2014 - In-Memory OLTPMS SQL Server 2014 - In-Memory OLTP
MS SQL Server 2014 - In-Memory OLTP
 
1. introduccion a transact-sql
1.  introduccion a transact-sql1.  introduccion a transact-sql
1. introduccion a transact-sql
 
SQL Server 2014 y La Plataforma de Datos
SQL Server 2014 y La Plataforma de DatosSQL Server 2014 y La Plataforma de Datos
SQL Server 2014 y La Plataforma de Datos
 
2. administracion de la seguridad
2.  administracion de la seguridad2.  administracion de la seguridad
2. administracion de la seguridad
 
MS SQL Server 2012 SP1 para desarrolladores
MS SQL Server 2012 SP1 para desarrolladoresMS SQL Server 2012 SP1 para desarrolladores
MS SQL Server 2012 SP1 para desarrolladores
 
Como crear aplicaciones de bases de datos con MS SQL Server 2012
Como crear aplicaciones de bases de datos con MS SQL Server 2012Como crear aplicaciones de bases de datos con MS SQL Server 2012
Como crear aplicaciones de bases de datos con MS SQL Server 2012
 

Similaire à Diseño de aplicaciones de bases de datos SQL Azure

Similaire à Diseño de aplicaciones de bases de datos SQL Azure (20)

The azure platform TechDay2010
The azure platform TechDay2010The azure platform TechDay2010
The azure platform TechDay2010
 
Servicios de storage de AWS
Servicios de storage de AWSServicios de storage de AWS
Servicios de storage de AWS
 
Aplicaciones escalables en Azure
Aplicaciones escalables en AzureAplicaciones escalables en Azure
Aplicaciones escalables en Azure
 
Base de datos
Base de datosBase de datos
Base de datos
 
Servicios de Storage en AWS
Servicios de Storage en AWSServicios de Storage en AWS
Servicios de Storage en AWS
 
Replicacion Postgresql
Replicacion PostgresqlReplicacion Postgresql
Replicacion Postgresql
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidos
 
Principales bases de datos
Principales bases de datosPrincipales bases de datos
Principales bases de datos
 
Base de dato
Base de  dato Base de  dato
Base de dato
 
Base de dato act4
Base de  dato act4Base de  dato act4
Base de dato act4
 
Escalando para sus primeros 10 millones de usuarios
Escalando para sus primeros 10 millones de usuariosEscalando para sus primeros 10 millones de usuarios
Escalando para sus primeros 10 millones de usuarios
 
Act4 base de_datos_canto_josé
Act4 base de_datos_canto_joséAct4 base de_datos_canto_josé
Act4 base de_datos_canto_josé
 
Alta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQLAlta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQL
 
Codemotion cacheandolanube
Codemotion cacheandolanubeCodemotion cacheandolanube
Codemotion cacheandolanube
 
Windows Azure, Lo mejor del PDC
Windows Azure, Lo mejor del PDCWindows Azure, Lo mejor del PDC
Windows Azure, Lo mejor del PDC
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
 
Arquitecturas de Base de Datos- kmm.pptx
Arquitecturas de Base de Datos- kmm.pptxArquitecturas de Base de Datos- kmm.pptx
Arquitecturas de Base de Datos- kmm.pptx
 
Tipos_Arquitecturas_de_Base_de_Datos.pptx
Tipos_Arquitecturas_de_Base_de_Datos.pptxTipos_Arquitecturas_de_Base_de_Datos.pptx
Tipos_Arquitecturas_de_Base_de_Datos.pptx
 
Servicios de Bases de Datos de AWS
Servicios de Bases de Datos de AWSServicios de Bases de Datos de AWS
Servicios de Bases de Datos de AWS
 
Presentacion
PresentacionPresentacion
Presentacion
 

Plus de Joseph Lopez

Plus de Joseph Lopez (20)

Entorno de datos Microsoft Cloud
Entorno de datos Microsoft CloudEntorno de datos Microsoft Cloud
Entorno de datos Microsoft Cloud
 
Microsoft Azure Data Environment
Microsoft Azure Data EnvironmentMicrosoft Azure Data Environment
Microsoft Azure Data Environment
 
Aplicando SQL Server 2016 en Microsoft Azure Virtual Machine
Aplicando SQL Server 2016 en Microsoft Azure Virtual MachineAplicando SQL Server 2016 en Microsoft Azure Virtual Machine
Aplicando SQL Server 2016 en Microsoft Azure Virtual Machine
 
Conociendo Dynamic Data Masking en entornos de producción con SQL Server 2016...
Conociendo Dynamic Data Masking en entornos de producción con SQL Server 2016...Conociendo Dynamic Data Masking en entornos de producción con SQL Server 2016...
Conociendo Dynamic Data Masking en entornos de producción con SQL Server 2016...
 
Conociendo los cambios de SQL Server a partir de 2012 a 2016
Conociendo los cambios de SQL Server a partir de 2012 a 2016Conociendo los cambios de SQL Server a partir de 2012 a 2016
Conociendo los cambios de SQL Server a partir de 2012 a 2016
 
Aplicando Azure Search en Sistemas Hibridos
Aplicando Azure Search en Sistemas HibridosAplicando Azure Search en Sistemas Hibridos
Aplicando Azure Search en Sistemas Hibridos
 
Performance Tuning en Azure SQL Database
Performance Tuning en Azure SQL DatabasePerformance Tuning en Azure SQL Database
Performance Tuning en Azure SQL Database
 
Tablas temporales en SQL Server 2016 y Azure SQL Database v12
Tablas temporales en SQL Server 2016 y Azure SQL Database v12Tablas temporales en SQL Server 2016 y Azure SQL Database v12
Tablas temporales en SQL Server 2016 y Azure SQL Database v12
 
Perspectiva de Microsoft Business Intelligence a partir de la integracion con...
Perspectiva de Microsoft Business Intelligence a partir de la integracion con...Perspectiva de Microsoft Business Intelligence a partir de la integracion con...
Perspectiva de Microsoft Business Intelligence a partir de la integracion con...
 
Recuperación ante desastres y continuidad del negocio con Azure SQL Database
Recuperación ante desastres y continuidad del negocio con Azure SQL DatabaseRecuperación ante desastres y continuidad del negocio con Azure SQL Database
Recuperación ante desastres y continuidad del negocio con Azure SQL Database
 
DBA para SharePoint
DBA para SharePointDBA para SharePoint
DBA para SharePoint
 
Introducción a Microsoft Azure SQL Data Warehouse
Introducción a Microsoft Azure SQL Data WarehouseIntroducción a Microsoft Azure SQL Data Warehouse
Introducción a Microsoft Azure SQL Data Warehouse
 
In-Memory OLTP en SQL Server 2016
In-Memory OLTP en SQL Server 2016In-Memory OLTP en SQL Server 2016
In-Memory OLTP en SQL Server 2016
 
Introducción a Azure DocumentDB
Introducción a Azure DocumentDBIntroducción a Azure DocumentDB
Introducción a Azure DocumentDB
 
Big Data - Desarrollando soluciones efectivas
Big Data - Desarrollando soluciones efectivasBig Data - Desarrollando soluciones efectivas
Big Data - Desarrollando soluciones efectivas
 
Introduccion a Power BI
Introduccion a Power BIIntroduccion a Power BI
Introduccion a Power BI
 
Introducción a Power BI bajo escenarios empresariales híbridos con SQL Server...
Introducción a Power BI bajo escenarios empresariales híbridos con SQL Server...Introducción a Power BI bajo escenarios empresariales híbridos con SQL Server...
Introducción a Power BI bajo escenarios empresariales híbridos con SQL Server...
 
Inteligencia de Negocio - Que Planeta es eso?
Inteligencia de Negocio - Que Planeta es eso?Inteligencia de Negocio - Que Planeta es eso?
Inteligencia de Negocio - Que Planeta es eso?
 
Introduccion a las Bodegas de Datos
Introduccion a las Bodegas de DatosIntroduccion a las Bodegas de Datos
Introduccion a las Bodegas de Datos
 
Microsoft Azure SQL Database
Microsoft Azure SQL DatabaseMicrosoft Azure SQL Database
Microsoft Azure SQL Database
 

Dernier

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Dernier (12)

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 

Diseño de aplicaciones de bases de datos SQL Azure

  • 1. Diseño de aplicaciones de bases de datos SQL Azure José Redondo - @redondoj Chapter Leader SQL PASS Venezuela – DPA SolidQ – SC SynergyTPC jredondo@solidq.com http://redondoj.wordpress.com
  • 2. AGENDA • Windows Azure Storage • Componentes • Funcionamiento interno • Arquitectura • Mejores Practicas • Demo
  • 3. Diseño de aplicaciones de bases de datos SQL Azure
  • 5. WINDOWS AZURE STORAGE • Almacenamiento en la nube - En cualquier lugar y accesarlo en cualquier momento • Blobs, Discos, Tablas y Queues • Altamente disponible y escalable • Construir fácilmente aplicaciones "Escalable a internet" • Capacidad de almacenaje de 10 trillones de objetos • Solicitud de 900K/seg en promedio (2,3 trillones por mes) • Se paga por lo que se usas • Accesar por una vía sencilla y abierta a través de API’s • Bibliotecas de cliente en .NET, Java, Node.js, Python, PHP, Ruby
  • 12. COMPONENTES Como es utilizado el Azure Storage por parte de Microsoft? • Xbox: Utilizado en datos Blobs, Tablas & Queues para Cloud Game Saves, Halo 4, XBox Music, XBox Live, etc. • Skype: Utilizado en datos Blobs, Tablas and Queues para videos mensajes en Skype y almacenar metadatos para permitir a los clientes Skype conectarse con otros • Bing: Utilizado en datos Blobs, Tablas y Queues para proporcionar una ingestión del motor de búsqueda que consume casi en tiempo real el consumo de datos de Twitter y Facebook, indexándolo, para así luego, generar las búsqueda optimizadas en Bing • SkyDrive: Utilizado en datos Blobs para almacenar fotos, documentos, videos, archivos, etc.
  • 14. FUNCIONAMIENTO INTERNO Objetivos Alta disponibilidad con consistencia fuerte • Proporcionar acceso a datos ante fallas | en particiones Durabilidad • Replicar los datos dentro de varios entornos y en todas las regiones Escalabilidad • Necesita escalar a zettabytes • Proporcionar un espacio de nombres global para acceder a datos de todo el mundo • Escalar automáticamente hacia fuera y cargar los datos, balanceándolos para con ello, satisfacer las demandas de tráfico en puntos pico
  • 15. FUNCIONAMIENTO INTERNO Windows Azure Storage Stamps Almacenamiento Blob para accesarlo a través de la URL: http://<account>.blob.core.windows.net/ Storage Location Service Data access LB LB Front-Ends Front-Ends Partition Layer Partition Layer Inter-stamp (Geo) replication DFS Layer DFS Layer Intra-stamp replication Intra-stamp replication
  • 17. ARQUITECTURA Disponibilidad con consistencia de escritura • Front-end Layer • REST front-end (blob, tablas, queue) • Autenticación/autorización • Métricas/logging • Partition Layer • Entiende nuestras abstracciones de datos y proporciona la concurrencia optimista • Índice masivamente escalable • Registro estructurado Merge Tree • Cada registro (stream) es una lista vinculada extendible Partition Layer Index • Distributed File System Layer • Persistencia de datos y replicación (JBOD) • Los datos se almacenan en un archivo denominado extent, que se repite 3 veces a través de distintos nodos (UDs/FDs) • Sistema de archivos sólo para anexar Distributed File System
  • 18. ARQUITECTURA Architecture Layers inside Stamps Todas las escrituras son anexa al final de un registro, que es un anexar a la última medida en el registro Escribe la consistencia a través de todas las réplicas en un extent: • Anexa el ordenamiento a través de todas las 3 réplicas en un extent (archivo) • Sólo retorna las ejecuciones satisfactoria si todas las 3 réplicas se anexan a las comprometidas para el almacenamiento de información • Cuando el extent llega a un cierto tamaño o en escritura sea falla/LB, el mismo set de extent se réplicas en la medida de su necesidad y nunca añade más datos Disponibilidad de escritura: Para manejar errores durante la escritura • Conjunto de réplicas en extent • Añade inmediatamente a un nuevo extent (conjunto de réplicas) en otros 3 nodos disponibles • Añade este nuevo extent al final del registro de la partición (stream) Partition Layer Index Distributed File System
  • 19. ARQUITECTURA Disponibilidad de consistencia para la lectura • Read Consistency: Puede leer desde cualquier réplica, ya que los datos de cada réplica para un extent bit-wise es idéntico • Read Availability: Envía solicitudes de lectura paralelas si la primera lectura está tomando una latencia superior al 95% Partition Layer Index Distributed File System
  • 20. ARQUITECTURA Balanceo de Carga Dinámica – Partition Layer Se extiende el procesamiento a través de servidores en particiones de índice/transacciones • El Master supervisa la utilización de recursos y carga de tráfico en servidores de particiones • Dinámicamente se particiona el balanceo de carga en los servidores para lograr una mejor performance e incrementar la disponibilidad • No se mueve los datos, solamente se reasigna la parte del índice que es comprometido de un servidor de particiones Partition Layer Index Distributed File System
  • 21. ARQUITECTURA Balanceo de Carga Dinámico – DFS Layer DFS leer balanceo de carga en las réplicas • Monitor de carga/latencia en cada nodo/réplica; seleccionar dinámicamente qué réplica leer y empezar adicional; y leer en paralelo basado en 95% de latencia Partition Layer DFS escribir balanceo de carga • Monitor de carga/latencia en cada nodo; establecer el conjunto de réplicas con un nodo sobrecargado, y cambiarlo a un nuevo extent en otro conjunto de nodos para anexarlo DFS Balanceo de carga en la capacidad • Lentamente desplaza las réplicas para asegurar los discos y los nodos al tener igual cantidad de datos sobre ellos • Importante para evitar la sobrecarga de temperatura en los nodos/discos Distributed File System
  • 22. ARQUITECTURA Resumen • Durabilidad: Todos los datos almacenados con al menos tres réplicas • Consistencia: Todos los datos comprometidos a través de las 3 réplicas son idénticos • Disponibilidad: Puede leer desde cualquiera de las 3 réplicas; Si se generan problemas de escritura en el extent, esta continúa añadiendo nuevos extent • Rendimiento/Escalabilidad: Reintento basado en el 95% de las latencias; Escala automática hacia fuera y equilibrio de carga basado en la capacidad de carga • Información adicional puede encontrarse en el siguiente artículo SOSP: • “Windows Azure Storage: A Highly Available Cloud Storage Service with Strong Consistency”, ACM Symposium on Operating System Principals (SOSP), Oct. 2011
  • 24. MEJORES PRACTICAS Mejores prácticas para el almacenamiento de Azure con .NET • Deshabilitar Nagle para mensajes cortos(< 1400 b) • ServicePointManager.UseNagleAlgorithm = false; • Deshabilitar Expect 100-Continue* • ServicePointManager.Expect100Continue = false; • Incrementar el límite de conexión por defecto • ServicePointManager.DefaultConnectionLimit = 100; (O mas) • Toma ventaja de .Net 4.5 GC • El funcionamiento GC es mejorado grandemente • GC a fondo: http://msdn.microsoft.com/en-us/magazine/hh882452.aspx
  • 25. MEJORES PRACTICAS • Localizar cuentas de almacenamiento cerca de los escenarios de ejecución y usuarios • Entender el escenario de escalabilidad final • Usar varias cuentas de almacenamiento para obtener más • Distribuir sus cuentas de almacenamiento de información en todas las regiones • Considerar la ejecución del almacenamiento de datos para un mejor rendimiento • Conjuntos de datos críticos en caché • Para obtener más peticiones por segundo que las solicitudes en las particiones por cuenta • Como un conjunto de datos de copia de seguridad • Distribuir la carga sobre muchas particiones y evitar picos
  • 26. MEJORES PRACTICAS • Utilizar HTTPS • Optimizar lo que envía & reciba • Blobs: Leer rangos, Metadata, Head Requests • Tablas: Upsert, Projection, Point Queries • Queues: Mensaje de actualización • Paralelismo de control en la capa de aplicación • Paralelismo ilimitado puede conducir a baja latencia y pobre rendimiento • Habilitar Logging & Métricas en cada servicio de almacenamiento de información
  • 27. MEJORES PRACTICAS Entornos Blob • Tratar de coincidir tanto con el tamaño de su lectura así como con el tamaño de su escritura • • Evitar lectura de bloques pequeños en blobs conjuntamente con grandes bloques CloudBlockBlob.StreamMinimumReadSizeInBytes/ StreamWriteSizeInBytes • Cómo se puede subir una carpeta más rápida? • Cargar simultáneamente múltiples blobs • Cómo puedo subir un blob más rápido? • Utilizar carga paralela en bloque • Concurrencia (C)- Múltiple concurrencia al cargar diferentes blobs • Paralelismo (P) – Múltiple cargas de trabajo al subir bloques diferentes para el misma blob
  • 28. MEJORES PRACTICAS Concurrencia Vs. Paralelismo Blob 10000 XL VM actualizando 512, 256MB Blobs (Total tamaño de la carga = 128GB) • • • C=1, P=1 => Promedio ~ 13. 2 MB/s C=1, P=30 => Promedio ~ 50.72 MB/s C=30, P=1 => Promedio ~ 96.64 MB/s 8000 Única conexión TCP está limitado por el control de la velocidad TCP & RTT • P=30 vs. C=30: Prueba completada casi dos veces más rápido! • Blob solo está limitado por los límites de una única partición • Acceso simultáneamente a múltiples blobs escalables • 6000 4000 Time (s) 2000 0
  • 29. MEJORES PRACTICAS Descarga Blob 140 • XL VM Descargando 50, 256MB Blobs (Tamaño total de descargar = 12.5GB) C=1, P=1 => Promedio ~ 96 MB/s C=30, P=1 => Promedio ~ 130 MB/s 100 Time (s) • • 120 80 60 40 20 0 C=1, P=1 C=30, P=1
  • 30. MEJORES PRACTICAS Tablas de datos • Queries Críticos: Select PartitionKey, RowKey para evitar hotspots • Table Scans son muy costosos – Evitarlos a toda costa para escenarios sensibles de latencias • Batch: El mismo PartitionKey para entidades que necesitan ser actualizados juntos • Schema-less: Almacenar múltiples tipos de misma tabla • Single Index – {PartitionKey, RowKey}: Si es necesario, concatenar columnas para formar claves compuestas • Entity Locality: {PartitionKey, RowKey} determina el orden de clasificación • Almacenar entidades relacionadas para reducir IO y mejorar el rendimiento • Table Service Client Layer en 2.1 y 2.2: Mejoras de rendimiento espectacular y mejor interfaz NoSQL
  • 31. MEJORES PRACTICAS Queue • Crear mensaje de procesamiento: Los mensajes se hacen visibles si el cliente no logra borrar mensaje • Beneficios de los mensajes de actualización: Extender el tiempo de visibilidad basado en mensajes o guardar su estado intermitente • Contador de mensaje: Usar esto para la escalabilidad de ejecución • Contador Dequeue: Usar para identificar mensajes de errores o validar la invisibilidad de tiempo usado • Blobs para almacenar los mensajes grandes: Incrementan el rendimiento por tener grandes lotes • Múltiples colas: A más de un objetivo único (Partición)
  • 32. DEMO
  • 36. Muchas gracias por su participación