Vamos entender esse artigo de forma bem simples, passo a passo. Vou usar comparações fáceis para te ajudar a visualizar como foi a atualização que o Uber fez no sistema de banco de dados deles.
O que é um banco de dados?
Um banco de dados é como um grande armário onde você guarda informações organizadas. Pense no Uber: ele precisa guardar dados como nomes de usuários, corridas realizadas, pagamentos, avaliações, e muito mais.
Agora, imagine que o armário que eles usavam (o MySQL 5.7) estava ficando velho e com algumas limitações. Era hora de trocar por um armário mais novo, mais rápido e com mais espaço (o MySQL 8.0).
Por que o Uber atualizou o banco de dados?
- Fim do suporte: O "armário antigo" (MySQL 5.7) não ia mais receber atualizações nem consertos, então seria arriscado continuar usando.
- Melhorias no novo armário (MySQL 8.0):
- Mais rápido: Ele consegue atender mais usuários ao mesmo tempo.
- Funcionalidades novas: Por exemplo, consegue organizar melhor dados em "gavetas" novas (funções como "funções de janela" e tratamento de dados JSON, que é como guardar arquivos organizados em envelopes).
- Alterações rápidas: Conseguem mudar as prateleiras sem precisar desmontar todo o armário.
Como era a infraestrutura do Uber?
- Tamanho gigante: O Uber tinha 2.100 armários (clusters de bancos de dados) espalhados por várias cidades (19 zonas).
- Muitas gavetas: Mais de 16.000 prateleiras (nós).
- Movimentação constante: Eles atendem 3 milhões de pedidos por segundo. Ou seja, precisa ser um sistema muito ágil e estável.
Agora, atualizar um sistema assim grande não é como trocar um armário em casa. Eles precisavam de um plano para trocar o velho pelo novo sem causar "bagunça".
Como foi a atualização?
Eles fizeram a transição devagar, sem parar o serviço. Aqui está o plano:
-
Instalar o armário novo ao lado do velho:
- Eles colocaram os bancos de dados MySQL 8.0 ao lado dos MySQL 5.7 e deixaram os dois funcionando juntos por um tempo.
-
Testar o armário novo:
- Antes de "transferir as gavetas", eles testaram o MySQL 8.0 para ver se ele aguentava o trabalho.
- Se algo desse errado, eles poderiam voltar a usar o MySQL 5.7.
-
Transferir as gavetas:
- Depois de garantir que o novo sistema estava funcionando bem, transferiram os dados do MySQL 5.7 para o 8.0.
-
Remover o armário velho:
- Por fim, eles desligaram o MySQL 5.7.
Quais problemas apareceram?
Mesmo com planejamento, alguns desafios surgiram:
-
Mudança na organização das gavetas:
- Algumas gavetas (consultas) ficaram mais lentas porque o novo armário organiza as coisas de forma diferente. Eles resolveram ajustando o software.
-
Palavras diferentes:
- O MySQL 8.0 "fala" de forma um pouco diferente. Algumas instruções que funcionavam no MySQL 5.7 não funcionavam no 8.0.
-
Formato de letras:
- O MySQL 8.0 usa um "alfabeto" diferente (collation padrão). Isso causou erros com dados que tinham caracteres especiais.
-
Ferramentas antigas:
- Alguns "acessórios" que eles usavam para interagir com o banco de dados eram incompatíveis e precisaram ser atualizados.
Valeu a pena?
Sim! Mesmo com os desafios, os resultados foram ótimos:
-
Mais rápido:
- Inserir dados ficou 29% mais rápido.
- Ler dados ficou 33% mais rápido.
- Atualizar dados ficou 47% mais rápido.
-
Menos filas e atrasos:
- As "travas" que seguravam o banco de dados foram reduzidas em 94%.
-
Economia:
- Com um banco de dados mais eficiente, o Uber pode usar menos computadores e ainda assim atender o mesmo número de pessoas.
Por que não usar a versão mais nova (8.4)?
O Uber não usou o MySQL 8.4 porque:
- Foi lançado apenas em 2024, e a atualização começou em 2023.
- Eles preferiram algo já testado e confiável (8.0), em vez de arriscar usar algo tão novo.