Olá, aluno(a)! Você já aprendeu que os bancos de dados são o alicerce da maioria dos sistemas que utilizamos no nosso dia a dia e, com o avanço da tecnologia, a importância dos dados está aumentando e a procura por formas mais eficientes de se armazenar e processar grandes volumes de dados também. A cada dia, tem-se uma vasta variedade de dados gerados na nuvem, em dispositivos móveis e nas redes sociais, por isso, conhecer a história dos bancos de dados não relacionais (NoSQL) é fundamental para quem deseja trabalhar com big data (SILVA et al., 2021).
Os bancos de dados NoSQL auxiliam os profissionais de TI, desenvolvedores e DBAs a gerenciar os novos desafios da diversidade do avanço da tecnologia, além de serem altamente eficazes ao processar dados que são considerados “imprevisíveis” e com uma velocidade alta de consulta. Dessa forma, o objetivo desta lição é proporcionar a você o conhecimento sobre NOSQL, seus conceitos, modelagem de dados, tipos de bancos de dados e princípios BASE dos bancos de dados NoSQL. Ao final desta lição, você conhecerá as principais tecnologias por trás dos principais bancos de dados não relacionais.
Nesse momento, convido-o(a) a relembrar sobre os bancos de dados relacionais (SGBDs). Isso porque é impossível falar de bancos de dados não relacionais (NoSQL) sem antes mencionar os bancos de dados relacionais. Como são conhecidos os bancos de dados relacionais? Eles são sistemas de propósito geral e utilizam a linguagem SQL (Structured Query Language) para realizar consultas e manipular os dados e as suas estruturas de dados.
Com o ganho de popularidade da internet, segundo Silva et al., (2021, p. 15), os bancos de dados relacionais, contudo, não são "[...] capazes de acompanhar a escala das aplicações e com isso levou ao surgimento dos bancos de dados não relacionais, capazes de acompanhar a escala da internet, além de serem capazes de armazenar dados não estruturados e os processar de forma mais rápida".
Os bancos de dados não relacionais também são chamados de NoSQL, termo criado, em 1998, por Carlo Strozzi, para se referir a um banco de dados relacional leve e open source que não utilizava a linguagem SQL (SILVA et al., 2021). Para dar início, precisamos começar com os conceitos sobre NoSQL. Depois, entraremos na modelagem de dados para os bancos de dados relacionais, seguindo para tipos de bancos de dados e princípios BASE dos bancos de dados NoSQL. Que tal nos aprofundarmos, ainda mais, nestas definições?
Durante os anos, surgiram, no mercado, diversos bancos de dados que ganharam importância. A seguir, conheceremos quais são os principais tipos de bancos de dados NoSQL e quais são as suas principais características. O primeiro que conheceremos é o MongoDB, líder de mercado dos bancos de dados NoSQL. Ele possui features (características) para produção, que são:
[...] replicação, indexação e balanceamento de carga. Para armazenar dados, o MongoDB utiliza alguns documentos muito similares ao formato JSON (uma notação que permite estruturar dados em formato texto para serem utilizados em diferentes tipos de sistemas). Ele é open source, o que contribui muito para a evolução da sua tecnologia (SILVA et al., 2021, p. 27).
O Amazon DynamoDB é um produto excelente da AWS (Amazon Web Services). De acordo com Silva et al. (2021, p. 26),
[...] ele é totalmente cloud e viabiliza um desempenho confiável e em escala. Possui também recursos valiosos de segurança que são baseados em cache de memória, backup e restauração de dados. Este banco de dados é amplamente utilizado para criação de datastore, jogos, ad tech e aplicativos web sem servidor.
O banco de dados Cassandra foi desenvolvido no Facebook e, hoje em dia, é mantido pela Apache Foundation. Silva et al. (2021, p. 27) dizem que
[...] ele é popular para se trabalhar com Big Data, pelo fato de ser muito otimizado para clusters, especialmente por funcionar sem mestres e por ter mecanismos distribuídos. Outro ponto forte é o conceito de orientação por coluna, o que torna a latência bem menor em algumas pesquisas.
O banco de dados Redis é um modelo de armazenamento de dados open source e, segundo Silva et al. (2021, p. 28), “os dados são armazenados na forma de chave-valor e na memória do Redis, e por isso, o torna rápido e flexível. Considerado o banco de dados NoSQL mais famoso do tipo chave-valor”. Para Silva et al., (2021. p. 25),
[...] o banco de dados HBase é um banco de dados open source, orientado a colunas e distribuído. Atualmente, Spotify e Facebook são algumas das grandes corporações que utilizam esse modelo de armazenamento. Ele é escrito em Java e por isso tem fácil integração com o MapReduce (ferramenta do framework Apache Hadoop e que é uma das principais plataformas para tratamento de big data)".
O banco de dados Neo4j é considerado um dos melhores bancos NoSQL. Segundo Silva et al. (2021, p. 25),
[...] ele é baseado em grafos e é um dos mais conhecidos nessa categoria de banco de dados. Possui uma implementação de código aberto de fácil entendimento e os dados podem ser acessados e atualizados através da Cypher Query Language, ou seja, uma linguagem semelhante à linguagem SQL. Excelente para reconhecer padrões e fazer a mineração de dados".
NoSQL é o termo usado para bancos de dados não relacionais e foi criado, em 1998, por Carlo Strozzi, para se referir a um banco de dados relacional leve e open source que não utilizasse a linguagem SQL. Silva et al. (2021) colocam que esta linguagem pode ser interpretada de forma literal como não SQL, ou seja, ausência de linguagem SQL.
Os bancos de dados NoSQL, geralmente, são open source, têm, como característica, a ausência de esquema (usado em SQL) e permitem a adição de novas colunas de forma livre. Eles evoluíram para auxiliar os desenvolvedores a criarem, rapidamente, sistemas de banco de dados, a fim de armazenar as novas informações e poder disponibilizá-las para pesquisa e análise de forma rápida. O banco de dados NoSQL surgiu devido ao desafio de armazenar e processar grandes volumes de dados com formatos diversos. Assim, para atender a este desafio, tornou-se necessário abrir mão de algumas características existentes em bancos de dados relacionais para dar lugar a outras características mais flexíveis (SILVA et al., 2021).
Uma vantagem dos bancos de dados não relacionais é que eles foram criados para serem escalares, ou seja, são capazes de responder a mais requisições e comportar volumes maiores de dados com a adição de hardware ou de novas máquinas em um cluster. De acordo com Silva et al. (2011), grandes empresas da internet são proeminentes no uso das tecnologias NoSQL, e a Google e a Amazon descrevem as suas alternativas aos bancos de dados relacionais e se tornaram as propulsoras desse movimento. Com isso, o uso de bancos de dados NoSQL, hoje, é largamente difundido em empresas de tecnologia, devido ao baixo custo de implementação e à alta escalabilidade.
Lembra que, em um banco de dados relacional, é necessário modelar o esquema (tabelas e relacionamentos) no início do projeto? Isso, às vezes, não é bom, porque o início do projeto é exatamente o momento em que pouco sabemos sobre ele ainda.
O banco de dados NoSQL oferece uma liberdade de esquema, ou seja, de modelagem de dados. Mas e quanto ao padrão? Essa liberdade não quer dizer que não precise estabelecer um padrão, apenas indica que esse padrão poderá ser modificado enquanto o projeto avança, mas com menos sofrimento. Vamos falar de tipos de bancos de dados NoSQL? Temos quatro tipos, que são: Modelo Colunas, Modelo Grafos, Modelo Chave-Valor e Modelo Documento.
Modelo Colunas: modelo em que o banco de dados faz armazenamento em linhas particulares de tabela. Exemplos clássicos do modelo de colunas são os bancos Hbase e Cassandra.
Modelo Grafos: modelo que armazena dados na forma de grafo, ou seja, os dados são dispostos no formato de arcos conectados por arestas. Um exemplo é o banco Neo4j.
Modelo Chave-Valor: modelo em que temos um “banco formado por conjuntos de chaves, e que são acompanhados de valores como tabelas hash. A estrutura chave-valor também é bem flexível e própria para armazenamento de big data” (SILVA et al., 2021, p. 62). Exemplo prático é o Redis.
Modelo Documento: modelo em que os dados são considerados “documentos”. De acordo com Silva et al. (2021, p. 63), “esse modelo é altamente flexível e eficiente para tratar dados não estruturados, já que uma única coleção pode contar com grupos de dados (documentos) de diversos formatos diferentes”. Um exemplo é o esquema de armazenamento do MongoDB.
Onde podem ser usados esses bancos de dados NoSQL? Podem ser usados nas seguintes situações:
Trabalhos que envolvam grande volume de dados.
Desempenho melhorado para a escrita de dados.
Acesso rápido aos dados armazenados, como Chave/Valor.
Quando seus dados não têm um esquema definido.
Disponibilidade alta com fácil balanceamento dos dados.
Os melhores bancos de dados NoSQL podem auxiliar a empresa, porém é preciso escolher o mais adequado à necessidade dela.
Conheceremos, agora, os princípios BASE dos bancos de dados NoSQL.
Com o grande crescimento dos bancos de dados NoSQL e sua maneira flexível e fluida de manipular dados, um novo modelo de banco de dados foi projetado para refletir suas propriedades. De acordo com Silva et al. (2021), esse modelo é chamado BASE, que significa: Basically Available, Soft-State, Eventual Consistency, que pode ser traduzido em uma aplicação que está sempre funcionando, nem sempre está consistente, mas, eventualmente, estará em um estado conhecido. Vejamos:
Basically Available: em vez de impor consistência imediata, os bancos de dados NoSQL modelados em BASE garantirão a disponibilidade dos dados.
Soft-State: devido à falta de consistência imediata, os valores dos dados podem mudar com o tempo.
Eventually Consistent: o fato de que o BASE não impõe consistência imediata não significa que nunca a atinge. No entanto, até que isso aconteça, as leituras de dados ainda são possíveis (embora possam não refletir a realidade).
A Figura 5 mostra o porquê de os bancos de dados NoSQL conseguirem escalar muito mais do que os bancos de dados relacionais. Assim, Ao analisar, podemos observar as diferenças entre ACID e BASE, sendo possível perceber que essas propriedades são, de certa forma, opostas (SILVA et al., 2011).
Para finalizar nossa lição e para você fixar bem o conteúdo, mostraremos a aplicabilidade de cada um dos tipos de bancos de dados NoSQL. Começaremos pelos bancos de dados de chave/valor, que são utilizados em sistemas de recomendação em tempo real e para anúncios. Imagine que precisamos permitir um rápido acesso aos dados para exibir recomendações e anúncios para os visitantes de um site. Um exemplo de uso real desse tipo de banco é o Twitter. Os próximos são os bancos de dados orientados a documentos, que são sistemas muito úteis em tarefas de integração e migração de dados. Um exemplo é o caso de perfis de usuários, que podem ter diversos campos customizados de dados.
Agora, você pode pesquisar sobre a aplicabilidade de cada um dos tipos de bancos de dados NoSQL que faltam, como os bancos de dados orientados a colunas e os bancos de dados grafos. Qual deles será que a Netflix utiliza? E o Uber? E a Globo.com? E as redes sociais? Agora é com você.
SILVA, F. C. et al. Banco de Dados Não Relacional. Porto Alegre: Sagah, 2021.