SlideShare uma empresa Scribd logo
1 de 82
Baixar para ler offline
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
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
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
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.5 Fonte: http://db-engines.com/en/ranking_trend (junho/15)
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 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.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
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 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.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
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
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
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
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
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
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!
dev.mysql.com/downloads/windows/installer
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
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ços
Especializados
Data Sharding
3 Abordagens para
escalar o MySQL
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
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
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
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
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
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
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 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 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
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
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
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
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 duas
abordagens!Performance
Escalabilidade
Facilidade de Uso
Disponibilidade ~24x7
SQL/Joins
Transações ACID
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
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 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 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.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
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
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
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
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
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ência Domain
Object Model (DataMapper)
JPA
API de persistência padronizada
pelo OpenJPA
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
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
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
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
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?
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);
}
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
}
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;
}
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);
}
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() ;
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
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 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
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
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!
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…
Copyright © 2015, Oracle and/or its affiliates. All rights reserved.80
@MySQLBR
meetup.com/MySQL-BR
facebook.com/MySQLBR
Obrigado!
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 & 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.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

Mais conteúdo relacionado

Mais procurados

Alta-disponibilidade e alta performance com o MySQL Cluster 7.3
Alta-disponibilidade e alta performance com o MySQL Cluster 7.3Alta-disponibilidade e alta performance com o MySQL Cluster 7.3
Alta-disponibilidade e alta performance com o MySQL Cluster 7.3MySQL 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
 
Alta-disponibilidade com MySQL
Alta-disponibilidade com MySQLAlta-disponibilidade com MySQL
Alta-disponibilidade com MySQLMySQL 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
 
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
 
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
 
Segurança no MySQL
Segurança no MySQLSegurança no MySQL
Segurança no MySQLMySQL Brasil
 
Alta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL EnterpriseAlta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL EnterpriseMySQL Brasil
 
MySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta DisponibilidadeMySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta DisponibilidadeMySQL 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
 
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 Enterprise Monitor para Desenvolvedores
MySQL Enterprise Monitor para DesenvolvedoresMySQL Enterprise Monitor para Desenvolvedores
MySQL Enterprise Monitor para DesenvolvedoresMySQL Brasil
 
Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15MySQL Brasil
 
Arquitetando sua aplicação de nova geração com MySQL 5.7
Arquitetando sua aplicação de nova geração com MySQL 5.7Arquitetando sua aplicação de nova geração com MySQL 5.7
Arquitetando sua aplicação de nova geração com MySQL 5.7Mathias Brem
 
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
 
MySQL + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL Brasil
 

Mais procurados (20)

Alta-disponibilidade e alta performance com o MySQL Cluster 7.3
Alta-disponibilidade e alta performance com o MySQL Cluster 7.3Alta-disponibilidade e alta performance com o MySQL Cluster 7.3
Alta-disponibilidade e alta performance com o MySQL Cluster 7.3
 
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?
 
Alta-disponibilidade com MySQL
Alta-disponibilidade com MySQLAlta-disponibilidade com MySQL
Alta-disponibilidade com MySQL
 
Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014
 
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
 
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
 
Segurança no MySQL
Segurança no MySQLSegurança no MySQL
Segurança no MySQL
 
Alta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL EnterpriseAlta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL Enterprise
 
MySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta DisponibilidadeMySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta Disponibilidade
 
WebSeminario Oracle
WebSeminario OracleWebSeminario Oracle
WebSeminario Oracle
 
Recursos e Benefícios do MySQL
Recursos e Benefícios do MySQLRecursos e Benefícios do MySQL
Recursos e Benefícios do MySQL
 
Apresentação MySQL Enterprise
Apresentação MySQL EnterpriseApresentação MySQL Enterprise
Apresentação MySQL Enterprise
 
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 Enterprise Monitor para Desenvolvedores
MySQL Enterprise Monitor para DesenvolvedoresMySQL Enterprise Monitor para Desenvolvedores
MySQL Enterprise Monitor para Desenvolvedores
 
Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15
 
Arquitetando sua aplicação de nova geração com MySQL 5.7
Arquitetando sua aplicação de nova geração com MySQL 5.7Arquitetando sua aplicação de nova geração com MySQL 5.7
Arquitetando sua aplicação de nova geração com MySQL 5.7
 
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 + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL + Java - Manuel Contreras
MySQL + Java - Manuel Contreras
 

Destaque

Java não é tão difícil quanto parece
Java não é tão difícil quanto pareceJava não é tão difícil quanto parece
Java não é tão difícil quanto parecejesuinoPower
 
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)Aplicações desktop (GUI) e aplicações ricas para internet (RIA)
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)Raphael Marques
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesOziel Moreira Neto
 
Curso Java Basico
Curso Java BasicoCurso Java Basico
Curso Java BasicoJoel Lobo
 

Destaque (7)

GSOIII (JAVA) CONEXÃO MYSQL
GSOIII (JAVA)  CONEXÃO MYSQLGSOIII (JAVA)  CONEXÃO MYSQL
GSOIII (JAVA) CONEXÃO MYSQL
 
