Como chegamos as bases de dados NoSQL?
Durante décadas, os bancos de dados relacionais é que dominavam o mundo das aplicações empresariais, financeiras, académicas e até das primeiras plataformas web. MySQL, Oracle, PostgreSQL e SQL Server eram praticamente as únicas escolhas possíveis e, na maioria dos casos, funcionavam bem. Já tinham algumas décadas de maturidade, possuiam ferramentas robustas, e cumpriam com aquilo que prometiam, a ideia de armazenar dados de forma estruturada, com consistência e segurança.
Mas a tecnologia não ficou parada. A internet expandiu-se numa velocidade que ninguém previa, novas empresas começaram a lidar com escala global, e a forma como os dados eram gerados mudou radicalmente.
E é aqui que começa a história do NoSQL.
1. Antes do NoSQL
Para entender o nascimento do NoSQL, precisamos de lembrar o contexto.
Durante muitos anos, as aplicações tinham:
- Bases de dados relativamente pequenas (comparadas com hoje)
- Padrões de escrita previsíveis
- Um tráfego que podia ser suportado por um único servidor
- Esquemas rígidos que faziam sentido para aplicações de negócio tradicionais
Tudo isto se encaixava perfeitamente no modelo relacional. Mas, a partir dos anos 2000, surgiram novas necessidades:
- Redes sociais
- Plataformas de streaming
- E-commerce global
- Jogos massivos online
- Big Data
- Sensores IoT
- Dispositivos móveis a gerar dados 24/7
De repente, um único servidor já não era suficiente, as escritas aumentaram de forma exponencial e para manter as transações ACID estritas tornou-se caro demais para sistemas com milhões de requisições por segundo. Com isso, o modelo relacional continuava funcional, mas já não servia para tudo.
2. O Surgimento do termo NoSQL
Um facto curioso é que NoSQL não nasceu como uma tecnologia e nem sequer nasceu como um manifesto técnico (como aquelas ideias dos manifestos ágeis), nem como uma forma de acabar com aos bancos de dados relacionais, mas sim NoSQL nasceu como um hashtag no X (o antigo Twitter).
Em 2009, um engenheiro chamado Johan Oskarsson organizou um meetup sobre novos bancos open-source, distribuídos e não-relacionais. Na altura, estes sistemas ainda eram pouco conhecidos e usados sobretudo por grandes empresas como Google e Amazon.
Para divulgar o evento, utilizaram o hashtag:
#NoSQL
Não havia nenhuma intenção filosófica profunda só queriam apenas uma palavra curta e chamativa para usar no Twitter.
Mas o termo pegou, causou impacto, e começou a circular rapidamente na comunidade de startups, de repente, NoSQL deixou de ser apenas um hashtag e passou a ser uma tendência tecnológica mundial. Devido ao sucesso que teve, o nome foi reinterpretado de forma mais amigável:
NoSQL → Not Only SQL
Ou seja, não se trata de rejeitar SQL, mas sim de expandir o leque de opções.
3. Porque se precisava de algo além de SQL?
3.1 A necessidade de escalabilidade massiva
- O hardware era caro
- Os dados eram relativamente pequenos
- O tráfego era limitado
- Escala vertical (scale-up) - Comprar um servidor maior, com mais CPU, mais RAM, mais disco.
- Bilhões de registos
- Petabytes de dados
- Milhões de escritas por segundo
- Necessidade de replicar dados globalmente
- Escala horizontal (scale-out)
- Usar muitos servidores simples, baratos, distribuindo os dados entre eles
3.2 Preferência crescente por software livre
- MongoDB → gratuito
- Cassandra → gratuito
- Redis → gratuito
- CouchDB → gratuito
3.3 Novos tipos de aplicações exigiam novas formas de consulta
- Redes sociais precisam de grafos (amizades, conexões, relações)
- Motores de recomendação precisam de consultas por proximidade
- Indexação de texto exige busca full-text
- Dados semi-estruturados (JSON) mudam com frequência
- O NoSQL ofereceu modelos especializados:
- Documentos (MongoDB)
- Chave-valor (Redis)
- Colunas largas (Cassandra, HBase)
- Grafos (Neo4j, ArangoDB)
3.4 Banco de dados menos flexível
4. O que realmente significa NoSQL?
- Simples, extremamente rápido
- Usados para caches, sessões e filas
- Ex.: Redis, Amazon DynamoDB
- Armazenam dados em JSON
- Perfeitos para aplicações web e mobile
- Ex.: MongoDB, CouchDB
- Escalam absurdamente bem
- Ideais para Big Data e analytics distribuído
- Ex.: Apache Cassandra, HBase
- Excelente para relações complexas
- Ex.: Neo4j, ArangoDB, JanusGraph
Not Only SQL, pois isso que actualmente usamos SQL e NoSQL como complementares.
5. A ideia de Polyglot Persistence
Não existe um tipo de banco de dados que seja perfeito para tudo.
| Subsystem | Melhor tecnologia |
|---|---|
| Sessões de login | Redis (Key-Value) |
| Catálogo de produtos | MongoDB (Documentos) |
| Inventário | PostgreSQL (Relacional) |
| Sistema de recomendação | Neo4j (Grafos) |
| Log de eventos | Cassandra (Colunas largas) |
.png)
Comentários