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