1) O documento anuncia uma apresentação sobre MySQL e Java no Brasil em 7 de dezembro de 2011.
2) A apresentação irá discutir como dar nova vida aos bancos de dados de exemplo Sakila e Duke usando MySQL e Java com o suporte da Oracle.
3) A apresentação será conduzida em português por especialistas da Oracle e abordará tópicos como replicação, conectividade Java-MySQL e monitoramento.
Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...
MySQL + Java - Manuel Contreras
1. MySQL OTN Day
<Insert Picture Here> Brasil 7 Dezembro 2011
3:00 pm
Sheraton WTC
Sao Paulo, Brasil
MySQL + Java – Nova vida a Sakila & Duke com a Oracle
Kattia.Fallas@Oracle.com - Contas Corporativas, MySQL Amércia Latina
Manuel.Contreras@Oracle.com – Especialista Técnico, MySQL América Latina
Pedro.Andrade@Oracle.com – Contas Estratégicas, MySQL América Latina
2. MySQL+Java: Nova vida a Sakila & Duke com a
Oracle
MySQL na América Latina ( En Español )
Kattia.Fallas@Oracle.com
Manuel.Contreras@Oracle.com
Pedro.Andrade@Oracle.com
@mysql_espanol
MySQL na América Latina ( En Português )
Ana.Guiselini@Oracle.com
Marcelo.T.Souza@Oracle.com
Airton.Lastori@Oracle.com
Marcos.Trujillo@Oracle.com
@mysql_br
3. OTN MySQL User Forum – Brasil ~ Introdução
México e Brasil - rivais no futebol ?
4. OTN MySQL User Forum – Brasil ~ Introdução
Não....
México e Brasil são sempre amigos!
5. ¿Por que usar Software Open Source
(OSS)?
Open Source Software Enterprise
Modelo de distribuição de Software
- Versão Community
- Versão Enterprise
Subscrição
- Subscrição anual com suporte técnico
- No vendor locking
- Melhor TCO
Comunidades desenvolvem, testam e sugerem melhorias
ao software
- foruns, bug report lists, e participação de desenvolvedores
para melhoras do produto.
6.
7. Oracle: nova vida a Duke & Sakila
Open source software com suporte Enterprise
- Em 1995 Sun microsystems cria Java uma linguagem de programação
multiplataforma, 100% orientada a objetos.
- Em 1995, MySQL AB, cria um gerenciador de BD relacional, open source, o qual
é amplamente adotado pelas comunidades do LAMP stack software.
- Em 2008, Sun microsystems Inc, adquire MySQL AB – um investimento de Bilhão
de dólares pelo OSS.
- Em 2010, Oracle Inc adquire a Sun microsystems, a proposta: oferecer soluções
desde o disco até as aplicações, fortalecendo sua oferta open source com Java e
MySQL.
- Dezembro de 2010, Oracle libera MySQL 5.5, considerado pela comunidade
como o melhor release de MySQL em sua historia.
- Julho de 2011, Java 7.0 é liberado, nova versão com melhorias no JVM hotspot
e o melhor desempenho para servidores Java.
9. Introdução | Java
A linguagem de programação independente da plataforma
Java
- Simples, fácil de usar
- 100% orientado a objetos, API classes
- Administração automática de memória
- Independente da plataforma
- Orientado a um contenedor JRE ( JVM )
– Máquina virtual Java que administra multi-threading,
segurança, memória, class loader, gerenciamento de
exceções ( erros em tempo de execução )
- Oracle Glassfish Application Server é a implementação de
referência para Java EE
- 9 milhões de desenvolvedores no mundo
- Java é gerenciado pela Java Community Process
http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html
10. Java 7.0 | O novo
Java 7.0 – potencializa o desempenho de Java nos
Servidores
Java 7.0, incorpora melhoras orientadas para aumentar o
desempenho de aplicações rodando em servidores com grande
capacidade em RAM, e CPU multi-cores.
– Gerenciamento de memória mais eficiente
- Memória é dividida em vários Heap
- First Gargabe collector: divide a memória em vários
heap memory, aumentando o desempenho em seu
acesso
– Nova funcionalidade em API de JDBC, para
conectividade a bases de dados
RowSet, Statement e Connection implementam a
interface Closeable, AutoCloseable
11. JDBC | Java Database Connectivity
Práticas Recomendadas para Java Developers
Mecanismos para estabelecer conexões a MySQL
Server, com Java:
- DriverManager ( Class Loader Java )
– O método mais simples, mas não é recomendado
para ambientes de produção
- Pool Connection / Data Source
– Requer um servidor de aplicativos, mas é altamente
recomendado para ambientes de produção
- Persistence Framework
– Hibernate, Spring, Memcached & Java ( MySQL 5.6 )
12. JDBC | Java Database Connectivity
Práticas Recomendadas para Java Developers
Pool Connection / DataSource
- Um conjunto de conexões, sempre está disponível no pool
- Método: getConnection() em Java, obtém uma conexão disponível do
pool, sem delay para abrir fisicamente uma conexão
- Método closeConnection() em Java, não fecha a conexão, somente
a devolve ao pool, para que outro Thread possa reutilizá-la
Java Pool Connection
Java ( DataSource)
Application - Connection1
- Connection2
- Connection3
- ConnectionN...
13. JDBC | Java Database Connectivity
Práticas Recomendadas para Java Developers
Java Pool Connection
Java ( DataSource)
Application - Connection1
- Connection2
- Connection3
- ConnectionN...
Java EE 6
Application Server
Reference
Implementation
15. JDBC | Java Database Connectivity
Práticas Recomendadas para Java Developers
Java Pool Connection -O Java EE Application Server,
gerencia conexões.
( DataSource)
- Automaticamente fecha
- Connection1
conexões no estado Idle.
- Connection2
- Connection3
Conexões abertas sob demanda,
- ConnectionN...
conforme requerido pela
aplicação
Java EE 6 - Ele é facilmente configurado
pelo administrador do servidor
Application Server
de aplicações Java EE.
Reference
Implementation
17. MySQL - números interessantes
• 155 million
• 212 days
• 127 billion
Você sabe o que são
esses números?
• 24.9 trillion
18. MySQL - números interessantes
• 155 million
• 212 days
• 127 billion
Você sabe o que são
esses números?
• 24.9 trillion
19. MySQL - números interessantes
• 155 million
number of tweats per day, 1700 per second
6,939/s Japanese New Year
MySQL is core architecture for twitter
• 212 days
uptime of random MySQL server at twitter
• 127 billion
number of queries executed on single server
• 24.9 trillion
innodb_rows_read, 1.36M per second
source: Jeremy Cole, Twitter DBA, MySQL UC 2011
20. Questões difíceis
… problemas de performance? … servidores down?
… queries lentas, custosas? … política de segurança, muda?
… onde, quando, como “tunar”? … produtividade de desenv./QA?
… problemas de replicação? … qual versão do MySQL rodar?
… os sistemas escalarão? … posso recuperar?
Por que é melhor usar MySQL Enterprise...
21. MySQL Enterprise Edition
Mais segura, escalável banco de dados MySQL, Backup
Online, Desenvolvimento / Ferramentas de monitoração,
apoiados pela Oracle Lifetime Suporte Premier
Oracle Product Oracle Premier
Certifications/Integrations Support
MySQL Enterprise MySQL Enterprise
Backup Monitor/Query Analyzer
MySQL Enterprise MySQL Enterprise
Security Scalability
MySQL Enterprise
High Availability MySQL Workbench
22. MySQL Database
Internals replicação
MySQL Slave
MySQL Master
updates updates I/O Thread
selects
relay
binlog
Replication
SQL Thread
data
index &
binlogs
binlog data
23. MySQL, Replicação
- Melhor tempo de resposta mediante a separação de carga, no processamento de
consultas entre o master / slave
- SELECT Queries, podem ser enviados ao slave para reduzir a carga de
processamento de consultas, no master
- Disponível para qualquer tipo de storage engine, incluindo replicação entre distintos
tipos de storage engine
- Obter uma maior disponibilidade com um master / slave
- Em caso de falhas no master, é possível utilizar o slave como backup
- Respaldo de informação através dos slaves
C l i ent s
MySQL Replication
Slaves Master
25. MySQL Replicação semi-sync Novo no MySQL 5.5!
• Os dados escritos no master, também
são escritos no binary log File
O thread I/O, nos slaves, usa as
alterações do binlog do master e o
escreve em um relay log nos slaves
O thread SQL, nos slaves, lê o relay log
e aplica as alterações / escritas nos
slaves
• Se o plugin semi-sync está instalado e SQL Thread
IO Thread
configurado, o master espera até que o
binlog relay
thread I/O de algum slave semi-sync,
tenha escrito a transação a disco, ou
até que ocorra um timeout, então se
retorna ao ACK na aplicação
Melhora a confiança no FailOver
COMMIT no nodo master é reconhecido, somente quando ao menos um dos
nodos slaves tenha registrado o evento Master
Em caso de FailOver, não há perda de informação Slave
http://dev.mysql.com/doc/refman/5.5/en/replication-howto.html
26. JDBC | Java Database Connectivity
Práticas Recomendadas para Java Developers
JDBC – MySQL Master, Slave1, Slave2, SlaveN – Round Robin
- Load Balancing de Leitura em
servidores Slave
- Servidor Master para Read & Writes
- Slaves para Read Only
- JDBC Connector automaticamente,
seleciona um Slave da lista de Slaves
http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-replication-
connection.html
27. JDBC | Java Database Connectivity
Prácticas Recomendadas para Java Developers
Consulta Sepración ler e escrever operações
com Java e MySQL
Passo 1) Importação de Livrarias
http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-replication-connection.htm
28. JDBC | Java Database Connectivity
Prácticas Recomendadas para Java Developers
Consulta Sepración ler e escrever operações
com Java e MySQL
Passo 2) - Configuração de Driver para uso em RoundRobin
Load Balancing
http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-replication-connection.html
29. JDBC | Java Database Connectivity
Prácticas Recomendadas para Java Developers
Consulta Sepración ler e escrever operações
com Java e MySQL
Passo 3) - configurações de conexão com o mestre e escravos
30. JDBC | Java Database Connectivity
Práticas Recomendadas para Java Developers
Passo 4) - Insert Dados em Master ( Read Only False )
31. JDBC | Java Database Connectivity
Práticas Recomendadas para Java Developers
Passo 6) - Select Dados em um dos Slaves ( Read Only True )
33. MySQL Enterprise Monitor
• Vista única consolidada do
ambiente MySQL
• Auto descobrimento de
servidores MySQL,
replicação e topologias
• Alertas e monitoramento
adaptável e baseado en
regras
• Identificação de problemas
antes que ocorram
• Redução de risgo e tempo de
inatividade
• Facilidade para escalamento Um assistente DBA Virtual para
horizontal sem requerer mais MySQL
DBAs
http://mysql.com/products/enterprise/monitor.html
37. MySQL ~ Extensões Comerciais
✔
MySQL Enterprise Backup
✔
Incremental, Compression, Point in Time Recovery
✔
MySQL High Availability
✔
Oracle OVM MySQL Template & Windows Failover
Clustering
✔
Enterprise Security
✔
Plug-In: MySQL External Authentication
✔
Enterprise Scalability
✔
Plug-In: MySQL Thread Pool
✔
Enterprise Monitor, Workbench, Technical Support
✔
Virtual MySQL Tunning assistant & 24x7 support
38. Gestão Padrão do Thread Pool
Clientes Externos
Gestão Padrão Execução das Conexões das Threads
doThread Pool
Conexões /
Declarações
atribuídas aos
Threads durante
sua existência
Clientes Internos
• Conexões são atribuídas a 1 thread durante a existência da Conexão.
• A mesma thread é usada para todas as declarações de execução (single
threaded)
39. Com o Thread Pool Habilitado
Clientes Externos
Thread Pool Execução das Conexões das Threads
Grupo Thread 1
Grupo Thread 1
Threads 1 - 4096
Grupo Thread 2 Grupo Thread 2
Threads 4097 - 8193
Grupo Thread N
Grupo Thread N
Threads 8194 - N
Clientes Internos
• Pool contém um número de Grupo de Threads(default = 16), cada um gerencia até 4096
threads reusáveis
• Cada conexão é atribuída ao grupo de thread via round robin
mantém a performance em altas cargas de
usuários/conexões
40. Comparativo com/sem Thread Pool
MySQL Enterprise Edition
ComThread Pool
MySQL Community Server
Sem Thread Pool
MySQL 5.5.16
Oracle Linux 6.1, Unbreakable Kernel 2.6.32
2 sockets, 24 cores, 2 X 12-core
Intel(R) Xeon(R) X5670 2.93GHz CPUs
20x Melhor Escalabilidade comThread Pool 72GB DDR3 RAM
2 X LSI SCSI Disk (MR9261-8i) (597GB)
41. MySQL Enterprise Backup
• Anteriormente “InnoDB Hot Backup”
• Online, non-locking backup & recovery
• Tables, Indexes
• Server, database, ou object-level
• Backups Lógico e Físico
• Backups Completos ou Incrementais
• Point-in-time recovery
• Backups Comprimidos
• Também oferece backup e recuperação para MyISAM
• Multi-plataforma (Windows, Linux, Unix)
• Certificado para Oracle Secure Backup (SBT 2.0)
43. Restores
Restore é até 16x mais rápido do que mysqldump
- mysqldump performance não é linear (mais tables/indexes impacta na performance)
- MySQL Enterprise performance é quase linear
46. Questões Difíceis, Soluções Reais
… problemas de performance? … servidores down?
• MySQL Enterprise Scalability • Oracle Premier 7x24 Support
• MySQL Enterprise Monitor, Advisors, Query Analyzer • MySQL Enterprise Monitor, Advisors
• MySQL Consultative Support • MySQL Enterprise High Availability
… queries lentas, custosas? … política de segurança, muda?
• MySQL Enterprise Monitor, Query Analyzer
• MySQL External Authentication
… onde, quando, como “tunar”? • MySQL Enterprise Monitor, Security Advisor
• MySQL Enterprise Monitor, Advisors, Query Analyzer
• MySQL Consultative Support
… produtividade de desenv./QA?
• MySQL Workbench SE
• MySQL Enterprise Monitor, Query Analyzer
… problemas de replicação?
• MySQL Enterprise Monitor, Replication Monitor
… qual versão do MySQL rodar?
• Oracle Premier 7x24 Support • Oracle Premier 7x24 Support
… os sistemas escalarão? … posso recuperar?
• MySQL Enterprise Scalability
• MySQL Enterprise Backup
• MySQL Enterprise Monitor, Advisors, Query Analyzer
• MySQL Consultative Support
47. Obrigado / Gracias!
MySQL na América Latina ( En Español )
Kattia.Fallas@Oracle.com
Manuel.Contreras@Oracle.com
Pedro.Andrade@Oracle.com
@mysql_espanol
@mysql_br
@mysql ( Official English )