Se não está na Internet, então não existe!

A nova era do NoSQL

O crescimento da Internet mudou tudo na informática. Aplicações relacionadas às redes sociais como Twitter e Facebook trouxeram novos desafios e o crescente uso de smartphones criou uma explosão de dados. Enquanto os bancos de dados relacionais estavam orgulhosos dos seus Datawarehouses, com seus relatórios complexos, OLAP, DataMining, VLDB, ETLs e por aí vai, surge a era do Big Data. Novos desafios numa escala sem precedentes surgem. Os bancos de dados relacionais nasceram com o conceito de ACID arraigado em suas premissas. Porém imagine que você administra o banco de dados de uma rede social como o Twitter. O que é mais importante para você, a disponibilidade  do serviço com bom desempenho ou a consistência dos dados? Neste cenário perder a informação de alguns tweets não é tão importante quanto manter o serviço no ar. Assim surge o teorema CAP, onde uma nova geração de bancos de dados abre mão da consistência de dados em nome da escalabilidade horizontal, um ponto fraco nos bancos de dados relacionais.Outro ponto interessante entre os bancos de dados NoSQL é a predominância esmagadora de soluções livres, enquanto entre os banco de dados relacionais, as versões proprietárias ainda dominam. Existem vários tipos de bancos de dados NoSQL (conhecidos como “No SQL” e depois como “Not Only SQL”): chave-valor, orientados a documentos, orientados a grafos, orientados a eventos, temporais, XML, etc. Comentarei aqui apenas os 3 mais utilizados atualmente.

Bancos de dados Chave-Valor

Foram criados dezenas de tipos de bancos de dados chave-valor, a maioria com persistência apenas em memória. Bancos de dados chave-valor tem um desempenho absurdo, pois não dependem da persistência em discos e nem controles de transações. Também podem se espalhar por dezenas de servidores de forma transparente. São muito eficientes para problemas de baixa complexidade. O Memcached, criado em 2003 foi o primeiro a se tornar popular e foi muito utilizado como cache de sites na internet. Atualmente o Redis é banco de dados do tipo chave-valor mais popular do mercado. Lançado em 2009, ele é também o 9º banco de dados mais popular no placar geral.

Bancos de dados orientados a documentos

Nos anos 2000, o XML ganha ampla aceitação no mercado e muitos bancos de dados implementam extensões para armazenar e manipular dados em XML. Em 2006 surge o uma especificação no padrão SQL:2006 para o armazenamento de XML. Novamente tivemos também bancos de dados especializados em manipular XML e até implementações do XQuery que se tornou uma recomendação do W3C em 2007.

Lançado em 2009, o MongoDB é o banco de dados orientado a documentos mais bem sucedido hoje. É o 5º mais popular entre todos os bancos de dados, logo depois do PostgreSQL.  Ele armazena dados no formato JSON, formato que ganhou o mercado nos anos 2010 na internet. Em 2016, o PostgreSQL lança a primeira implementação em bancos de dados relacionais eficiente para armazenar JSON. Outros bancos de dados também se tornaram capazes de armazenar dados no formato JSON, sendo lançado uma padronização no SQL:2016 onde o Oracle é o banco de dados mais aderente ao padrão ISO.

Bancos de dados orientados a grafos

Este tipo de banco de dados, resolve problemas que são particularmente chatos em bases relacionais: consultas hierárquicas. A estrutura de grafos permite modelar os dados em termos de relacionamentos mais naturais e flexíveis, resolvendo problemas complexos de forma muito mais simples em comparação com os bancos relacionais. Nesta categoria, o Neo4j é o mais popular, figurando na posição 21 no ranking geral.

A geração DevOps e a nuvem

A computação em nuvem ganhou o mundo e muitos bancos de dados que ficavam trancafiados nos CPDs passaram a flutuar por aí. Primeiro vieram as VMs, e por fim os serviços de provisionamento na nuvem com o PaaS, IaaS, SaaS, Pizza as a Service e por aí vai. Na nuvem, as coisas são voláteis. Uma das coisas mais complicadas para os bancos de dados tradicionais é garantir um bom desempenho em disco, o que é um problema complexo quando os discos são compartilhados na nuvem. Além disso, alguns bancos de dados tem uma relação muito íntima com o hardware. Na nuvem, este acoplamento entre hardware e software não faz muito sentido e você tem que trabalhar de outra forma para conseguir aproveitar as vantagens da nuvem sem drenar todo o seu orçamento.

Uma das soluções para utilizar melhor a nuvem é ter um provisionamento ágil, quebrar a sua aplicação enorme em vários pedaços menores, cada uma com seu próprio banco de dados. É o que se chama de microserviços. Gerenciar uma estrutura onde temos vários deploys acontecendo na produção diariamente, exige uma nova forma de trabalho, e é aí que surge a cultura DevOps, na qual a automação, a integração entre desenvolvimento, DBAs e sysadmins vira uma constante.

Outra característica comum nos dias de hoje é a presença de bancos de dados de vários tipos ao lado do tradicional banco de dados relacional. O banco de dados central e monolítico perdeu espaço para opções mais simples e especializadas para cada situação.

Conclusões

O trabalho de pesquisar sobre a história dos bancos de dados nos traz algumas informações interessantes:

Sobre o futuro…

Brincar de futurologia é sempre um perigo. Dizem que se a frase “quem não conhece a história está condenado a repeti-la” fosse verdade, ninguém casaria duas vezes! Outro ponto que devemos observar é que o mercado de banco de dados se move lentamente. DBAs são pessoas conservadoras e resistentes à mudanças. Mas me arrisco a alguns palpites aqui, que acho bastante válidos:

4 respostas

  1. Muito bem pesquisado e escrito, Fabio. Eu usei quase todos esses DB’s e você foi preciso na história deles. Só faltou citar a ferramenta prática dos Unix/Linux, o “sqlite”.
    Muito obrigado pela leitura agradável.

Deixe uma resposta