SlideShare una empresa de Scribd logo
1 de 96
Descargar para leer sin conexión
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.1
Airton Lastori
airton.lastori@oracle.com
mar-2015
Desenvolvendo Serviços Escaláveis e de
Alta Performance com MySQL
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.2
Apresentador
Airton Lastori
Consultor MySQL, Oracle
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.3
MySQL Central @ Oracle Open World 2014
Alguns cases apresentados...
 [slides]
oracle.com/openworld/mysql
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.4
Agenda
 Alta Performance com MySQL
 Arquitetura e Topologias
 Métodos de Acesso e API’s
 Instalação e Exemplos
 Aprenda Mais
 Perguntas?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.5
Agenda
 Alta Performance com MySQL
 Arquitetura e Topologias
 Métodos de Acesso e API’s
 Instalação e Exemplos
 Aprenda Mais
 Perguntas?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.6
Alta Performance
Por que há demanda?
Suporte à “Big Data” e IoT
Velocidade de escrita
Escalabilidade horizontal
Disponível 24x7
Facilidade de uso
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.7 Fonte: http://db-engines.com/en/ranking_trend (dezembro/14)
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.8
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.9
Resposta tecnológica: NoSQL
Fonte: 451 Group, 2012
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.10
Resposta tecnológica: NoSQL
Usos comuns: usado como cache para
armazenamento de dados requisitados
frequentemente, especialmente em
aplicações web.
Pontos Fortes: escalabilidade,
armazenamento e busca de dados muito
rápidos; dados não estruturados e
parcialmente estruturados.
Pontos Fracos: usualmente todos os dados
tem que caber em memória rápida; falta de
recursos para Queries complexas.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.11
Uso Tradicional do Memcached
2 níveis de hashing
Memcache
httpd memcached
memcached
memcached
chave memcache
PHP/Perl/Java
friends:12389
Usa chave
para
encontrar o
dado (valor)
VALUE friends:12389 0 31rn
101, 11009, 11150, 55881, 77798
rn
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.12
Não encontra valor no cache: sincronização 1/2
aplicação é responsável por buscar no Banco de Dados
Memcache
httpd memcached
memcached
memcached
PHP/Perl/Java
Não há valor
para chave
informada
MySQL
Slave
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.13
Não encontra valor no cache: sincronização 2/2
aplicação é responsável por sincronizar
Memcache
httpd memcached
memcached
memcached
PHP/Perl/Java
Armazenar
valor com
chave/valor
informados
Processo similar ocorre quando há escrita
no MySQL Master: aplicação precisa
sincronizar com cache.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.14
Spoiler!
MySQL já tem integração nativa com Memcached
Não perca tempo com a lógica de sincronização!
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.15
Resposta tecnológica: NoSQL
Usos comuns: aplicações web ou
outras que requerem melhor
performance e escalabilidade sem que
seja necessários definir esquemas
relacionais.
Pontos Fortes: armazenamento
persistente com recursos de
escalabilidade tais como sharding
nativo; melhor suporte a Queries que
apenas chave-valor.
Pontos Fracos: falta de recursos para
Queries complexas.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.16
Resposta tecnológica: NoSQL
Usos comuns: aplicações
científicas ou de tradução direta do
paradigma orientado a objetos.
Pontos Fortes: performance e
mapeamento natural de objetos.
Pontos Fracos: falta de recursos
para realizar Queries complexas.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.17
Resposta tecnológica: NoSQL
Usos comuns: log em tempo-real para
aplicações web ou financeiras.
Pontos Fortes: throughput muito alto
para Big Data (de Terabytes a
Petabytes); suporte excelente a
particionamento e acesso aleatório de
leitura-escrita.
Pontos Fracos: APIs de baixo-nível,
falta de recursos para realizar Queries
complexas, alta latência na resposta de
Queries.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.18
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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.19
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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.20
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.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.21
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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.22
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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.23
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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.24
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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.25
Escalabilidade horizontal
Replicação
MySQL
Particionamento
Funcional
Data Sharding
3 Abordagens para
escalar o MySQL
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.26
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
Replicação
MySQL
• 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
Particionamento
Funcional
• 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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.27
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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.28
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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.29
Benefício-chave
• O MySQL permite economias
significativas com custos de
hardware, adicionando novos
servidores commodity de
acordo com o necessário e de
maneira incremental
Por que MySQL?
• Capacidade de escalar
conforme necessidade e de
maneira incremental
• Baixos custos e flexibilidade
Wikipedia
mysql.com/customers
Caso de sucesso
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.30
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
Replicação
MySQL
• 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
Particionamento
Funcional
• 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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.31
Data Node 1
Data Node 2
Data Node 3
Data Node 4
Table T1
P2
P3
P4
P1
Escalabilidade horizontal: Data Sharding
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.32
Data Node 1
Data Node 2
F1
Data Node 3
Data Node 4
Table T1
P2
P3
P4
P1
Escalabilidade horizontal: Data Sharding
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.33
Data Node 1
Data Node 2
F1
F1
Data Node 3
Data Node 4
Table T1
P2
P3
P4
P1
Escalabilidade horizontal: Data Sharding
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.34
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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.35
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
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
F2
Table T1
P2
P3
P4
P1
Escalabilidade horizontal: Data Sharding
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
F2
Table T1
P2
P3
P4
P1
Escalabilidade horizontal: Data Sharding
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
F4 F2
Table T1
P2
P3
P4
P1
Escalabilidade horizontal: Data Sharding
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
F4 F2
Table T1
P2
P3
P4
P1
Escalabilidade horizontal: Data Sharding
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.40
Data Node 1
Data Node 2
F3
F1
Data Node 3
Data Node 4
F2 F4
F4 F2
Node Group 1
Table T1
P2
P3
P4
P1
F1
F3
Escalabilidade horizontal: Data Sharding
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.41
Data Node 1
Data Node 2
F1 F3
F3 F1
Data Node 3
Data Node 4
F2 F4
F4 F2
Node Group 1
Node Group 2
Table T1
P2
P3
P4
P1
Escalabilidade horizontal: Data Sharding
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
Node Group 1
Node Group 2
Table T1
P2
P3
P4
P1
Escalabilidade horizontal: Data Sharding
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
Node Group 1
Node Group 2
Table T1
P2
P3
P4
P1
Escalabilidade horizontal: Data Sharding
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.44
Benefícios-chave
• Propriedades ACID
• Solução comprovada por muitas
empresas ao longo de anos
• Por que MySQL?
• Escalabilidade virtualmente infinita:
hoje com 20 milhões de usuários, 1
bilhão de Notes e 2 bilhões de
arquivos (fotos, documentos etc)
• Flexibilidade para crescer de
maneira incremental e com baixos
custos
Caso de sucesso
Evernote
blog.evernote.com/tech/2012/02/23/whysql
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.45
Ainda há espaço para SGBDs relacionais
Usos comuns: análise de dados
históricos, data warehousing,
business intelligence.
Pontos Fortes: suporte a Queries
rápidas especialmente em datasets
grandes e compressão.
Pontos Fracos: não adequado
para transações, importações e
exportações rápidas; utilização de
computação pesada.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.46
Ainda há espaço para SGBDs relacionais
Usos comuns: processamento de
transações, aplicações interativas
transacionais
Pontos Fortes: formas facilitadas de
manipular registros; consistência;
tecnologia comprovadamente robusta.
Pontos Fracos: problemas de
escalabilidade, especialmente para
Queries contra grande volume de
dados (dezenas de Terabytes).
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.47
NewSQL
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.48
Requisitos NewSQL
Relacional + NoSQL
Não há solução única para
todas situações. Não há
bala de prata.
Combine e supere
expectativas!
Performance
Escalabilidade
Facilidade de Uso
Disponibilidade ~24x7
SQL/Joins
Transações ACID
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.49
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…
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.50
Memcached com
Persistência no InnoDB
Método transparente para persistir
os dados em memória volátil
Memcached plug-in no mysqld ,
mapeado à API nativa do InnoDB
Shared process para baixa latência
Acesso chave-valor ao
InnoDB
Via Memcached API
Usa clients Memcached existentes
Sem SQL parsing
Acesso SQL e NotOnlySQL
Operações chave-valor mas
também queries SQL, JOINs, FKs,
etc.
SQL
(MySQL Client)
InnoDB Storage Engine
MySQL Server Memcached plugin
Application
NoSQL
(Memcached Prot.)
mysqld
Memcached + InnoDB MySQL 5.6
Mais Flexibilidade e Simplicidade
http://dev.mysql.com/doc/refman/5.6/en/innodb-memcached.html
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.51
MySQL Cluster
• Arquitetura shared-nothing in-memory parallel
• Modelo relacional ACID, SQL
Carrier Grade
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, hardware commodity
• APIs NoSQL (C++, Java, Memcached, Node.js)
Open Source
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.52
Alguns usuários MySQL Cluster
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
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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.56
MySQL Cluster 7.3: Connection Thread Scalability
 DBT2 Benchmark
