View
1.651
Download
3
Category
Preview:
DESCRIPTION
Como utilizar MySQL com Java eficientemente. Slides da apresentação de Manuel Contreras durante o OTN MySQL Community Forum 2011 em São Paulo.
Citation preview
<Insert Picture Here>
MySQL + Java – Nova vida a Sakila & Duke com a Oracle
Kattia.Fallas@Oracle.com - Contas Corporativas, MySQL Amércia LatinaManuel.Contreras@Oracle.com – Especialista Técnico, MySQL América LatinaPedro.Andrade@Oracle.com – Contas Estratégicas, MySQL América Latina
MySQL OTN DayBrasil 7 Dezembro 20113:00 pmSheraton WTCSao Paulo, Brasil
MySQL+Java: Nova vida a Sakila & Duke com a Oracle
MySQL na América Latina ( En Español )Kattia.Fallas@Oracle.comManuel.Contreras@Oracle.comPedro.Andrade@Oracle.com
MySQL na América Latina ( En Português )Ana.Guiselini@Oracle.comMarcelo.T.Souza@Oracle.comAirton.Lastori@Oracle.comMarcos.Trujillo@Oracle.com
@mysql_espanol
@mysql_br
OTN MySQL User Forum – Brasil ~ Introdução
México e Brasil - rivais no futebol ?
OTN MySQL User Forum – Brasil ~ Introdução
Não....
México e Brasil são sempre amigos!
¿Por que usar Software Open Source (OSS)?
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.
Open Source Software Enterprise
Oracle: nova vida a Duke & Sakila
- 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.
Open source software com suporte Enterprise
JavaA plataforma de desenvolvimento
Introdução | Java
Java 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
A linguagem de programação independente da plataforma
http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html
Java 7.0 | O novo
Java 7.0, 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 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 Nova funcionalidade em API de JDBC, para conectividade a bases de dadosconectividade a bases de dados
RowSet, Statement e Connection implementam a RowSet, Statement e Connection implementam a interface Closeable, AutoCloseable interface Closeable, AutoCloseable
Java 7.0 – potencializa o desempenho de Java nos Servidores
JDBC | Java Database Connectivity
Mecanismos para estabelecer conexões a MySQL Server, com Java:
- DriverManager ( Class Loader Java )- DriverManager ( Class Loader Java )– O método mais simples, mas não é recomendado
para ambientes de produção
- Pool Connection / Data Source - Pool Connection / Data Source – Requer um servidor de aplicativos, mas é altamente
recomendado para ambientes de produção
- Persistence Framework- Persistence Framework– Hibernate, Spring, Memcached & Java ( MySQL 5.6 )Hibernate, Spring, Memcached & Java ( MySQL 5.6 )
Práticas Recomendadas para Java Developers
JDBC | Java Database Connectivity
Pool Connection / DataSourcePool 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
Práticas Recomendadas para Java Developers
Java Application - Connection1
- Connection2- Connection3- ConnectionN...
Java Pool Connection ( DataSource)
JDBC | Java Database ConnectivityPráticas Recomendadas para Java Developers
Java Application - Connection1
- Connection2- Connection3- ConnectionN...
Java Pool Connection ( DataSource)
Java EE 6 Application ServerReference Implementation
JDBC | DataSource Glassfish
http://blogs.oracle.com/psterk/entry/criating_and_configuring_a_mysql
JDBC | Java Database ConnectivityPráticas Recomendadas para Java Developers
- Connection1- Connection2- Connection3- ConnectionN...
Java Pool Connection ( DataSource)
Java EE 6 Application ServerReference Implementation
-O Java EE Application Server, gerencia conexões.
- Automaticamente fecha conexões no estado Idle.
Conexões abertas sob demanda, conforme requerido pela aplicação
- Ele é facilmente configurado pelo administrador do servidor de aplicações Java EE.
MySQLvisão geral
MySQL - números interessantes
• 155 million
• 212 days
• 127 billion
• 24.9 trillion
Você sabe o que são esses números?
MySQL - números interessantes
• 155 million
• 212 days
• 127 billion
• 24.9 trillion
Você sabe o que são esses números?
MySQL - números interessantes
• 155 million
• 127 billion
number of tweats per day, 1700 per second6,939/s Japanese New YearMySQL is core architecture for twitter
• 212 daysuptime of random MySQL server at twitter
• 24.9 trillion
number of queries executed on single server
innodb_rows_read, 1.36M per second
source: Jeremy Cole, Twitter DBA, MySQL UC 2011
… qual versão do MySQL rodar?
… servidores down?
… os sistemas escalarão?
… política de segurança, muda?
… problemas de performance?
… onde, quando, como “tunar”?
… queries lentas, custosas?
… problemas de replicação?
… produtividade de desenv./QA?
… posso recuperar?
Questões difíceis
Por que é melhor usar MySQL Enterprise...
Mais segura, escalável banco de dados MySQL, Backup Online, Desenvolvimento / Ferramentas de monitoração, apoiados pela Oracle Lifetime Suporte Premier
Oracle Premier Support
Oracle Product Certifications/Integrations
MySQL Enterprise High Availability
MySQL Enterprise Security
MySQL Enterprise Scalability
MySQL Enterprise Backup
MySQL Enterprise Monitor/Query Analyzer
MySQL Workbench
MySQL Enterprise Edition
MySQL Master
relaybinlog
MySQL Slave
data
index &binlogs
databinlog
updatesselects
updates I/O Thread
SQL Thread
Replication
MySQL DatabaseInternals replicação
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
Cl
ie
nt
s
Slaves Master
MySQL Replication
Estudos de Caso: MySQL – Replicação Master – Slave
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 slavesO thread SQL, nos slaves, lê o relay log e aplica as alterações / escritas nos slaves• Se o plugin semi-sync está instalado e
configurado, o master espera até que o 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
Master
Slave
IO Thread
binlog relay
SQL Thread
Melhora a confiança no FailOverCOMMIT no nodo master é reconhecido, somente quando ao menos um dos nodos slaves tenha registrado o eventoEm caso de FailOver, não há perda de informação
http://dev.mysql.com/doc/refman/5.5/en/replication-howto.html
JDBC | Java Database Connectivity
JDBC – MySQL Master, Slave1, Slave2, SlaveN – Round Robin
Práticas Recomendadas para Java Developers
- 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
JDBC | Java Database ConnectivityPrácticas Recomendadas para Java Developers
http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-replication-connection.html
Passo 1) Importação de Livrarias
Consulta Sepración ler e escrever operações com Java e MySQL
JDBC | Java Database ConnectivityPrácticas Recomendadas para Java Developers
http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-replication-connection.html
Passo 2) - Configuração de Driver para uso em RoundRobin Load Balancing
Consulta Sepración ler e escrever operações com Java e MySQL
JDBC | Java Database ConnectivityPrácticas Recomendadas para Java Developers
Passo 3) - configurações de conexão com o mestre e escravos
Consulta Sepración ler e escrever operações com Java e MySQL
JDBC | Java Database ConnectivityPráticas Recomendadas para Java Developers
Passo 4) - Insert Dados em Master ( Read Only False )
JDBC | Java Database ConnectivityPráticas Recomendadas para Java Developers
Passo 6) - Select Dados em um dos Slaves ( Read Only True )
MySQL Enterprise Monitor• Monitor de Replicação
• 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 horizontal sem requerer mais DBAs
MySQL Enterprise Monitor
Um assistente DBA Virtual para MySQL
http://mysql.com/products/enterprise/monitor.html
MySQL Enterprise Monitor• Java Connector plugin / Query Analyzer
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
Gestão Padrão do Thread Pool
Clientes Internos
Gestão Padrão doThread Pool
Conexões / Declarações
atribuídas aos Threads durante sua existência
Execução das Conexões das Threads
Clientes Externos
• 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)
Com o Thread Pool Habilitado
Clientes Internos
Clientes Externos
Thread Pool
Grupo Thread 1
Threads 1 - 4096
Grupo Thread 2
Threads 4097 - 8193
Grupo Thread N
Threads 8194 - N
Grupo Thread 1
Grupo Thread 2
Grupo Thread N
• 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
Execução das Conexões das Threads
MySQL Enterprise EditionComThread Pool
MySQL Community ServerSem Thread Pool
Comparativo com/sem Thread Pool
20x Melhor Escalabilidade comThread Pool
MySQL 5.5.16Oracle Linux 6.1, Unbreakable Kernel 2.6.322 sockets, 24 cores, 2 X 12-coreIntel(R) Xeon(R) X5670 2.93GHz CPUs72GB DDR3 RAM2 X LSI SCSI Disk (MR9261-8i) (597GB)
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)
Backups
Backups são até 3.5x mais rápidos do que mysqldump
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
Compressão do Backup
O tamanho do Backup é reduzido de 65% até 93%
MySQL Workbench
http://www.mysql.com/products/workbench/
… qual versão do MySQL rodar?
… servidores down?
… os sistemas escalarão?
… política de segurança, muda?
… problemas de performance?
… onde, quando, como “tunar”?
… queries lentas, custosas?
… problemas de replicação?
… produtividade de desenv./QA?
… posso recuperar?
Questões Difíceis, Soluções Reais
• MySQL Enterprise Scalability• MySQL Enterprise Monitor, Advisors, Query Analyzer• MySQL Consultative Support
• MySQL Enterprise Monitor, Query Analyzer
• MySQL Enterprise Monitor, Advisors, Query Analyzer• MySQL Consultative Support
• MySQL Enterprise Monitor, Replication Monitor• Oracle Premier 7x24 Support
• MySQL Enterprise Scalability• MySQL Enterprise Monitor, Advisors, Query Analyzer• MySQL Consultative Support
• Oracle Premier 7x24 Support • MySQL Enterprise Monitor, Advisors• MySQL Enterprise High Availability
• MySQL External Authentication• MySQL Enterprise Monitor, Security Advisor
• MySQL Workbench SE• MySQL Enterprise Monitor, Query Analyzer
• Oracle Premier 7x24 Support
• MySQL Enterprise Backup
Obrigado / Gracias!MySQL na América Latina ( En Español )
Kattia.Fallas@Oracle.comManuel.Contreras@Oracle.comPedro.Andrade@Oracle.com
@mysql_espanol@mysql_br@mysql ( Official English )
Recommended