SlideShare uma empresa Scribd logo
1 de 39
Baixar para ler offline
Arquitetando sua aplicação de
nova geração com MySQL 5.7
MySQL
Mathias Brem
http://www.mathiasbrem.com.br
Outubro, 2015
Agenda
●
Introdução ( 30 minutos )
●
Aplicações de Nova Geração
●
Arquitetura do Banco de Dados
●
Arquitetura Lambda
●
Desenvolvimento Ágil
●
SQL / NoSQL / NewSQL
●
MySQL ( 1 Hora )
●
Por que? Quando ?
●
Arquitetura do MySQL
●
Alta Disponibilidade / Escalabilidade
●
Flexibilidade e Integração
●
Virtualização
●
Cloud
●
Cases ( Pinterest, Flicker, Facebook, Twitter, Booking, Linkedin )
Aplicações de Nova Geração
●
IaaS ( Infrastructure as a Service, AWS )
●
Desenvolvimento Ágil ( Scrum, Git, Docker )
●
Usabilidade ( Bootstrap, AngularJS, Mobile )
●
Escalabilidade ( 1,10,100,100000, infinito e além )
●
Integração com tudo e todos ( JSON, WebService, IoT )
●
Disponibilidade ( Tempo é dinheiro, parar nunca! Crescer
sempre! )
●
Startups e gigantes todos usam, faça o mesmo!
Arquitetura de Banco de Dados
●
OLTP ( Transacional )
●
OLAP ( Analítico / Relatório / Consulta )
●
O que se preocupar? 4 pontos
– Segurança
– Performance
– Integridade
– Disponibilidade
Arquitetura Lambda
Arquitetura Lambda
Speed Layer
Database In Memory
Transaction Layer
OLTP Database
History Layer
Analytics
24 horas
1 Ano
Tudo
Desenvolvimento Ágil
●
Metodologia (Scrum )
●
Frameworks ( Bootstrap, Laravel, PhoneGap, XXXXX... )
●
Versionamento ( Git / Subversion )
●
Ambiente ( Docker / Vangrant )
●
Infraestrutura ( Amazon AWS )
●
Open Source ( Linux, MySQL, Redis, MongoDB, Cassandra,
Neo4j, Apache, Ngix, PHP, Python, Java, Hadoop, Spark,
NodeJS, Raspberry…...OMG!!!! )
●
Muitas mudanças em produção sem interrupção
●
Provisionamento de novos ambientes constantemente
●
Automatização, facilidade, agilidade
DEV
v1
HOMOLOG
DEV
v34
DEV
v35
DEV
v36
PROD
SQL / NoSQL / NewSQL
Schemaless / NoSQL
●
Agilizar o desenvolvimento e modificações
●
Fazer a coisa certa com a ferramenta certa
●
Performance
●
(You no have power here!!!)
●
(Well….Now you have power here!!!)
●
Um pouco de modinha também
●
Que tal misturar os dois na dose certa?
Schemaless / NoSQL
{
“modelo” : “Porsche 911”,
“ano”: 2015,
“cor”: “prata”
}
MODELO ANO COR
Porsche 911 2015 prata
{
“modelo” : “Porsche 911”,
“ano”: 2015,
“cor”: “prata”
“quilometragem” : 2000
}
NoSQL / Document
SQL
Schemaless / NoSQL / NewSQL
ID MODELO ANO JSONCOL XMLCOL
1 Porsche 911 2015 {“id” : 1,
“modelo” :
“Porsche 911”,
“ano”:
2015,
“cor”:
“prata”
“quilometrag
em” : 2000
}
<id>1</id>
<modelo>
Porsche 911
</modelo>
<ano>2015</ano>
<cor>prata</cor>
<quilometragem>2000<
/quilometragem>
NewSQL
mysql> SELECT * FROM carros WHERE JSONCOL->'$.id'= 1;
Ou
mysql> SELECT * FROM carros WHERE ID= 1;
Quando e Porque o MySQL?
●
Internet
●
Elevado número de sessões / requisições simultâneas
●
Armazenar (dados)
●
Popular / Comunidade Forte / Parrudo e Confiável
●
Simples / Multiplataforma
●
Muito Flexível ( canivete suíço, integração com shell )
●
Em constante atualização e desenvolvimento
Arquitetura do MySQL
Connectors ( Java, C, PHP, .NET, Python, NodeJS, Ruby... )
SQL
Interface
Parser
Caches
& Buffers
Storage Engine ( InnoDB, MyISAM, NDB, XtraDB, TokuDB )
Binlog Global Files
Storage
Engine
Files
Storage
Engine
Memory
App ( Mobile, WebService, E-commerce, CRM, Portal )
S.O ( Linux, Unix )
AWS EC2
Optimizer
Connection Pool
MySQL
Storage Engine
●
InnoDB ( OLTP )
●
MyISAM ( OLAP )
●
NDB ( In Memory )
●
TokuDB
●
CSV
●
Memory
●
Cassandra Storage Engine
●
Backhole
●
Archive
●
OQGRAPH
●
SphinxSE
●
Spider
●
Connect
●
Deep
●
Faça a sua, compile o seu próprio InnoDB….
Open source é assim!
Storage Engine
Binlog Global Files
Storage
Engine
Files
Storage
Engine
Memory
S.O ( Linux, Unix )
Alta Disponibilidade / Escalabilidade
●
Replicação
●
Replicação com Sharding ( MySQL Fabric, HA
Proxy, MySQL Proxy, MaxScale, MySQL Router )
●
MySQL Cluster ( NDB )
●
Galera Cluster ( InnoDB )
●
( DRBD / Replicação de Storage / etc... )
Sharding
Master 1
Read / Write
Master 2
Read / Write
APP
Slave 1
Read
Slave (N)
Read
● Load Balancer
● Lógica da aplicação
● MySQL Fabric
● MySQL Router….
● (N)
● Essa parte é onde fica a treta da coisa toda...
APP
MySQL MySQL
Virtual IP
Replicação
Master
Read / Write
Slave
Read
logbin relay-log
SIMPLES E MUITOOO FLEXÍVEL!!!!!
Isso é o básico, com essa mesma lógica da
p/ se fazer muitas outras coisas! Veja o caso
do “Booking.com” http://blog.booking.com
Replicação
Master
Read / Write
Slave 1
Read
Slave 2
Read
Slave (N)
Read
APP BI / Analytics
Integração NFE
Sharding
Master 1
Read / Write
Master 2
Read / Write
APP
Slave 1
Read
Slave (N)
Read
● Load Balancer
● Lógica da aplicação ( IF XX THEN …. )
● MySQL Fabric
● MySQL Router….
● Essa é parte onde fica a treta da coisa toda….
MySQL Cluster ( Network Database )
NDB
Data Node1
NDB
Data Node2
NDB
Data Node(n)
NDB
Data Node3
Dados
Connectors ( Java, C, PHP, .NET... )
SQL
Interface
Parser
Caches
& Buffers
Storage Engine ( InnoDB, MyISAM, NDB)
Binlog
Global
Files
Storage
Engine
Files
Storage
Engine
Memory
APP
S.O ( Linux, Unix )
AWS EC2
Optimizer
Connection Pool
NDB Cluster
NDB
Management
Galera Replication
Master
Read / Write
Master
Read / Write
Master
Read / Write
Master
Read / Write
Connectors ( Java, C, PHP, .NET, Python, NodeJS, Ruby….. )
App ( Mobile, WebService, E-commerce, CRM, Portal )
InnoDB InnoDB InnoDB InnoDB
Galera Cluster
Alta Disponibilidade via HW/SW/S.O
Servidor 1
DISCOS
STORAGE
Servidor 2
DISCOS
STORAGE
Servidor 1 Servidor 2
STORAGE
Flexibilidade de Integração
Truques / Canivete
●
Logbin
●
Shell
●
JSON / XML
●
CSV
●
TEXT FILE
●
ODBC
●
Hadoop Applier
●
Linux…Python, Java ( Faça suas rotinas )
Virtualização
Virtualização
●
Template Oracle VM
●
I/O e Networking
●
Usar backup de vm como backup de
database… para com essa bobagem! (não
faça isso)
Container's
S.O ( Linux, Unix )
AWS EC2 / HW Próprio / Outros
Docker ( Container Daemon )
IMG
MySQL
IMG
PHP
IMG
RUBY
IMG
(N)...
http://www.alastori.com.br/2015/03/mysql-no-docker.html
Cloud
●
AWS
●
Docker / Container
●
Criatividade, isso conta na arquitetura, ainda mais na
cloud e faz diferença $$$
●
Veja como o MySQL já foi adequado ao AWS e as dicas
existentes, a equipe da Oracle trouxe novidades na
5.7, até backup para o S3 ele faz… Dicas de otimização
no EC2 e mais! Não se esqueça do
RDS(MySQL,MariaDB,Aurora)
●
IaaS, PaaS, DBaaS, SaaS
Cloud
●
IaaS, PaaS, DBaaS, SaaS
●
RDS ( Para casos simples, para quem está
começando )
●
EC2 ( Mais recomendado para montar o seu
servidor e gerenciar totalmente o banco de
dados, personalizar, etc... )
Cases
Arquitetando aplicações com MySQL 5.7