– Single MySQL Server
– Single Data Node
– 128 client connections
8.5x
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.57
MySQL Cluster 7.2 Join Performance
 Web-Based Content Management System
– JOINs 11-tables, 33.5k rows
– Returns 2k rows, 19 columns per row
0
10
20
30
40
50
60
70
80
90
100
MySQL Cluster 7.1 MySQL Cluster 7.2
Query Execution Time Seconds
87.23
seconds
1.26
seconds
70x
Faster
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.58
Agenda
 Alta Performance com MySQL
 Arquitetura e Topologias
 Métodos de Acesso e API’s
 Instalação e Exemplos
 Aprenda Mais
 Perguntas?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.59
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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.60
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
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
Facilidade de Uso a
Disponibilidade ~24x7
SQL/Joins a
Transações ACID a
NDB
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.62
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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.63
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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.64
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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.65
On-line Operations
 Scale the cluster
– Add all nodes
– Remove MySQL Server nodes
 Repartition tables
 Upgrade / patch servers & OS
 Upgrade / patch MySQL Cluster
 Back-Up
 Evolve the schema on-line, in real-time
Performance a
Escalabilidade a
Facilidade de Uso a
Disponibilidade ~24x7 a
SQL/Joins a
Transações ACID a
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.66
Cluster 1
Synchronous
replication
Cluster 2
InnoDB InnoDB InnoDB
Asynchronous
replication
Flexibilidade da Topologia
Replicação
Replicação síncrona
entre os grupos de nós para HA
Geo-Replicação
assíncrona entre nós remotos
NDB para redundância
geográfica
Replicação assíncrona
entre Storage Engines
diferentes para aplicações
especializadas como geração
de relatórios
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.67
Agenda
 Alta Performance com MySQL
 Arquitetura e Topologias
 Métodos de Acesso e API’s
 Instalação e Exemplos
 Aprenda Mais
 Perguntas?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.68
