[UFMS Digital] Banco de Dados - Módulo 4

[UFMS Digital] Banco de Dados - Módulo 4

Introdução ao SGBD NoSQL

O que é um Banco de Dados?

  • O módulo 4 apresenta uma introdução sobre bancos de dados, suas características e funcionamento no contexto do SGBD (Sistema de Gerenciamento de Banco de Dados).
  • A unidade 2 discute um banco de dados específico no SQL, orientado a documentos, enquanto a unidade 3 aborda outros tipos.
  • Os bancos de dados NoSQL são caracterizados por não serem relacionais e não garantirem as propriedades ACID (Atomicidade, Consistência, Isolamento e Durabilidade).

Definição e Origem do Termo NoSQL

  • O termo "NoSQL" é frequentemente interpretado como "Not Only SQL", enfatizando que não se limita apenas à linguagem SQL.
  • Bancos de dados relacionais surgiram na década de 70 e continuam sendo amplamente utilizados pelas grandes empresas.
  • Em 1998, o termo NoSQL foi utilizado para descrever bancos que não possuíam interface SQL; em 2009, Erick Evans promoveu um evento focado em bancos distribuídos.

Características dos Bancos Relacionais vs. Não Relacionais

Estrutura dos Bancos Relacionais

  • Os bancos relacionais possuem tabelas com esquemas bem definidos, onde cada tabela tem atributos específicos e restrições.
  • Eles garantem as propriedades ACID durante transações, essenciais para sistemas financeiros e corporativos.

Estrutura dos Bancos Não Relacionais

  • Nos bancos NoSQL, os registros podem ter estruturas variáveis e são altamente escaláveis.
  • Exemplificado através da criação de catálogos em lojas virtuais onde diferentes produtos podem ter atributos distintos sem um esquema fixo.

Vantagens dos SGBDs Não Relacionais

Distribuição e Escalabilidade

  • Os bancos NoSQL permitem distribuição em várias máquinas dentro de um cluster, aumentando a velocidade das consultas.

Comparação entre Bancos de Dados Relacionais e Não Relacionais

Uso de Bancos de Dados em Diferentes Setores

  • Empresas que utilizam sistemas financeiros geralmente optam por bancos de dados relacionais, enquanto empresas de e-commerce e redes sociais podem se beneficiar mais dos bancos não relacionais devido à flexibilidade na gestão do catálogo de produtos.

Estruturas de Dados em Redes Sociais

  • Em bancos de dados orientados a grafos, como os utilizados em redes sociais, as relações entre nós (ex: amigos no Facebook) são facilmente implementadas, permitindo uma representação clara das conexões.

Consistência nos Bancos de Dados

  • A principal diferença entre bancos relacionais e não relacionais é a consistência. Os bancos relacionais garantem uma consistência rígida através da integridade ACID, enquanto os não relacionais oferecem uma consistência eventual.

Consistência Rígida vs. Eventual

  • A consistência rígida assegura que qualquer consulta retorne sempre o mesmo valor consistente em um cluster, enquanto a consistência eventual pode apresentar dados inconsistentes temporariamente até que todas as máquinas sejam atualizadas.

Escalabilidade Horizontal e Vertical

  • A escalabilidade vertical envolve aumentar o poder computacional de uma única máquina, enquanto a escalabilidade horizontal refere-se à adição de mais máquinas ao cluster para melhorar a capacidade sem comprometer a consistência dos dados.

Exemplo Prático da Consistência Eventual

  • Ao alterar um dado (ex: salário do funcionário), essa alteração precisa ser replicada nas outras máquinas do cluster. Durante esse processo, pode haver janelas onde consultas retornam valores antigos até que todos os nós estejam atualizados.

Características dos Bancos NoSQL

  • Os bancos NoSQL são projetados para não garantir propriedades ACID e geralmente operam com consistências eventuais. Eles incluem categorias como chave-valor e orientados a documentos.

Categorias dentro dos Bancos NoSQL

Tipos de Bancos de Dados: Relacional vs. Não Relacional

Categorias de Bancos de Dados

  • Existem bancos de dados orientados a colunas, como Bigtable do Google e Cassandra, que armazenam dados em partições referenciando colunas.
  • Os bancos de dados baseados em gráficos são utilizados para redes sociais, organizando registros com nós e relacionamentos entre eles.

Características dos Bancos de Dados Não Relacionais

  • O MongoDB e o CouchDB utilizam objetos JSON para armazenar coleções, facilitando consultas semelhantes à programação em JavaScript.
  • A principal diferença entre bancos relacionais e não relacionais é que os primeiros armazenam dados em tabelas com linhas e colunas.

Estrutura dos Dados

  • Em um banco relacional, os dados são organizados em tabelas (ex: tabela funcionário com nome, idade e CPF).
  • No MongoDB, os dados são armazenados em coleções compostas por documentos que podem conter subdocumentos.

Relacionamentos e Transações

  • Bancos relacionais utilizam chaves primárias e estrangeiras para estabelecer relações entre tabelas; já no MongoDB não há esse conceito.
  • Enquanto bancos relacionais garantem propriedades ACID (Atomicidade, Consistência, Isolamento, Durabilidade), o MongoDB prioriza escalabilidade e alta disponibilidade.

Linguagens e Manipulação de Dados

  • SQL é utilizado nos bancos relacionais para definição e manipulação de dados; no MongoDB utiliza-se comandos JavaScript.
  • No modelo relacional cada coluna armazena apenas um dado atômico; no MongoDB um documento pode conter múltiplos valores ou outros documentos.

Comparação entre Modelos

  • Em bancos relacionais existe um esquema rígido pré-definido; já no MongoDB os esquemas são variáveis e podem ser alterados conforme necessário.
  • Chaves estrangeiras permitem junções entre tabelas nos bancos relacionais; essa funcionalidade não existe no MongoDB.

Quando Usar Cada Tipo?

  • Ambos os tipos se complementam: enquanto o relacional é ideal para consistência rígida, o não relacional atende melhor a grandes volumes de dados.

Eficiência na Captura e Consulta de Dados

Velocidade e Escalabilidade

  • A distribuição dos dados e a velocidade na captura são consideradas razoáveis, especialmente em contextos que exigem rapidez nas respostas de leitura e escrita.
  • A escalabilidade horizontal é destacada como um fator importante para garantir eficiência nas operações de leitura e escrita.

Consistência e Propriedades ACID

  • É mencionado que, em situações onde não se requer consistência rígida, o uso de bancos de dados NoSQL pode ser muito adequado.
  • Aceitar uma janela de inconsistência permite maior flexibilidade no uso do NoSQL, que não precisa garantir as propriedades do modelo ACID.

Conclusão do Módulo 4

  • O módulo 4 foi encerrado com uma discussão sobre características do NoSQL, especificamente sobre bancos baseados em documentos.
Video description

Banco de Dados Módulo 4 –SGBDs NoSQL Profa. Dra. Vanessa Borges