O Facebook dispensa qualquer tipo de apresentação. Até acho que existe mais gente no “face” do que viva no mundo real. Durante muitos anos o Facebook rodou e confiou na plataforma LAMP com Linux, Apache, MySQL-MemCache e PHP. Com o passar dos anos sua base de dados foi crescendo: 1TB, 10TB, 50TB, 100TB… 200TB, 500TB e continua crescendo.
De fato, o Facebook usou, ativamente, o MySQL até por volta de 100TB. Ooops, quer dizer que o MySQL pode ser escalado até 100TB de base? Sim e não! Eu, particularmente, acredito que o MySQL é muito competente, mas, eu não me sentiria confortável com uma base maior que 2TB ou 3TB. A dificuldade de manutenção acima disso é muito grande. Até 1TB é tranquilo. Mas, voltando ao Facebook, para conseguir a façanha de usar o MySQL com 100TB eles lançaram mão de milhares de “shards” lógicos controlados pela aplicação e sistema operacional. Inclua-se na aplicação, não só o site, mas também o MySQL personalizado pela equipe interna de desenvolvimento. Personalizar o MySQL não é para qualquer um. E, passa a ser mais um ponto de atenção… a cada atualização da comunidade e/ou do fabricante é preciso ser revista com atenção pela equipe de desenvolvimento. Controlar uma dezena de “shards” lógicos já é um drama, imagine milhares. É muito “if”! “If” nome do fulano começa com “A” os dados estão no servidor tal, “If” o nome do ciclano inicia com “C’, e, mora na Holanda, os dados estão no servidor 1.321! “If’ o desenvolvedor se perdeu no monte de “If”… só sobra o “f” (complete a palavra)!