24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

36
Patrones de escalalidad en Microsoft Azure SQL Database Expositor: Eduardo Castro, PhD. PASS Regional Mentor. SQL Server MVP Moderador: Kenneth Ureña

description

Esta es la charla que Eduardo Castro va a brindar el 4 de Diciembre en las 24 horas PASS en Español. Si no se ha registrado todavia esta a tiempo en el siguiente link: http://www.sqlpass.org/24hours/2014/spanish/Registro.aspx

Transcript of 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

Page 1: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

Patrones de escalalidad en

Microsoft Azure SQL Database

Expositor: Eduardo Castro, PhD. PASS Regional Mentor. SQL Server MVP

Moderador: Kenneth Ureña

Page 2: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

Gracias a nuestros auspiciadores

Database Security as Easy as A-B-C

http://www.greensql.com

Hardcore Developer and IT Training

http://www.pluralsight.com

SQL Server PerformanceTry PlanExplorer today!

http://www.sqlsentry.com

Page 3: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

Próximos SQL Saturday

24 de Enero de 2015 https://www.sqlsaturday.com/346/register.aspx

18 de Abril de 2015 https://www.sqlsaturday.com/368/register.aspx

9 de Mayo de 2015 https://www.sqlsaturday.com/373/register.aspx

6 de Diciembre de 2014 https://www.sqlsaturday.com/351/register.aspx

Page 4: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

4

Capítulo Global PASS en Español

4

Reuniones semanales todos los miércoles a

las 12PM UTC-5 (Hora de Colombia)

https://www.facebook.com/SpanishPASSVC

Page 5: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

5

Asistencia Técnica

Si requiere asistenciadurante la sesión debe usar la sección de preguntas que esta en el menú de la derecha.

Use el botón de Zoom para ajustar su pantalla al tamaño deseado

Escriba sus preguntas en la sección de preguntas que esta en el menú de la derecha

Page 6: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

6

Eduardo Castro

Eduardo Castro cuenta con más de 17 años de experiencia con herramientas

Microsoft y ha sido reconocido como Most Valuable Professional de Microsoft

SQL Server en más de 10 ocasiones. Eduardo es un orador activo en las

comunidades técnicas de Microsoft y ha sido experto invitado y conferencista

en eventos tales como SQL Server Pass Summit, el Congreso Mundial de

Arquitectura (IWS de IASA), The OpenGroup Enterprise Architecture

Conference, IEEE Congress.

6

Page 7: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

7

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 8: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

La plataforma de datos de Microsoft

Page 9: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

Azure Data Services para soluciones

Page 10: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

10

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 11: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

11

Base de datos SQL Azure

Base de datos relacional -como-un-servicio, totalmente administrado por

Microsoft

Diseñado para aplicaciones en la nube

Plataforma de base de datos de nivel empresarial con la economía nube

Page 12: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

SQL Database - Niveles de servicio de base de datos

• •• •••

• •• •••

Page 13: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

Rendimiento predecible

Web / Business

Básico / Standard /

PremiumMáquina

Escr

ibe Lee

Memoria

DB 1

DB 2DB 3

DB 4

DB 7

DB 5 DB 6

DB 8DB 9

Máquina

Escr

ibe Lee

Memoria

DB 1

DB 2DB 3

DB 4

DB 7

DB 5 DB 6

DB 8DB 9

DB 1DB 2

DB 3

DB 4

DB 7

DB 5DB 6

DB 8

DB 9

Vecino ruidoso!

Delimitadoreseliminan vecinos

ruidosos

Page 14: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

14

Opciones de escalabilidad en la base de datos SQL

Azure

Rendimiento 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 15: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

15

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

Premium

Estándar

Escalamiento OUT / INEsca

la h

aci

a a

rrib

a /

ab

ajo

Page 16: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

16

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-SQL

para 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 S0S1

S2P1

P2

P3

Page 17: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

17

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

%

UPC6

0%

Memoria

Calcular

Escr

ibe Lee

Memoria

DB carga de trabajo

Cuadro delimitador

Page 18: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

18

Nuevos niveles de rendimiento

Bá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 500GB

Precio * 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 19: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

19

RESULTADO

UPC

Escribe

Lee

UPC

Escribe

Lee

Gobernanza de Recursos

Las solicitudes de recursos no se rechazan, pero se ponen en cola

La sobrecarga puede dar lugar a transacciones de larga ejecución o posiblidad

de timeout

SELECT * FROM a JOIN b ON …

UPC

Escribe

Lee

Page 20: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

20

La elección de los niveles de desempeño

La migración desde on Premises Crear escenarios de prueba

La migración desde Web & Business Utilice master.sys.resource_stats

El cambio entre los niveles Utilice userdb.sys.dm_db_resource_stats

Afinamiento 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

Page 21: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

21

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 22: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

22

Administración de cuotas

Cuota por servidor

6 Servidores por suscripción

Cuotas 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 23: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

23

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 24: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

24

Monitoreo de recursos

master.sys.resource_stats 5 minutos promedio

userdb.sys.dm_db_resource_stats 15 segundos promedios

Page 25: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

25

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 26: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

26

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 Boston

2 Miami

Tabla DataCenter

Page 27: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

27

Uso de escalamiento por Sharding

AplicaciónDesarrollador

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é poreficiencia

Multi-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 28: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

28

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 29: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

29

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 API

CacheDesarrollador

Shard Map Manager

GSM

DB

LSM

Page 30: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

30

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ónRevelador

Shard Map Manager

Page 31: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

31

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 32: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

32

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 33: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

33

Geo-Replicación

DB1DB1

DB1

DB1

DB1

Page 34: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

Preguntas?

Page 35: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

Backup y Restore SQL Server 2014

German Cayo

A continuación …

Page 36: 24 HOP edición Español - Patrones de escalalidad en microsoft azure sql database - Eduardo Castro

Gracias por participar