Java não é tão difícil quanto parece
Java não é tão difícil quanto pareceJava não é tão difícil quanto parece
Java não é tão difícil quanto parece
 
Java 16 Jdbc
Java 16 JdbcJava 16 Jdbc
Java 16 Jdbc
 
Java
JavaJava
Java
 
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)Aplicações desktop (GUI) e aplicações ricas para internet (RIA)
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Curso Java Basico
Curso Java BasicoCurso Java Basico
Curso Java Basico
 

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

MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL 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
 
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 Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Brasil
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL 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
 
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
 
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
 
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
 
MySQL do ISAM ao NoSQL
MySQL do ISAM ao NoSQLMySQL do ISAM ao NoSQL
MySQL do ISAM ao NoSQLAirton Lastori
 
Cenário das Plataformas de Dados 2017/2018
Cenário das Plataformas de Dados 2017/2018Cenário das Plataformas de Dados 2017/2018
Cenário das Plataformas de Dados 2017/2018Raul Oliveira
 
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
 
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
 
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
 
MySQL June/2009 FDTI - Portuguese Version
MySQL June/2009 FDTI - Portuguese VersionMySQL June/2009 FDTI - Portuguese Version
MySQL June/2009 FDTI - Portuguese VersionArtur Alves
 

Semelhante a Serviços Escaláveis e de Alta Performance com MySQL e Java (17)

MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de Produto
 
Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014
 
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 Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geral
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geral
 
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 e Big Data
MySQL e Big DataMySQL e Big Data
MySQL e Big Data
 
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 - 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
 
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 do ISAM ao NoSQL
MySQL do ISAM ao NoSQLMySQL do ISAM ao NoSQL
MySQL do ISAM ao NoSQL
 
Cenário das Plataformas de Dados 2017/2018
Cenário das Plataformas de Dados 2017/2018Cenário das Plataformas de Dados 2017/2018
Cenário das Plataformas de Dados 2017/2018
 
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
 
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
 
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
 
MySQL June/2009 FDTI - Portuguese Version
MySQL June/2009 FDTI - Portuguese VersionMySQL June/2009 FDTI - Portuguese Version
MySQL June/2009 FDTI - Portuguese Version
 

Mais 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
 

Mais 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...
 

Último

Apresentação Comercial VITAL DATA 2024.pdf
Apresentação Comercial VITAL DATA 2024.pdfApresentação Comercial VITAL DATA 2024.pdf
Apresentação Comercial VITAL DATA 2024.pdfCarlos Gomes
 
Certificado - Data Analytics - CoderHouse.pdf
Certificado - Data Analytics - CoderHouse.pdfCertificado - Data Analytics - CoderHouse.pdf
Certificado - Data Analytics - CoderHouse.pdfLarissa Souza
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Dirceu Resende
 
Concurso Caixa TI - Imersão Final - Rogério Araújo.pdf
Concurso Caixa TI - Imersão Final - Rogério Araújo.pdfConcurso Caixa TI - Imersão Final - Rogério Araújo.pdf
Concurso Caixa TI - Imersão Final - Rogério Araújo.pdfGuilhermeRodrigues896381
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)Alessandro Almeida
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfRodolpho Concurde
 

Último (6)

Apresentação Comercial VITAL DATA 2024.pdf
Apresentação Comercial VITAL DATA 2024.pdfApresentação Comercial VITAL DATA 2024.pdf
Apresentação Comercial VITAL DATA 2024.pdf
 
Certificado - Data Analytics - CoderHouse.pdf
Certificado - Data Analytics - CoderHouse.pdfCertificado - Data Analytics - CoderHouse.pdf
Certificado - Data Analytics - CoderHouse.pdf
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
Concurso Caixa TI - Imersão Final - Rogério Araújo.pdf
Concurso Caixa TI - Imersão Final - Rogério Araújo.pdfConcurso Caixa TI - Imersão Final - Rogério Araújo.pdf
Concurso Caixa TI - Imersão Final - Rogério Araújo.pdf
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
 

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

  • 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. 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. 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. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.5 Fonte: http://db-engines.com/en/ranking_trend (junho/15)
  • 5. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.6
  • 6. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.7 Resposta tecnológica: NoSQL Fonte: 451 Group, 2012
  • 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. 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. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.10 Escalabilidade vertical com MySQL
  • 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. 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. 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. 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. 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. 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. 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. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.18 Atualize!
  • 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. 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. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.21 …ou manualmente via binários pré-compilados
  • 21. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.22 Escalabilidade horizontal com MySQL?
  • 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. 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. 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. 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. 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. 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. 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. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.45 Sharding com MySQL?
  • 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. 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. 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. 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. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.50 NewSQL
  • 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. 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. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.53 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 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. 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. 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. 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. 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. 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. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.62 Qual API devo usar?
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.75 Teste e nos diga o que achou da Performance!
  • 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. 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. 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. 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. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.80 @MySQLBR meetup.com/MySQL-BR facebook.com/MySQLBR Obrigado!
  • 80. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.81 Perguntas?
  • 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. 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