SQLSaturday Paris 2015 SQL Server sur Azure dans tous ses états ! Benjamin Talmard Stéphane Goudeau Microsoft DX
SQLSaturday Paris 2015 Merci à nos sponsors…
SQLSaturday Paris 2015 Merci à nos volontaires…
SQLSaturday Paris 2015 SQL Server sur Azure
SQLSaturday Paris 2015 SQL Server sur Azure dans tous ses états ! Azure SQL Database
SQLSaturday Paris 2015 Performance et élasticité
SQLSaturday Paris 2015 Performance et élasticité CPU Writes Reads Memory 30% 75% 50% 60% Utilization Machine Compute Writes Reads Memory DB 1 workload DB 2 work- load DB 3 work- load DB 5 workload DB 6 workload DB 8 work- load DB 7 work- load DB 4 workload
SQLSaturday Paris 2015 Performance et élasticité $5$15$30$75$150$930$7,000 DTUs B S0 S1 S2 S3 P2 P11 P1 $ P4 500 $1,860 P $3,720
SQLSaturday Paris 2015 Transition vers Azure SQL Database v12
SQLSaturday Paris 2015 demo Azure SQL Database
SQLSaturday Paris 2015 SQL Server sur Azure dans tous ses états ! Quelques nouveautés
SQLSaturday Paris 2015 Row-Level Security Contrôle des accès plus fins Transparent pour l’application Règles centralisées
SQLSaturday Paris 2015 Row-Level Security Predicate function (inline table-valued function) Security predicate Security policy CREATE SECURITY POLICY mySecurityPolicy ADD FILTER PREDICATE dbo.fn_securitypredicate(region, start, end) ON dbo.customers
SQLSaturday Paris ) L’utilisateur demande les données de la table concernée 3) La policy va réécrire la requête de manière transparente pour appliquer le prédicat 1) Le responsable crée la function, le prédicat et la policy en T-SQL Row-Level Security Database Policy Manager Security Policy Application Patients Nurse SELECT * FROM Patients CREATE FUNCTION int) RETURNS TABLE WITH SCHEMABINDING AS return SELECT 1 as [fn_securitypredicate_result] FROM StaffDuties d INNER JOIN Employees e ON (d.EmpId = e.EmpId) WHERE e.UserSID = SUSER_SID() = d.Wing; CREATE SECURITY POLICY dbo.SecPol ADD FILTER PREDICATE dbo.fn_securitypredicate(Wing) ON Patients WITH (STATE = ON) SELECT Patients.* FROM Patients, StaffDuties d INNER JOIN Employees e ON (d.EmpId = e.EmpId) WHERE e.UserSID = SUSER_SID() AND Patients.wing = d.Wing;
SQLSaturday Paris 2015 demo Row-Level Security
SQLSaturday Paris 2015 Dynamic Data Masking Protection des données sensibles Conformité aux réglementations en vigueur Agilité et transparence
SQLSaturday Paris 2015 Dynamic Data Masking ALTER TABLE [Employee] ALTER COLUMN [SocialSecurityNumber] ADD MASKED WITH (FUNCTION = 'Partial(0,"XXX-XX-",2)') ALTER TABLE [Employee] ALTER COLUMN [ ] ADD MASKED WITH (FUNCTION = ‘ ()’) ALTER TABLE [Employee] ALTER COLUMN [Salary] ADD MASKED WITH (FUNCTION = ‘RANDOM(1,20000)’) GRANT UNMASK to admin1 1) L'administrateur définit la policy en T-SQL 2) L'utilisateur de l'application demande les données de la table 3) La policy masque les données sensibles dans le résultat SELECT [Name], [SocialSecurityNumber], [ ], [Salary] FROM [Employee] admin1 loginother login
SQLSaturday Paris 2015 demo Dynamic Data Masking
SQLSaturday Paris 2015 SQL Server sur Azure dans tous ses états ! Implémenter une application SaaS orientée données
SQLSaturday Paris DB par client 1 DB pour N Clients 1 schéma par client 1 DB pour N Clients 1 schéma pour N clients Notre cahier des charges… Implémenter une application SaaS orientée données... Trois modèles pour y répondre
SQLSaturday Paris 2015 Catalog Cli. 1 Cli. 2 Service Cloud Un service Cloud, load- balancé et multi-tenant Bases de données client Scale–out par ajout de bases de données client Catalogue clients Cli. 3Cli. N Le plus simple des trois… Le catalogue permet de référencer l’ensemble des bases de données client Une infrastructure data single-tenant
SQLSaturday Paris 2015 Catalog Cli. 1 Cli. 2 Service Cloud Bases de données client Catalogue clients Cli. 3Cli. N Problématique #1 : Scale-Up, Scale-Down
SQLSaturday Paris 2015 Catalog Cli. 1 Cli. 2 Service Cloud Bases de données client Catalogue clients Cli. 3Cli. N Problématique #1 : Scale-Up, Scale-Down Cli. 1 Cli. 2 Cli. 3
SQLSaturday Paris 2015 Problématique #2 : La performance n’est pas prédictible, le nombre de bases est très élevé Catalog Service Cloud Catalogue clients Cli. 3 Cli. 4 Cli. 2Cli. 1 Cli. 9 Cli. 3 Cli. 4 Cli. 9 Cli. 1 Bases de données client Cli. 2 Cli. N Cli. 6 Cli. 7Cli. 5 Cus Cli. 6 Cli. 7Cli. 8Cli. 5
SQLSaturday Paris 2015 Une solution : Elastic database Pools Partager les capacités entre de multiples bases de données pour globaliser les coûts Adapter le dimensionnement à des performances imprédictibles Pas de surcapacité à anticiper au niveau de chacune des bases de données Plus besoin de superviser les performances à l’échelle de chaque base de données Possibilité de déplacer les tenants entre différents pools DTUs Niveau de burst maximal par database
SQLSaturday Paris 2015 Exemple de scénario avec impact coûts 100 S2 avec 20% de consommation DTU en moyenne 15% des DB peuvent consommer 100% de leur budget DTU à un instant t
SQLSaturday Paris 2015 Catalog Cli. 1 Cli. 2 Service Cloud Bases de données client Catalogue clients Cli. 3Cli. N Problématique #3 : Il y a grosses différences entre les capacités requises par type de client
SQLSaturday Paris 2015 Une solution : Possibilité de regrouper les bases sur différents pools Catalog Service Cloud Catalogue clients Cli. 3 Cli. 4 Cli. 2Cli. 1 Cli. 9 Cli. 3 Cli. 4 Cli. 9 Cli. 1 Bases de données client Cli. 2 Cli. 6 Cli. 7Cli. 5 Cus Cli. 6 Cli. 7Cli. 5 Cli. N Cus Cli. 8
SQLSaturday Paris 2015 Une solution : Possibilité de déplacer une base hors du pool en cas de charge exceptionnelle Catalog Service Cloud Catalogue clients Cli. 3 Cli. 4 Cli. 2Cli. 1 Cli. 3 Cli. 4 Cli. 2Cli. 9 Cli. 3 Cli. 4 Cli. 9 Cli. 1 Bases de données client Cli. 2 Cli. 6 Cli. 7Cli. 5 Cus Cli. 6 Cli. 7Cli. 5 Cli. N Cus Cli. 8
SQLSaturday Paris 2015 demo Azure SQL Database Pools
SQLSaturday Paris 2015 Problématique #4 : Factorisation multi- database [ shards_global ] sidsmidserverdatabase 11Server1DB1 21Server1DB2 [shardmaps_global] smidname 1RangeShardMap [ shard_mappings_global ] midsmidminmaxSid DB 1 [0-100)... DB 2 [ ) DB 3 [ ) DB 4 [ ) DB 5 [ ) DB 6 [ ) DB n [n – n+100) Catalog ? ?
SQLSaturday Paris 2015 Catalog Cli. 1 Cli. 2 Service Cloud 2.Le service Cloud recherche les références de la base client dans le catalogue Bases de données client 3. Le service Cloud redirige directement les requêtes sur la base de données client Catalogue clients 1.L’utilisateur se connecte au service Cloud Cli. 3Cli. N Problématique #5 : Data-Dependent Routing
SQLSaturday Paris 2015 Catalog Cli. 1 Cli. 2 Service Cloud Bases de données client Cli. 3Cli. N Problématique #6 : Requête multi-database PowerBI Catalogue clients Elastic Query
SQLSaturday Paris 2015 Une solution : Elastic Tools & DB Query OLTP Cloud Application Elastic Tools Libraries DB PowerBI SQL DB Elastic Query Azure SQL DB v12 SQL TDS, ODBC, JDBC, ADO
SQLSaturday Paris 2015 demo Sharding & Data-Dependent Routing avec la librairie Microsoft.Azure.SqlDatabase. ElasticScale.Client
SQLSaturday Paris 2015 Catalog Cli. 1 Cli. 2 Service Cloud Bases de données client Catalogue clients Cli. 3Cli. N Problématique #7 : Administration multi- database T-SQL
SQLSaturday Paris 2015 Une solution : Elastic Database Jobs Application de changements ou d’opérations administratives à de multiples databases Utilisation de scripts T-SQL classiques pour définir les jobs Intégration native d’une logique de « retry » pour la gestion des erreurs de transition Forte intégration avec les Elastic Pools depuis le nouveau portail Azure Conçu pour le traitement batch
SQLSaturday Paris 2015 demo Elastic Database Jobs
SQLSaturday Paris 2015 Conclusion Modèle single-tenant Database pour bâtir des applications SaaS dans le Cloud : Spécificités d’Azure SQL Database Isolation des données Simplification des développements Extension des possibilités avec : Elastic Database Tools Elastic Database Pools (preview) Elastic Database Query (preview) Elastic Database Jobs (preview) Un environnement Database-as-a-Service globalisé ▪ Charges non prédictibles pour des applications SaaS d’échelle très significative ▪ Pas de remise en cause des outils de management ou de développement existants
SQLSaturday Paris 2015 …Et en plus on peut gagner des cadeaux