Mais conteúdo relacionado

Mais procurados

MySQL Enterprise (outubro-2011)
MySQL Enterprise (outubro-2011)MySQL Enterprise (outubro-2011)
MySQL Enterprise (outubro-2011)MySQL Brasil
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL Brasil
 
Replicação MySQL e PHP
Replicação MySQL e PHPReplicação MySQL e PHP
Replicação MySQL e PHPMySQL Brasil
 
Guia essencial para embarcar o MySQL em seu produto
Guia essencial para embarcar o MySQL em seu produtoGuia essencial para embarcar o MySQL em seu produto
Guia essencial para embarcar o MySQL em seu produtoMySQL Brasil
 
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...MySQL Brasil
 
Oracle Premier Support para MySQL
Oracle Premier Support para MySQLOracle Premier Support para MySQL
Oracle Premier Support para MySQLMySQL Brasil
 
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosBanco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosJoão Helis Bernardo
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Brasil
 
Alta-disponibilidade com MySQL
Alta-disponibilidade com MySQLAlta-disponibilidade com MySQL
Alta-disponibilidade com MySQLMySQL Brasil
 
Transformando seu datacenter em nuvem privada
Transformando seu datacenter em nuvem privadaTransformando seu datacenter em nuvem privada
Transformando seu datacenter em nuvem privadaJuscélio Reis
 
