14
Bibliografia NoSQL comentada
Texto escrito em 2013
Recentemente tenho escrito bastante sobre bases de dados NoSQL. Neste processo gerei uma bibliografia cujo conteúdo mais interessante listo abaixo:
"BigTable: a Distributed Storage System for Structured Data" - Equipe do Google - Neste artigo é exposto o BigTable, o sistema de armazenamento desenvolvido pela Google que serviu de inspiração para práticamente toda esta nova geração de bases de dados NoSQL. É uma leitura fascinante, tanto pela descrição do modelo de dados quanto pelas soluções aplicadas aos problemas de escalabilidade.
"Dynamo: Amazon's Higly Available Key-Value Store" - Equipe da Amazon - Assim como o artigo "BigTable", é outro clássico da área. Aqui é descrito o banco de dados chave/valor Dynamo desenvolvido pela Amazon. O que acho mais interessante neste texto é a descrição do modo como foi feito o particionamento das instâncias através das chaves identificadores. Excelente leitura.
"Redis: Under the Hood" - Paul Smith - Já quis saber como é implementado um banco de dados? Este post expõe uma descrição do código fonte por trás do Redis e, com isto, a gente consegue entender de forma bem clara como alguns dos aspectos do ACID (atomicidade pra ser mais exato) são obtidas como efeito colateral da implementação do código. Leitura fascinante.
"A Relational Model of Data for Large Shared Data Banks" - E. F. Codd - A origem oficial do modelo relacional está neste artigo. Leitura obrigatória na minha opinião para qualquer um que no futuro queira criticá-lo. :)
"Limitations of Record-Based Information Models" - William Kent - Uma crítica muito bem feita aos sistemas baseados em registros (nossas tabelas). Neste excelente artigo de 1979 podemos observar duas coisas: a mais óbvia são as limitações que a modelagem baseada em tabela nos trás. E a outra é que o tal "movimento NoSQL" não tem nada de recente. Leitura obrigatória pra qualquer um que queira entender as limitações das estruturas de dados baseadas em registro e, em grande parte, do próprio modelo relacional.
"Consistence Models in non-relational databases" - Guy Harrisson - Estamos tão acostumados com o modo como a consistência é obtida no modelo relacional (através de transações) que muitas vezes nos esquecemos de pensar no assunto. Este artigo do Guy Harrisson mostra alguns dos modelos adotados por bases não relacionais. É uma boa introdução aos conceitos de consistência forte e fraca. Isto me leva para uma seção só sobre isto logo abaixo. :)
"Descrição do CODASYL na Wikipédia" - Wikipédia - Sempre em minha pesquisa topava com o tal do "CODASYL" e confesso que boiava. Esta foi a "Conference of Data Systems Languages" que deu origem ao COBOL e também ao modelo baseado em rede. É interessante saber mais a respeito por razões históricas mesmo com a diminuição do interesse sobre o assunto.
O teorema CAP
Infelizmente não vejo muita coisa sendo publicada aqui no Brasil (vou ajudar a mudar isto em breve :) ) a respeito deste teorema que é a base por trás da escalabilidade dos bancos de dados não relacionais, mas vamos lá: o teorema CAP nos diz que, no que tange à consistência dos dados, todo sistema distribuído só é capaz de garantir duas das três propriedades abaixo ao custo de uma terceira:
- Consistência: todos os nós possuem acesso à mesma informação ao mesmo tempo.
- Availability (disponibilidade): garantia de que toda requisição ao sistema sempre obterá uma resposta.
- Partition tolerance: o sistema continua a operar mesmo que parte dos seus nós não esteja disponível.
É um assunto fascinante, e em dois parágrafos não vou conseguir descrevê-lo por completo a vocês. Sendo assim, seguem algumas sugestões de leitura:
"Brewer Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services" - Seth Gilbert e Nancy Lynch - O teorema é descrito de uma forma bem fácil de entender e também é provado através da descrição de um modelo de rede assíncrono.
"Brewer's CAP Theorem: The Cool Aid Amazon and eBay have been drinking" - Julian Browne - Uma descrição bem "cool" do teorema. De leitura muito fácil.
Mais material legal
"The Little MongoDB book" - Karl Seguin - Um tutorial de MongoDB pequeno, fácil de entender e que é uma porta de entrada excelente pra quem quiser brincar com ele.
"The Little Redis Book" - Karl Seguin - Na mesma linha que o "The Little MongoDB book". Mais uma introdução bacana pra vocês a este banco de dados chave-valor.
"Curso NoSQL: Redis com Java - Introdução - Primeira aula" - Henrique Lobo - Nesta primeira aula aberta do meu curso sobre Redis para a DevMedia eu exponho o modelo chave-valor, que é usado por práticamente todo banco de dados não relacional.
"The Neo Database - Technology Introduction" - Equipe do Neo4J - Apesar de ser básicamente um panfleto de venda do Neo4J, trata-se de uma introdução muito interessante ao modelo baseado em grafos.
E sabe, em muito breve vão ter mais artigos meus justamente sobre este assunto por aqui e em algumas revistas e publicações. :)
Espero que tenham gostado desta lista e que esta lhes seja útil.
Até a próxima!
14