Prévia do material em texto
Bancos de dados NoSQL Bancos de dados NoSQL 3 Apresentação Prezado(a) aluno(a), nesta unidade, aprenderemos os principais conceitos sobre os bancos de dados não relacionais, também chamados de NoSQL, e suas diferenças com os bancos relacionais e entre si. 4 1. Introdução aos bancos de dados NoSQL Os sistemas NoSQL (Not only SQL), ou sistemas não somente SQL surgiram a partir da necessidade de empresas e organizações que tinham aplicações gigantescas com armazenamento de grandes massas de dados. Imagine, por exemplo, o serviço de e-mail do Google ou do Hotmail. Sistema gerenciador do banco de dados Fonte: Plataforma Deduca (2019). #PraCegoVer: na imagem, há uma tela de computador com ícones de vídeo, arquivo, HD, aspas e de configuração. Praticamente todas as pessoas do mundo têm pelo menos um desses dois. Como armazenar tantas informações? Os bancos de dados relacionais não conseguiam mais suprir essa carência. Por isso, esse tipo de sistema foi criado para gerenciar milhões de mensagens de e-mail. Os sistemas que utilizavam a linguagem SQL e eram baseados em relações (bancos de dados relacionais) ofereciam muitos recursos complexos, como controle de transações, consultas otimizadas para escrita ou leitura, dentre outras coisas, que não eram necessários para o armazenamento dos dados. 5 Evoluindo, testando e melhorando Fonte: Plataforma Deduca (2019). #PraCegoVer: na imagem, há desenhos representando pessoas que viviam na Pré-História em várias situações cotidianas. Outro ponto é o modelo estruturado que o banco relacional exigia antes de sua criação – era preciso ter todo o modelo de dados, os atributos, suas relações, entre outros (MEDEIROS, 2013). Esse modelo é muito restritivo e não é razoável algo tão complexo de antemão para as organizações. 6 2. Bancos de dados NoSQL Os sistemas chamados NoSQL são um conjunto de ferramentas que fornecem técnicas mais eficientes de armazenamento para as aplicações que utilizam quantidades enormes de dados. Geralmente, essas massas de dados são fornecidas por aplicações que exigem comunicação constante dos usuários. A seguir, veja como são geradas as grandes massas de dados atualmente e quais os principais sistemas geradores de dados. Grandes massas de dados As redes sociais, como Facebook, Twitter, WhatsApp, dentre outros, são a principal causa da grande quantidade de dados. As redes sociais têm milhões de usuários no mundo todo, gerando grandes quantidades de informações de forma constante. Avanço das redes sociais Com o grande crescimento das redes sociais e com a adesão cada vez maior da população, elas têm tornado esse crescimento de dados acelerado, produzindo cada vez mais informações com tendência a aumentar ainda mais. Para trabalhar com esses conjuntos de grandes quantidades de dados, os sistemas precisam ter uma escalabilidade alta e facilitada, permitindo atender às demandas sem perda na qualidade do serviço ou indisponibilidade. 7 3. Banco de dados e valores Os bancos de dados não relacionais surgiram para suprir essa demanda dos sistemas pelo gerenciamento de grandes massas de dados e, paralelamente, de áreas de pesquisa, como mineração de dados e gerenciamento inteligente dos dados. Com análises por técnicas de inteligência artificial, os bancos de dados não relacionais ganharam espaço nesse novo contexto mundial. Os sistemas NoSQL não assumem estruturas predefinidas, como os modelos dos bancos de dados relacionais. No sistema NoSQL, os dados são armazenados em um mesmo registro, não tendo relacionamento entre as tabelas de dados. Banco de dados chave-valor É um modelo muito utilizado pelas aplicações do Google. Ele permite o armazenamento de qualquer objeto ou valor a partir de uma chave única, como “NomeColaborador1”, “Antônio Maria José”; “NomeColaborador2”, “Josefa Maria”, e assim por diante. Exemplos: Aerospike, Dynamo, ArangoDB, Couchbase, FairCom, FoundationDB, InfinityDB, Oracle NoSQL Database, Riak e Berkeley DB. 8 Banco de dados baseado em grafos Banco de dados baseado em grafos Fonte: Elaborada pelo autor (2019). Nesse modelo, os dados são armazenados em um grafo, em que cada vértice armazena um dado. Esse tipo de banco permite a análise dos dados de forma mais complexa. Exemplos: AllegroGraph, ArangoDB, InfiniteGraph, Apache Giraph, MarkLogic, Neo4J, OrientDB e Virtuoso. Banco de dados baseado em tabulares Banco de dados baseado em tabulares Fonte: Elaborada pelo autor (2019). Esse tipo de banco faz uso de grandes tabelas, e as chaves são os caminhos para as colunas. É muito utilizado para dividir os dados entre diversos computadores. Exemplos: Accumulo, Cassandra, Druid, Hbase e Vertica. 9 Banco de dados baseado em documentos Banco de dados baseado em documentos Fonte: Elaborada pelo autor (2019). Nessa abordagem, cada registro a ser armazenado é convertido para um documento. Cada documento é composto por elementos, sendo o documento uma estrutura dinâmica e flexível. Assim, tal estrutura pode ser alterada a qualquer momento. Bancos de dados NoSQL Bancos de dados NoSQL 3 Apresentação Olá, estudante. Nesta unidade, vamos conhecer como funciona de forma aprofundada o banco de dado NoSQL Cassandra. Ele é amplamente utilizado na indústria e na pesquisa por oferecem escalabilidade e confiabilidade dos dados, além disso consegue trabalhar com grandes massas de dados. 4 1. Surgimento e características dos bancos de dados NoSQL A Google desenvolveu um sistema de armazenamento próprio chamado de BigTable, utilizado pelos serviços da empresa, como Google Drive, Google Gmail, Google Maps, dentre outros, para o armazenamento das grandes quantidades de dados. A Google fornece uma API (Application Program Interface) para quem desejar utilizar o seu sistema de armazenamento, podendo fazer uso da tecnologia desenvolvida. Storage options Fonte: Plataforma Deduca (2021). #PraCegoVer: na imagem de fundo escuro, há quatro ícones, o primeiro é de um HD, o segundo é de um cartão de memória, o terceiro é de uma entrada USB e, por fim, o último é uma nuvem. A empresa Apache produziu um sistema muito parecido com o BigTable do Google, chamado de Hbase. O Hbase tem código aberto e utiliza conceitos semelhantes aos empregados no BigTable. Esses sistemas criaram uma nova categoria de sistemas de armazenamento de dados chamada de armazenamento baseado em colunas ou largura de colunas, também conhecida por família de colunas. Em outra vertente, a Amazon também produziu um sistema NoSQL chamado de DynamoDB, utilizado em praticamente todos os serviços da Amazon na nuvem. Esse avanço nas tecnologias de armazenamento levou à criação de outra categoria, o armazenamento de dados baseados em chave-valor, também chamado de armazenamento de dados chave-tupla ou chave-objeto. 5 Disco rígido Fonte: Plataforma Deduca (2021). #PraCegoVer: fotografia de um disco rígido (HD). Ainda na sequência do desenvolvimento de tecnologias pela indústria, o Facebook desenvolveu um sistema NoSQL chamado de Cassandra, que, hoje, é de código aberto e mantido pela Apache Foundation, conhecido como Apache Cassandra. Esse sistema faz uma junção das melhorias alcançadas pelos sistemas de chave-valor e pelos sistemas baseados em colunas. Nesta seção, vamos descrever em detalhes os principais bancos de dados da categoria chave-valor, especificamente os bancos de dados Cassandra e DynamoDB. 6 2. Banco de dados Cassandra O Cassandra é um dos primeiros colocados nos bancos de dados não relacionais. Aos poucos os bancos de dados NoSQL estão ganhando mercado. A tendência é que eles substituam os bancos de dados relacionais com o passar dos anos. A seguir, vamos abordar a relação dos bancos NoSQL com os relacionais e suas tecnologias. • Bancos de dados NoSQL Devemos nos perguntar o motivo de esses bancos de dados NoSQL estarem ganhando uso enquanto os relacionais estão perdendo mercado. Como já vimos, há diversas características positivasquanto ao uso dos bancos de dados NoSQL, principalmente o manuseio de grandes massas de dados e a escalabilidade para qualquer tipo de sistema, grande ou pequeno. • Baixo custo A integração dos bancos de dados NoSQL com as tecnologias que utilizam nuvens de dados tem garantido baixo custo da manutenção dos sistemas. Além disso, há diversos eventos esporádicos que demandam muito poder computacional e de armazenamento simultâneo que não são necessários nos demais períodos. Por exemplo, o período de inscrições do Enem, o período de declaração do imposto de renda, as promoções anuais, entre outros. Esses eventos demandam que a organização tenha uma grande infraestrutura preparada para receber todas as requisições. Se a empresa optar por construir uma infraestrutura própria, terá prejuízo todo o resto do ano, havendo custos para manter a estrutura com uso limitado. Nesses cenários descritos anteriormente, os bancos de dados NoSQL têm ganhado bastante mercado porque conseguem atingir os objetivos dos clientes com baixo custo e fácil manutenção. 7 3. Arquitetura do banco de dados Cassandra O banco de dados Cassandra foi desenvolvido pelo Facebook para utilização conjunta com os mecanismos de busca das mensagens. Em 2008 o Cassandra virou um sistema de código aberto e, em 2009, passou a ser mantido pela Apache. Topologia baseada em anel Fonte: Plataforma Deduca (2021). #PraCegoVer: na imagem, há um círculo sendo dividido em sete setores deno- minados de intervalos. O Cassandra é uma fusão de alguns conceitos presentes no banco de dados DynamoDB, desenvolvido pela Amazon, e no BigTable, desenvolvido pela Google. Por utilizar alguns conceitos já consolidados nos bancos de dados anteriores, o Cassandra ganhou grande repercussão pelos aprimoramentos e ganhos de desempenho quando comparado a seus antecessores. Além disso, esse sistema é compatível com todas as versões dos sistemas operacionais Linux e MacOS. Também há compatibilidade para algumas versões do Windows. Vale destacar que esse sistema foi projetado para trabalhar em um ambiente distribuído, podendo operar de forma local, mas com restrições de desempenho, sendo equivalente a um banco de dados relacional. Os benefícios do Cassandra somente são alcançados com o uso em um ambiente distribuído e escalável. 8 Somado a isso, veja a seguir como os dados se estruturam no Sistema Cassandra. Estrutura dos dados no Cassandra Fonte: Plataforma Deduca (2021). #PraCegoVer: fluxograma que representa a estrutura de dados. Nele, há uma tabela com as linhas chave com as respectivas colunas e valores. Uma caraterística fundamental do banco de dados Cassandra é sua arquitetura descentralizada, diferentemente da arquitetura master-slave presente em outros sistemas de banco de dados NoSQL. Na arquitetura do Cassandra, todos os nós da rede têm as mesmas características, sendo possível substituir um nó ou suas atividades atribuídas por um outro nó, sem perda nos dados. Na arquitetura Cassandra não temos um único ponto de falha, melhorando o desempenho e a disponibilidade do sistema. Além disso, os nós da rede não compartilham recursos de hardware, como discos de dados, processamento ou memória. A utilização dessas características é chamada de arquitetura shared- nothing, em que nada é compartilhado. O uso dessa arquitetura evita o aparecimento de gargalos de comunicação no sistema e concede maior autonomia entre os nós, permitindo que sejam heterogêneos, ou seja, com hardware diferente. Nesse sentido, estudante, também é válido observar a respeito da escalabilidade desse sistema. Em relação a isso, acompanhe o recurso a seguir: • Característica 1: O banco de dados Cassandra é altamente escalável por ter uma arquitetura descentralizada e distribuída. 9 • Característica 2: Essa escalabilidade é destacada principalmente na forma horizontal, em que é possível adicionar diversos nós na rede de forma facilitada. Dando continuidade ao que foi visto, estudante, é possível retirar nós se a demanda de requisições for enxugada. Essa redução pode auxiliar na diminuição dos custos do sistema e reduzir tempo com manutenção. Todos esses recursos podem ser combinados com uma abordagem na nuvem, aumentando ainda mais o poder computacional do banco de dados Cassandra. No gerenciamento interno do banco de dados Cassandra, os dados das tabelas são processados por uma tecnologia chamada partition key, em que é feito o particionamento dos dados baseado nas chaves primárias das tabelas. Após, as diversas partições podem ser distribuídas entre os diversos nós da rede de comunicação do banco de dados. Por fim, é relevante ressaltar que a técnica de data sharding é utilizada para fazer a distribuição otimizada das partições nos nós da rede. Lembre-se de que cada nó da rede pode armazenar zero ou várias partições, depende da estrutura e do tamanho da rede. CouchDB e sua estrutura CouchDB e sua estrutura 3 Apresentação Olá! Seja bem-vindo(a). Nas próximas páginas, vamos aprender mais sobre o banco de dados CouchDB. Assim, você vai entender as técnicas de mapeamento e redução (MapReduce) aplicadas a esse banco de dados, bem como ao framework Hadoop. 4 1. CouchDB O CouchDB oferece uma interface de comunicação RESTful utilizando HTTP para leitura, escrita, atualização e deleção dos documentos na base de dados. A interface RESTful oferece diversos benefícios para as aplicações baseadas na web e na descoberta de serviços pela rede. Pesquisa de rede Fonte: Plataforma Deduca (2019). #PraCegoVer: Na imagem, há uma mão segurando uma lupa e analisando um papel com gráficos. Dentro do CouchDB, os documentos são organizados utilizando um modelo de dados chamado de B-trees, usando o identificador do documento como chave para a árvore. A cada nova inserção ou atualização de um documento é gerado um novo identificador para o novo objeto, permitindo a rastreabilidade dos documentos e dos históricos. 5 Redes e sistemas Fonte: Plataforma Deduca (2019). #PraCegoVer: na imagem, o globo terrestre está imerso em um mar de códigos binários. Cada vez que um documento é inserido ou modificado, a árvore é atualizada com os novos índices, mantendo os mais recentes. Sempre que necessário, a árvore é consultada para encontrar um documento específico. O modelo em árvore tem diversos benefícios. Por exemplo, é possível acessar dados profundos na árvore com maior rapidez, além disso, alguns permitem tempo igual para acessar qualquer nó da árvore. 6 2. Dados Diferentemente do SQL, o CouchDB armazena os dados de uma forma semiestruturada, não necessitando da decomposição dos dados em tabelas. A estrutura de um documento CouchDB está embutida no próprio arquivo que armazena o dado, permitindo que outros serviços possam entender a estrutura do dado em tempo de execução. Em relação a isso, estudante, observe o recurso a seguir, o qual aprofunda o tema tratado: Dados do setor tecnológico Algumas características importantes desse novo cenário é que podemos armazenar toda a música do mundo atualmente em um disco de 600 dólares. Todos os meses, 30 bilhões de itens de conteúdo são armazenados pelo Facebook. Há mais dados armazenados em 15 dos 17 setores da economia dos Estados Unidos do que na biblioteca do congresso norte-americano, que armazenou 235 terabytes desde 2011. Relação de empregabilidade São necessários mais de 140 mil cargos de análise profunda nos dados e mais de 1,5 milhão de gerentes com experiência em dados nos Estados Unidos. Além disso, os órgãos governamentais estão migrando seus sistemas para a internet, tornando todos os processos organizacionais o mais digital possível. Outro fator impactante é a geração de dados a partir dos dispositivos embarcados, entre eles, os smartphones. Esse tipo de dispositivo tem vários sensores que fornecem dados de forma constante, na ordem dos milissegundos ou segundos, contribuindo para o grande crescimento dos dados. Também temos osaplicativos de navegação que recebem a localização do GPS do usuário e informam as melhores rotas. A localização do usuário é atualizada de forma frequente, transferindo muitos dados na rede. Por fim, os sistemas que analisam as grandes massas de dados podem atuar para otimizar os recursos dos setores de agricultura, saúde, economia, dentre outros. 7 3. Introdução ao mapeamento e à redução As técnicas de mapeamento e redução, embora estejam em destaque atualmente, não são novidade desde 2004. Porém, essas técnicas foram aplicadas dentro dos bancos de dados, inovação que provê benefícios até hoje. Mapeamento Fonte: Plataforma Deduca (2019). #PraCegoVer: Na imagem, há uma pilha de papéis voando em direção a um funil, o qual leva a uma máquina que, na saída dela, em uma esteira, compacta os papeis. Elmasri e Navathe (2018, p. 827) destacam que o modelo de programação MapReduce e seu ambiente de runtime foram descritos pela primeira vez por Jeffrey Dean e Sanjay Ghemawat, com base em seu trabalho no Google. Nele, os usuários escrevem seus programas em um estilo funcional de tarefas de mapear e reduzir, automaticamente paralelizadas e executadas em grandes clusters de hardware. O paradigma de programação já existia desde a linguagem LISP, projetada por John McCarthy no final da década de 1950. No entanto, a reencarnação desse modo de realizar programação paralela e a maneira como esse paradigma foi implementado no Google deram origem a uma nova onda de pensamento que contribuiu para os desenvolvimentos subsequentes de tecnologias, como o Hadoop. 8 Nesse viés, estudante, vale ressaltar que o conceito de MapReduce parte do princípio de exploração dos benefícios da computação distribuída. Os problemas podem ser mapeados e então reduzidos. Primeiro executa-se uma função de mapeamento para entender o formato dos dados e, então, uma função de redução é aplicada para realizar o processamento que se deseja. Internet Fonte: Plataforma Deduca (2019). #PraCegoVer: na imagem, há fileiras de números, representando dados em rede. Os dados são distribuídos entre os nós da rede baseados na saída gerada na função de mapeamento, garantindo que dados "similares" possam estar no mesmo nó, facilitando o processamento. Em seguida, cada nó executa os novos dados recebidos, de acordo com a chave gerada na função de mapeamento. É importante destacar que a função de redução é realizada em paralelo nos diferentes nós, daí a grande potência desse método para buscar dados. Essa forma de processar os dados não é realizada nos bancos de dados relacionais, nos quais, sempre que se deseja buscar ou comparar um dado sem índice, percorremos todo o banco de dados, comparando um a um, reduzindo drasticamente o desempenho. Assim, quanto mais nós da rede tivermos, mais rápido poderá ser o processamento das operações, ficando cada nó com menos trabalho e agilizando o processamento global com o paralelismo das operações. 9 A figura a seguir ilustra o resumo dos procedimentos da técnica de map e reduce. Sumário da técnica de mapeamento e redução Split 0 Sort Cópia Merge Saída Entrada Map Split 1 Arquivo de saída 0 Map Reduce Merge Arquivo de saída 1Reduce Split 2 Map Fonte: Elmasri e Navathe (2018, p. 828, adaptada). #PraCegoVer: Na imagem, há um fluxograma contento o sumário da técnica de mapeamento e redução. Podemos perceber na figura anterior que os dados são divididos (Split) e mapeados de forma local em cada nó. Em seguida, eles são classificados em grupos a partir da chave e então copiados para os nós que têm a mesma chave. Por fim, é realizada a técnica de reduce para juntar as avaliações individuais dos nós em uma informação útil ao usuário requisitante. 11 Referências ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 7. ed. São Paulo: Pearson, 2018. HAUGER, W. K.; OLIVIER, M. S. NoSQL databases: forensic attribution implications. SAIEE Africa Research Journal, n. 2, p. 119. 2018 RAMAKRISHNAN, R. Sistemas de gerenciamento de banco de dados. Porto Alegre: AMGH, 2008.