Bancos de Dados NoSQL

Daniel Carneiro, DBA na Bluesoft, fez um estudo no Bluesoft Labs sobre Bancos de Dados NoSQL, leia seu artigo, veja sua apresentação e assista à sua palestra.

Há algum tempo tenho observado uma certa movimentação na web referente à NoSql Databases ou bancos de dados não-SQL. Mas o que é isso?

NoSQL Database foi um termo criado por Eric Evans (o mesmo cara do Domain Driven Design) para descrever bases de dados que não usam SQL em suas consultas. Muitas dessas bases apresentam características muito interessantes como alta performance, escalabilidade, replicação, suporte à dados estruturados e sub colunas.

Atualmente, com a web 2.0 há uma demanda cada vez maior por armazenamento de dados e alta disponibilidade, sendo que em alguns casos máquinas simples, como por exemplo de plataforma Intel, não são suficientes para dar conta do recado. Disso nasceu a necessidade de se desenvolver bases de dados que suportem esse tipo de demanda, e que ao mesmo tempo evitassem o SPOF (single point of failure), ou seja, que os acessos se concentrassem em uma única máquina, evitando a parada do sistema em caso de falha, além de promover o particionamento horizontal, distribuindo os dados em várias máquinas.

Para se conseguir esse nível de escalabilidade alguns paradigmas dos bancos de dados relacionais tiveram que ser quebrados; primeiramente, o que dá o nome aos RDBMS, os relacionamentos. Bancos NoSQL não possuem, por exemplo, junções de tabelas (joins), além de não suportarem demarcação de transações, e especificamente, em relação às transações, alguns modelos de bancos distribuídos conceberam um modelo chamado Eventualmente Consistente onde operações realizadas em um dos nós de um cluster de banco de dados podem não estar disponíveis imeatamente nos outros nós.
Podemos classificar estes bancos de dados em 4 tipos básicos:

leia mais