Upload
eduardo-castro
View
103
Download
4
Embed Size (px)
Citation preview
Patrones de escalalidad en Microsoft Azure SQL Database
Eduardo Castro, PhD.
2
Fuentes de esta presentación
MSDN Channel 9 Microsoft Azure SQL Databases SQL Azure Scalability
Microsoft Azure SQL Databases Overview Microsoft Azure Elastic Scale
La plataforma de datos de Microsoft
Streaming
Captura + Organizar
RelacionalInterna y externa
No relacional NoSQL
Visualizar + decidir
MóvilInformes PreguntarDashboardsAplicaciones
Procesamiento de eventos complejos
Transformar + analizar
Orquestación PredicciónPreguntaGestión de la información
Datos
Datos correctos, servicio adecuado Escalamiento de DB sin tener que preocuparse por infraestructuraAdministración sencillaCapacidades empresariales
Azure Data Services para soluciones
Sitios WebBase de datos SQL DocumentDB Búsqueda Tablas HDInsight
Opciones de base de datos relacionales y NoSQL
Clave/Valor y almacenamiento blob
Experiencias de búsqueda sofisticadas
Protección de datos para empresas en la nube
5
Plataforma Microsoft SQL
Físico
Virtual
Infraestructura como Servicio
Plataforma como un Servicio
SQL ServerMáquinas físicas (hierro en bruto)
SQL Server Private CloudMáquinas virtualizadas
SQL Server en Azure VMMáquinas virtualizadas
Base de datos SQL AzureBases de datos virtualizados
SQL
Dedicado costo más alto
Menor costo
compartido
Administración Superior Baja la Administración
Nube Híbrida
On Premises
Fuera de las instalaciones
SQL SQL
SQL SQL SQL
SQL SQL SQL
SQL
6
Base de datos SQL AzureBase de datos relacional -como-un-servicio, totalmente administrado por MicrosoftDiseñado para aplicaciones en la nube
Plataforma de base de datos de nivel empresarial con la economía nube
Autogestionado y Familiar
Continuidad del negocio y protección de datos
Escalamiento elástico y Rendimiento
Los niveles de rendimiento predeciblesEscalamiento hacia arriba / abajo y hacia fueraDashboard de métricas DB
Auto-servicio de restauraciónLa recuperación de desastresCumplimiento habilitado
AutogestionadoAPI programáticasHerramientas y lenguaje familiar
SQL Database - Niveles de servicio de base de datos
Básico Estándar PremiumCargas transaccionales
sencillasOpción para la mayoría
de las aplicaciones Alto rendimiento y bases de
datos críticos para el negocio Tipo de uso
99,99%*Disponibilidad
2 GB 250 GB 500 GBTamaño
• •• •••Rendimiento
• •• •••Continuidad del Negocio
Rendimiento predecible
Web / BusinessBásico / Standard /
PremiumMáquina
Escr
ibe Lee
Memoria
DB 1DB 2
DB 3
DB 4
DB 7
DB 5 DB 6
DB 8DB 9
Máquina
Escr
ibe Lee
Memoria
DB 1DB 2
DB 3
DB 4
DB 7
DB 5 DB 6
DB 8DB 9
DB 1DB 2
DB 3
DB 4
DB 7
DB 5 DB 6
DB 8
DB 9
Vecino ruidoso!
Delimitadores eliminan vecinos
ruidosos
9
Opciones de escalabilidad en la base de datos SQL AzureRendimiento previsible: escalamiento hacia arriba o hacia abajo (vertical)• Cambie de niveles de servicio para una base de datos dada, con base en las
necesidades de capacidad / rendimiento
Escalamiento elástico: Horizontal• Añadir o eliminar bases de datos como más o menos capacidad / rendimiento según sea
necesario
10
Opciones de escalabilidad en la base de datos SQL Azure
Básico
Estándar
Premium
Básico Básico Básico Básico Básico Básico
PremiumEstándar
Escalamiento OUT / INEsca
la h
acia
arr
iba
/ aba
jo
11
Rendimiento escalable• Básico,Estándar, y Premium proporcionan el aumento de los niveles de
rendimiento
• El rendimiento se expresa en unidades de rendimiento de base de datos (DTU) DTU es una medida combinada de la CPU, IO lectura, IO escritura, y la memoria
• Escala de rendimiento arriba / abajo a través del portal, las API, PS, o T-SQLpara reflejar la demanda real o anticipada
• Base de datos permanece en línea, durante el cambio• Facturación por hora
5 10 20 50 100 200 800DTU
B S0 S1S2
P1P2
P3
12
Unidad de Rendimiento de Base de Datos- DTU
Representa la capacidad relativa (recursos) asignado a la base de datos
Medida de CPU, la memoria, y lecturas y escrituras Simplifica las opciones selección de rendimiento
Monitoreo% De Nivel de rendimiento actual
Utilización
75%
Leer
50%
Escribir
50%
UPC60%
Memoria
Calcular
Escr
ibe Lee
Memoria
DB carga de trabajo
Cuadro delimitador
13
Nuevos niveles de rendimientoBásico Estándar Prima
Niveles de Desempeño (DTU)
5 S0: 10S1: 20S2: 50
P1: 100 P2:200 P3: 800
Resultados de ASDB 16600 tx/hora S1: ,520 tx/minutoS1: ,940 tx/minutoS2: 2570 tx/minuto
P1: 105 tx/segundoP2: 228 tx/segundoP3: 735 tx/segundo
El tamaño máximo de DB 2GB 250GB 500GBPrecio * por hora (mes) 0,0069 dólares (~ $ 5) S0: 0,0208 dólares (~ $ 15)
S1: $ 0,0417 (~ $ 30)S2: 0,1042 dólares (~ $ 75)
P1: 0,6458 dólares (~ $ 465)P2: $ 1.292 (~ $ 930)P3: $ 5.167 (~ $ 3720)
* A partir de 1 de noviembrest
14
RESULTADO
UPC
Escribe
Lee
GobernadorUPC
Escribe
Lee
P1 Gobernador
Gobernanza de RecursosLas solicitudes de recursos no se rechazan, pero se ponen en colaLa sobrecarga puede dar lugar a transacciones de larga ejecución o
posiblidad de timeout
SELECT * FROM a JOIN b ON …
S2UPC
Escribe
Lee
Gobernador
15
La elección de los niveles de desempeñoLa migración desde on Premises
Crear escenarios de pruebaLa migración desde Web & Business
Utilice master.sys.resource_statsEl cambio entre los niveles
Utilice userdb.sys.dm_db_resource_statsAfinamiento de consultas
sys.dm_exec_query_stats sys.dm_exec_query_sql_text() sys.dm_exec_query_plan sys.dm_exec_requests sys.dm_exec_sessions
5 10 20 50 100 200 800DTU
16
Cómo cambiar el Nivel de Rendimiento
PowerShell Set-AzureSqlDatabase
REST Update Database / ServiceLevelObjectiveId
.NET Microsoft.WindowsAzure.Management.Sql.
SqlManagementClient client.Databases.Update(...)
T-SQL ALTER DATABASE … MODIFY (EDITION = …)
17
Administración de cuotasCuota por servidor
6 Servidores por suscripciónCuotas por DB
1600 DTU 150 bases de datos
Ejemplos 2 P3 = 2x800 DTU = 1600 DTU 160 S0 = 160x10 DTU = 1600 DTU 200 S2 = 200x50 DTU = 10000 DTU 1 P3, 14 S2,10 S0 ... = 1.600 DTU / 25 DB
18
Monitoreo de las base de datos
• Monitorear el consumo de recursos y establecer alertas y notificaciones para guiar las decisiones de escalablidad
• Métricas incluyen el uso de DTU, el uso de recursos, el tamaño de la base de datos, la salud de conexión
• Dashboard para ver resumen del rendimiento
19
Monitoreo de recursosmaster.sys.resource_stats
5 minutos promedio
userdb.sys.dm_db_resource_stats 15 segundos promedios
20
Eslastic Scale en SQL Azure
• Escalamiento hasta miles de bases de datos utilizando el patrón de base de datos fragmentadas (Sharding)
• Soporta añadir, divider y combinar “shards” con el movimiento de datos
• Los clientes pueden combinar resultados de la consulta de múltiples “shards”
Shards de SQL Database
21
Conceptos
(1) Base de Datos
(2) Sharding Clave
. . .
(3) Shard Map Manager
(4) Shard
(4) Shard
(5) Shard Set
(6) Tabla fragmentada
(7) Tabla
(8) Shardlet
ID de cliente Nombre
1 Alicia
2 Bob
Tabla Cliente
ID DataCenter Nombre DC
1 Boston2 Miami
Tabla DataCenter
22
Uso de escalamiento por Sharding
Aplicación
Desarrollador
Aplicación .NET
Shard Map Management (SMM)• Define grupos de shards para su aplicación• Maneja mapeo de llaves de enrutamiento
Data Dependent Routing (DDR)• Enruta solicitudes entrantes para el shard correcto,
por ejemplo, dado un ID de cliente • Información de enrutamiento se guarda en caché por
eficienciaMulti-Shard Query (MSQ)
• Procesamiento interactivo a través de varios Shards• La misma sentencia ejecutada en todos los shards con
UNION ALL
API de cliente .NET
Servicio de Gestión
Admin /DevOps
23
Data Dependent Routing (DDR)
using (SqlConnection conn = ShardMap.OpenConnectionForKey(shardingKey, connectionString,ConnectionOptions.Validate));
{using (SqlCommand cmd = new SqlCommand()
{cmd.Connection = conn;cmd.CommandText = "SELECT * FROM customers WHERE
customer ID = 104";
SqlDataReader sdr = cmd.ExecuteReader();
}}
24
Caché: mejora el rendimiento de las operaciones de Shards• Global Shard Map (GSM) - estado de todos los Shards en el Shard Map• Local Shard Map (LSM) - estado de todos los Shards en un Shard concreto• Client Cache (eager/lazy) - estado de todos los Shards en los Shard Maps /
Shards conocidos
Data Dependent Routing (DDR)
Client AppDDR APICacheDesarrollador
Shard Map Manager
GSM
DB
LSM
25
Multi-Shard Query
Cliente AppMSQ API
SELECT count(*) FROM customers
UNION ALL result set
DB1
[0-100) . . .
DB2
[100-200)
DB3
[200-300)
DB4
[300-400)
DB5
[400-500)
DB6
[500-600)
DBn
[N - n + 100)
Aplicación
Revelador
Shard Map Manager
26
Consulta de multiples Shards
using (MultiShardConnection conn = new MultiShardConnection(m_shardMap.GetAllShards(null), MultiShardTestUtils.GetTestSqlCredential())){ using (MultiShardCommand cmd = conn.CreateCommand()) { cmd.CommandText = "SELECT count(*) FROM customers"; cmd.CommandType = CommandType.Text; cmd.Policy = MultiShardPolicy.PartialResults;
using (MultiShardDataReader sdr = cmd.ExecuteReader(includeShardNameColumn: true)) { while (sdr.Read()) {
// Now consume results from the data reader… }
} }}
27
Combinación y división de Shards
• Dividir: crear dos shards con base en uno• Combinar: crear un shards de dos shards distintos• Mover a un punto: mover un solo tenand a un shard específico
SplitMerge
DB1
[0-100) . . .
DB2
[100-200)
DB3
[200-300)
DB4
[300-400)
DB5
[400-500)
DB6
[500-600)
DBn
[N - n + 100)
DB2.1
[0-200)
DB5.1
[400-450)
DB5.2
[450-500)
28
Geo-Replicación
DB1DB1
DB1
DB1
DB1
Preguntas?