Visão geral do Windows Azure Backup
Visão geral do Windows Azure BackupVisão geral do Windows Azure Backup
Visão geral do Windows Azure BackupFabio Hara
 
Windows Azure Pack - Visão Geral
Windows Azure Pack - Visão GeralWindows Azure Pack - Visão Geral
Windows Azure Pack - Visão GeralFabio Hara
 
Azure Stack | Visão Geral
Azure Stack | Visão GeralAzure Stack | Visão Geral
Azure Stack | Visão GeralFabio Hara
 
MySQL é de graça?
MySQL é de graça?MySQL é de graça?
MySQL é de graça?MySQL Brasil
 
Aprimore seus servidores de arquivos com Azure File Sync
Aprimore seus servidores de arquivos com Azure File SyncAprimore seus servidores de arquivos com Azure File Sync
Aprimore seus servidores de arquivos com Azure File SyncInvent IT Solutions
 
Oracle - Visão Geral de IaaS e PaaS dos serviços de Nuvem da Oracle
Oracle - Visão Geral de IaaS e PaaS dos serviços de Nuvem da OracleOracle - Visão Geral de IaaS e PaaS dos serviços de Nuvem da Oracle
Oracle - Visão Geral de IaaS e PaaS dos serviços de Nuvem da OracleLuciano Condé
 
Arquiteturas de referência MySQL
Arquiteturas de referência MySQLArquiteturas de referência MySQL
Arquiteturas de referência MySQLMySQL Brasil
 

Mais procurados (20)

MySQL Enterprise (outubro-2011)
MySQL Enterprise (outubro-2011)MySQL Enterprise (outubro-2011)
MySQL Enterprise (outubro-2011)
 
