[SP-pm] [OT] NoSQL

Otávio Fernandes otaviof at gmail.com
Fri Jun 4 01:51:25 PDT 2010


Senhores,

Vendo a quantidade de respostas, este é um assunto bastante polêmico,
sem dúvida. Nos últimos meses eu acompanhei dezenas de pessoas falando
mal do NoSQL, e/ou dizendo que é apenas mais uma reinvenção-da-roda.

Sinceramente, eu acredito no movimento NoSQL (Not Only SQL),
exatamente nestes termos. Os NoSQLs vieram para dar mais ferramentas
para resolver os problemas que estão surgindo. Se você pensar em um
contexto histórico, com o boom da internet, houve a possibilidade de
fazermos aplicações para milhões de usuários simultâneos, estamos
gradualmente nos adaptando a isso.

E falando um pouco sobre escalabilidade, todos nós sabemos, que no
modelo SQL tradicional, quando você deseja crescer, uma das primeiras
coisas a se fazer é a de-normalização e em seguida trazer os
relacionamentos para a aplicação.

Olhando com simplicidade. Depois de tudo isso feito, o que lhe impede
de guardar parte dos seus dados sobre uma arquitetura que é voltada
para aquele tipo de informação? O que lhe impede de guardar as páginas
do seu site sobre um CouchDB, ou ainda, os anexos sobre um MongoDB
(entre dezenas de outras opções)? Por exemplo.

O meu ponto de vista sobre este assunto é ligado ao CAP Theorem
(http://en.wikipedia.org/wiki/CAP_theorem). Para os que não conhecem,
vou tentar resumir:

O Teorema CAP afirma que é impossível para um sistema distribuído
garantir simultaneamente todos os três itens abaixo:

* Consistência: todos os nós veem o mesmo dado ao mesmo tempo;
* Disponibilidade: falhas entre os nós não previnem que os
sobreviventes continuem a funcionar;
* Tolerância ao Particionamento: o sistema continua a operar mesmo com
perda arbitraria de mensagens entre os nós;

De acordo com o teorema, um sistema distribuído consegue apenas
satisfazer dois destes requisitos.

A resposta que define se você é um candidato ou não para um NoSQL e
para saber qual deles serve para a sua necessidade, é perguntar-se
qual dos pontos acima você pode abrir mão. Porque, (sem entrar em
detalhes) em um banco relacional (leia-se SQL), tentam garantir os
três, e por isso, sofrem ao tentar abraçar grandes requisições (e este
resultado é o esperado).

O NoSQL não é uma buzzword, nem muito menos uma solução "milagrosa", é
apenas uma boa alternativa para os que realmente sabem onde estão se
metendo.

P.S.: Esta história de DBAs com medo de perder emprego é
particularmente irritante.

um abraço,

-- 
Otávio Fernandes
otaviof at ( gmail.com, cpan.org )
http://blog.emresumo.com/


More information about the SaoPaulo-pm mailing list