Copyright © 2015, Oracle and/or its affiliates. All rights reserved.1
Airton Lastori
airton.lastori@oracle.com
jun-2015
De...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.3
Alta Performance
Por que há demanda?
Suporte à “Big ...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.4
MySQL Central @ Oracle Open World 2014
Alguns cases ...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.5 Fonte: http://db-engines.com/en/ranking_trend (junho...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.6
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.7
Resposta tecnológica: NoSQL
Fonte: 451 Group, 2012
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.8
Requisitos NoSQL
O que a solução deve cumprir?
Alta ...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.9
Scale Out
• Adicionar mais servidores para
aumentar ...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.10
Escalabilidade vertical com MySQL
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.11
2008
até 4 CPU
MySQL 5.0
MySQL AB
até 16 CPU
MySQL ...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.12
MySQL 5.5.28
MySQL 5.6.7
MySQL 5.6 SysBench Benchma...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.13
MySQL 5.5.28
MySQL 5.6.7
MySQL 5.6 SysBench Benchma...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.14
60x Melhor Escalabilidade comThread Pool
MySQL 5.6....
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.15
18x Melhor Escalabilidade com Thread Pool
Thread Po...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.16
0
100,000
200,000
300,000
400,000
500,000
600,000
7...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.17
MySQL 5.7: Connections per Second
1.7x Faster than ...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.18
Atualize!
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.19
No Windows: MySQL Installer
Next, Next... Finish!
d...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.20
No Linux: repositórios YUM e APT para MySQL
 Supor...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.21
…ou manualmente via binários pré-compilados
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.22
Escalabilidade horizontal com
MySQL?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.23
Escalabilidade horizontal
Réplicas de
Leitura
Servi...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.24
Escalabilidade horizontal
• método mais simples e m...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.25
Aplicação
Replicação MySQL: como escalar 1/2
Master...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.26
Replicação MySQL: como escalar 2/2
Leituras Leitura...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.27
Saiba mais...
Tutorial “Replicação MySQL em 5 minut...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.28
 Failover
jdbc:mysql://[primary host][:port],[seco...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.29
Escalabilidade horizontal
• método mais simples e m...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.30
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.31
Escalabilidade horizontal
• método mais simples e m...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.32
Data Node 1
Data Node 2
Data Node 3
Data Node 4
Tab...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.33
Data Node 1
Data Node 2
F1
Data Node 3
Data Node 4
...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.34
Data Node 1
Data Node 2
F1
F1
Data Node 3
Data Node...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.35
Data Node 1
Data Node 2
F1
F3 F1
Data Node 3
Data N...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.36
Data Node 1
Data Node 2
F1 F3
F3 F1
Data Node 3
Dat...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.37
Data Node 1
Data Node 2
F1 F3
F3 F1
Data Node 3
Dat...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.38
Data Node 1
Data Node 2
F1 F3
F3 F1
Data Node 3
Dat...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.39
Data Node 1
Data Node 2
F1 F3
F3 F1
Data Node 3
Dat...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.40
Data Node 1
Data Node 2
F1 F3
F3 F1
Data Node 3
Dat...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.41
Data Node 1
Data Node 2
F3
F1
Data Node 3
Data Node...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.42
Data Node 1
Data Node 2
F1 F3
F3 F1
Data Node 3
Dat...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.43
Data Node 1
Data Node 2
F1 F3
F3 F1
Data Node 3
Dat...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.44
Data Node 1
Data Node 2
F1 F3
F3 F1
Data Node 3
Dat...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.45
Sharding com MySQL?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.46
Sharding com MySQL
• construindo componontes com fe...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.47
HA group
MySQL Fabric 1.5 (MySQL Utilities)
 Alta ...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.48
 Versão inicial, foco na simplicidade e robustez
