Por que eu devo ler este artigo:Este artigo discorre sobre as tecnologias NoSQL, sobre a inovação trazida pelas mesmas, em confronto com tecnologias já existentes na área de banco de dados. Baseia-se em informações advindas de pessoas que trabalham diretamente com tais ferramentas, para apresentar a real proposta trazida pelo NoSQL. O cenário atual, em relação à persistência de dados, passa por um momento onde pode-se observar o modelo relacional como o mais difundido, senão o mais usado.

Constantemente, até mesmo os profissionais da área preferem tornarem-se céticos usuários dos SGBD’s (Sistemas de Gerenciamento de Bancos de Dados) puramente relacionais, para resolver problemas com estruturas muito dispares ao paradigma relacional, causando limitações e trabalho excessivamente desnecessário.

Ferramentas NoSQL fornecem meios mais eficientes de armazenamento de grandes volumes de dados e/ou mecanismos de pesquisa de baixa latência, fatores importantes que precisam ser considerados durante a escolha de uma solução de armazenamento de dados (PORCELLI, 2011, p.21).

O que é NoSQL?

Não se trata apenas de uma linguagem, mas sim de um conjunto de ferramentas e estruturas. “NoSQL é um movimento que promove soluções de armazenamento de dados não relacionais.” (PORCELLI, 2011).

Esse conjunto consiste em diversas tecnologias capazes de resolver certos problemas de forma mais específica, abordando, para tal, cada cenário de uma forma bem particular.

Contudo, o objetivo do NoSQL não é substituir a linguagem SQL, como muitos pensam. Sua proposta é (como o nome denomina: not only SQL – não apenas SQL) usar também modelos não-relacionais, para trazer a melhor solução para um determinado problema.

Segundo Porcelli (2011), desta forma, é possível trabalhar com tecnologias NoSQL e banco de dados relacionais dentro de uma mesma aplicação.

Para que NoSQL?

O modelo relacional começou a ser utilizado na década de 70 e se consagrou pela sua maior facilidade de compreensão do modelo, de manutenção, e de modelagem. O problema é que este modelo, na maioria dos casos, ainda é visto como a solução de todos os problemas.

Segundo Puente (2011), algumas soluções simplesmente não devem ser modeladas em tabelas. O motivo, apenas, é que esta não é a melhor representação dessa solução, não é o formato (ou modelo) mais adequado. E essa é a principal mensagem a se destacar sobre NoSQL.

Suponha um site de buscas como o Google, que cataloga e armazena informações sobre bilhões de páginas na web em servidores localizados em diversos lugares do planeta, e, quando alguém faz uma pesquisa, retorna essas informações em questão de milésimos de segundos, e em ordem de relevância para o usuário. Agora pode-se notar claramente o ponto chave da questão: essa eficiência seria viável num mundo feito de tabelas, num paradigma onde os dados se encontram separados e normalizados? Para retornar esses resultados seriam executados dezenas de join’s.

Visivelmente a melhor saída é uma desnormalização dos dados, e mais, a utilização de uma estrutura de persistência de dados que se adapte melhor ao problema proposto, que torne a sua resolução mais apropriada ao cenário. O que existe não é “a melhor tecnologia”, mas sim, a tecnologia que melhor se adequa a um determinado cenário.

A estrutura altamente rígida dos SGBD’s relacionais se deve, em grande parte, ao fato de que, na época que a mesma surgiu, os recursos eram muito limitados. As conexões de internet discada eram lentas e caras, discos para armazenamento de dados, servidores etc. Cada byte de memória temporária e de espaço em disco era precioso. Atualmente, não se perde muito por fugir das regras impostas por um modelo, afinal já se pode ter um servidor com espaço de memória razoável, sem pagar quantias exorbitantes por isso.

As estruturas NoSQL valem a pena quando grandes volumes de dados devem ser manipulados, para obter desempenho ao gravá-los nessa quantidade, e acessá-los com rapidez, ou quando os dados envolvidos não podem seguir um esquema claro, não possuem uma estrutura bem definida.

Principais Modelos NoSQL

A tecnologia NoSQL foi propriamente denominada no ano de 2009, apesar de haver trabalhos falando sobre o uso de bancos de dados que não possuíam interface SQL desde 1998. Ao longo dessa evolução, existem hoje vários modelos de bancos NoSQL: Chave-Valor, Tabular, Documento e Grafos.

Modelo Chave-Valor

É um modelo bem simples, que se baseia em tabelas de hash para garantir que cada registro seja armazenado com uma chave única. Esta chave está posicionada antes do próprio conteúdo do registro, agilizando sua busca, e possibilitando uma estrutura flexível para armazenar um dado. Muito utilizada para a gravação de logs.

Modelo Baseado em Documentos

Modelo muito parecido com o de Chave-Valor, só que mais complexo. Um documento é uma estrutura maleável, modelada pelo programador, que permite a ele ajustar e otimizar a forma como seus dados ficarão armazenados. Podemos comparar um documento a um formulário comum, com as vantagens de que é possível adicionar e remover campos e atributos deste, bem como modificar sua estrutura de forma dinâmica, em tempo de execução. Tabelas em linguagem SQL não possuem esta flexibilidade. Usado em larga escala por empresas que utilizam catálogos de livros e documentos escritos, que precisam armazenar cada item, e possivelmente manter um histórico de todas as alterações feitas em cada registro ao longo do tempo.

Modelo Tabular

Voltado para computação distribuída, eficiente ao armazenar grandes quantidades de dados separando-os em muitas máquinas. Para isso, utiliza as famosas Big Tables, tabelas gigantes onde as chaves apontam para várias colunas distintas. Preferível para motores de buscas, como o Google.

Modelo Baseado em Grafos

Baseado em relacionamentos entre nós, os quais possuem possibilidade de mudança de formato individual. Torna-se fácil fazer conexões entre eles, assemelhando-se ao conceito de banco com registros encadeados. Sua estrutura é ideal para a modelagem de redes sociais.

Referências: