Banco de Dados - Introdução a Bancos de Dados Não Relacionais - NoSQL

Banco de Dados - Introdução a Bancos de Dados Não Relacionais - NoSQL

Introdução aos Bancos de Dados NoSQL

O que são Bancos de Dados NoSQL?

  • O termo "NoSQL" significa "não SQL" ou "não relacional", e atualmente é interpretado como "not only SQL" (não somente SQL).
  • Os bancos de dados relacionais foram predominantes desde 1970, mas enfrentam limitações com o aumento da quantidade de dados.

Limitações dos Bancos Relacionais

  • A escalabilidade se torna um problema quando lidamos com petabytes de dados, onde a estrutura relacional não é eficiente.
  • Processar joins em grandes volumes de dados pode ser demorado e difícil, levando a perdas significativas de performance.

História dos Bancos de Dados NoSQL

Desenvolvimento e Popularização

  • Criados por Carlo Strozzi em 1998, os bancos NoSQL surgiram como uma alternativa aberta aos bancos relacionais.
  • Em 2006, o artigo do Google sobre Bigtable reacendeu o interesse pelos bancos NoSQL, seguido por discussões em 2009 que ampliaram sua adoção.

Características dos Bancos NoSQL

  • Não utilizam SQL; geralmente são open-source e têm diferentes formas de organização (grafos, documentos, colunas).
  • Adaptados para clusterização e possuem esquemas flexíveis que permitem múltiplos formatos dentro do mesmo conjunto de dados.

Escalonamento e Replicação nos Bancos NoSQL

Diferenças no Escalonamento

  • O escalonamento horizontal ("scaling out") permite aumentar a capacidade ao adicionar mais máquinas, enquanto o escalonamento vertical ("scaling up") envolve alocar mais recursos a uma única máquina.

Replicação Nativa

  • A replicação é uma característica fundamental dos bancos NoSQL, facilitando operações distribuídas em várias máquinas.

Modelos Comuns em Bancos de Dados NoSQL

Modelo Chave-Valor

  • O modelo chave-valor associa chaves únicas a valores específicos. É flexível e ideal para armazenamento de big data.

Exemplos Práticos

1010 e Modelos de Banco de Dados NoSQL

Introdução aos Bancos de Dados NoSQL

  • O nome do banco 1010 é José, e os campos-chave são únicos em todo o banco. Um conjunto grande de chaves desse tipo é utilizado.
  • O "DB Engines" é um ranking que mostra os bancos mais utilizados, com destaque para o "Redis", que aparece como o primeiro modelo NoSQL do tipo chave-valor.

Tipos de Modelos NoSQL

Modelos Chave-Valor

  • O "Redis" é o banco chave-valor mais utilizado. Os bancos NoSQL frequentemente trabalham com vários tipos de modelagem de dados, não se limitando a um único modelo.

Modelos Colunares

  • Nos bancos colunares, o armazenamento ocorre em linhas particulares, onde cada linha pode ter várias colunas. Isso contrasta com os bancos relacionais.
  • Exemplos conhecidos incluem HBase e Cassandra, que são amplamente utilizados em modelos de Big Data.

Modelos de Grafo

  • Um grafo é um modelo matemático formado por vértices (pontos) e arestas (ligações). É útil para redes sociais e bioinformática.
  • Principais exemplos incluem Neo4j, Virtuoso e ArangoDB. O Neo4j é destacado como o banco exclusivamente dedicado a grafos.

Documentação em Bancos NoSQL

Modelos Baseados em Documentos

  • Os dados são tratados como documentos flexíveis, sem necessidade de colunas pré-definidas. Ideal para dados não estruturados.
  • Um documento típico tem estrutura semelhante a um arquivo JSON. Exemplos incluem MongoDB e Couchbase.

Vantagens dos Bancos de Dados NoSQL

Por que usar NoSQL?

Banco de Dados: Relacional vs NoSQL

Complexidade dos Bancos de Dados Relacionais

  • Os bancos de dados relacionais são complexos por natureza, e quando há necessidade de escalonamento, pode ser necessário considerar a migração para um banco de dados NoSQL.
  • A consistência é uma característica fundamental dos bancos de dados relacionais, que garantem integridade e consistência em suas operações.

Consistência nos Bancos de Dados NoSQL

  • Diferentemente dos bancos relacionais, os bancos NoSQL não garantem a consistência como premissa; a consistência pode ocorrer de forma eventual.
  • A escolha entre um banco relacional ou NoSQL deve levar em conta a necessidade de garantir consistência nos dados.

Disponibilidade e Escalonamento

  • Os bancos de dados relacionais enfrentam dificuldades com disponibilidade em grandes cargas de dados devido à sua estrutura não distribuída.
  • Apesar das melhorias em alguns produtos relacionais, ainda existem limitações significativas na disponibilidade ao lidar com grandes conjuntos de dados.

Uso Estratégico dos Bancos NoSQL

  • É importante considerar o uso do banco NoSQL sempre que o volume de dados for muito grande; eles não substituem os bancos relacionais, mas sim complementam suas funcionalidades.
  • Ambos os tipos de banco (relacional e NoSQL) têm seu espaço no mercado e podem trabalhar juntos em muitos projetos.

Escolha do Banco Adequado

  • A escolha entre um banco relacional ou NoSQL deve ser baseada nas necessidades específicas do projeto; cada tipo tem suas vantagens dependendo do contexto.
  • Ao optar por um banco relacional, é preciso decidir qual produto utilizar (ex: Postgre, Oracle); para NoSQL, avaliar se será um banco orientado a documentos, chave-valor ou grafos.

Introdução ao MongoDB

Video description

univesp.br Eixo de Computação - COM300 Univesp - Universidade Virtual do Estado de São Paulo Professor: José Eduardo Santarem Segundo Nesta videoaula, vamos apresentar as características básicas de um sistema de banco de dados não relacional. Nesta semana, estudaremos os conceitos de transações em bancos de dados relacionais, e também teremos uma introdução sobre os conceitos a respeito de bancos de dados não relacionais. Habilidades e competências: -Compreender os principais conceitos sobre transações em bancos de dados relacionais e a sua importância para controle dos processos de negócio em uma organização; -Compreender o conceito de atomicidade; -Compreender como implementar tecnicamente um procedimento de transação completo para banco de dados relacional; -Esboçar o esquema de um controle transacional entre transações concorrentes; -Conhecer conceitos básicos sobre bancos de dados não relacionais; -Conhecer conceitos básicos sobre bancos de dados de documentos e mapeamento objeto-relacional (ORM).