Desenvolvendo serviços escaláveis e de alta performance com MySQL

701 visualizações

Publicada em

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

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

Sem downloads
Visualizações
Visualizações totais
701
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
19
Comentários
0
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Desenvolvendo serviços escaláveis e de alta performance com MySQL

  1. 1. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.1 Airton Lastori airton.lastori@oracle.com mar-2015 Desenvolvendo Serviços Escaláveis e de Alta Performance com MySQL
  2. 2. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.2 Apresentador Airton Lastori Consultor MySQL, Oracle
  3. 3. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.3 MySQL Central @ Oracle Open World 2014 Alguns cases apresentados...  [slides] oracle.com/openworld/mysql
  4. 4. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.4 Agenda  Alta Performance com MySQL  Arquitetura e Topologias  Métodos de Acesso e API’s  Instalação e Exemplos  Aprenda Mais  Perguntas?
  5. 5. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.5 Agenda  Alta Performance com MySQL  Arquitetura e Topologias  Métodos de Acesso e API’s  Instalação e Exemplos  Aprenda Mais  Perguntas?
  6. 6. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.6 Alta Performance Por que há demanda? Suporte à “Big Data” e IoT Velocidade de escrita Escalabilidade horizontal Disponível 24x7 Facilidade de uso
  7. 7. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.7 Fonte: http://db-engines.com/en/ranking_trend (dezembro/14)
  8. 8. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.8
  9. 9. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.9 Resposta tecnológica: NoSQL Fonte: 451 Group, 2012
  10. 10. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.10 Resposta tecnológica: NoSQL Usos comuns: usado como cache para armazenamento de dados requisitados frequentemente, especialmente em aplicações web. Pontos Fortes: escalabilidade, armazenamento e busca de dados muito rápidos; dados não estruturados e parcialmente estruturados. Pontos Fracos: usualmente todos os dados tem que caber em memória rápida; falta de recursos para Queries complexas.
  11. 11. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.11 Uso Tradicional do Memcached 2 níveis de hashing Memcache httpd memcached memcached memcached chave memcache PHP/Perl/Java friends:12389 Usa chave para encontrar o dado (valor) VALUE friends:12389 0 31rn 101, 11009, 11150, 55881, 77798 rn
  12. 12. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.12 Não encontra valor no cache: sincronização 1/2 aplicação é responsável por buscar no Banco de Dados Memcache httpd memcached memcached memcached PHP/Perl/Java Não há valor para chave informada MySQL Slave
  13. 13. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.13 Não encontra valor no cache: sincronização 2/2 aplicação é responsável por sincronizar Memcache httpd memcached memcached memcached PHP/Perl/Java Armazenar valor com chave/valor informados Processo similar ocorre quando há escrita no MySQL Master: aplicação precisa sincronizar com cache.
  14. 14. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.14 Spoiler! MySQL já tem integração nativa com Memcached Não perca tempo com a lógica de sincronização!
  15. 15. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.15 Resposta tecnológica: NoSQL Usos comuns: aplicações web ou outras que requerem melhor performance e escalabilidade sem que seja necessários definir esquemas relacionais. Pontos Fortes: armazenamento persistente com recursos de escalabilidade tais como sharding nativo; melhor suporte a Queries que apenas chave-valor. Pontos Fracos: falta de recursos para Queries complexas.
  16. 16. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.16 Resposta tecnológica: NoSQL Usos comuns: aplicações científicas ou de tradução direta do paradigma orientado a objetos. Pontos Fortes: performance e mapeamento natural de objetos. Pontos Fracos: falta de recursos para realizar Queries complexas.
  17. 17. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.17 Resposta tecnológica: NoSQL Usos comuns: log em tempo-real para aplicações web ou financeiras. Pontos Fortes: throughput muito alto para Big Data (de Terabytes a Petabytes); suporte excelente a particionamento e acesso aleatório de leitura-escrita. Pontos Fracos: APIs de baixo-nível, falta de recursos para realizar Queries complexas, alta latência na resposta de Queries.
  18. 18. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.18 Requisitos NoSQL O que a solução deve cumprir? Alta Performance alto throughput leitura/escrita Escalabilidade massiva auto-sharding Facilidade de uso acesso simples (APIs) manutenção simples modelo de dados flexível, fácil de evoluir Alta Disponibilidade tolerância a falhas Performance Escalabilidade Facilidade de Uso Disponibilidade ~24x7
  19. 19. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.19 Scale Out • Adicionar mais servidores para aumentar performance • MySQL adota esta abordagem em sistemas altamente escaláveis em hardware commodity (Intel / AMD) Scale Up • Trocar por hardware mais poderoso, adicionar memória, CPU • Outras soluções normalmente usam hardware proprietário (SMP) Escalabilidade: horizontal vs vertical É possível combinar as duas abordagens
  20. 20. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.20 2008 até 4 CPU MySQL 5.0 MySQL AB até 16 CPU MySQL 5.1 Sun até 32 CPU MySQL 5.5 Oracle até 48 CPU MySQL 5.6 Evolução da escalabilidade do MySQL 2009 2010 2013 Use InnoDB para usufruir melhor de hardwares modernos.
  21. 21. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.21 MySQL 5.5.28 MySQL 5.6.7 MySQL 5.6 SysBench Benchmarks 234% Ganho de Performance 0 2.000 4.000 6.000 8.000 10.000 12.000 14.000 16.000 18.000 32 64 128 256 512 TransactionsperSecond Connections MySQL 5.6 vs. 5.5 - Read Only (Linux) Oracle Linux 6 Intel(R) Xeon(R) E7540 x86_64 MySQL leveraging: - 48 of 96 available CPU threads - 2 GHz, 512GB RAM
  22. 22. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.22 MySQL 5.5.28 MySQL 5.6.7 MySQL 5.6 SysBench Benchmarks 151% Ganho Performance 0 2.000 4.000 6.000 8.000 10.000 12.000 32 64 128 256 512 TransactionsperSecond Connections MySQL 5.6 vs. 5.5 - Read Write (Linux) Oracle Linux 6 Intel(R) Xeon(R) E7540 x86_64 MySQL leveraging: - 48 of 96 available CPU threads - 2 GHz, 512GB RAM
  23. 23. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.23 60x Melhor Escalabilidade comThread Pool MySQL 5.6.11 Oracle Linux 6.3, Unbreakable Kernel 2.6.32 4 sockets, 24 cores, 48 Threads Intel(R) Xeon(R) E7540 2GHz CPUs 512GB DDR3 RAM Thread Pool habilitado/desabilitado
  24. 24. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.24 18x Melhor Escalabilidade com Thread Pool Thread Pool habilitado/desabilitado MySQL 5.6.11 Oracle Linux 6.3, Unbreakable Kernel 2.6.32 4 sockets, 24 cores, 48 Threads Intel(R) Xeon(R) E7540 2GHz CPUs 512GB DDR3 RAM
  25. 25. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.25 Escalabilidade horizontal Replicação MySQL Particionamento Funcional Data Sharding 3 Abordagens para escalar o MySQL
  26. 26. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.26 Escalabilidade horizontal • método mais simples e mais comum • indicado para aplicações de LEITURA intensiva • problemas com cache duplicado em aplicações com datasets grandes Replicação MySQL • dividir a carga em múltiplos nós, com responsabilidades distintas • os nós podem ter redundância via replicação para alta-disponibilidade • normalmente não é transparente para a aplicação e também recorre ao scale up para cada database funcional, o que impõe limites Particionamento Funcional • método de maior sucesso para escalar aplicações MySQL de grande porte hoje • dados compartilhados em tabelas/caches globais, SOA • difícil de adaptar aplicações legadas Data Sharding
  27. 27. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.27 Aplicação Replicação MySQL: como escalar 1/2 Master Slave • Divisão de leituras e escritas (R/W Split) • Modelo assíncrono (padrão) • Modelo semi-síncrono (a partir da versão 5.5) Escritas & Leituras Leituras
  28. 28. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.28 Replicação MySQL: como escalar 2/2 Leituras Leituras • Escreva para 1 Master • Leia de vários Slaves, adicione mais quando necessário • Perfeito para aplicações de leitura intensiva Aplicação Replicação MySQL Load Balancer Master Slave Slave Escritas & Leituras
  29. 29. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.29 Benefício-chave • O MySQL permite economias significativas com custos de hardware, adicionando novos servidores commodity de acordo com o necessário e de maneira incremental Por que MySQL? • Capacidade de escalar conforme necessidade e de maneira incremental • Baixos custos e flexibilidade Wikipedia mysql.com/customers Caso de sucesso
  30. 30. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.30 Escalabilidade horizontal • método mais simples e mais comum • indicado para aplicações de LEITURA intensiva • problemas com cache duplicado em aplicações com datasets grandes Replicação MySQL • dividir a carga em múltiplos nós, com responsabilidades distintas • os nós podem ter redundância via replicação para alta-disponibilidade • normalmente não é transparente para a aplicação e também recorre ao scale up para cada database funcional, o que impõe limites Particionamento Funcional • método de maior sucesso para escalar aplicações MySQL de grande porte hoje • dados compartilhados em tabelas/caches globais, SOA • difícil de adaptar aplicações legadas Data Sharding
  31. 31. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.31 Data Node 1 Data Node 2 Data Node 3 Data Node 4 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  32. 32. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.32 Data Node 1 Data Node 2 F1 Data Node 3 Data Node 4 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  33. 33. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.33 Data Node 1 Data Node 2 F1 F1 Data Node 3 Data Node 4 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  34. 34. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.34 Data Node 1 Data Node 2 F1 F3 F1 Data Node 3 Data Node 4 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  35. 35. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.35 Data Node 1 Data Node 2 F1 F3 F3 F1 Data Node 3 Data Node 4 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  36. 36. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.36 Data Node 1 Data Node 2 F1 F3 F3 F1 Data Node 3 Data Node 4 F2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  37. 37. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.37 Data Node 1 Data Node 2 F1 F3 F3 F1 Data Node 3 Data Node 4 F2 F2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  38. 38. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.38 Data Node 1 Data Node 2 F1 F3 F3 F1 Data Node 3 Data Node 4 F2 F4 F2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  39. 39. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.39 Data Node 1 Data Node 2 F1 F3 F3 F1 Data Node 3 Data Node 4 F2 F4 F4 F2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  40. 40. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.40 Data Node 1 Data Node 2 F3 F1 Data Node 3 Data Node 4 F2 F4 F4 F2 Node Group 1 Table T1 P2 P3 P4 P1 F1 F3 Escalabilidade horizontal: Data Sharding
  41. 41. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.41 Data Node 1 Data Node 2 F1 F3 F3 F1 Data Node 3 Data Node 4 F2 F4 F4 F2 Node Group 1 Node Group 2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  42. 42. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.42 Data Node 1 Data Node 2 F1 F3 F3 F1 Data Node 3 Data Node 4 F2 F4 F4 F2 Node Group 1 Node Group 2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  43. 43. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.43 Data Node 1 Data Node 2 F1 F3 F3 F1 Data Node 3 Data Node 4 F2 F4 F4 F2 Node Group 1 Node Group 2 Table T1 P2 P3 P4 P1 Escalabilidade horizontal: Data Sharding
  44. 44. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.44 Benefícios-chave • Propriedades ACID • Solução comprovada por muitas empresas ao longo de anos • Por que MySQL? • Escalabilidade virtualmente infinita: hoje com 20 milhões de usuários, 1 bilhão de Notes e 2 bilhões de arquivos (fotos, documentos etc) • Flexibilidade para crescer de maneira incremental e com baixos custos Caso de sucesso Evernote blog.evernote.com/tech/2012/02/23/whysql
  45. 45. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.45 Ainda há espaço para SGBDs relacionais Usos comuns: análise de dados históricos, data warehousing, business intelligence. Pontos Fortes: suporte a Queries rápidas especialmente em datasets grandes e compressão. Pontos Fracos: não adequado para transações, importações e exportações rápidas; utilização de computação pesada.
  46. 46. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.46 Ainda há espaço para SGBDs relacionais Usos comuns: processamento de transações, aplicações interativas transacionais Pontos Fortes: formas facilitadas de manipular registros; consistência; tecnologia comprovadamente robusta. Pontos Fracos: problemas de escalabilidade, especialmente para Queries contra grande volume de dados (dezenas de Terabytes).
  47. 47. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.47 NewSQL
  48. 48. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.48 Requisitos NewSQL Relacional + NoSQL Não há solução única para todas situações. Não há bala de prata. Combine e supere expectativas! Performance Escalabilidade Facilidade de Uso Disponibilidade ~24x7 SQL/Joins Transações ACID
  49. 49. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.49 Enterprise Management Services and Utilities Backup & Recovery Monitor Workbench Utilities Connection Pool, SQL Interface, Parser, Optimizer, Caches Clients & Connectors Native C API, JDBC, ODBC, .Net, PHP, Ruby, Python, VB, Perl mysqld Clients and Apps Arquitetura plugável do MySQL Storage Engines InnoDB, MyISAM, Memory, Archive, Cluster (NDB API), etc… Filesystems, Files & Logs Data, Index, Logs…
  50. 50. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.50 Memcached com Persistência no InnoDB Método transparente para persistir os dados em memória volátil Memcached plug-in no mysqld , mapeado à API nativa do InnoDB Shared process para baixa latência Acesso chave-valor ao InnoDB Via Memcached API Usa clients Memcached existentes Sem SQL parsing Acesso SQL e NotOnlySQL Operações chave-valor mas também queries SQL, JOINs, FKs, etc. SQL (MySQL Client) InnoDB Storage Engine MySQL Server Memcached plugin Application NoSQL (Memcached Prot.) mysqld Memcached + InnoDB MySQL 5.6 Mais Flexibilidade e Simplicidade http://dev.mysql.com/doc/refman/5.6/en/innodb-memcached.html
  51. 51. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.51 MySQL Cluster • Arquitetura shared-nothing in-memory parallel • Modelo relacional ACID, SQL Carrier Grade Database • 99.999% de disponibilidade • Self-healing, failover abaixo de 1 segundoAlta Disponibilidade • Performance em tempo real para altas cargas • Latência baixa e preditiva Alta Performance • Elasticidade, crescimento incremental • Escalabilidade linear, distribuition aware Escalabilidade • Open Source, hardware commodity • APIs NoSQL (C++, Java, Memcached, Node.js) Open Source
  52. 52. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.52 Alguns usuários MySQL Cluster
  53. 53. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.54 Performance do MySQL Cluster  8 Servidores Intel Commodity – 2 x 6-core processors 2.93GHz – x5670 processors (24 threads) – 48GB RAM  Rede Infiniband  flexAsynch benchmark (NDB API) 0 200 400 600 800 1.000 1.200 2 4 8 Millions Number of Data Nodes SELECT Queries per Minute 0 50 100 150 4 8 Millions Number of Data Nodes UPDATE Queries per Minute Performance a Escalabilidade Facilidade de Uso Disponibilidade ~24x7 SQL/Joins Transações ACID
  54. 54. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.55 MySQL Cluster 7.2: 1.2 Billion UPDATEs por Minuto  NoSQL C++ API, flexaSynch benchmark  30 x Intel E5-2600 Intel Servers, 2 socket, 64GB  ACID Transactions, with Synchronous Replication http://www.mysql.com/why- mysql/white-papers/mysql-cluster- benchmarks-1-billion-writes-per- minute/ 0 5 10 15 20 25 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 MillionsofUPDATEsper Second MySQL Cluster Data Nodes
  55. 55. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.56 MySQL Cluster 7.3: Connection Thread Scalability  DBT2 Benchmark – Single MySQL Server – Single Data Node – 128 client connections 8.5x
  56. 56. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.57 MySQL Cluster 7.2 Join Performance  Web-Based Content Management System – JOINs 11-tables, 33.5k rows – Returns 2k rows, 19 columns per row 0 10 20 30 40 50 60 70 80 90 100 MySQL Cluster 7.1 MySQL Cluster 7.2 Query Execution Time Seconds 87.23 seconds 1.26 seconds 70x Faster
  57. 57. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.58 Agenda  Alta Performance com MySQL  Arquitetura e Topologias  Métodos de Acesso e API’s  Instalação e Exemplos  Aprenda Mais  Perguntas?
  58. 58. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.59 Cluster Data Nodes NDB NDB Connection Pool, SQL Interface, Parser, Optimizer, Caches Enterprise Management Services and Utilities Backup & Recovery Monitor Workbench Utilities Clients & Connectors Native C API, JDBC, ODBC, .Net, PHP, Ruby, Python, VB, Perl Arquitetura MySQL com NDB Cluster Storage Engines InnoDB, MyISAM, Memory, Archive, Cluster (NDB API), etc… Filesystems, Files & Logs Data, Index, Logs… mysqld Clients and Apps ndbd mgm_ndbd Management
  59. 59. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.60 MySQL Cluster Data Nodes Data Layer Clients Management Arquitetura MySQL Cluster Performance a Escalabilidade Facilidade de Uso ? Disponibilidade ~24x7 SQL/Joins ? Transações ACID ? Application Layer
  60. 60. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.61 MySQL Cluster Data Nodes Data Layer Clients Application Layer Management Arquitetura MySQL Cluster Performance a Escalabilidade Facilidade de Uso a Disponibilidade ~24x7 SQL/Joins a Transações ACID a NDB
  61. 61. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.62 MySQL Cluster Data Nodes Data Layer Clients Application Layer Management Arquitetura MySQL Cluster Performance a Escalabilidade ? Facilidade de Uso a Disponibilidade ~24x7 SQL/Joins a Transações ACID a Table T1 P2 P3 P4 P1P1 P3 P2 P4
  62. 62. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.63 MySQL Cluster Data Nodes Data Layer Clients Application Layer Management Arquitetura MySQL Cluster Performance a Escalabilidade a Facilidade de Uso a Disponibilidade ~24x7 ? SQL/Joins a Transações ACID a P1 P3 P2 P4 Management
  63. 63. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.64 MySQL Cluster Data Nodes Data Layer Clients Application Layer Management Arquitetura MySQL Cluster Performance a Escalabilidade a Facilidade de Uso a Disponibilidade ~24x7 a SQL/Joins a Transações ACID a P1 P3 P2 P4 Management P3 P1 P4 P2 E mais: • Permite mudanças no schema sem interrupção de leituras ou escritas • Permite adicionar colunas e índices online
  64. 64. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.65 On-line Operations  Scale the cluster – Add all nodes – Remove MySQL Server nodes  Repartition tables  Upgrade / patch servers & OS  Upgrade / patch MySQL Cluster  Back-Up  Evolve the schema on-line, in real-time Performance a Escalabilidade a Facilidade de Uso a Disponibilidade ~24x7 a SQL/Joins a Transações ACID a
  65. 65. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.66 Cluster 1 Synchronous replication Cluster 2 InnoDB InnoDB InnoDB Asynchronous replication Flexibilidade da Topologia Replicação Replicação síncrona entre os grupos de nós para HA Geo-Replicação assíncrona entre nós remotos NDB para redundância geográfica Replicação assíncrona entre Storage Engines diferentes para aplicações especializadas como geração de relatórios
  66. 66. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.67 Agenda  Alta Performance com MySQL  Arquitetura e Topologias  Métodos de Acesso e API’s  Instalação e Exemplos  Aprenda Mais  Perguntas?
  67. 67. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.68 Os mesmos dados acessados simultaneamente através de interfaces SQL e NoSQL APIs de Acesso aos Dados
  68. 68. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.69 APIs Java: ClusterJ e JPA ClusterJ API de persistência Domain Object Model (DataMapper) JPA API de persistência padronizada pelo OpenJPA
  69. 69. Copyright © 2012, Oracle and/or its affiliates. All rights reserved.70 ClusterJ ou JPA? ClusterJ  Fácil de usar, parecida com Hibernate / JPA / JDO – Domain Object Model DataMapper pattern – Dados são representados por Objetos de Domínio – Objetos de Domínio não contém lógica de negócio (camada separada) – Objetos de Domínio são mapeados para tabelas no MySQL  Altíssima Performance  Construído sobre interface nativa Java – JNI adapter (ndbjtie) – Parte integral do MySQL Cluster – Mapeamento direto do MySQL Cluster API (NDB API) para Java  Limitação: não suporta relacionamentos – Olhe na API JPA / JDO para estes padrões de modelagem JPA  A interface JPA interface é compatível com o padrão Java Persistent API – Implementada como um plugin OpenJPA  Performance mais alta que o JDBC puro  Construída sobre ClusterJ e JDBC – Usa ClusterJ onde possível e reverte para JDBC para algumas operações  Adoção mais natural para profissionais Java  Facilita adoção do Cluster em aplicações web e aplicações legadas
  70. 70. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.71 API Memcached Baseado em chave-valor API simples e bastante popular entre desenvolvedores hash table com persistência em disco e alta performance Extensão do Memcached adiciona persistência em disco sem perda de performance evita rotinas de invalidação do cache, sincronismo manual Simplicidade e Flexibilidade evita camadas adicionais na infra- estrutura acesso ao dado via tabelas relacionais
  71. 71. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.72 Evolução rápida da aplicação: Novos tipos de dados adicionados constantemente Não requer tempo para estender o schema ou parada do servidor Não requer conhecimento de modelagem relacional Escalabilidade incremental Memcached é Schemaless
  72. 72. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.73 <town:maidenhead,SL6> key value <town:maidenhead,SL6> key value Key Value town:maidenhead SL6 generic table Application view SQL view Cluster & Memcached Schemaless set maidenhead 0 0 3 SL6 STORED get maidenhead VALUE maidenhead 0 3 SL6 END
  73. 73. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.74 <town:maidenhead,SL6> prefix key value <town:maidenhead,SL6> key value Prefix Table Key- col Val-col policy town: map.zip town code cluster Config tables town ... code ... maidenhead ... SL6 ... map.zip Application view SQL view Cluster & Memcached Schema configurável
  74. 74. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.75 Flexibilidade da Topologia API Memcached • Várias opções de implantação • Múltiplos Clusters • Pode manter Memcached server, se preferir
  75. 75. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.76 Node.js NoSQL API MySQL Cluster 7.3 Acesso JavaScript nativo ao MySQL Cluster JavaScript do início ao fim: browser > app > database Leituras e escritas de objetos JavaScript direto no MySQL Cluster Elimina transformações SQL Implementado como um módulo para node.js Integra completamente a API/library Cluster com a aplicação web Alta performance para aplicações e dados distribuídos V8 JavaScript Engine MySQL Cluster Node.js Module MySQL Cluster Data Nodes Clients
  76. 76. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.77 Qual API devo usar?
  77. 77. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.78 Agenda  Alta Performance com MySQL  Arquitetura e Topologias  Métodos de Acesso e API’s  Instalação e Exemplos  Aprenda Mais  Perguntas?
  78. 78. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.79 Auto-Installer MySQL Cluster 7.3 Rápida configuração Auto-discovery Otimização de acordo com a carga prevista Melhores práticas de implantação MySQL Cluster 7.3 e 7.4 Especifique a carga Auto- Discover Defina a TopologiaDeploy
  79. 79. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.80 MySQL Cluster Auto-Install  Simples de instalar e provisionar clusters multi-node  Complementa MySQL Cluster Manager no gerenciamento de cliclo de vida
  80. 80. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.81 1. Download MCM/Cluster package: edelivery.oracle.com: 2. Unzip 3. Execute o agent (usuário diferente de root), defina, crie e inicialize o Cluster com um comando! $> binmcmd –bootstrap MySQL Cluster Manager Para testes em uma única máquina
  81. 81. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.82 ClusterJ: como usar • Defina Table para Java Mapping • Defina Connection para o Cluster • Crie Session • Comandos: Create, Update, Delete, Find by primary key • Query (SELECT) • O que achou da PERFORMANCE?
  82. 82. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.83 ClusterJ Gera Classes @PersistenceCapable(table="employee") public interface Employee { long getId(); void setId(int id); @Column(name="full_name") String getName(); void setName(String value); int getSalary(); void setSalary(int value); Integer getAge(); void setAge(Integer value); }
  83. 83. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.84 ClusterJ Base Class public class Employee extends DynamicObject { public String table() { return "employee"; long getId() { return (Long)get(0); } void setId(long value) { set(0, value); } ... // other fields and behavior }
  84. 84. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.85 Exemplo: ClusterJ 1/3 Session session; void getSession() { session = sessionFactory.getSession(); } Employee createEmployee(long id, String name, int salary, int age) { Employee employee = session.newInstance(Employee.class); employee.setId(id); employee.setName(name); employee.setSalary(salary); employee.setAge(age); session.persist(employee); return employee; }
  85. 85. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.86 Exemplo: ClusterJ 2/3 Employee findEmployee(long id) { Employee employee = session.find(Employee.class, id); return employee; } void updateSalary(long id, int salary) { Employee employee = findEmployee(id); employee.setSalary(salary); session.updatePersistent(employee); }
  86. 86. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.87 Exemplo: ClusterJ 3/3 Query QueryDomainType qemp = builder.createQueryDefinition(Employee.class) ; Predicate geAge = qemp.get("age") .greaterEqual(qemp.param("ageFloor")); Predicate leSalary = qemp.get("salary") .lessEqual(qemp.param("salaryCap")); qemp.where(geAge.and(leSalary)); Query query = session.createQuery(qemp) ; query.setOrdering(Query.DESCENDING, "age"); query.setParameter("ageFloor",33); query.setParameter("salaryCap", 44000); List<Employee> results = query.getResultList() ;
  87. 87. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.88 Mais Exemplos ClusterJ e ClusterJPA Whitepaper: MySQL Cluster Connector for Java August 2012 mysql.com/why-mysql/white-papers
  88. 88. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.89 Exemplos Memcached API Ondemand Webinar: NoSQL Memcached API for MySQL Cluster 22 August 2012 mysql.com/news-and-events/on-demand-webinars/display-od-723.html
  89. 89. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.90 Exemplos JavaScript / Node.js API Blog: Tutorial Getting Started with the NoSQL JavaScript / Node.js API for MySQL Cluster 10 June 2012 blogs.oracle.com/MySQL/entry/tutorial_getting_started_with_the
  90. 90. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.91 Agenda  Alta Performance com MySQL  Arquitetura e Topologias  Métodos de Acesso e API’s  Instalação e Exemplos  Aprenda Mais  Perguntas?
  91. 91. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.92 Mais sobre como começar com MySQL Cluster Whitepaper: MySQL Cluster Evaluation Guide February 2015 mysql.com/why-mysql/white-papers
  92. 92. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.93 Comece hoje Auto-Install ClusterMySQL Cluster 7.4 Download dev.mysql.com/download s/cluster/ Developer Zone dev.mysql.com
  93. 93. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.96 Sumário  As aplicações Web demandam mais dos bancos de dados nos dias de hoje.  São exigidos mais performance, escalabilidade horizontal, APIs e padões de acesso simples e poderosos.  O MySQL cumpre estes requisitos e ainda mantém os benefícios de um SGBD relacional.
  94. 94. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.97 @MySQLBR meetup.com/MySQL-BRfacebook.com/MySQLBR pt.planet.mysql.com Estes slides e mais novidades…
  95. 95. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.98 Perguntas?
  96. 96. Copyright © 2015, Oracle and/or its affiliates. All rights reserved.99 @MySQLBR meetup.com/MySQL-BR facebook.com/MySQLBR Obrigado!

×