MySQL no Windows
MySQL no WindowsMySQL no Windows
MySQL no Windows
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de Produto
 
Replicação MySQL e PHP
Replicação MySQL e PHPReplicação MySQL e PHP
Replicação MySQL e PHP
 
Guia essencial para embarcar o MySQL em seu produto
Guia essencial para embarcar o MySQL em seu produtoGuia essencial para embarcar o MySQL em seu produto
Guia essencial para embarcar o MySQL em seu produto
 
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
 
Oracle Premier Support para MySQL
Oracle Premier Support para MySQLOracle Premier Support para MySQL
Oracle Premier Support para MySQL
 
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosBanco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geral
 
Alta-disponibilidade com MySQL
Alta-disponibilidade com MySQLAlta-disponibilidade com MySQL
Alta-disponibilidade com MySQL
 
Transformando seu datacenter em nuvem privada
Transformando seu datacenter em nuvem privadaTransformando seu datacenter em nuvem privada
Transformando seu datacenter em nuvem privada
 
Visão geral do Windows Azure Backup
Visão geral do Windows Azure BackupVisão geral do Windows Azure Backup
Visão geral do Windows Azure Backup
 
Windows Azure Pack - Visão Geral
Windows Azure Pack - Visão GeralWindows Azure Pack - Visão Geral
Windows Azure Pack - Visão Geral
 
SQL over SMB3
SQL over SMB3SQL over SMB3
SQL over SMB3
 
NoSQL: Perdas e Ganhos
NoSQL: Perdas e GanhosNoSQL: Perdas e Ganhos
NoSQL: Perdas e Ganhos
 
Azure Stack | Visão Geral
Azure Stack | Visão GeralAzure Stack | Visão Geral
Azure Stack | Visão Geral
 
MySQL é de graça?
MySQL é de graça?MySQL é de graça?
MySQL é de graça?
 
Aprimore seus servidores de arquivos com Azure File Sync
Aprimore seus servidores de arquivos com Azure File SyncAprimore seus servidores de arquivos com Azure File Sync
Aprimore seus servidores de arquivos com Azure File Sync
 
Oracle - Visão Geral de IaaS e PaaS dos serviços de Nuvem da Oracle
Oracle - Visão Geral de IaaS e PaaS dos serviços de Nuvem da OracleOracle - Visão Geral de IaaS e PaaS dos serviços de Nuvem da Oracle
Oracle - Visão Geral de IaaS e PaaS dos serviços de Nuvem da Oracle
 
Arquiteturas de referência MySQL
Arquiteturas de referência MySQLArquiteturas de referência MySQL
Arquiteturas de referência MySQL
 

Semelhante a Arquitetando aplicações com MySQL 5.7

Escalabilidade, as modas, (No)SQL
Escalabilidade, as modas, (No)SQLEscalabilidade, as modas, (No)SQL
Escalabilidade, as modas, (No)SQLFernando Ike
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Ambiente Livre
 
[DTC21] André Marques - Jornada do Engenheiro de Dados
[DTC21] André Marques - Jornada do Engenheiro de Dados[DTC21] André Marques - Jornada do Engenheiro de Dados
[DTC21] André Marques - Jornada do Engenheiro de DadosDeep Tech 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
 
Tecnologias de bancos de dados no Azure: conhecendo as opções relacionais e N...
Tecnologias de bancos de dados no Azure: conhecendo as opções relacionais e N...Tecnologias de bancos de dados no Azure: conhecendo as opções relacionais e N...
Tecnologias de bancos de dados no Azure: conhecendo as opções relacionais e N...Renato Groff
 
MySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicaçõesMySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicaçõesMySQL Brasil
 
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGoogle AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGustavo Concon
 
TDC SP 2015 - Criando aplicações ASP.NET no Mac
TDC SP 2015 - Criando aplicações ASP.NET no MacTDC SP 2015 - Criando aplicações ASP.NET no Mac
TDC SP 2015 - Criando aplicações ASP.NET no MacAndre Baltieri
 
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
 
