Prévia do material em texto
Banco de Dados NoSQL Prof. Msc. Henrique Mota henrique.gama@estacio.br fev/2021 Tipos de dados Dados estruturados • Informações formatadas e transformadas em um modelo de dados bem definido e de fácil análise; • Dados brutos mapeados em campos predefinidos que podem ser posteriormente extraídos e lidos por meio de linguagem de consulta (SQL por exemplo); • Os bancos de dados relacionais SQL, consistindo em tabelas com linhas e colunas, são o exemplo perfeito de dados estruturados. • ex.: tabelas; planilhas eletrônicas Dados não estruturados • Dados presentes na sua forma bruta absoluta; • São de difícil processamento devido à sua complexidade de organização e formatação; • Podem ser qualquer coisa que não esteja em um formato específico. • ex.: comentários em mídias sociais, chats, imagens de satélite, dados do sensor IoT, e-mails e apresentações. Dados semi-estruturados • Em alguns casos os dados podem não ser estruturados ou não estruturados; • Tipo de dado que possui algumas características consistentes e definidas, não se limitando a uma estrutura rígida como a necessária para bancos de dados relacionais; • Propriedades organizacionais, como metadados ou tags semânticas, são usadas com dados semiestruturados para torná-los mais gerenciáveis; no entanto, ainda contêm alguma variabilidade e inconsistência; • Em algumas ocasiões, os dados não estruturados são classificados como semiestruturados porque possuem um ou mais atributos de classificação. • ex.: arquivos delimitados; arquivos JSON; páginas web Bancos relacionais • Dados estruturados de acordo com o modelo relacional; • Padrão de fato para a grande maioria dos SGBDs (SQL Server, Oracle, PostgreSQL, MySQL, DB2, etc). • Elementos básicos: Relações (tabelas) e registros (tuplas); • Características fundamentais: Restrições de integridade (PK, FK, UK, CK, NN); Normalização; Linguagem SQL (Structured Query Language) Bancos NoSQL • NoSQL – termo genérico para definir bancos de dados não- relacionais (década de 60); • Tecnologia popularizada por empresas líderes da Internet (Google, Facebook , Amazon e LinkedIn); • Objetivo de superar as limitações (45 anos de uso da tecnologia) de banco de dados relacional para aplicações web modernas (2009); • Comumente usados em áreas de conhecimento como Data Science; • As maior diferença entre bancos NoSQL e relacionais é que bancos relacionais trabalham com tabelas, enquanto em Bancos NoSQL todos os dados constam no mesmo registro. Bancos NoSQL Atualmente existe um grande movimento por parte das empresas de tecnologia por adotar NoSQL; A escolha é impulsionada por quatro megatendências inter- relacionadas: I. Big Users II. Big Data III. Internet das coisas IV. Cloud Computing Big Users Uso crescente de aplicativos online resultou em um número crescente de operações de banco de dados e a necessidade de uma maneira mais fácil de escalar bancos de dados para atender a essas demandas; Um grande número de usuários, combinados com a natureza dinâmica dos padrões de uso está demandando uma tecnologia de banco de dados mais facilmente escalável. Big Data É necessário uma solução altamente flexível, que acomode facilmente qualquer novo tipo de dado (não-estruturado e semi-estruturado) e que não seja corrompida por mudanças na estrutura de conteúdo. NoSQL fornece um modelo de dados sem esquema muito mais flexível que mapeia melhor a organização de dados de uma aplicação e simplifica a interação entre a aplicação e o banco de dados, resultandoem menos código para escrever, depurar e manter. Internet das coisas (IoT) • Mais de 50 bilhões de coisas vão estar conectadas a Internet; • 79,4 zettabytes (ZB) de dados serão gerados por sistemas embarcados (em 2025); • 21% dos mais valiosos dados serão gerados por sistemas embarcados (hoje 8%); • Empresas inovadoras estão utilizando tecnologia NoSQL para dimensionar o acesso simultâneo de dados para milhões de dispositivos e sistemas conectados, armazenar bilhões de pontos de dados e atender aos requisitos de infraestrutura e operações de missão crítica de performance. Cloud Computing • Atualmente a maioria das novas aplicações são executados em sistemas em nuvem privado, público ou híbrido; • Suportam grande número de usuários e usam, comumente, uma arquitetura de três camadas; • Na camada de banco de dados, bancos relacionais são originalmente a escolha popular; • Seu uso é cada vez mais problemático por possuírem tecnologia centralizada com escalabilidade vertical ou invés de horizontal, fazendo com que não se tornem adequados para aplicações que requerem escalabilidade fácil e dinâmica. Cloud Computing • A escalabilidade diz respeito à capacidade de um sistema se expandir sem perder o desempenho; • Simplificando: se um sistema de computação em nuvem (redes, armazenamento, servidores, aplicativos e serviços) puder responder rapidamente para atender a novas demandas – em tamanho ou volume – ele é escalável. Internet das coisas (IoT) Internet das coisas (IoT) Tipos de bancos NoSQL • Podemos classificar os modelos existentes de acordo com a estrutura de armazenamento; • Atualmente, existem 4 modelos principais: o modelo orientado a chave-valor, orientado a documentos orientado a colunas, orientado a grafos,. Modelo chave-valor • Formado por conjuntos de chaves (normalmente string), que por sua vez são acompanhados de valores (de qualquer tipo). A estrutura chave-valor também é bem flexível e própria para armazenamento de big data. Esse formato é altamente disponível. ex.: REDIS e MemcacheD; • Embora a estrutura simples do banco de dados orientado a chave-valor ofereça benefícios, ela também possui algumas limitações. Nesse tipo de banco, o conteúdo do campo valor é "opaco", não sendo possível fazer uma indexação com esse campo e uma consulta mais complexa. Modelo de documentos • Considerado uma extensão do modelo chave-valor, os dados são “documentos”. Modelo altamente flexível e não carece de colunas pré-montadas. Especialmente eficiente para tratar dados não estruturados, já que uma única coleção pode contar com grupos de dados (documentos) de diversos formatos diferentes. ex.: MongoDB. • Oferece meios de criação de índices sobre os valores dos dados armazenados, enriquecendo as possibilidades de consultas, além de permitir normalização de dados e muitos outros conceitos oriundos do banco de dados relacional, tais como a criação de joins e definição de esquemas rígidos. No entanto, esses recursos não são obrigatórios como nos bancos de dados relacionais. Modelo orientado a colunas • Provavelmente o mais complexo dos modelos. Também é considerado uma extensão do armazenamento orientado a chave-valor e possui conceitos similares ao do modelo relacional, como a criação de linhas e colunas. • Faz o armazenamento em linhas particulares de tabela. Esse esquema é o perfeito oposto dos bancos relacionais, que armazenam conjuntos de dados em uma única linha. ex.: Hbase e Cassandra. Modelo orientado a grafos • Em situações como foco no relacionamento dos dados, o banco de dados orientado a grafos é o mais recomendado entres os quatro tipos de armazenamento NoSQL; • Diferente dos outros modelos, em vez dos dados serem modelados utilizando um formato de linhas e colunas, eles possuem uma estrutura definida na teoria dos grafos, usando vértices e arestas para armazenar os dados dos itens coletados e os relacionamentos entre esses dados, respectivamente; • Oferece maior desempenho nas aplicações que precisam traçar os caminhos existentes nos relacionamentos entre os dados, como por exemplo, as que precisam identificar como um conjunto de amigos está conectado em uma rede, ou descobrir a melhor rota para se chegar a um local em menor tempo. ex.: Neo4j, ArangoDB. Qual o melhor banco NoSQL? Os Bancos de Dados NoSQL referem-se a uma série de tecnologias diferentes, que não são essencialmenterelacionais. O que os melhores bancos de dados NoSQL têm em comum? MongoDB • Líder de mercado dos bancos de dados NoSQL; • Possui funcionalidades interessantes como: replicação, indexação, balanceamento de carga; • Quanto ao armazenamento, utiliza alguns documentos muito similares ao formato JSON. Cassandra • Desenvolvido no Facebook, hoje, assim como o Hbase, são mantidos pela Apache Foundation; • Muito popular para trabalhar com BigData por ser otimizado para clusters, especialmente por funcionar sem mestres (funcionamento distribuído); • Um outro ponto forte é o conceito de orientação por coluna, o que torna a latência bem menor em algumas pesquisas. Redis • Modelo de armazenamento de dados open source; • Os dados são armazenados na forma de chave-valor e na memória do Redis, o que o torna rápido e flexível; • Trata-se do Banco NoSQL mais famoso do tipo chave-valor. • Assim como os dois primeiros, o Redis possui baixíssima latência para consultas. NoSQL x SQL SQL NoSQL Armazenamento de Dados Estruturados por Tabela Armazenamento de Dados estruturados e não-estruturados por colunas, grafos, chave-valor e documentos. Esquema estático Esquema dinâmico Escalabilidade vertical Escalabilidade horizontal O desempenho não é alto em todas as consultas. Não suporta pesquisas e cruzamentos muito complexos. Alto desempenho em consultas Necessidade de predefinição de um esquema de tabela antes da adição de qualquer dado Altamente flexível (fácil adição de colunas e campos de dados não estruturados) NoSQL x SQL Item SQL NoSQL Modelo de dados Normaliza dados em estruturas tabulares conhecidas como tabelas, que consistem em linhas e colunas. Um schema define estritamente as tabelas, colunas, índices, relações entre tabelas e outros elementos do banco de dados. Normalmente não aplicam um schema. Geralmente, uma chave de partição é usada para recuperar valores, conjuntos de colunas ou documentos semiestruturados JSON, XML ou outros que contenham atributos de itens relacionados. Propriedades ACID Conjunto de propriedades ACID: Atomicidade, Constância, Isolamento e Durabilidade. Modelo de dados mais flexível que escala horizontalmente. Essas características fazem dos bancos de dados NoSQL uma excelente opção em situações em que os RDBMS deparam com desafios de arquitetura e precisam solucionar uma combinação de gargalos de desempenho, escalabilidade, complexidade operacional e custos crescentes de administração e suporte. Desempenho O desempenho normalmente depende do subsistema do disco. A otimização de consultas, índices e estrutura de tabela é necessária para alcançar máximo desempenho. Desempenho geralmente é uma função do tamanho do cluster do hardware subjacente, da latência de rede e da aplicação que faz a chamada. NoSQL x SQL Item SQL NoSQL Escala Mais fácil de aumentar a escala "verticalmente" com hardware mais rápido. Outros investimentos são necessários para tabelas relacionais para abranger um sistema distribuído. Projetado para aumentar a escala "horizontalmente" usando clusters distribuídos de hardware de baixo custo para aumentar a transferência sem aumentar a latência. APIs As solicitações para armazenar e recuperar dados são comunicadas usando consultas compatíveis com structured query language (SQL). Essas consultas são analisadas e executadas por sistemas de gerenciamento de bancos de dados relacionais (RDBMS). APIs baseadas em objetos permitem que desenvolvedores de aplicações armazenem e restaurem facilmente estruturas de dados na memória. As chaves de partição permitem que os aplicativos procurem pares de chave- valor, conjuntos de colunas ou documentos semiestruturados contendo objetos e atributos de aplicativos serializados. Ferramentas Os bancos de dados SQL normalmente oferecem um rico conjunto de ferramentas para simplificar o desenvolvimento de aplicações orientadas ao banco de dados. Os bancos de dados NoSQL normalmente oferecem ferramentas para gerenciar clusters e escalabilidade. As aplicações são a interface principal com os dados subjacentes. Conclusões • Bancos de Dados NoSQL são extremamente úteis quando assunto é grande volume de dados; • Se estivermos falando de uma corporação pequena, que não aprofunda tanto assim a análise e tratamento de dados, o banco relacional funciona muito bem; • O banco de dados NoSQL não veio para substituir o relacional. Veio para ser uma alternativa, em meio a um mundo onde pouquíssimos dados ainda são usados para inteligência. Obrigado! Prof. Henrique Mota henrique.gama@estacio.br