29
Patrones de escalalidad en Microsoft Azure SQL Database Eduardo Castro, PhD.

Azure sql database escalabilidad

Embed Size (px)

Citation preview

Page 1: Azure sql database escalabilidad

Patrones de escalalidad en Microsoft Azure SQL Database

Eduardo Castro, PhD.

Page 2: Azure sql database escalabilidad

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

Page 3: Azure sql database escalabilidad

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

Page 4: Azure sql database escalabilidad

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

Page 5: Azure sql database escalabilidad

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

Page 6: Azure sql database escalabilidad

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

Page 7: Azure sql database escalabilidad

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

Page 8: Azure sql database escalabilidad

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

Page 9: Azure sql database escalabilidad

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

Page 10: Azure sql database escalabilidad

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

Page 11: Azure sql database escalabilidad

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

Page 12: Azure sql database escalabilidad

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

Page 13: Azure sql database escalabilidad

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

Page 14: Azure sql database escalabilidad

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

Page 15: Azure sql database escalabilidad

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

Page 16: Azure sql database escalabilidad

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 = …)

Page 17: Azure sql database escalabilidad

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

Page 18: Azure sql database escalabilidad

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

Page 19: Azure sql database escalabilidad

19

Monitoreo de recursosmaster.sys.resource_stats

5 minutos promedio

userdb.sys.dm_db_resource_stats 15 segundos promedios

Page 20: Azure sql database escalabilidad

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

Page 21: Azure sql database escalabilidad

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

Page 22: Azure sql database escalabilidad

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

Page 23: Azure sql database escalabilidad

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();

}}

Page 24: Azure sql database escalabilidad

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

Page 25: Azure sql database escalabilidad

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

Page 26: Azure sql database escalabilidad

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… }

} }}

Page 27: Azure sql database escalabilidad

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)

Page 28: Azure sql database escalabilidad

28

Geo-Replicación

DB1DB1

DB1

DB1

DB1

Page 29: Azure sql database escalabilidad

Preguntas?