Implementando Cache no Mulesoft Flow usando Redis
Implementando Cache no Mulesoft Flow usando RedisImplementando Cache no Mulesoft Flow usando Redis
Implementando Cache no Mulesoft Flow usando RedisRenato de Oliveira
 
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
 
Estaleiro o uso de kubernetes no serpro
Estaleiro   o uso de kubernetes no serproEstaleiro   o uso de kubernetes no serpro
Estaleiro o uso de kubernetes no serproRicardo Katz
 
Amazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e BeneficiosAmazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e BeneficiosYros
 
Apresentação Corporativa Kcs It 2010
Apresentação Corporativa Kcs It 2010Apresentação Corporativa Kcs It 2010
Apresentação Corporativa Kcs It 2010pfernandes83
 
Tendências do Mercado de Internet
Tendências do Mercado de InternetTendências do Mercado de Internet
Tendências do Mercado de InternetVanessa Oliveira
 

Semelhante a Arquitetando aplicações com MySQL 5.7 (20)

Escalabilidade, as modas, (No)SQL
Escalabilidade, as modas, (No)SQLEscalabilidade, as modas, (No)SQL
Escalabilidade, as modas, (No)SQL
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
[DTC21] André Marques - Jornada do Engenheiro de Dados
[DTC21] André Marques - Jornada do Engenheiro de Dados[DTC21] André Marques - Jornada do Engenheiro de Dados
[DTC21] André Marques - Jornada do Engenheiro de Dados
 
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
 
Tecnologias de bancos de dados no Azure: conhecendo as opções relacionais e N...
Tecnologias de bancos de dados no Azure: conhecendo as opções relacionais e N...Tecnologias de bancos de dados no Azure: conhecendo as opções relacionais e N...
Tecnologias de bancos de dados no Azure: conhecendo as opções relacionais e N...
 
MySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicaçõesMySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicações
 
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGoogle AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
 
TDC SP 2015 - Criando aplicações ASP.NET no Mac
TDC SP 2015 - Criando aplicações ASP.NET no MacTDC SP 2015 - Criando aplicações ASP.NET no Mac
TDC SP 2015 - Criando aplicações ASP.NET no Mac
 
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
 
Implementando Cache no Mulesoft Flow usando Redis
Implementando Cache no Mulesoft Flow usando RedisImplementando Cache no Mulesoft Flow usando Redis
Implementando Cache no Mulesoft Flow usando Redis
 
Mule Meetup Cache Redis
Mule Meetup Cache RedisMule Meetup Cache Redis
Mule Meetup Cache Redis
 
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
 
Keynote AWS Roadshow Campinas 2013
Keynote AWS Roadshow Campinas 2013Keynote AWS Roadshow Campinas 2013
Keynote AWS Roadshow Campinas 2013
 
Estaleiro o uso de kubernetes no serpro
Estaleiro   o uso de kubernetes no serproEstaleiro   o uso de kubernetes no serpro
Estaleiro o uso de kubernetes no serpro
 
Amazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e BeneficiosAmazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e Beneficios
 
Apresentação Corporativa Kcs It 2010
Apresentação Corporativa Kcs It 2010Apresentação Corporativa Kcs It 2010
Apresentação Corporativa Kcs It 2010
 
What isdrupal
What isdrupalWhat isdrupal
What isdrupal
 
Cópia de what isdrupal
Cópia de what isdrupalCópia de what isdrupal
Cópia de what isdrupal
 
Tendências do Mercado de Internet
Tendências do Mercado de InternetTendências do Mercado de Internet
Tendências do Mercado de Internet
 