–...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.49
Tutorial disponível no white paper
Whitepaper:
MySQ...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.50
NewSQL
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.51
Requisitos NewSQL
Relacional + NoSQL
Combine as dua...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.52
MySQL Cluster
• Arquitetura shared-nothing in-memor...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.53
Alguns usuários MySQL Cluster
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.54
Performance do MySQL Cluster
 8 Servidores Intel C...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.55
MySQL Cluster 7.2: 1.2 Billion UPDATEs por Minuto
...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.56
MySQL Cluster Data Nodes
Data Layer
Clients
Managem...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.57
MySQL Cluster Data Nodes
Data Layer
Clients
Applica...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.58
Os mesmos dados
acessados
simultaneamente
através d...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.59
MySQL Cluster Data Nodes
Data Layer
Clients
Applica...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.60
MySQL Cluster Data Nodes
Data Layer
Clients
Applica...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.61
MySQL Cluster Data Nodes
Data Layer
Clients
Applica...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.62
Qual API devo usar?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.63
APIs Java: ClusterJ e JPA
ClusterJ
API de persistên...
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.64
ClusterJ ou JPA?
ClusterJ
 Fácil de usar, parecida...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.65
Opção 1: Auto-Installer
MySQL Cluster 7.3 e 7.4
Ráp...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.66
MySQL Cluster Auto-Install
 Simples de instalar e ...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.67
1. Download MCM/Cluster package: edelivery.oracle.c...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.68
ClusterJ: como usar
• Defina Table para Java Mappin...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.69
ClusterJ Gera Classes
@PersistenceCapable(table="em...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.70
ClusterJ Base Class
public class Employee
extends D...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.71
Exemplo: ClusterJ 1/3
Session session;
void getSess...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.72
Exemplo: ClusterJ 2/3
Employee findEmployee(long id...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.73
Exemplo: ClusterJ 3/3
Query
QueryDomainType qemp =
...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.74
Mais Exemplos ClusterJ e ClusterJPA
Whitepaper:
MyS...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.75
Teste e nos diga o que achou da
Performance!
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.76
Exemplos Memcached API
Ondemand Webinar:
NoSQL Memc...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.77
Algumas limitações MySQL Cluster no white paper
Whi...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.78
Sumário
 As aplicações Web demandam mais dos banco...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.79
@MySQLBR meetup.com/MySQL-BRfacebook.com/MySQLBR
pt...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.80
@MySQLBR
meetup.com/MySQL-BR
facebook.com/MySQLBR
O...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.81
Perguntas?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.82
Enterprise Management
Services and Utilities
Backup...
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.83
Cluster Data Nodes
NDB NDB
Connection Pool, SQL Int...
Próximos SlideShares
Carregando em…5
×

Serviços Escaláveis e de Alta Performance com MySQL e Java

604 visualizações

Publicada em

As necessidades cada vez maiores de escalabilidade e performance nas aplicações Web e Mobile exigem novas estratégias no uso de bancos de dados, como por exemplo novos métodos de acesso NoSQL para MySQL. Tais métodos foram implementados recentemente e incluem APIs Java e Memcached que são uma alternativa de alto desempenho e escalável para consultas simples e que não requerem a definição de um esquema de dados rígido, mas também permitem aproveitar todas as vantagens já conhecidas de bancos de dados relacionais existentes.
Nesta apresentação mostraremos os novos métodos de acesso NoSQL para MySQL Server com InnoDB e MySQL Cluster e alguns casos de uso em arquiteturas Web e Mobile.

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
604
No SlideShare
0
A partir de incorporações
0
Número de incorporações
29
Ações
Compartilhamentos
0
Downloads
17
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Serviços Escaláveis e de Alta Performance com MySQL e Java

  1. 1. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.1 Airton Lastori airton.lastori@oracle.com jun-2015 Desenvolvendo Serviços Escaláveis e de Alta Performance com MySQL e Java
  2. 2. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.3 Alta Performance Por que há demanda? Suporte à “Big Data” e IoT Velocidade de escrita Escalabilidade horizontal Disponível 24x7 Facilidade de uso
  3. 3. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.4 MySQL Central @ Oracle Open World 2014 Alguns cases apresentados...  [slides] oracle.com/openworld/mysql
  4. 4. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.5 Fonte: http://db-engines.com/en/ranking_trend (junho/15)
  5. 5. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.6
  6. 6. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.7 Resposta tecnológica: NoSQL Fonte: 451 Group, 2012
  7. 7. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.8 Requisitos NoSQL O que a solução deve cumprir? Alta Performance alto throughput leitura/escrita Escalabilidade massiva auto-sharding Facilidade de uso acesso simples (APIs) manutenção simples modelo de dados flexível, fácil de evoluir Alta Disponibilidade tolerância a falhas Performance Escalabilidade Facilidade de Uso Disponibilidade ~24x7
  8. 8. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.9 Scale Out • Adicionar mais servidores para aumentar performance • MySQL adota esta abordagem em sistemas altamente escaláveis em hardware commodity (Intel / AMD) Scale Up • Trocar por hardware mais poderoso, adicionar memória, CPU • Outras soluções normalmente usam hardware proprietário (SMP) Escalabilidade: horizontal vs vertical É possível combinar as duas abordagens
  9. 9. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.10 Escalabilidade vertical com MySQL
  10. 10. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.11 2008 até 4 CPU MySQL 5.0 MySQL AB até 16 CPU MySQL 5.1 Sun até 32 CPU MySQL 5.5 Oracle até 48 CPU MySQL 5.6 Evolução da escalabilidade do MySQL 2009 2010 2013 Use InnoDB para usufruir melhor de hardwares modernos.
  11. 11. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.12 MySQL 5.5.28 MySQL 5.6.7 MySQL 5.6 SysBench Benchmarks 234% Ganho de Performance 0 2,000 4,000 6,000 8,000 10,000 12,000 14,000 16,000 18,000 32 64 128 256 512 TransactionsperSecond Connections MySQL 5.6 vs. 5.5 - Read Only (Linux) Oracle Linux 6 Intel(R) Xeon(R) E7540 x86_64 MySQL leveraging: - 48 of 96 available CPU threads - 2 GHz, 512GB RAM
  12. 12. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.13 MySQL 5.5.28 MySQL 5.6.7 MySQL 5.6 SysBench Benchmarks 151% Ganho Performance 0 2,000 4,000 6,000 8,000 10,000 12,000 32 64 128 256 512 TransactionsperSecond Connections MySQL 5.6 vs. 5.5 - Read Write (Linux) Oracle Linux 6 Intel(R) Xeon(R) E7540 x86_64 MySQL leveraging: - 48 of 96 available CPU threads - 2 GHz, 512GB RAM
  13. 13. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.14 60x Melhor Escalabilidade comThread Pool MySQL 5.6.11 Oracle Linux 6.3, Unbreakable Kernel 2.6.32 4 sockets, 24 cores, 48 Threads Intel(R) Xeon(R) E7540 2GHz CPUs 512GB DDR3 RAM Thread Pool habilitado/desabilitado
  14. 14. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.15 18x Melhor Escalabilidade com Thread Pool Thread Pool habilitado/desabilitado MySQL 5.6.11 Oracle Linux 6.3, Unbreakable Kernel 2.6.32 4 sockets, 24 cores, 48 Threads Intel(R) Xeon(R) E7540 2GHz CPUs 512GB DDR3 RAM
  15. 15. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.16 0 100,000 200,000 300,000 400,000 500,000 600,000 700,000 8 16 32 64 128 256 512 1,024 QueriesperSecond Connections MySQL 5.7: Sysbench Read Only (Point Select) MySQL 5.7 MySQL 5.6 MySQL 5.5 MySQL 5.7: Sysbench: Read Only Intel(R) Xeon(R) CPU E7-4860 x86_64 4 sockets x 10 cores-HT (80 CPU threads) 2.3 GHz, 512 GB RAM Oracle Linux 6.5 2x Faster than MySQL 5.6 3x Faster than MySQL 5.5 645,000 QPS
  16. 16. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.17 MySQL 5.7: Connections per Second 1.7x Faster than MySQL 5.6 2.5x Faster than MySQL 5.5 67,000 Connections/Sec 0 10,000 20,000 30,000 40,000 50,000 60,000 70,000 80,000 MySQL 5.5 MySQL 5.6 MySQL 5.7 Connections/Second Connections Per Second MySQL 5.5 MySQL 5.6 MySQL 5.7 Intel(R) Xeon(R) CPU E7-4860 x86_64 4 sockets x 10 cores-HT (80 CPU threads) 2.3 GHz, 512 GB RAM Oracle Linux 6.5
  17. 17. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.18 Atualize!
  18. 18. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.19 No Windows: MySQL Installer Next, Next... Finish! dev.mysql.com/downloads/windows/installer
  19. 19. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.20 No Linux: repositórios YUM e APT para MySQL  Suporta as distribuições Enterprise Linux – RedHat Enterprise/Oracle Linux – Fedora – Debian/Ubuntu  Inclui os pacotes mais atuais – MySQL Database – MySQL Workbench – MySQL Connectors – MySQL Utilities Maneira simples e conveniente de instalar e atualizar produtos MySQL Mais de 50% dos downloads para Fedora/RedHat já são feitos do repositório www.alastori.com.br/2014/05/tutorial-de- instalacao-do-mysql-56-e.html
  20. 20. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.21 …ou manualmente via binários pré-compilados
  21. 21. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.22 Escalabilidade horizontal com MySQL?
  22. 22. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.23 Escalabilidade horizontal Réplicas de Leitura Serviços Especializados Data Sharding 3 Abordagens para escalar o MySQL
  23. 23. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.24 Escalabilidade horizontal • método mais simples e mais comum • indicado para aplicações de LEITURA intensiva • problemas com cache duplicado em aplicações com datasets grandes Réplicas de Leitura • dividir a carga em múltiplos nós, com responsabilidades distintas • os nós podem ter redundância via replicação para alta-disponibilidade • normalmente não é transparente para a aplicação e também recorre ao scale up para cada database funcional, o que impõe limites Serviços Especializados • método de maior sucesso para escalar aplicações MySQL de grande porte hoje • dados compartilhados em tabelas/caches globais, SOA • difícil de adaptar aplicações legadas Data Sharding
  24. 24. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.25 Aplicação Replicação MySQL: como escalar 1/2 Master Slave • Divisão de leituras e escritas (R/W Split) • Modelo assíncrono (padrão) • Modelo semi-síncrono (a partir da versão 5.5) Escritas & Leituras Leituras Exemplo clássico: divida carga OLTP e OLAP
  25. 25. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.26 Replicação MySQL: como escalar 2/2 Leituras Leituras • Escreva para 1 Master • Leia de vários Slaves, adicione mais quando necessário • Perfeito para aplicações de leitura intensiva Aplicação Replicação MySQL Load Balancer Master Slave Slave Escritas & Leituras
  26. 26. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.27 Saiba mais... Tutorial “Replicação MySQL em 5 minutos”  [blog post] http://www.alastori.com.br/2015/02/ tutorial-replicacao-mysql-em-5- minutos.html
  27. 27. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.28  Failover jdbc:mysql://[primary host][:port],[secondary host 1][:port][,[secondary host 2][:port]]...[/[database]]» [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]  Load Balancing jdbc:mysql:loadbalance://[host1][:port],[host2][:port][,[host3][:por t]]...[/[database]] » [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...] Em Java, use os recursos do Connector/J http://dev.mysql.com/doc/connector-j/en/connector-j-multi-host-connections.html
  28. 28. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.29 Escalabilidade horizontal • método mais simples e mais comum • indicado para aplicações de LEITURA intensiva • problemas com cache duplicado em aplicações com datasets grandes Réplicas de Leitura • dividir a carga em múltiplos nós, com responsabilidades distintas • os nós podem ter redundância via replicação para alta-disponibilidade • normalmente não é transparente para a aplicação e também recorre ao scale up para cada database funcional, o que impõe limites Serviços Especializados • método de maior sucesso para escalar aplicações MySQL de grande porte hoje • dados compartilhados em tabelas/caches globais, SOA • difícil de adaptar aplicações legadas Data Sharding
  29. 29. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.30
  30. 30. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.31 Escalabilidade horizontal • método mais simples e mais comum • indicado para aplicações de LEITURA intensiva • problemas com cache duplicado em aplicações com datasets grandes Réplicas de Leitura • dividir a carga em múltiplos nós, com responsabilidades distintas • os nós podem ter redundância via replicação para alta-disponibilidade • normalmente não é transparente para a aplicação e também recorre ao scale up para cada database funcional, o que impõe limites Serviços Especializados • método de maior sucesso para escalar aplicações MySQL de grande porte hoje • dados compartilhados em tabelas/caches globais, SOA • difícil de adaptar aplicações legadas Data Sharding
  31. 31. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.32 Data Node 1 Data Node 2 Data Node 3 Data Node 4 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  32. 32. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.33 Data Node 1 Data Node 2 F1 Data Node 3 Data Node 4 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  33. 33. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.34 Data Node 1 Data Node 2 F1 F1 Data Node 3 Data Node 4 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  34. 34. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.35 Data Node 1 Data Node 2 F1 F3 F1 Data Node 3 Data Node 4 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  35. 35. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.36 Data Node 1 Data Node 2 F1 F3 F3 F1 Data Node 3 Data Node 4 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  36. 36. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.37 Data Node 1 Data Node 2 F1 F3 F3 F1 Data Node 3 Data Node 4 F2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  37. 37. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.38 Data Node 1 Data Node 2 F1 F3 F3 F1 Data Node 3 Data Node 4 F2 F2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  38. 38. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.39 Data Node 1 Data Node 2 F1 F3 F3 F1 Data Node 3 Data Node 4 F2 F4 F2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  39. 39. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.40 Data Node 1 Data Node 2 F1 F3 F3 F1 Data Node 3 Data Node 4 F2 F4 F4 F2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  40. 40. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.41 Data Node 1 Data Node 2 F3 F1 Data Node 3 Data Node 4 F2 F4 F4 F2 Group 1 Table T1 P2 P3 P4 P1 F1 F3 Escalabilidade horizontal: Data Sharding
  41. 41. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.42 Data Node 1 Data Node 2 F1 F3 F3 F1 Data Node 3 Data Node 4 F2 F4 F4 F2 Group 2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding Group 1
  42. 42. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.43 Data Node 1 Data Node 2 F1 F3 F3 F1 Data Node 3 Data Node 4 F2 F4 F4 F2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding Group 2 Group 1
  43. 43. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.44 Data Node 1 Data Node 2 F1 F3 F3 F1 Data Node 3 Data Node 4 F2 F4 F4 F2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding Group 2 Group 1
  44. 44. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.45 Sharding com MySQL?
  45. 45. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.46 Sharding com MySQL • construindo componontes com ferramentas de DevOps • não subestime a complexidadeNa unha • MySQL Fabric • Google Youtube Vitess, Twitter Gizzard, Tumblr Jetpants, etc • não é totalmente transparente para aplicação Frameworks • transparente para aplicação, facilidade na administração • implementado como um Storage Engine no MySQL (NDB) MySQL Cluster
  46. 46. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.47 HA group MySQL Fabric 1.5 (MySQL Utilities)  Alta disponibilidade: – Monitoramento do Server com failover automático e transparente para aplicação  Sem Proxy, sem latência extra e SPoF Alta-disponibilidade + escalabilidade de escrita com sharding Connector Application SQL Read-slaves Read-slaves HA group MySQL Fabric • Escalabilidade de escrita com sharding: – Aplicação define a shard key (Range ou Hash) – Ferramentas para re-sharding – Tabelas globais & global updates • Conectores devem ser “Fabric- aware”: – Java, Python, PHP
  47. 47. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.48  Versão inicial, foco na simplicidade e robustez – Alta-disponibilidade OK, escalabilidade de escrita em andamento  Sharding não é completamente transparente para aplicação – Necessário fornecer a sharding key  Colunas Auto-increment não podem ser usadas como sharding key  Joins envolvendo múltiplos shards não são suportados  MySQL Connector (driver) deve suportar Fabric – atualmente disponível para Java, Python e PHP  O nó Fabric por si só não é tolerante a falhas – O connector tem seu cache local e continua operando quando o processo Fabric não está disponível Limitações da versão atual
  48. 48. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.49 Tutorial disponível no white paper Whitepaper: MySQL Fabric September 2014 mysql.com/why-mysql/white-papers
  49. 49. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.50 NewSQL
  50. 50. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.51 Requisitos NewSQL Relacional + NoSQL Combine as duas abordagens!Performance Escalabilidade Facilidade de Uso Disponibilidade ~24x7 SQL/Joins Transações ACID
  51. 51. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.52 MySQL Cluster • Arquitetura shared-nothing in-memory parallel • Modelo relacional ACID, SQL + APIs NoSQL In-Memory ACID Database • 99.999% de disponibilidade • Self-healing, failover abaixo de 1 segundoAlta Disponibilidade • Performance em tempo real para altas cargas • Latência baixa e preditiva Alta Performance • Elasticidade, crescimento incremental • Escalabilidade linear, distribuition aware Escalabilidade • Open Source (GPL), hardware commodity • Suporte comercial da Oracle opcional Open Source
  52. 52. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.53 Alguns usuários MySQL Cluster
  53. 53. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.54 Performance do MySQL Cluster  8 Servidores Intel Commodity – 2 x 6-core processors 2.93GHz – x5670 processors (24 threads) – 48GB RAM  Rede Infiniband  flexAsynch benchmark (NDB API) 0 200 400 600 800 1,000 1,200 2 4 8 Millions Number of Data Nodes SELECT Queries per Minute 0 50 100 150 4 8 Millions Number of Data Nodes UPDATE Queries per Minute Performance a Escalabilidade Facilidade de Uso Disponibilidade ~24x7 SQL/Joins Transações ACID
  54. 54. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.55 MySQL Cluster 7.2: 1.2 Billion UPDATEs por Minuto  NoSQL C++ API, flexaSynch benchmark  30 x Intel E5-2600 Intel Servers, 2 socket, 64GB  ACID Transactions, with Synchronous Replication http://www.mysql.com/why- mysql/white-papers/mysql-cluster- benchmarks-1-billion-writes-per- minute/ 0 5 10 15 20 25 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 MillionsofUPDATEsper Second MySQL Cluster Data Nodes
  55. 55. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.56 MySQL Cluster Data Nodes Data Layer Clients Management Arquitetura MySQL Cluster Performance a Escalabilidade Facilidade de Uso ? Disponibilidade ~24x7 SQL/Joins ? Transações ACID ? Application Layer
  56. 56. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.57 MySQL Cluster Data Nodes Data Layer Clients Application Layer Management Arquitetura MySQL Cluster Performance a Escalabilidade Facilidade de Uso a Disponibilidade ~24x7 SQL/Joins a Transações ACID a NDB
  57. 57. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.58 Os mesmos dados acessados simultaneamente através de interfaces SQL e NoSQL APIs de Acesso aos Dados
  58. 58. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.59 MySQL Cluster Data Nodes Data Layer Clients Application Layer Management Arquitetura MySQL Cluster Performance a Escalabilidade ? Facilidade de Uso a Disponibilidade ~24x7 SQL/Joins a Transações ACID a Table T1 P2 P3 P4 P1P1 P3 P2 P4
  59. 59. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.60 MySQL Cluster Data Nodes Data Layer Clients Application Layer Management Arquitetura MySQL Cluster Performance a Escalabilidade a Facilidade de Uso a Disponibilidade ~24x7 ? SQL/Joins a Transações ACID a P1 P3 P2 P4 Management
  60. 60. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.61 MySQL Cluster Data Nodes Data Layer Clients Application Layer Management Arquitetura MySQL Cluster Performance a Escalabilidade a Facilidade de Uso a Disponibilidade ~24x7 a SQL/Joins a Transações ACID a P1 P3 P2 P4 Management P3 P1 P4 P2 E mais: • Permite mudanças no schema sem interrupção de leituras ou escritas • Permite adicionar colunas e índices online
  61. 61. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.62 Qual API devo usar?
  62. 62. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.63 APIs Java: ClusterJ e JPA ClusterJ API de persistência Domain Object Model (DataMapper) JPA API de persistência padronizada pelo OpenJPA
  63. 63. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.64 ClusterJ ou JPA? ClusterJ  Fácil de usar, parecida com Hibernate / JPA / JDO – Domain Object Model DataMapper pattern – Dados são representados por Objetos de Domínio – Objetos de Domínio não contém lógica de negócio (camada separada) – Objetos de Domínio são mapeados para tabelas no MySQL  Altíssima Performance  Construído sobre interface nativa Java – JNI adapter (ndbjtie) – Parte integral do MySQL Cluster – Mapeamento direto do MySQL Cluster API (NDB API) para Java  Limitação: não suporta relacionamentos – Olhe na API JPA / JDO para estes padrões de modelagem JPA  A interface JPA interface é compatível com o padrão Java Persistent API – Implementada como um plugin OpenJPA  Performance mais alta que o JDBC puro  Construída sobre ClusterJ e JDBC – Usa ClusterJ onde possível e reverte para JDBC para algumas operações  Adoção mais natural para profissionais Java  Facilita adoção do Cluster em aplicações web e aplicações legadas
  64. 64. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.65 Opção 1: Auto-Installer MySQL Cluster 7.3 e 7.4 Rápida configuração Auto-discovery Otimização de acordo com a carga prevista Melhores práticas de implantação MySQL Cluster 7.3 e 7.4 Especifique a carga Auto- Discover Defina a TopologiaDeploy
  65. 65. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.66 MySQL Cluster Auto-Install  Simples de instalar e provisionar clusters multi-node  Complementa MySQL Cluster Manager no gerenciamento de cliclo de vida
  66. 66. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.67 1. Download MCM/Cluster package: edelivery.oracle.com: 2. Unzip 3. Execute o agent (usuário diferente de root), defina, crie e inicialize o Cluster com um comando! $> binmcmd --bootstrap Opção 2: MySQL Cluster Manager Para testes em uma única máquina
  67. 67. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.68 ClusterJ: como usar • Defina Table para Java Mapping • Defina Connection para o Cluster • Crie Session • Comandos: Create, Update, Delete, Find by primary key • Query (SELECT) • O que achou da PERFORMANCE?
  68. 68. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.69 ClusterJ Gera Classes @PersistenceCapable(table="employee") public interface Employee { long getId(); void setId(int id); @Column(name="full_name") String getName(); void setName(String value); int getSalary(); void setSalary(int value); Integer getAge(); void setAge(Integer value); }
  69. 69. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.70 ClusterJ Base Class public class Employee extends DynamicObject { public String table() { return "employee"; long getId() { return (Long)get(0); } void setId(long value) { set(0, value); } ... // other fields and behavior }
  70. 70. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.71 Exemplo: ClusterJ 1/3 Session session; void getSession() { session = sessionFactory.getSession(); } Employee createEmployee(long id, String name, int salary, int age) { Employee employee = session.newInstance(Employee.class); employee.setId(id); employee.setName(name); employee.setSalary(salary); employee.setAge(age); session.persist(employee); return employee; }
  71. 71. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.72 Exemplo: ClusterJ 2/3 Employee findEmployee(long id) { Employee employee = session.find(Employee.class, id); return employee; } void updateSalary(long id, int salary) { Employee employee = findEmployee(id); employee.setSalary(salary); session.updatePersistent(employee); }
  72. 72. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.73 Exemplo: ClusterJ 3/3 Query QueryDomainType qemp = builder.createQueryDefinition(Employee.class) ; Predicate geAge = qemp.get("age") .greaterEqual(qemp.param("ageFloor")); Predicate leSalary = qemp.get("salary") .lessEqual(qemp.param("salaryCap")); qemp.where(geAge.and(leSalary)); Query query = session.createQuery(qemp) ; query.setOrdering(Query.DESCENDING, "age"); query.setParameter("ageFloor",33); query.setParameter("salaryCap", 44000); List<Employee> results = query.getResultList() ;
  73. 73. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.74 Mais Exemplos ClusterJ e ClusterJPA Whitepaper: MySQL Cluster NoSQL APIs for Java August 2015 mysql.com/why-mysql/white-papers
  74. 74. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.75 Teste e nos diga o que achou da Performance!
  75. 75. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.76 Exemplos Memcached API Ondemand Webinar: NoSQL Memcached API for MySQL Cluster 22 August 2012 mysql.com/news-and-events/on-demand-webinars/display-od-723.html Slides: https://www.mysql.com/why-mysql/presentations/mysql-cluster-nosql- memcached-api
  76. 76. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.77 Algumas limitações MySQL Cluster no white paper Whitepaper: MySQL Cluster Evaluation Guide February 2015 mysql.com/why-mysql/white-papers
  77. 77. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.78 Sumário  As aplicações Web demandam mais dos bancos de dados nos dias de hoje.  O MySQL pode escalar horizontalmente e ainda oferecer a tranquilidade de uma solução madura, usada em larga escala e com suporte (opcional) da Oracle.  Teste e nos dê feedback!
  78. 78. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.79 @MySQLBR meetup.com/MySQL-BRfacebook.com/MySQLBR pt.planet.mysql.com Estes slides e mais novidades…
  79. 79. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.80 @MySQLBR meetup.com/MySQL-BR facebook.com/MySQLBR Obrigado!
  80. 80. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.81 Perguntas?
  81. 81. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.82 Enterprise Management Services and Utilities Backup & Recovery Monitor Workbench Utilities Connection Pool, SQL Interface, Parser, Optimizer, Caches Clients & Connectors Native C API, JDBC, ODBC, .Net, PHP, Ruby, Python, VB, Perl mysqld Clients and Apps Arquitetura plugável do MySQL Storage Engines InnoDB, MyISAM, Memory, Archive, Cluster (NDB API), etc… Filesystems, Files & Logs Data, Index, Logs…
  82. 82. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.83 Cluster Data Nodes NDB NDB Connection Pool, SQL Interface, Parser, Optimizer, Caches Enterprise Management Services and Utilities Backup & Recovery Monitor Workbench Utilities Clients & Connectors Native C API, JDBC, ODBC, .Net, PHP, Ruby, Python, VB, Perl Arquitetura MySQL com NDB Cluster Storage Engines InnoDB, MyISAM, Memory, Archive, Cluster (NDB API), etc… Filesystems, Files & Logs Data, Index, Logs… mysqld Clients and Apps ndbd mgm_ndbd Management

×