5. 5
Plataforma Microsoft SQL
Físico
Virtual
Infraestructura como Servicio
Plataforma como un Servicio
SQL Server
Máquinas físicas (hierro en bruto)
SQL Server Private Cloud
Máquinas virtualizadas
SQL Server en Azure VM
Máquinas virtualizadas
Base de datos SQL Azure
Bases 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. 6
Base de datos SQL Azure
Base de datos relacional -como-un-servicio, totalmente administrado por
Microsoft
Diseñado para aplicaciones en la nube
7. SQL Database - Niveles de servicio de base de datos
• •• •••
• •• •••
8. Rendimiento predecible
Web / Business
Básico / Standard /
Premium
Máquina
Escribe
Lee
Memoria
DB 1
DB 2
DB 3
DB 4
DB 7
DB 5 DB 6
DB 8
DB 9
Máquina
Escribe
Lee
Memoria
DB 1
DB 2
DB 3
DB 4
DB 7
DB 5 DB 6
DB 8
DB 9
DB 1
DB 2
DB 3
DB
4
DB 7
DB 5
DB
6
DB 8
DB 9
Vecino ruidoso!
Delimitadores
eliminan vecinos
ruidosos
9. 9
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
10. 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
Premium
Estándar
Escalamiento OUT / IN
Escalahaciaarriba/abajo
11. 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-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 S0
S1
S2
P1
P2
P3
12. 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%
UPC
60%
Memoria
Calcular
Escribe
Lee
Memoria
DB carga de
trabajo
Cuadro delimitador
13. 13
Nuevos niveles de rendimiento
Básico Estándar Prima
Niveles de Desempeño
(DTU)
5 S0: 10
S1: 20
S2: 50
P1: 100
P2:200
P3: 800
Resultados de ASDB 16600 tx/hora S1: ,520 tx/minuto
S1: ,940 tx/minuto
S2: 2570 tx/minuto
P1: 105 tx/segundo
P2: 228 tx/segundo
P3: 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
15. 15
Azure SL Database Benchmark (ASDB)
15
Service Tier/Performance
Level
DTU Tasa de rendimiendo Predictivilidad
Basic 5
16,600 transacciones por
horas
Bueno
Standard/S0 10
521 transacciones por
minuto
Mejor
Standard/S1 20
934 transacciones por
minuto
Mejor
Standard/S2 50
2,570 transacciones por
minuto
Mejor
Premium/P1 100
105 transacciones por
segundo
Superior
Premium/P2 200
228 transacciones por
segundo
Superior
Premium/P3 800
735 transacciones por
segundo
Superior
16. 16
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
17. 17
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 = …)
18. 18
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
19. 19
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
21. 21
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
22. 22
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
23. 23
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
eficiencia
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
24. 24
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();
}
}
25. 25
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 App
DDR API
CacheDesarrollador
Shard Map
Manager
GSM
DB
LSM
26. 26
Multi-Shard Query
Cliente App
MSQ 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
27. 27
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…
}
}
}
}
28. 28
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)
29. Escalalidad en Microsoft Azure
SQL Database – Elastic Scale
Ing. Eduardo Castro, PhD
PASS Regional Mentor
SQL Server MVP