Boo box e my sql

Post on 15-Jun-2015

492 views 0 download

Transcript of Boo box e my sql

boo-box e MySQLuma história de evolução continua de um sistema de publicidade

on-line

O que fazemos ?

Anúncios em blogs, sites e redes sociais

Onde fazemos ?

•430 mil sites/blogs/perfis em redes sociais

•60 mil publishers cadastrados

•60M de usuários únicos/mês

•1B de anúncios/mês

Como fazemos ?

O que isso gera ?

•40 GB dados/dia (raw)

•1.2 TB dados/mês (raw)

•15 GB de informações/dia (agregado)

•450 GB de informações/mês (agregado)

•behavioral targeting

•re-targeting

•segmentation

• inventory targets

O que processamos ?

Linha do Tempo

0

22,500,000

45,000,000

67,500,000

90,000,000

20092010

20112012impressões/dia

Adicionado índices para otimizar JOIN’s entre tabelas

Problema no processamento de grandes volumes de dados

Desafio 109/2009

Desafio 1

Adicionado índices para otimizar JOIN’s entre tabelas

09/2009

Implementação de um sistema de fila/consumidor para inserção assíncrona

Crescimento no número de inserções gerando aumento no tempo de resposta nas APP’s

Desafio 212/2009

Desafio 2

Implementação de um sistema de fila/consumidor para inserção assíncrona

12/2009

Aumento no enfileiramento de inserções

Desafio 303/2010

Desafio 3

Modificado ‘engine’ do servidor mestre para ‘blackhole’

03/2010

Lentidão na consulta de estatísticas

Desafio 407/2010

Desafio 4

Propagação do resultado das ‘triggers’ para servidores slave

07/2010

Lentidão na inserção de dados mysql (max 4.5K/s)

Desafio 501/2011

Desafio 5

Troca do sistema de arquivo para XFS (6K/s)

01/2011

Lentidão para consulta de dados massivos (Big Data)

Desafio 606/2011

Desafio 6

Utilização de Google BigQuery e AWS EMR

06/2011

•8 TB de dados agregados

•32 TB em relatórios processados/mês

•35 TB em dados (Raw)

•22 B em fatos gerados pela rede

Cenário Atual

Encurtador

•NGINX + Lua + MySQL

•Lógica do ‘shortener’ na camada MySQL usando Stored Procedures

•20K requests por segundos

boas praticas

•Não permitir null no banco de dados, defina um valor default sempre que possível

•Usar banco com sql_mode menos permissivo

•Cuidado com indíces (falta e excessos)

MySQL + Memcached

•100% compatível com memcached

•Menor tempo de resposta. será ???

•Gerenciamento de cache simplificado

•Persistência