Abordagens NoSQL / Modelos Lógicos e Físicos - Aula 09/12 - Bancos de Dados 2020.2
Introdução ao Cenário de Banco de Dados
Continuação do Curso
- O vídeo é uma continuidade de um curso sobre banco de dados na Unicamp, focando no cenário NoSQL e Big Data.
- André, o apresentador, recomenda assistir ao vídeo anterior para melhor compreensão dos conceitos abordados.
Impacto no Modelo Lógico e Físico
- A apresentação será dividida em discussões sobre o impacto do NoSQL nos modelos lógico e físico de armazenamento.
- Serão explorados diferentes modelos que se afastam do modelo relacional tradicional.
Modelos Não Relacionais
Estruturas Semi-Estruturadas
- O universo semi-estruturado permite flexibilidade nas estruturas dos dados, como documentos JSON.
- Os bancos de dados documentais são adequados para representar essa estrutura hierárquica.
Exemplos de Bancos de Dados Documentais
- O Amazon DocumentDB é mencionado como um exemplo prático desse tipo de banco de dados.
- Os bancos documentais geralmente refletem uma estrutura hierárquica baseada em JSON ou XML.
Representação com JSON
Características do JSON
- JSON (JavaScript Object Notation) é um padrão aberto para intercâmbio de objetos, leve e fácil de usar.
- Ele permite a representação simples e direta dos dados sem a necessidade de esquemas rígidos.
Estrutura Hierárquica
- A estrutura do JSON pode ser vista como hierárquica, permitindo elementos subordinados dentro dele.
- É possível aninhar objetos dentro de outros objetos, facilitando a organização dos dados complexos.
Integração com MongoDB
Armazenamento Direto no MongoDB
- O MongoDB utiliza diretamente a estrutura JSON para armazenar e recuperar dados eficientemente.
Estruturas de Dados e Armazenamento em Bancos de Dados
Objetos e Flexibilidade nos Bancos de Dados
- O objeto Jason pode ser armazenado diretamente no banco, permitindo a inclusão de objetos complexos que contêm outros objetos.
- Os bancos de dados não são rígidos como os relacionais; não é necessário definir um esquema previamente, facilitando o armazenamento flexível.
- É possível manipular dados com comandos para recuperar, atualizar e remover registros, exemplificando a versatilidade do sistema.
Comparação entre JSON e XML
- A disciplina também aborda bancos de dados XML, que estruturam documentos informativos em uma hierarquia.
- O JSON tem ganhado popularidade devido à sua simplicidade em comparação ao XML, que permite esquemas mais complexos.
Bancos de Dados Gráficos
- Existem bancos que armazenam dados na forma de grafos, como Nilford e Virtuoso, permitindo análises específicas sobre as relações entre os dados.
- Linguagens específicas podem ser utilizadas para percorrer e analisar esses gráficos, destacando a importância das relações na representação dos dados.
Estruturas Chave-Valor
- As estruturas chave-valor são simples e permitem fácil distribuição dos dados; cada valor é associado a uma chave única.
- Exemplos incluem Amazon DynamoDB e Redis; ambos utilizam essa abordagem para armazenamento eficiente.
Armazenamento Local no Navegador
- O Web Storage é um sistema que utiliza o modelo chave-valor para armazenar informações localmente em aplicações web.
- Comandos básicos permitem guardar valores associados a chaves únicas; isso facilita o desenvolvimento ágil sem complicações excessivas.
Exemplo Prático com Web Storage
- Um exemplo prático mostra como gravar um valor usando uma chave única no armazenamento local do navegador.
Como Funciona o Registro Chave-Valor?
Introdução ao Registro Chave-Valor
- O conceito de registro chave-valor é apresentado como uma forma simples e rápida de armazenar dados. A chave serve como um identificador único para acessar valores associados.
- O registro permite que se adicione ou ajuste informações facilmente, demonstrando a flexibilidade do sistema em lidar com dados.
Estruturas de Dados e JSON
- É possível combinar registros chave-valor com estruturas JSON, permitindo que os dados sejam manipulados de maneira mais complexa, como se fossem strings.
- Os registros podem interpretar objetos diretamente, facilitando a interação com diferentes tipos de dados.
Comandos e Arquitetura Distribuída
- Um conjunto de comandos pode ser utilizado para referenciar campos dentro dos registros, tornando o sistema mais sofisticado e eficiente na manipulação de dados distribuídos.
- O Google Bigtable é mencionado como um exemplo que não se limita apenas ao modelo chave-valor, mas também incorpora ideias de tabelas sem seguir um modelo relacional tradicional.
Escalabilidade e Indexação
- O Bigtable foi projetado para escalar rapidamente até petabytes, sendo utilizado em sistemas pesados da Google, como Google Search e Google Finance.
- A estrutura do Bigtable permite criar visões esparsas das tabelas, onde nem todas as colunas precisam estar preenchidas.
Estrutura Interna do Bigtable
- A indexação no Bigtable é feita por linhas que contêm famílias de colunas. Cada linha possui uma chave única que facilita a recuperação dos dados armazenados.
- As colunas podem conter versões diferentes do mesmo objeto, permitindo modificações ao longo do tempo sem perder informações anteriores.
Distribuição e Replicação
- A estrutura do Bigtable é inspirada em árvores B+, permitindo distribuir pedaços (ou tablets) entre várias máquinas para processamento eficiente.