Atualmente, com o amplo crescimento do acesso à tecnologia da informação, cada vez mais usuários precisam armazenar e visualizar dados de maneira rápida e eficaz. Entretanto, em alguns casos, é possível notar que a maneira pela qual as informações são armazenadas acaba sendo ineficaz, não atendendo às expectativas e necessidades tanto dos desenvolvedores e demais profissionais de tecnologia, quanto dos usuários, que estão cada vez mais exigentes em relação a soluções rápidas e dinâmicas.
A arquitetura tradicional utilizada na criação de bancos de dados, conhecida como Modelo Relacional, em certos casos pode apresentar certa dificuldade para suportar a quantidade exorbitante de dados que são gerados e acessados hoje em dia, bem como seus formatos variados. Para contornar essa limitação, surgiram os Bancos de Dados NoSQL, alternativas que visam oferecer maior flexibilidade e desempenho diante do aumento do volume e da variedade dos dados.
Introdução aos bancos de dados NoSQL
Os bancos NoSQL (acrônimo de Not Only SQL) consistem de sistemas de armazenamento de dados que não seguem a estrutura convencional, ou seja, o modelo relacional. Por esse motivo, eles também são chamados de não relacionais.
Bases de dados relacionais são totalmente orientadas a tabelas, as quais possuem uma estrutura fixa, baseada em linhas e colunas. Apesar de ter atendido a diversas demandas por anos, esse modelo acabou se mostrando ineficiente em situações onde há a necessidade de armazenar dados em formatos variados (desestruturados ou semiestruturados). Essa necessidade foi um dos fatores que motivou o surgimento dos bancos NoSQL.
Outra questão crítica, que contribuiu para a consolidação desse novo paradigma, diz respeito à performance dos bancos relacionais ao trabalhar com grandes massas de dados, principalmente quando há muitos relacionamentos entre eles. Isso, aliado às crescentes demandas por escalabilidade e custo reduzido, fez com que soluções de NoSQL fossem criadas exatamente para suprir as necessidades dos mais variados cenários.
Características fundamentais do NoSQL
Um banco de dados NoSQL deve possuir algumas características peculiares e fundamentais que o definem como tal:
- Escalabilidade horizontal: o termo escalabilidade diz respeito à capacidade que um sistema possui de suportar o aumento do volume de dados, elevando também seu desempenho. Em bancos de dados relacionais, utiliza-se a escalabilidade vertical, a qual tem o objetivo de obter um maior ganho de processamento e armazenamento do servidor por meio do upgrade de hardware, como memória, disco rígido ou processadores. Porém, os bancos NoSQL devem suportar a escalabilidade horizontal, que consiste no aumento do número de nós (máquinas) disponíveis para realizar um processamento distribuído. Dessa forma, quando uma operação é executada no banco, o processo é dividido entre vários nós existentes, assegurando assim que não haja queda no desempenho;
- Replicação de forma nativa: essa característica contribuirá para a obtenção de maior potencial de escalabilidade e facilitará a recuperação dos dados em tempo reduzido;
- Acesso aos dados facilitados por APIs simplificadas: acessar informações de maneira rápida e eficiente, mantendo a simplicidade e facilidade, é um dos principais objetivos dos bancos NoSQL. Isso normalmente é alcançado através de APIs que tornam o acesso aos dados mais fácil;
- Flexibilidade ou ausência de esquema: a estrutura dos bancos de dados NoSQL apresenta um esquema flexível ou, em alguns casos, chega a não apresentar qualquer esquema que a defina. Essa característica permite que se trabalhe com dados nos mais variados formatos, entretanto, torna menor a garantia de integridade;
- A consistência nem sempre é mantida: bancos de dados NoSQL têm a particularidade de eventualmente não conseguirem manter os dados totalmente consistentes. Essa característica é baseada no Teorema CAP (veja o BOX 1).
BOX 1. Teorema CAP
O Teorema CAP, também conhecido como Teorema de Brewer, foi criado após a afirmação do cientista da computação Eric Brewer de que é impossível um sistema distribuído garantir de forma simultânea três requisitos: Consistência, Disponibilidade e Tolerância ao particionamento (daí a sigla CAP: Consistency, Availability, Partition tolerance).
A consistência se refere à situação que ocorre quando um dado é modificado e todos os usuários têm acesso ao mesmo dado atualizado e em tempo real.
A disponibilidade, por sua vez, é a garantia de que o sistema permanece ativo em um determinado período, de modo que cada solicitação receba a confirmação da existência ou não de determinada informação.
Já a tolerância ao particionamento consiste na capacidade que o sistema deve ter de continuar operando mesmo após ocorrer uma falha na rede, que possa tornar algum nó inacessível.
Portanto, segundo o Teorema CAP, o sistema que garante dois desses requisitos fatalmente não disponibilizará um terceiro.
Diferenças básicas entre bancos relacionais e não relacionais
Após conhecer as principais características do NoSQL, é importante que se possa identificar as diferenças existentes entre os bancos de dados relacionais e os não relacionais (NoSQL). Na Tabela 1 é possível visualizar as mais marcantes, que podem ser facilmente distinguidas entre esses dois modelos.
Banco de dados relacional |
Banco de dados NoSQL |
|
Modelagem dos dados (esquema) |
Tabelas (colunas, índices, relacionamentos) |
Ausente ou flexível (chave hash para recuperar valores) |
Consistênci ... |
Confira outros conteúdos:
Perguntas frequentes
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.