O NoSQL vem ganhando espaço no mercado e se tornando uma opção que
atende aos requisitos do ambiente de computação distribuída em larga escala,
permitindo escalabilidade, disponibilidade, alto desempenho e confiabilidade.
Este artigo tem como objetivo fornecer uma visão geral das soluções de banco de
dados NoSQL modernas, abordar suas principais características, mostrar suas
principais diferenças com relação aos bancos de dados relacionais e apresentar um
estudo de caso de uma destas soluções.
Por décadas, os bancos de dados relacionais têm sido a escolha padrão para persistência de dados corporativos. No entanto, as grandes empresas e aplicações web estão mudando ao longo dos últimos anos.
Com o aumento da quantidade e do fluxo de informações e a certeza de que sempre haverá mais dados para armazenar, o tradicional modelo relacional começa a sofrer limitações de escalabilidade.
Neste cenário surge uma nova geração de banco de dados, não-relacional, como uma maneira de lidar com o crescente volume de dados. O NoSQL (Not only SQL) atende aos requisitos do ambiente de computação distribuída em larga escala, o que permite escalabilidade, alta disponibilidade, alto desempenho e confiabilidade.
A grande motivação para o NoSQL é resolver o problema de escalabilidade dos bancos tradicionais. Contudo, se faz necessário analisar todas as suas características para se ter uma visão geral de seus prós e contras quando comparado ao modelo relacional.
Este artigo fornecerá uma visão geral sobre o modelo relacional de banco de dados, suas limitações e as soluções do NoSQL como alternativa a este modelo de banco. Esta análise irá abordar os principais recursos e discutir os desafios da tecnologia NoSQL, identificando quais benefícios e dificuldades esta tecnologia traz para a solução do grande volume de dados processados atualmente.
Além disso, será apresentado, através de um estudo de caso, algumas das diferenças identificadas entre os dois modelos.
SGBDs Relacionais
O banco de dados no modelo relacional foi proposto por Edgar Codd, um pesquisador da IBM, em torno de 1970. Desde então se tornou o modelo de banco de dados dominante para aplicações comerciais. Hoje, há muitos Sistemas de Gerenciamento de Banco de Dados (SGBDs), como Oracle, IBM DB2 e Microsoft SQL Server, MySQL, PostgreSQL, entre outros.
Um banco de dados relacional organiza os dados em tabelas ou relações. Uma tabela é composta de linhas e colunas. As linhas também são chamadas de registros ou tuplas. As colunas também são chamadas de campo ou atributo. Uma tabela de banco de dados é semelhante a uma folha de cálculo.
No entanto, as relações que podem ser criadas entre as mesmas possibilitam a um banco de dados relacional armazenar eficientemente uma quantidade de dados e, efetivamente, recuperar os dados selecionados.
Outra característica importante deste modelo é o uso de elementos para garantir a integridade dos dados. As restrições mais comuns são as chaves primárias e as estrangeiras. O termo chave primária é utilizado para identificar o atributo que foi escolhido pelo projetista do banco para identificar unicamente os registros que são armazenados em uma determinada tabela.
Nenhum registro pode ter o mesmo valor no campo chave primária de uma determinada tabela do banco de dados, por isso os atributos chaves devem ser selecionados com muito cuidado. Já a chave estrangeira transforma o valor de um atributo dependente do valor existente em outro atributo, normalmente de outra tabela, criando uma relação de dependência entre atributos de tabelas distintas.
As chaves são muito utilizadas em bancos de dados relacionais, inclusive para a criação de outros componentes como os índices, que são usados para melhorar o desempenho de consultas no banco.
Para projetar corretamente as tabelas de um banco de dados relacional temos um conjunto de orientações que ajudam a reduzir a redundância e chance de corrupção de dados. É o que chamamos de normalização. As regras de normalização são projetadas para evitar anomalias de atualização e inconsistências de dados, e ao mesmo tempo para permitir uma recuperação mais fácil de informações.
A linguagem chamada SQL foi desenvolvida para trabalhar com bancos de dados relacionais. Inspirada na álgebra relacional e desenvolvida pela IBM, o SQL é uma linguagem declarativa para banco de dados.
A facilidade de uso e simplicidade de expressão fez com que o SQL se transformasse na linguagem de consulta de dados mais usada no mundo, o que ajudou a consolidar o modelo relacional de banco de dados.
Outro conceito importante para bancos de dados são as propriedades ACID. A sigla significa Atomicidade, Consistência, Isolamento e Durabilidade. As propriedades ACID de um SGBD permitem o compartilhamento seguro de dados, oferecendo otimização de consultas, recuperação de falhas, validação, controle de concorrência e verificação de integridade dos dados.
Todas essas características e recursos deram ao Modelo Relacional de banco de dados uma posição de destaque e predominância nos diversos ambientes computacionais. No entanto, a sua complexidade estrutural fez com que surgissem problemas, principalmente relacionados ao crescente volume de dados que as empresas necessitam armazenar atualmente.
Limitações do Modelo Relacional
O Walmart, um gigante do varejo, trabalha com mais de 1 milhão de transações de clientes por hora, alimentando bancos de dados estimados em mais de 2,5 petabytes. Já o Facebook, possui em seu banco cerca de 40 bilhões de fotos. Estes são exemplos que mostram que o mundo contém enorme quantidade de informação digital, e que este volume de informações e dados está ficando cada vez maior rapidamente.
...