Os mesmos dados
acessados
simultaneamente
através de interfaces
SQL e NoSQL
APIs de Acesso aos Dados
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.69
APIs Java: ClusterJ e JPA
ClusterJ
API de persistência Domain
Object Model (DataMapper)
JPA
API de persistência padronizada
pelo OpenJPA
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.70
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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.71
API Memcached
Baseado em chave-valor
API simples e bastante popular entre
desenvolvedores
hash table com persistência em disco
e alta performance
Extensão do Memcached
adiciona persistência em disco sem
perda de performance
evita rotinas de invalidação do cache,
sincronismo manual
Simplicidade e Flexibilidade
evita camadas adicionais na infra-
estrutura
acesso ao dado via tabelas relacionais
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.72
Evolução rápida da
aplicação:
Novos tipos de dados
adicionados
constantemente
Não requer tempo para
estender o schema ou
parada do servidor
Não requer conhecimento
de modelagem relacional
Escalabilidade incremental
Memcached é Schemaless
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.73
<town:maidenhead,SL6>
key value
<town:maidenhead,SL6>
key value
Key Value
town:maidenhead SL6
generic table
Application view
SQL view
Cluster & Memcached
Schemaless
set maidenhead 0 0 3
SL6
STORED
get maidenhead
VALUE maidenhead 0 3
SL6
END
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.74
<town:maidenhead,SL6>
prefix key value
<town:maidenhead,SL6>
key value
Prefix Table Key-
col
Val-col policy
town: map.zip town code cluster
Config tables
town ... code ...
maidenhead ... SL6 ...
map.zip
Application view
SQL view
Cluster & Memcached
Schema configurável
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.75
Flexibilidade da Topologia
API Memcached
• Várias opções de implantação
• Múltiplos Clusters
• Pode manter Memcached server, se preferir
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.76
Node.js NoSQL API
MySQL Cluster 7.3 Acesso JavaScript nativo ao
MySQL Cluster
JavaScript do início ao fim: browser >
app > database
Leituras e escritas de objetos JavaScript
direto no MySQL Cluster
Elimina transformações SQL
Implementado como um módulo
para node.js
Integra completamente a API/library
Cluster com a aplicação web
Alta performance para aplicações e
dados distribuídos
V8 JavaScript Engine
MySQL Cluster Node.js Module
MySQL Cluster Data Nodes
Clients
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.77
Qual API devo usar?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.78
Agenda
 Alta Performance com MySQL
 Arquitetura e Topologias
 Métodos de Acesso e API’s
 Instalação e Exemplos
 Aprenda Mais
 Perguntas?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.79
Auto-Installer
MySQL Cluster 7.3
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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.80
MySQL Cluster Auto-Install
 Simples de instalar e provisionar clusters multi-node
 Complementa MySQL Cluster Manager no gerenciamento de cliclo de vida
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.81
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
MySQL Cluster Manager
Para testes em uma única máquina
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.82
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?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.83
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);
}
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.84
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
}
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.85
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;
}
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.86
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);
}
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.87
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() ;
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.88
Mais Exemplos ClusterJ e ClusterJPA
Whitepaper:
MySQL Cluster Connector for Java
August 2012
mysql.com/why-mysql/white-papers
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.89
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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.90
Exemplos JavaScript / Node.js API
Blog:
Tutorial Getting Started with the NoSQL JavaScript / Node.js API for
MySQL Cluster
10 June 2012
blogs.oracle.com/MySQL/entry/tutorial_getting_started_with_the
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.91
Agenda
 Alta Performance com MySQL
 Arquitetura e Topologias
 Métodos de Acesso e API’s
 Instalação e Exemplos
 Aprenda Mais
 Perguntas?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.92
Mais sobre como começar com MySQL Cluster
Whitepaper:
MySQL Cluster Evaluation Guide
February 2015
mysql.com/why-mysql/white-papers
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.93
Comece hoje
Auto-Install ClusterMySQL Cluster 7.4
Download
dev.mysql.com/download
s/cluster/
Developer Zone
dev.mysql.com
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.96
Sumário
 As aplicações Web demandam mais dos bancos de dados
nos dias de hoje.
 São exigidos mais performance, escalabilidade horizontal,
APIs e padões de acesso simples e poderosos.
 O MySQL cumpre estes requisitos e ainda mantém os
benefícios de um SGBD relacional.
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.97
@MySQLBR meetup.com/MySQL-BRfacebook.com/MySQLBR
pt.planet.mysql.com
Estes slides e mais novidades…
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.98
Perguntas?
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.99
@MySQLBR
meetup.com/MySQL-BR
facebook.com/MySQLBR
Obrigado!

Más contenido relacionado

La actualidad más candente

Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...MySQL Brasil
 
Alta-disponibilidade com MySQL
Alta-disponibilidade com MySQLAlta-disponibilidade com MySQL
Alta-disponibilidade com MySQLMySQL Brasil
 
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014MySQL Brasil
 
Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014MySQL Brasil
 
MySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta DisponibilidadeMySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta DisponibilidadeMySQL Brasil
 
Arquiteturas de referência MySQL
Arquiteturas de referência MySQLArquiteturas de referência MySQL
Arquiteturas de referência MySQLMySQL Brasil
 
Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15MySQL Brasil
 
MySQL é de graça?
MySQL é de graça?MySQL é de graça?
MySQL é de graça?MySQL Brasil
 
Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -MySQL Brasil
 
Estratégias de Segurança e Gerenciamento para MySQL
Estratégias de Segurança e Gerenciamento para MySQLEstratégias de Segurança e Gerenciamento para MySQL
Estratégias de Segurança e Gerenciamento para MySQLMySQL Brasil
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL Brasil
 
Recursos e Benefícios do MySQL
Recursos e Benefícios do MySQLRecursos e Benefícios do MySQL
Recursos e Benefícios do MySQLMySQL Brasil
 
My sql enterprise vs community
My sql enterprise vs communityMy sql enterprise vs community
My sql enterprise vs communityMySQL Brasil
 
MySQL + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL Brasil
 
MySQL Enterprise Monitor para Desenvolvedores
MySQL Enterprise Monitor para DesenvolvedoresMySQL Enterprise Monitor para Desenvolvedores
MySQL Enterprise Monitor para DesenvolvedoresMySQL Brasil
 
MySQL: o banco de dados open source mais popular do mundo
MySQL: o banco de dados open source mais popular do mundoMySQL: o banco de dados open source mais popular do mundo
MySQL: o banco de dados open source mais popular do mundoMySQL Brasil
 
MySQL e Oracle para DBAs
MySQL e Oracle para DBAsMySQL e Oracle para DBAs
MySQL e Oracle para DBAsAirton Lastori
 
MySQL do ISAM ao NoSQL
MySQL do ISAM ao NoSQLMySQL do ISAM ao NoSQL
MySQL do ISAM ao NoSQLAirton Lastori
 
Alta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL EnterpriseAlta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL EnterpriseMySQL Brasil
 

La actualidad más candente (20)

Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
 
Alta-disponibilidade com MySQL
Alta-disponibilidade com MySQLAlta-disponibilidade com MySQL
Alta-disponibilidade com MySQL
 
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
 
Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014
 
MySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta DisponibilidadeMySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta Disponibilidade
 
Arquiteturas de referência MySQL
Arquiteturas de referência MySQLArquiteturas de referência MySQL
Arquiteturas de referência MySQL
 
Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15
 
MySQL é de graça?
MySQL é de graça?MySQL é de graça?
MySQL é de graça?
 
Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -
 
Estratégias de Segurança e Gerenciamento para MySQL
Estratégias de Segurança e Gerenciamento para MySQLEstratégias de Segurança e Gerenciamento para MySQL
Estratégias de Segurança e Gerenciamento para MySQL
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de Produto
 
Recursos e Benefícios do MySQL
Recursos e Benefícios do MySQLRecursos e Benefícios do MySQL
Recursos e Benefícios do MySQL
 
My sql enterprise vs community
My sql enterprise vs communityMy sql enterprise vs community
My sql enterprise vs community
 
MySQL + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL + Java - Manuel Contreras
MySQL + Java - Manuel Contreras
 
MySQL Enterprise Monitor para Desenvolvedores
MySQL Enterprise Monitor para DesenvolvedoresMySQL Enterprise Monitor para Desenvolvedores
MySQL Enterprise Monitor para Desenvolvedores
 
MySQL: o banco de dados open source mais popular do mundo
MySQL: o banco de dados open source mais popular do mundoMySQL: o banco de dados open source mais popular do mundo
MySQL: o banco de dados open source mais popular do mundo
 
MySQL e Oracle para DBAs
MySQL e Oracle para DBAsMySQL e Oracle para DBAs
MySQL e Oracle para DBAs
 
Apresentação MySQL Enterprise
Apresentação MySQL EnterpriseApresentação MySQL Enterprise
Apresentação MySQL Enterprise
 
MySQL do ISAM ao NoSQL
MySQL do ISAM ao NoSQLMySQL do ISAM ao NoSQL
MySQL do ISAM ao NoSQL
 
Alta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL EnterpriseAlta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL Enterprise
 

Similar a Desenvolvendo Serviços Escaláveis e de Alta Performance com MySQL

Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15MySQL Brasil
 
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...Ricardo Ferreira
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Brasil
 
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...MySQL Brasil
 
Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014MySQL Brasil
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Brasil
 
Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6MySQL Brasil
 
MySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundoMySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundoMySQL Brasil
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureFabrício Lopes Sanchez
 
Uso estratégico do MySQL para empresas de TI: Novidades e Futuro
Uso estratégico do MySQL para empresas de TI: Novidades e FuturoUso estratégico do MySQL para empresas de TI: Novidades e Futuro
Uso estratégico do MySQL para empresas de TI: Novidades e Futuroassertimarilia
 
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Wagner Bianchi
 
Segurança no MySQL
Segurança no MySQLSegurança no MySQL
Segurança no MySQLMySQL Brasil
 
Thaissa Bueno - Implantando modelos Deep Learning em cluster Kubernetes com G...
Thaissa Bueno - Implantando modelos Deep Learning em cluster Kubernetes com G...Thaissa Bueno - Implantando modelos Deep Learning em cluster Kubernetes com G...
Thaissa Bueno - Implantando modelos Deep Learning em cluster Kubernetes com G...DevCamp Campinas
 
TimesTen In-Memory Database
TimesTen In-Memory DatabaseTimesTen In-Memory Database
TimesTen In-Memory DatabaseAndre Danelon
 
Vantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservicesVantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservicesFábio Rosato
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformAndré Paulovich
 
MySQL June/2009 FDTI - Portuguese Version
MySQL June/2009 FDTI - Portuguese VersionMySQL June/2009 FDTI - Portuguese Version
MySQL June/2009 FDTI - Portuguese VersionArtur Alves
 

Similar a Desenvolvendo Serviços Escaláveis e de Alta Performance com MySQL (19)

Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15
 
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geral
 
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
 
Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geral
 
Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6
 
MySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundoMySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundo
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
 
Trabalho de sgbd
Trabalho de sgbdTrabalho de sgbd
Trabalho de sgbd
 
Uso estratégico do MySQL para empresas de TI: Novidades e Futuro
Uso estratégico do MySQL para empresas de TI: Novidades e FuturoUso estratégico do MySQL para empresas de TI: Novidades e Futuro
Uso estratégico do MySQL para empresas de TI: Novidades e Futuro
 
MySQL e Big Data
MySQL e Big DataMySQL e Big Data
MySQL e Big Data
 
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
 
Segurança no MySQL
Segurança no MySQLSegurança no MySQL
Segurança no MySQL
 
Thaissa Bueno - Implantando modelos Deep Learning em cluster Kubernetes com G...
Thaissa Bueno - Implantando modelos Deep Learning em cluster Kubernetes com G...Thaissa Bueno - Implantando modelos Deep Learning em cluster Kubernetes com G...
Thaissa Bueno - Implantando modelos Deep Learning em cluster Kubernetes com G...
 
TimesTen In-Memory Database
TimesTen In-Memory DatabaseTimesTen In-Memory Database
TimesTen In-Memory Database
 
Vantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservicesVantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservices
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud Platform
 
MySQL June/2009 FDTI - Portuguese Version
MySQL June/2009 FDTI - Portuguese VersionMySQL June/2009 FDTI - Portuguese Version
MySQL June/2009 FDTI - Portuguese Version
 

Más de MySQL Brasil

MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017MySQL Brasil
 
MySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e UberMySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e UberMySQL Brasil
 
MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17MySQL Brasil
 
5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQL5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQLMySQL Brasil
 
MySQL 5.7 como Document Store
MySQL 5.7 como Document StoreMySQL 5.7 como Document Store
MySQL 5.7 como Document StoreMySQL Brasil
 
Enabling digital transformation with MySQL
Enabling digital transformation with MySQLEnabling digital transformation with MySQL
Enabling digital transformation with MySQLMySQL Brasil
 
Alta Disponibilidade no MySQL 5.7
Alta Disponibilidade no MySQL 5.7Alta Disponibilidade no MySQL 5.7
Alta Disponibilidade no MySQL 5.7MySQL Brasil
 
NoSQL no MySQL 5.7
NoSQL no MySQL 5.7NoSQL no MySQL 5.7
NoSQL no MySQL 5.7MySQL Brasil
 
10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em Startups10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em StartupsMySQL Brasil
 
MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15MySQL Brasil
 
MySQL Enterprise Edition Portfolio
MySQL Enterprise Edition PortfolioMySQL Enterprise Edition Portfolio
MySQL Enterprise Edition PortfolioMySQL Brasil
 
Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...
Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...
Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...MySQL Brasil
 

Más de MySQL Brasil (14)

MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017
 
MySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e UberMySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e Uber
 
MySQL 8.0.1 DMR
MySQL 8.0.1 DMRMySQL 8.0.1 DMR
MySQL 8.0.1 DMR
 
MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17
 
5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQL5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQL
 
MySQL 5.7 como Document Store
MySQL 5.7 como Document StoreMySQL 5.7 como Document Store
MySQL 5.7 como Document Store
 
Enabling digital transformation with MySQL
Enabling digital transformation with MySQLEnabling digital transformation with MySQL
Enabling digital transformation with MySQL
 
Alta Disponibilidade no MySQL 5.7
Alta Disponibilidade no MySQL 5.7Alta Disponibilidade no MySQL 5.7
Alta Disponibilidade no MySQL 5.7
 