Arquitetando aplicações com MySQL 5.7

  • 1. Arquitetando sua aplicação de nova geração com MySQL 5.7 MySQL Mathias Brem http://www.mathiasbrem.com.br Outubro, 2015
  • 2. Agenda ● Introdução ( 30 minutos ) ● Aplicações de Nova Geração ● Arquitetura do Banco de Dados ● Arquitetura Lambda ● Desenvolvimento Ágil ● SQL / NoSQL / NewSQL ● MySQL ( 1 Hora ) ● Por que? Quando ? ● Arquitetura do MySQL ● Alta Disponibilidade / Escalabilidade ● Flexibilidade e Integração ● Virtualização ● Cloud ● Cases ( Pinterest, Flicker, Facebook, Twitter, Booking, Linkedin )
  • 4.
  • 5. ● IaaS ( Infrastructure as a Service, AWS ) ● Desenvolvimento Ágil ( Scrum, Git, Docker ) ● Usabilidade ( Bootstrap, AngularJS, Mobile ) ● Escalabilidade ( 1,10,100,100000, infinito e além ) ● Integração com tudo e todos ( JSON, WebService, IoT ) ● Disponibilidade ( Tempo é dinheiro, parar nunca! Crescer sempre! ) ● Startups e gigantes todos usam, faça o mesmo!
  • 7. ● OLTP ( Transacional ) ● OLAP ( Analítico / Relatório / Consulta ) ● O que se preocupar? 4 pontos – Segurança – Performance – Integridade – Disponibilidade
  • 9. Arquitetura Lambda Speed Layer Database In Memory Transaction Layer OLTP Database History Layer Analytics 24 horas 1 Ano Tudo
  • 11. ● Metodologia (Scrum ) ● Frameworks ( Bootstrap, Laravel, PhoneGap, XXXXX... ) ● Versionamento ( Git / Subversion ) ● Ambiente ( Docker / Vangrant ) ● Infraestrutura ( Amazon AWS ) ● Open Source ( Linux, MySQL, Redis, MongoDB, Cassandra, Neo4j, Apache, Ngix, PHP, Python, Java, Hadoop, Spark, NodeJS, Raspberry…...OMG!!!! )
  • 12. ● Muitas mudanças em produção sem interrupção ● Provisionamento de novos ambientes constantemente ● Automatização, facilidade, agilidade DEV v1 HOMOLOG DEV v34 DEV v35 DEV v36 PROD
  • 13. SQL / NoSQL / NewSQL
  • 14. Schemaless / NoSQL ● Agilizar o desenvolvimento e modificações ● Fazer a coisa certa com a ferramenta certa ● Performance ● (You no have power here!!!) ● (Well….Now you have power here!!!) ● Um pouco de modinha também ● Que tal misturar os dois na dose certa?
  • 15. Schemaless / NoSQL { “modelo” : “Porsche 911”, “ano”: 2015, “cor”: “prata” } MODELO ANO COR Porsche 911 2015 prata { “modelo” : “Porsche 911”, “ano”: 2015, “cor”: “prata” “quilometragem” : 2000 } NoSQL / Document SQL
  • 16. Schemaless / NoSQL / NewSQL ID MODELO ANO JSONCOL XMLCOL 1 Porsche 911 2015 {“id” : 1, “modelo” : “Porsche 911”, “ano”: 2015, “cor”: “prata” “quilometrag em” : 2000 } <id>1</id> <modelo> Porsche 911 </modelo> <ano>2015</ano> <cor>prata</cor> <quilometragem>2000< /quilometragem> NewSQL mysql> SELECT * FROM carros WHERE JSONCOL->'$.id'= 1; Ou mysql> SELECT * FROM carros WHERE ID= 1;
  • 17. Quando e Porque o MySQL? ● Internet ● Elevado número de sessões / requisições simultâneas ● Armazenar (dados) ● Popular / Comunidade Forte / Parrudo e Confiável ● Simples / Multiplataforma ● Muito Flexível ( canivete suíço, integração com shell ) ● Em constante atualização e desenvolvimento
  • 19. Connectors ( Java, C, PHP, .NET, Python, NodeJS, Ruby... ) SQL Interface Parser Caches & Buffers Storage Engine ( InnoDB, MyISAM, NDB, XtraDB, TokuDB ) Binlog Global Files Storage Engine Files Storage Engine Memory App ( Mobile, WebService, E-commerce, CRM, Portal ) S.O ( Linux, Unix ) AWS EC2 Optimizer Connection Pool MySQL
  • 20. Storage Engine ● InnoDB ( OLTP ) ● MyISAM ( OLAP ) ● NDB ( In Memory ) ● TokuDB ● CSV ● Memory ● Cassandra Storage Engine ● Backhole ● Archive ● OQGRAPH ● SphinxSE ● Spider ● Connect ● Deep ● Faça a sua, compile o seu próprio InnoDB…. Open source é assim!
  • 21. Storage Engine Binlog Global Files Storage Engine Files Storage Engine Memory S.O ( Linux, Unix )
  • 22. Alta Disponibilidade / Escalabilidade
  • 23. ● Replicação ● Replicação com Sharding ( MySQL Fabric, HA Proxy, MySQL Proxy, MaxScale, MySQL Router ) ● MySQL Cluster ( NDB ) ● Galera Cluster ( InnoDB ) ● ( DRBD / Replicação de Storage / etc... )
  • 24. Sharding Master 1 Read / Write Master 2 Read / Write APP Slave 1 Read Slave (N) Read ● Load Balancer ● Lógica da aplicação ● MySQL Fabric ● MySQL Router…. ● (N) ● Essa parte é onde fica a treta da coisa toda...
  • 25. APP MySQL MySQL Virtual IP Replicação Master Read / Write Slave Read logbin relay-log SIMPLES E MUITOOO FLEXÍVEL!!!!! Isso é o básico, com essa mesma lógica da p/ se fazer muitas outras coisas! Veja o caso do “Booking.com” http://blog.booking.com
  • 26. Replicação Master Read / Write Slave 1 Read Slave 2 Read Slave (N) Read APP BI / Analytics Integração NFE
  • 27. Sharding Master 1 Read / Write Master 2 Read / Write APP Slave 1 Read Slave (N) Read ● Load Balancer ● Lógica da aplicação ( IF XX THEN …. ) ● MySQL Fabric ● MySQL Router…. ● Essa é parte onde fica a treta da coisa toda….
  • 28. MySQL Cluster ( Network Database ) NDB Data Node1 NDB Data Node2 NDB Data Node(n) NDB Data Node3 Dados Connectors ( Java, C, PHP, .NET... ) SQL Interface Parser Caches & Buffers Storage Engine ( InnoDB, MyISAM, NDB) Binlog Global Files Storage Engine Files Storage Engine Memory APP S.O ( Linux, Unix ) AWS EC2 Optimizer Connection Pool NDB Cluster NDB Management
  • 29. Galera Replication Master Read / Write Master Read / Write Master Read / Write Master Read / Write Connectors ( Java, C, PHP, .NET, Python, NodeJS, Ruby….. ) App ( Mobile, WebService, E-commerce, CRM, Portal ) InnoDB InnoDB InnoDB InnoDB Galera Cluster
  • 30. Alta Disponibilidade via HW/SW/S.O Servidor 1 DISCOS STORAGE Servidor 2 DISCOS STORAGE Servidor 1 Servidor 2 STORAGE
  • 32. Truques / Canivete ● Logbin ● Shell ● JSON / XML ● CSV ● TEXT FILE ● ODBC ● Hadoop Applier ● Linux…Python, Java ( Faça suas rotinas )
  • 34. Virtualização ● Template Oracle VM ● I/O e Networking ● Usar backup de vm como backup de database… para com essa bobagem! (não faça isso)
  • 35. Container's S.O ( Linux, Unix ) AWS EC2 / HW Próprio / Outros Docker ( Container Daemon ) IMG MySQL IMG PHP IMG RUBY IMG (N)... http://www.alastori.com.br/2015/03/mysql-no-docker.html
  • 36. Cloud ● AWS ● Docker / Container ● Criatividade, isso conta na arquitetura, ainda mais na cloud e faz diferença $$$ ● Veja como o MySQL já foi adequado ao AWS e as dicas existentes, a equipe da Oracle trouxe novidades na 5.7, até backup para o S3 ele faz… Dicas de otimização no EC2 e mais! Não se esqueça do RDS(MySQL,MariaDB,Aurora) ● IaaS, PaaS, DBaaS, SaaS
  • 37. Cloud ● IaaS, PaaS, DBaaS, SaaS ● RDS ( Para casos simples, para quem está começando ) ● EC2 ( Mais recomendado para montar o seu servidor e gerenciar totalmente o banco de dados, personalizar, etc... )
  • 38. Cases