Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

.Net Community Summit 2018 - Aplicações .NET inteligentes com escala horizontal de bancos de dados no Azure - Rubens Guimarães

41 views

Published on

Aplicações .NET inteligentes com escala horizontal de bancos de dados no Azure
Rubens Guimarães

.NET COMMUNITY SUMMIT - 05 de maio de 2018

Published in: Software
  • Be the first to comment

  • Be the first to like this

.Net Community Summit 2018 - Aplicações .NET inteligentes com escala horizontal de bancos de dados no Azure - Rubens Guimarães

  1. 1. Rubens Guimarães rubens.guimaraes@e-seth.com.br Aplicações .NET inteligentes com escala de dados no Azure
  2. 2. Rubens Guimarães Diretor de Tecnologia da eSeth Engenheiro de Software com especialização na Academia Latino-Americana de Segurança da Informação e Stanford University - Palo Alto CA Desenvolve projetos de tecnologia de ponta para empresas de porte, instituições financeiras, redes de franquias e marcas reconhecidas na América Latina, EUA e Europa.
  3. 3. www.tecnologianapratica.com/rubensGuimaraes
  4. 4. O volume de informações digitais produzidas nos últimos 02 anos é equivalente ao volume produzido em toda a história. Vai aumentar mais. Machine learning, IoT, Cognitive Services, etc
  5. 5. Relacional Tabelas, colunas e registros são estruturas típicas deste tipo de tecnologia. Linguagem SQL. SQL Server, Oracle, MySQL NoSQL Capacidades que vão além das características típicas dos sistemas gerenciadores relacionais. DocumentDB, MongoDB, Redis, Cassandra, Riak
  6. 6. Abordagem Elástica corresponde Demanda x Capacidade.
  7. 7. Elasticidade Aumenta ou Diminui Pode ser automatizada ou não.
  8. 8. HORIZONTAL X VERTICAL
  9. 9. HORIZONTAL Mesma estrutura com dados diferentes. Tabela A Tabela B Tabela C Tabela A Tabela B Tabela C Tabela A Tabela B Tabela C Tabela A Tabela B Tabela C Estruturas diferentes com dados diferentes. Tabela A Tabela B Tabela C Tabela D Depende do projeto e da capacidade da aplicação executar ações separadas. Shard Map Manager x
  10. 10. Shard Map Manager Instale: Microsoft.Azure.SqlDatabase.ElasticScale.Client Conecte ao SSMS: CREATE EXTERNAL DATA SOURCE MyExtSrc WITH ( TYPE=SHARD_MAP_MANAGER, LOCATION='myserver.database.windows.net', DATABASE_NAME='ShardMapDatabase', CREDENTIAL= SMMUser, SHARD_MAP_NAME='ShardMap' ); CREATE EXTERNAL TABLE [dbo].[order_line]( [ol_o_id] int NOT NULL, [ol_d_id] tinyint NOT NULL, [ol_w_id] int NOT NULL, [ol_number] tinyint NOT NULL, [ol_i_id] int NOT NULL, [ol_delivery_d] datetime NOT NULL, [ol_amount] smallmoney NOT NULL, [ol_supply_w_id] int NOT NULL, [ol_quantity] smallint NOT NULL, [ol_dist_info] char(24) NOT NULL ) WITH ( DATA_SOURCE = MyExtSrc, SCHEMA_NAME = 'orders', OBJECT_NAME = 'order_details', DISTRIBUTION=SHARDED(ol_w_id) );
  11. 11. .NET – vários DBs using (var scope = new TransactionScope()) { using (var conn1 = new SqlConnection(connStrDb1)) { conn1.Open(); SqlCommand cmd1 = conn1.CreateCommand(); cmd1.CommandText = string.Format("insert into T1 values(1)"); cmd1.ExecuteNonQuery(); } using (var conn2 = new SqlConnection(connStrDb2)) { conn2.Open(); var cmd2 = conn2.CreateCommand(); cmd2.CommandText = string.Format("insert into T2 values(2)"); cmd2.ExecuteNonQuery(); } scope.Complete(); }
  12. 12. INTELIGÊNCIA Fragmentos quentes X Fragmentos frios Isolamento e carga
  13. 13. CONTEINERS - Isolamento físico dos shardlets. - Permissões e Controle de exposições. - Gerenciamento facilitado. - Permite mover db entre conteiners sem sair do ar de forma vertical.
  14. 14. AZURE Elasticidade Vertical e Horizontal
  15. 15. DESEMPENHO SQL SERVER NO AZURE 1- Direcione o tempdb para a unidade D na VM: USE MASTER GO ALTER DATABASE tempdb MODIFY FILE (NAME= tempdev, FILENAME= ‘D:SQLTEMPtempdb.mdf’) GO ALTER DATABASE tempdb MODIFY FILE (name = templog, filename = ‘D:SQLTEMPtemplog.ldf’) GO
  16. 16. DESEMPENHO SQL SERVER NO AZURE 2- Configurar os serviços do SQL Server para inicialização manual: 3- Criar um script para a cada inicialização da VM a pasta “SQLTEMP” (indicada no script do passo 1) seja criada na unidade D antes da iniciação dos serviços do SQL: $SQLService=”SQL Server (MSSQLSERVER)” $SQLAgentService=”SQL Server Agent (MSSQLSERVER)” $tempfolder=”D:SQLTEMP” if (!(test-path -path $tempfolder)) { New-Item -ItemType directory -Path $tempfolder } Start-Service $SQLService Start-Service $SQLAgentService 4- Agendar uma tarefa no Windows para execução do script ao inicializar o servidor:
  17. 17. ANÁLISE Máximo de solicitações simultâneas SELECT COUNT(*) AS [Concurrent_Requests] FROM sys.dm_exec_requests R OU SELECT COUNT(*) AS [Concurrent_Requests] FROM sys.dm_exec_requests R INNER JOIN sys.databases D ON D.database_id = R.database_id AND D.name = 'MyDatabase‘ Máximo de sessões SELECT COUNT(*) AS [Sessions] FROM sys.dm_exec_connections OU SELECT COUNT(*) AS [Sessions] FROM sys.dm_exec_connections C INNER JOIN sys.dm_exec_sessions S ON (S.session_id = C.session_id) INNER JOIN sys.databases D ON (D.database_id = S.database_id) WHERE D.name = 'MyDatabase'
  18. 18. ANÁLISE SELECT avg(avg_cpu_percent) AS 'Average CPU use in percent', max(avg_cpu_percent) AS 'Maximum CPU use in percent', avg(avg_data_io_percent) AS 'Average physical data I/O use in percent', max(avg_data_io_percent) AS 'Maximum physical data I/O use in percent', avg(avg_log_write_percent) AS 'Average log write use in percent', max(avg_log_write_percent) AS 'Maximum log write use in percent', avg(max_session_percent) AS 'Average % of sessions', max(max_session_percent) AS 'Maximum % of sessions', avg(max_worker_percent) AS 'Average % of workers', max(max_worker_percent) AS 'Maximum % of workers' FROM sys.resource_stats WHERE database_name = 'userdb1' AND start_time > DATEADD(day, -7, GETDATE()); Os dados são coletados a cada 5 minutos e são mantidos por aproximadamente 35 dias. Essa exibição é útil para uma análise de histórico de longo prazo de como seu banco de dados SQL usa recursos.
  19. 19. AZURE Mapa de estudos azure.microsoft.com/pt-br/documentation/learning- paths/sql-database-elastic-scale
  20. 20. www.youtube.com/AzureBrasilComunidadeTécnica
  21. 21. Rubens Guimarães rubens.guimaraes@e-seth.com.br www.eSeth.com.br

×