NoSQL no MySQL 5.7
NoSQL no MySQL 5.7NoSQL no MySQL 5.7
NoSQL no MySQL 5.7
 
OpenStack & MySQL
OpenStack & MySQLOpenStack & MySQL
OpenStack & MySQL
 
10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em Startups10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em Startups
 
MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15
 
MySQL Enterprise Edition Portfolio
MySQL Enterprise Edition PortfolioMySQL Enterprise Edition Portfolio
MySQL Enterprise Edition Portfolio
 
Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...
Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...
Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...
 

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

  • 1. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.1 Airton Lastori airton.lastori@oracle.com mar-2015 Desenvolvendo Serviços Escaláveis e de Alta Performance com MySQL
  • 2. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.2 Apresentador Airton Lastori Consultor MySQL, Oracle
  • 3. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.3 MySQL Central @ Oracle Open World 2014 Alguns cases apresentados...  [slides] oracle.com/openworld/mysql
  • 4. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.4 Agenda  Alta Performance com MySQL  Arquitetura e Topologias  Métodos de Acesso e API’s  Instalação e Exemplos  Aprenda Mais  Perguntas?
  • 5. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.5 Agenda  Alta Performance com MySQL  Arquitetura e Topologias  Métodos de Acesso e API’s  Instalação e Exemplos  Aprenda Mais  Perguntas?
  • 6. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.6 Alta Performance Por que há demanda? Suporte à “Big Data” e IoT Velocidade de escrita Escalabilidade horizontal Disponível 24x7 Facilidade de uso
  • 7. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.7 Fonte: http://db-engines.com/en/ranking_trend (dezembro/14)
  • 8. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.8
  • 9. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.9 Resposta tecnológica: NoSQL Fonte: 451 Group, 2012
  • 10. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.10 Resposta tecnológica: NoSQL Usos comuns: usado como cache para armazenamento de dados requisitados frequentemente, especialmente em aplicações web. Pontos Fortes: escalabilidade, armazenamento e busca de dados muito rápidos; dados não estruturados e parcialmente estruturados. Pontos Fracos: usualmente todos os dados tem que caber em memória rápida; falta de recursos para Queries complexas.
  • 11. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.11 Uso Tradicional do Memcached 2 níveis de hashing Memcache httpd memcached memcached memcached chave memcache PHP/Perl/Java friends:12389 Usa chave para encontrar o dado (valor) VALUE friends:12389 0 31rn 101, 11009, 11150, 55881, 77798 rn
  • 12. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.12 Não encontra valor no cache: sincronização 1/2 aplicação é responsável por buscar no Banco de Dados Memcache httpd memcached memcached memcached PHP/Perl/Java Não há valor para chave informada MySQL Slave
  • 13. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.13 Não encontra valor no cache: sincronização 2/2 aplicação é responsável por sincronizar Memcache httpd memcached memcached memcached PHP/Perl/Java Armazenar valor com chave/valor informados Processo similar ocorre quando há escrita no MySQL Master: aplicação precisa sincronizar com cache.
  • 14. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.14 Spoiler! MySQL já tem integração nativa com Memcached Não perca tempo com a lógica de sincronização!
  • 15. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.15 Resposta tecnológica: NoSQL Usos comuns: aplicações web ou outras que requerem melhor performance e escalabilidade sem que seja necessários definir esquemas relacionais. Pontos Fortes: armazenamento persistente com recursos de escalabilidade tais como sharding nativo; melhor suporte a Queries que apenas chave-valor. Pontos Fracos: falta de recursos para Queries complexas.
  • 16. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.16 Resposta tecnológica: NoSQL Usos comuns: aplicações científicas ou de tradução direta do paradigma orientado a objetos. Pontos Fortes: performance e mapeamento natural de objetos. Pontos Fracos: falta de recursos para realizar Queries complexas.
  • 17. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.17 Resposta tecnológica: NoSQL Usos comuns: log em tempo-real para aplicações web ou financeiras. Pontos Fortes: throughput muito alto para Big Data (de Terabytes a Petabytes); suporte excelente a particionamento e acesso aleatório de leitura-escrita. Pontos Fracos: APIs de baixo-nível, falta de recursos para realizar Queries complexas, alta latência na resposta de Queries.
  • 18. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.18 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
  • 19. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.19 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
  • 20. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.20 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.
  • 21. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.21 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
  • 22. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.22 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
  • 23. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.23 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
  • 24. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.24 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
  • 25. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.25 Escalabilidade horizontal Replicação MySQL Particionamento Funcional Data Sharding 3 Abordagens para escalar o MySQL
  • 26. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.26 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 Replicação MySQL • 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 Particionamento Funcional • 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
  • 27. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.27 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
  • 28. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.28 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
  • 29. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.29 Benefício-chave • O MySQL permite economias significativas com custos de hardware, adicionando novos servidores commodity de acordo com o necessário e de maneira incremental Por que MySQL? • Capacidade de escalar conforme necessidade e de maneira incremental • Baixos custos e flexibilidade Wikipedia mysql.com/customers Caso de sucesso
  • 30. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.30 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 Replicação MySQL • 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 Particionamento Funcional • 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. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.31 Data Node 1 Data Node 2 Data Node 3 Data Node 4 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  • 32. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.32 Data Node 1 Data Node 2 F1 Data Node 3 Data Node 4 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  • 33. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.33 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. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.34 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. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.35 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. 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 F2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  • 37. 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 F2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  • 38. 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 F4 F2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  • 39. 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 F4 F2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  • 40. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.40 Data Node 1 Data Node 2 F3 F1 Data Node 3 Data Node 4 F2 F4 F4 F2 Node Group 1 Table T1 P2 P3 P4 P1 F1 F3 Escalabilidade horizontal: Data Sharding
  • 41. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.41 Data Node 1 Data Node 2 F1 F3 F3 F1 Data Node 3 Data Node 4 F2 F4 F4 F2 Node Group 1 Node Group 2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  • 42. 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 Node Group 1 Node Group 2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  • 43. 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 Node Group 1 Node Group 2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  • 44. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.44 Benefícios-chave • Propriedades ACID • Solução comprovada por muitas empresas ao longo de anos • Por que MySQL? • Escalabilidade virtualmente infinita: hoje com 20 milhões de usuários, 1 bilhão de Notes e 2 bilhões de arquivos (fotos, documentos etc) • Flexibilidade para crescer de maneira incremental e com baixos custos Caso de sucesso Evernote blog.evernote.com/tech/2012/02/23/whysql
  • 45. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.45 Ainda há espaço para SGBDs relacionais Usos comuns: análise de dados históricos, data warehousing, business intelligence. Pontos Fortes: suporte a Queries rápidas especialmente em datasets grandes e compressão. Pontos Fracos: não adequado para transações, importações e exportações rápidas; utilização de computação pesada.
  • 46. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.46 Ainda há espaço para SGBDs relacionais Usos comuns: processamento de transações, aplicações interativas transacionais Pontos Fortes: formas facilitadas de manipular registros; consistência; tecnologia comprovadamente robusta. Pontos Fracos: problemas de escalabilidade, especialmente para Queries contra grande volume de dados (dezenas de Terabytes).
  • 47. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.47 NewSQL
  • 48. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.48 Requisitos NewSQL Relacional + NoSQL Não há solução única para todas situações. Não há bala de prata. Combine e supere expectativas! Performance Escalabilidade Facilidade de Uso Disponibilidade ~24x7 SQL/Joins Transações ACID
  • 49. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.49 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…
  • 50. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.50 Memcached com Persistência no InnoDB Método transparente para persistir os dados em memória volátil Memcached plug-in no mysqld , mapeado à API nativa do InnoDB Shared process para baixa latência Acesso chave-valor ao InnoDB Via Memcached API Usa clients Memcached existentes Sem SQL parsing Acesso SQL e NotOnlySQL Operações chave-valor mas também queries SQL, JOINs, FKs, etc. SQL (MySQL Client) InnoDB Storage Engine MySQL Server Memcached plugin Application NoSQL (Memcached Prot.) mysqld Memcached + InnoDB MySQL 5.6 Mais Flexibilidade e Simplicidade http://dev.mysql.com/doc/refman/5.6/en/innodb-memcached.html
  • 51. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.51 MySQL Cluster • Arquitetura shared-nothing in-memory parallel • Modelo relacional ACID, SQL Carrier Grade 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, hardware commodity • APIs NoSQL (C++, Java, Memcached, Node.js) Open Source
  • 52. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.52 Alguns usuários MySQL Cluster
  • 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. 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. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.56 MySQL Cluster 7.3: Connection Thread Scalability  DBT2 Benchmark – Single MySQL Server – Single Data Node – 128 client connections 8.5x
  • 56. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.57 MySQL Cluster 7.2 Join Performance  Web-Based Content Management System – JOINs 11-tables, 33.5k rows – Returns 2k rows, 19 columns per row 0 10 20 30 40 50 60 70 80 90 100 MySQL Cluster 7.1 MySQL Cluster 7.2 Query Execution Time Seconds 87.23 seconds 1.26 seconds 70x Faster
  • 57. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.58 Agenda  Alta Performance com MySQL  Arquitetura e Topologias  Métodos de Acesso e API’s  Instalação e Exemplos  Aprenda Mais  Perguntas?
  • 58. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.59 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
  • 59. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.60 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
  • 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 Facilidade de Uso a Disponibilidade ~24x7 SQL/Joins a Transações ACID a NDB
  • 61. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.62 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
  • 62. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.63 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
  • 63. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.64 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
  • 64. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.65 On-line Operations  Scale the cluster – Add all nodes – Remove MySQL Server nodes  Repartition tables  Upgrade / patch servers & OS  Upgrade / patch MySQL Cluster  Back-Up  Evolve the schema on-line, in real-time Performance a Escalabilidade a Facilidade de Uso a Disponibilidade ~24x7 a SQL/Joins a Transações ACID a
  • 65. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.66 Cluster 1 Synchronous replication Cluster 2 InnoDB InnoDB InnoDB Asynchronous replication Flexibilidade da Topologia Replicação Replicação síncrona entre os grupos de nós para HA Geo-Replicação assíncrona entre nós remotos NDB para redundância geográfica Replicação assíncrona entre Storage Engines diferentes para aplicações especializadas como geração de relatórios
  • 66. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.67 Agenda  Alta Performance com MySQL  Arquitetura e Topologias  Métodos de Acesso e API’s  Instalação e Exemplos  Aprenda Mais  Perguntas?
  • 67. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.68 Os mesmos dados acessados simultaneamente através de interfaces SQL e NoSQL APIs de Acesso aos Dados
  • 68. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.69 APIs Java: ClusterJ e JPA ClusterJ API de persistência Domain Object Model (DataMapper) JPA API de persistência padronizada pelo OpenJPA
  • 69. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.70 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
  • 70. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.71 API Memcached Baseado em chave-valor API simples e bastante popular entre desenvolvedores hash table com persistência em disco e alta performance Extensão do Memcached adiciona persistência em disco sem perda de performance evita rotinas de invalidação do cache, sincronismo manual Simplicidade e Flexibilidade evita camadas adicionais na infra- estrutura acesso ao dado via tabelas relacionais
  • 71. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.72 Evolução rápida da aplicação: Novos tipos de dados adicionados constantemente Não requer tempo para estender o schema ou parada do servidor Não requer conhecimento de modelagem relacional Escalabilidade incremental Memcached é Schemaless
  • 72. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.73 <town:maidenhead,SL6> key value <town:maidenhead,SL6> key value Key Value town:maidenhead SL6 generic table Application view SQL view Cluster & Memcached Schemaless set maidenhead 0 0 3 SL6 STORED get maidenhead VALUE maidenhead 0 3 SL6 END
  • 73. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.74 <town:maidenhead,SL6> prefix key value <town:maidenhead,SL6> key value Prefix Table Key- col Val-col policy town: map.zip town code cluster Config tables town ... code ... maidenhead ... SL6 ... map.zip Application view SQL view Cluster & Memcached Schema configurável
  • 74. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.75 Flexibilidade da Topologia API Memcached • Várias opções de implantação • Múltiplos Clusters • Pode manter Memcached server, se preferir
  • 75. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.76 Node.js NoSQL API MySQL Cluster 7.3 Acesso JavaScript nativo ao MySQL Cluster JavaScript do início ao fim: browser > app > database Leituras e escritas de objetos JavaScript direto no MySQL Cluster Elimina transformações SQL Implementado como um módulo para node.js Integra completamente a API/library Cluster com a aplicação web Alta performance para aplicações e dados distribuídos V8 JavaScript Engine MySQL Cluster Node.js Module MySQL Cluster Data Nodes Clients
  • 76. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.77 Qual API devo usar?
  • 77. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.78 Agenda  Alta Performance com MySQL  Arquitetura e Topologias  Métodos de Acesso e API’s  Instalação e Exemplos  Aprenda Mais  Perguntas?
  • 78. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.79 Auto-Installer MySQL Cluster 7.3 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
  • 79. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.80 MySQL Cluster Auto-Install  Simples de instalar e provisionar clusters multi-node  Complementa MySQL Cluster Manager no gerenciamento de cliclo de vida
  • 80. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.81 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 MySQL Cluster Manager Para testes em uma única máquina
  • 81. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.82 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?
  • 82. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.83 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); }
  • 83. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.84 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 }
  • 84. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.85 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; }
  • 85. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.86 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); }
  • 86. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.87 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() ;
  • 87. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.88 Mais Exemplos ClusterJ e ClusterJPA Whitepaper: MySQL Cluster Connector for Java August 2012 mysql.com/why-mysql/white-papers
  • 88. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.89 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
  • 89. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.90 Exemplos JavaScript / Node.js API Blog: Tutorial Getting Started with the NoSQL JavaScript / Node.js API for MySQL Cluster 10 June 2012 blogs.oracle.com/MySQL/entry/tutorial_getting_started_with_the
  • 90. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.91 Agenda  Alta Performance com MySQL  Arquitetura e Topologias  Métodos de Acesso e API’s  Instalação e Exemplos  Aprenda Mais  Perguntas?
  • 91. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.92 Mais sobre como começar com MySQL Cluster Whitepaper: MySQL Cluster Evaluation Guide February 2015 mysql.com/why-mysql/white-papers
  • 92. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.93 Comece hoje Auto-Install ClusterMySQL Cluster 7.4 Download dev.mysql.com/download s/cluster/ Developer Zone dev.mysql.com
  • 93. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.96 Sumário  As aplicações Web demandam mais dos bancos de dados nos dias de hoje.  São exigidos mais performance, escalabilidade horizontal, APIs e padões de acesso simples e poderosos.  O MySQL cumpre estes requisitos e ainda mantém os benefícios de um SGBD relacional.
  • 94. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.97 @MySQLBR meetup.com/MySQL-BRfacebook.com/MySQLBR pt.planet.mysql.com Estes slides e mais novidades…
  • 95. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.98 Perguntas?
  • 96. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.99 @MySQLBR meetup.com/MySQL-BR facebook.com/MySQLBR Obrigado!