Lição 10 - Modelos de base de dados:
modelos não relacionais
modelos não relacionais
Olá, caro(a) aluno(a)! Nesta lição, vamos conhecer outros modelos de banco de dados! Até aqui trabalhamos utilizando o modelo relacional de banco de dados. Entretanto, existem outros modelos de banco de dados que podem ser mais indicados para determinados tipos de aplicações.
Vamos conhecer o modelo de banco de dados não relacionais além de suas aplicações.
No mundo da tecnologia de banco de dados, podemos dividir os bancos de dados em relacionais e não relacionais. A diferença diz respeito a como eles são construídos, o tipo de informações que são armazenadas e como são armazenadas.
Conforme define Pernambuco (2014), dentro do modelo de banco de dados não relacionais existem diversas categorias com abordagens diferentes de armazenamento e manipulação de dados.
Essas diferentes abordagens surgem como uma solução para suprir algumas necessidades do modelo relacional de dados, por exemplo, problemas de performance e escalabilidade. O modelo não relacional não busca substituir o modelo relacional, mas oferecer alternativas de banco de dados mais flexíveis.
O modelo não relacional é popularmente conhecido como NoSQL e foi citado pela primeira vez por Strozzi (1998). Isso se deve, pois SQL é a linguagem padrão de manipulação de dados em banco de dados relacionais, de modo que o NoSQL introduz uma nova forma de manipular dados sem o uso de uma interface SQL.
Sabemos que o modelo relacional é mais utilizado, e isso se deve, pois um banco de dados SQL garante que todas as transações do banco de dados respeitem as quatro propriedades do ACID, que são:
Atomicidade: define que uma transação deve ser executada de forma completa, caso contrário, ela deve ser desfeita, desta forma, garantindo que as transações sejam atômicas.
Consistência: uma transação deve criar um novo estado válido, em caso de falha, os dados devem retornar ao estado inicial.
Isolamento: uma transação em movimento não deve ser interferida por nenhuma outra transação concorrente.
Durabilidade: os dados de um sistema devem sempre estar disponíveis em seu estado correto, mesmo em caso de falhas.
As propriedades ACID reduzem à ocorrência de anomalias e falhas, protegendo a integridade do banco de dados prescrevendo exatamente como as transações devem se comportar. Por outro lado, a obrigatoriedade de garantir todas as propriedades da ACID no modelo relacional torna a manipulação dos dados “engessada”, o que resulta em problemas de performance e escalabilidade, pois quanto maior o tamanho da base de dados, mais custoso se torna, seja pelo custo de infraestrutura quanto de especialista.
O modelo não relacional, por outro lado, sacrifica algumas das propriedades da ACID para entregar maior flexibilidade e velocidade de processamento. Um banco de dados NoSQL não estabelece limites para os tipos de dados que podem ser armazenados em conjunto, facilitando, assim, o processo de armazenamento e aproveitamento de recursos. Permitindo uma escalabilidade mais barata e simples.
O modelo não relacional apresenta maior flexibilidade e performance comparado com o modelo relacional, isso se deve, pois os bancos de dados NoSQL não seguem as propriedades do ACID de forma a perder em aspectos de consistência e durabilidade.
Conforme explicam Elmasri e Navathe (2005), o modelo não relacional busca entregar os aspectos presentes no teorema CAP proposto por Brewer (2000), que indica que uma aplicação deve considerar 3 requisitos básicos: consistência, disponibilidade e particionamento. Segundo Brewer (2000), é impossível um sistema de banco de dados garantir simultaneamente mais de dois dos três requisitos da CAP. Ou seja, você, ao criar um banco de dados, não será capaz de montar um sistema que garante a consistência, disponibilidade e o particionamento tolerante a falhas, de modo que sempre terá que escolher duas entre as três características.
Vamos conhecer a definição de cada uma dessas características?
Consistência: define que, após uma transação de alteração, os dados permaneçam consistentes, isto é, todos os usuários da base de dados devem visualizar os mesmos dados atualizados.
Disponibilidade: os dados devem estar sempre disponíveis aos usuários.
Particionamento: o sistema continuará funcionando mesmo que os dados estejam distribuídos em diferentes servidores.
Existem diferentes abordagens de bancos de dados não relacionais, onde cada um deles busca atender dois dos três requisitos do CAP. A escolha entre esses requisitos deve ser baseada no objetivo do desenvolvedor com o banco de dados.
Vamos conhecer algumas das abordagens mais populares:
Chave/Valor: este é o tipo mais simples de armazenamento de dados. Ele consiste em um valor chave que é responsável por identificar um dado e o seu valor. Esse funcionamento permite que o armazenamento dos dados seja realizado de maneira extremamente escalável. Este tipo de banco de dados pode ser encontrado, por exemplo, em sistemas como:
Perfis de usuários em redes sociais.
Carrinhos de compra.
Seções de navegação.
Orientado a documentos: os dados são assumidos como documentos, onde são armazenados e localizados utilizando um sistema de ID que identifica o dado. No banco de dados orientado a documentos, todas as informações de um dado devem ser armazenadas em um único documento livre de esquemas. Este modelo de banco de dados pode ser encontrado em aplicações como:
Gerenciamento de posts em blogs.
Aplicativos de delivery.
Aplicações de análise em tempo real.
Orientado a colunas: este modelo é o que mais se aproxima do modelo relacional. Os dados são armazenados em famílias de colunas identificadas por linhas que possuem colunas associadas a dados e chaves de outros grupos de colunas. Este tipo de banco de dados é utilizado para pesquisa inbox de redes sociais.
Orientado a grafos: os dados são armazenados e representados por estruturas de grafos, compostos por nós, arestas e propriedades. Os nós representam as entidades do banco de dados e os relacionamentos são representados pelas arestas que ligam os nós. Bancos de dados orientados a grafos são amplamente utilizados em redes sociais para o armazenamento de dados de curtidas, comentários e redes de amigos.
Como você pode notar, cada uma das abordagens de bancos de dados não relacionais são utilizadas para um fim específico, e cada uma delas traz consigo vantagens e desvantagens. De modo geral, podemos citar as seguintes vantagens em utilizar banco de dados NoSQL:
Modelo de dados flexíveis: por existir poucas “regras” comparado com o modelo relacional, bancos de dados não relacionais permitem trabalhar com qualquer tipo de dados sem muita restrição.
Alta escalabilidade: por conta da estratégia de escalonamento horizontal, bancos de dados não relacionais permitem um processo de escalabilidade mais simples.
Gerenciamento: bancos de dados não relacionais são simples de serem gerenciados em grande escala, permitindo que a maior parte das rotinas de manutenção ocorram por meio de scripts automatizados.
Por outro lado, existem também algumas desvantagens que devem ser levadas em conta ao considerar utilizar banco de dados NoSQL:
ACID - bancos de dados não relacionais não seguem o padrão ACID, de modo que fatores como durabilidade e consistência dos dados podem ser perdidos dependendo da abordagem utilizada.
Maturidade - os bancos de dados não relacionais ainda estão ganhando o seu espaço no mercado, com isso ainda existem alguns pontos em aberto que estão sendo desenvolvidos e/ou aprimorados.
Suporte - a maioria dos bancos de dados não relacionais são projetos abertos, isso implica que existe pouco ou nenhum investimento em equipes de suporte para as tecnologias.
Nesta lição, você deve ter notado que grandes aplicações utilizam diferentes tipos de bancos de dados para um mesmo sistema. Quando trabalhamos com aplicações de grande escala, utilizar apenas um tipo de base de dados pode não trazer grandes benefícios, pois você fica limitado nas possibilidades.
Deste modo, é sempre prudente analisar todas as possibilidades existentes e, então, definir qual abordagem é melhor para cada módulo do sistema. Por exemplo, o Facebook utiliza 3 tipos de banco de dados, para gerenciar conversas inbox é utilizado um banco de dados orientado a colunas, para posts, banco de dados relacionado a documentos e, para o gerenciamento de amigos, curtidas e comentários, é utilizado um banco orientado a grafos.
BREWER, S. Brewer’s cap theorem. CS341 Distributed Information Systems, University of Basel (HS2012), 2000.
CHEN, P. P-S. The entity-relationship model—toward a unified view of data. ACM transactions on database systems (TODS), v. 1, n. 1, p. 9-36, 1976.
CODD, E. F. A Relational Model of Data for Large Shared Data Banks. Communications of the ACM, v. 26, n. 1, p. 64–69, 1983.
ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. São Paulo: Pearson, 2005.
PERNAMBUCO, U. F. D. Uma Arquitetura de Cloud Computing para análise de Big Data provenientes da Internet Of Things Uma Arquitetura de Cloud Computing para análise de Big Data provenientes da Internet Of Things, v. 3, p. 15, 2014.
STROZZI, C. NoSQL: A relational database management system. Lainattu, v. 5, p. 2014, 1998.