Prévia do material em texto
Introdução a Bancos de Dados NoSQL Prof. Júlio César Andrade Tema da aula: Objetivos da aula ● Compreender os princípios fundamentais do NoSQL ● Explorar os diferentes tipos de bancos de dados NoSQL ● Entender os conceitos BASE ● Identificar quando utilizar bancos de dados NoSQL ● Estudar as vantagens e limitações dos bancos de dados NoSQL ● Explorar o conceito de escalabilidade em bancos NoSQL 2 Começando do começo… O que são banco de dados relacionais? Bancos de dados relacionais são sistemas de armazenamento de dados baseados no modelo relacional, onde os dados são organizados em tabelas. 3 Bancos Relacionais ● Modelo Relacional: Usa tabelas (ou relações) para representar dados e suas interconexões. ● Tabelas: Estruturas organizadas em linhas (tuplas) e colunas (atributos). ● Chave Primária: Identificador único para cada linha de uma tabela. ● Chave Estrangeira: Campo que referencia a chave primária de outra tabela, estabelecendo relacionamentos entre tabelas. ● Linguagem SQL (Structured Query Language): Usada para inserir, consultar, atualizar e excluir dados no banco. 4 5 SQL (Structured Query Language) Definição: SQL é uma linguagem padrão para gerenciar e manipular bancos de dados relacionais. Finalidade: Permite a criação, consulta, atualização e exclusão de dados em bancos relacionais. 6 SQL (Structured Query Language) DDL (Data Definition Language) – Define a estrutura do banco de dados. ● CREATE TABLE – Cria tabelas. ● ALTER TABLE – Modifica tabelas. ● DROP TABLE – Remove tabelas. DML (Data Manipulation Language) – Manipula os dados dentro das tabelas. ● INSERT INTO – Adiciona registros. ● UPDATE – Modifica registros. ● DELETE – Remove registros. DQL (Data Query Language) – Recupera informações. ● SELECT – Consulta dados. 7 SQL (Structured Query Language) DDL (Data Definition Language) – Define a estrutura do banco de dados. ● CREATE TABLE – Cria tabelas. ● ALTER TABLE – Modifica tabelas. ● DROP TABLE – Remove tabelas. DML (Data Manipulation Language) – Manipula os dados dentro das tabelas. ● INSERT INTO – Adiciona registros. ● UPDATE – Modifica registros. ● DELETE – Remove registros. DQL (Data Query Language) – Recupera informações. ● SELECT – Consulta dados. 8 Principais bancos de dados relacionais 9 ACID O modelo ACID é um conjunto de propriedades que garantem que as transações em bancos de dados relacionais sejam processadas de forma confiável. 10 ACID Atomicidade (Atomicity) ● Significado: A transação é "tudo ou nada". Ou todas as operações dentro de uma transação são executadas com sucesso, ou nenhuma delas é aplicada. Se ocorrer algum erro, todas as modificações feitas são desfeitas. ● Exemplo: Se você estiver transferindo dinheiro de uma conta bancária para outra, a transação deve ser concluída por completo. Se a transferência falhar após a dedução do valor da conta de origem, a transação é cancelada, e o valor volta à conta original. 11 A ACID Consistência (Consistency) ● Significado: Uma transação leva o banco de dados de um estado válido para outro estado válido. Ou seja, as transações devem respeitar todas as regras de integridade e consistência definidas para os dados. ● Exemplo: Em uma base de dados bancária, não deve ser possível realizar uma transação que deixe o saldo de uma conta com valor negativo (se a regra de negócio não permitir). 12 C ACID Isolamento (Isolation) ● Significado: Transações simultâneas não devem interferir umas nas outras. Os efeitos de uma transação não devem ser visíveis para outras até que ela esteja completamente concluída. ● Exemplo: Se dois usuários tentarem atualizar o saldo da mesma conta ao mesmo tempo, a transação deve ser isolada para que nenhuma alteração se sobreponha à outra, garantindo que o saldo final seja correto. 13 I ACID Durabilidade (Durability) ● Significado: Uma vez que uma transação foi confirmada (commit), suas mudanças são permanentes no banco de dados, mesmo que ocorra uma falha no sistema (como uma queda de energia). ● Exemplo: Se você fizer um depósito bancário e a transação for confirmada, o valor depositado deve ser persistido, mesmo que o servidor falhe imediatamente após o commit. 14 D Tipos de dados 15 Tipos de dados Dados Estruturados ● Organizados em um formato fixo, geralmente em tabelas com linhas e colunas. ● Facilmente armazenados e manipulados em bancos de dados relacionais (SQL). ● Possuem um esquema rígido e bem definido. ● Exemplos: ○ Informações em bancos relacionais (clientes, pedidos, produtos). ○ Registros de transações financeiras. ○ Planilhas de Excel. 16 Tipos de dados Dados Não Estruturados ● Não possuem um formato fixo ou predefinido. ● Difíceis de armazenar e processar com bancos relacionais tradicionais. ● Normalmente armazenados em bancos NoSQL, sistemas de arquivos ou data lakes. ● Exemplos: ○ Imagens, vídeos e áudios. ○ E-mails e postagens em redes sociais. ○ Documentos em formato livre, como PDFs e textos digitados 17 Tipos de dados Dados Semiestruturados ● Não seguem um esquema rígido, mas possuem uma organização parcial. ● Usam marcadores ou etiquetas para estruturar as informações. ● Armazenados em formatos flexíveis, como JSON e XML. ● Exemplos: ○ Arquivos JSON e XML usados em APIs. ○ Dados em bancos NoSQL baseados em documentos (MongoDB). ○ Logs de servidores e metadados de arquivos multimídia. 18 Resumo 19 Escalabilidade 20 Escalabilidade de Bancos de Dados A escalabilidade refere-se à capacidade de um banco de dados aumentar seu desempenho e capacidade à medida que a demanda cresce. 21 Escalabilidade de Bancos de Dados Escalabilidade Vertical (Scale-Up) ● Consiste em aumentar a capacidade de um único servidor adicionando mais recursos (CPU, RAM, armazenamento). ● Mantém a estrutura centralizada e pode exigir interrupções no serviço para upgrades. 22 Escalabilidade de Bancos de Dados Escalabilidade Vertical (Scale-Up) ● Vantagens: ○ Simples de implementar. ○ Ideal para cargas de trabalho que não crescem exponencialmente. ● Desvantagens: ○ Custo elevado de hardware. ○ Limitação física do servidor. ○ Ponto único de falha. ● Exemplo: Atualizar um servidor com mais memória RAM e um processador mais potente para suportar mais consultas. 23 Escalabilidade de Bancos de Dados Escalabilidade Horizontal (Scale-Out) ● Aumenta o desempenho distribuindo a carga entre múltiplos servidores (clusters). ● Comum em bancos de dados NoSQL e aplicações que lidam com Big Data. 24 Escalabilidade de Bancos de Dados Escalabilidade Horizontal (Scale-Out) Vantagens: ● Melhor tolerância a falhas. ● Pode crescer indefinidamente com a adição de mais servidores. ● Custo distribuído ao longo do tempo. Desvantagens: ● Mais complexo de gerenciar. ● Requer estratégias como sharding (divisão de dados entre servidores). Exemplo: Um banco NoSQL como MongoDB distribuindo dados entre vários nós para suportar milhões de requisições simultâneas. 25 26 Banco de dados NoSQL 27 NoSQL é o nome dado aos bancos de dados que não se baseiam no conhecido modelo relacional. Ou seja, os bancos NoSQL não usam tabelas com colunas e linhas para armazenar os dados. Ao invés disso, eles implementam diferentes modelos. 28 Existem vários tipos de bancos de dados NoSQL. 29 Tipos de Bancos de Dados NoSQL Bancos de Dados Chave-Valor (Key-Value) Os bancos de dados chave-valor são um dos tipos mais simples e eficientes de bancos NoSQL. Eles armazenam dados como um par chave → valor. 30 Tipos de Bancos de Dados NoSQL Bancos de Dados Chave-Valor (Key-Value) Características ● Armazenamento Simples: Cada registro é identificado por uma chave única e um valor associado. ● Desempenho Alto: Como os dados são acessados diretamente pela chave, a recuperação é extremamente rápida. ● Flexibilidade: O valor pode armazenar diferentes formatos, como strings, listas, objetos JSON ou binários. ● EscalabilidadeHorizontal: Fácil distribuição de dados entre múltiplos servidores. ● Baixa Complexidade: Não há necessidade de esquemas rígidos, tornando-o ideal para aplicações dinâmicas. 31 Tipos de Bancos de Dados NoSQL Bancos de Dados Chave-Valor (Key-Value) ● A chave geralmente é do tipo String, já o valor pode ser qualquer tipo; ● Usado tanto para persistir dados, quanto para ficar em memória formando caches; ● Adequado para aplicações de leituras frequentes; ● Pesquisa em banco fica limitada ao campo chave, não podendo fazer consultas mais elaboradas; ● Ideal para resolver questões de lentidão para leitura e escrita de dados em grande variedade e volume; ● Limitação: Campo valor não permite indexação. 32 Tipos de Bancos de Dados NoSQL Bancos de Dados Baseados em Documentos ● Armazenam dados no formato de documentos, como JSON, BSON ou XML. ● Cada documento contém pares chave-valor organizados de forma flexível. ● Permitem estruturação dinâmica dos dados, sem necessidade de um esquema fixo. ● Casos de uso: Aplicações web, catálogos de produtos, perfis de usuários. ● Exemplos: ○ MongoDB: Muito usado para aplicativos modernos devido à sua flexibilidade. 33 Tipos de Bancos de Dados NoSQL 34 Bancos de Dados Baseados em Documentos Tipos de Bancos de Dados NoSQL Bancos de Dados Baseados em Documentos ● Pode realizar vários tipos de consultas e filtros nos valores armazenados e não somente no campo chave; ● Os documentos podem ser formados por dados semiestruturados, como XML e JSON; ● O foco de um banco de dados de documentos é a funcionalidade de consulta. 35 Tipos de Bancos de Dados NoSQL Bancos de Dados Baseados em Documentos Terminologia: 36 Tipos de Bancos de Dados NoSQL Bancos de Dados Baseados em Colunas ● Diferente dos bancos relacionais, armazenam dados em colunas em vez de linhas. ● Melhor desempenho em consultas que exigem leitura de grandes quantidades de dados. ● Utilizados principalmente para Big Data e aplicações analíticas. ● Casos de uso: Data warehouses, análise de logs, recomendações personalizadas. ● Exemplos: ○ Apache Cassandra: Alta escalabilidade e resistência a falhas. 37 Tipos de Bancos de Dados NoSQL Bancos de Dados Baseados em Grafos ● Armazenam informações como nós (entidades) e arestas (relações entre entidades). ● Ideais para modelar relações complexas entre dados. ● Casos de uso: Redes sociais, detecção de fraudes, mecanismos de recomendação. ● Exemplos: ○ Neo4j: Popular em redes sociais e sistemas de recomendação. 38 Tipos de Bancos de Dados NoSQL Bancos de Dados Orientados a Grafos Ideal para contextos onde as relações entre os dados são tão importantes quanto os próprios dados, como em redes sociais, sistemas de recomendação e detecção de fraudes. 39 Tipos de Bancos de Dados NoSQL Bancos de Dados Baseados em Grafos Composição de Nós e Arestas ● O banco de dados é composto por nós (entidades) e arestas (relacionamentos). ● Nó: Pode representar uma pessoa, organização, local ou qualquer entidade de interesse. ● Aresta: Representa a relação entre dois nós, como amizade, compra ou associação. ● Cada nó tem um identificador único, arestas de saída (conexões para outros nós) e arestas de entrada (conexões de outros nós). ● As propriedades dos nós e arestas são armazenadas como pares chave/valor, permitindo flexibilidade na definição dos dados. 40 Princípios BASE dos bancos de dados NoSQL Os princípios BASE (acrônimo para Basically Available, Soft state, Eventual consistency) são frequentemente usados para descrever o comportamento dos bancos de dados NoSQL. 41 Princípios BASE dos bancos de dados NoSQL Basically Available (Disponibilidade Básica) ● Significado: O sistema garante que estará disponível para fornecer uma resposta, mesmo que parte do sistema falhe. ● Exemplo: Em sistemas distribuídos, um banco NoSQL como Cassandra pode retornar dados de um nó, mesmo que outros nós estejam fora do ar, priorizando a disponibilidade. 42 BA Princípios BASE dos bancos de dados NoSQL Soft State (Estado Suave) ● Significado: O estado do banco de dados pode mudar ao longo do tempo, mesmo sem novas entradas de dados, devido à falta de consistência forte. ● Explicação: O estado dos dados pode ser alterado por processos internos de sincronização (como replicação). ● Exemplo: Um banco de dados NoSQL pode atualizar dados em segundo plano, sem a necessidade de ações explícitas do usuário. Isso pode ocorrer após algum tempo ou com a propagação de alterações entre diferentes nós. 43 S Princípios BASE dos bancos de dados NoSQL Eventual Consistency (Consistência Eventual) ● Significado: O sistema garante que, após um período de tempo, todos os nós do banco de dados convergirão para o mesmo valor de dados, mas não garante consistência imediata. ● Exemplo: Em Cassandra ou Amazon DynamoDB, quando um dado é atualizado em um nó, ele pode não estar imediatamente sincronizado com outros nós. Após algum tempo, todos os nós terão a versão mais recente do dado. 44 E Resumo 45 Como escolher entre bancos de dados não relacionais (NoSQL) e relacionais (SQL) 46 Melhor para: 47 NoSQL ou não relacional ● Processar dados grandes, não relacionados, indeterminados ou em mudança constante. ● Dados independentes de esquema ou com esquema definido pelo aplicativo. ● Aplicativos em que o desempenho e a disponibilidade são mais importantes que uma consistência forte. ● Aplicativos Always On que atendem a usuários em todo o mundo. SQL ou relacional ● Processa dados relacionais e tem requisitos discretos e lógicos que podem ser identificados com antecedência. ● Esquema que precisa ser mantido e sincronizado entre o aplicativo e o banco de dados. ● Sistemas herdados criados para estruturas relacionais. ● Aplicativos que exigem consultas complexas ou transações com várias linhas. Cenário: 48 NoSQL ou não relacional ● Aplicativos móveis. ● Análise em tempo real. ● Gerenciamento de conteúdo. ● Personalização. ● Aplicativos IoT. ● Migração de banco de dados. SQL ou relacional ● Contabilidade, finanças e sistemas bancários. ● Sistemas de gerenciamento de estoque. ● Sistemas de gerenciamento de transações. Escala: 49 NoSQL ou não relacional ● Escala dados horizontalmente ao fragmentá-los entre os servidores. SQL ou relacional ● Escala dados verticalmente, aumentando a carga do servidor. Quando Usar Cada Tipo de Banco de Dados 50 Obrigado! Até a próxima aula. 51 Obrigado!