Baixe o app para aproveitar ainda mais
Prévia do material em texto
/ Big Data Aula 3: Capturando e armazenando os dados Apresentação Na aula anterior, vimos os critérios e os fatores de sucesso e os principais riscos que ameaçam projetos de Big Data. Durante a aula, foi enfatizado que, antes de iniciar um projeto desse tipo, deve-se realizar um levantamento dos dados que podem ser utilizados e estabelecer quais perguntas se deseja responder com os dados. Uma vez levantada as necessidades e as informações disponíveis, devem ser estabelecidas as infraestruturas organizacional e de processos para capturar, armazenar, tratar, processar e analisar os dados. Nesta aula, vamos estudar as formas de captura e armazenamento dos dados. Objetivos Identi�car formas de captura e armazenamento de dados, suas vantagens e limitações. Estimar a forma de armazenamento adequada de acordo com o tipo de dado e as perguntas que se deseja responder com os dados. Introdução Um dos grandes desa�os do Big Data consiste em identi�car, entre os dados disponíveis, quais devem ser efetivamente usados para atender as suas necessidades de análise. Visando ajudar nessa etapa, mostraremos várias formas de armazenamento de dados, suas vantagens e limitações. Para auxiliar na compreensão e na comparação, no decorrer da aula será simulado o uso de dados de uma livraria com informações sobre seus clientes, suas obras e suas vendas. / Fonte: Pexels Captura e armazenamento dos dados Pessoas, empresas e máquinas produzem dados utilizando diferentes ferramentas, em diferentes formatos com diferentes propósitos. As características dos dados, sua aplicabilidade e para qual �nalidade serão utilizados devem ser considerados na hora de decidir quais tipos de dados capturar e, consequentemente, estabelecer qual a melhor estratégia de armazená-los. Os dados podem ser do tipo estruturado, semiestruturado ou não estruturado. Estruturado O tipo estruturado tem um formato �xo de acordo com uma estrutura previamente de�nida. Geralmente em formato de tabela com linhas e colunas, como nos bancos de dados relacionais largamente utilizados em sistemas de informação corporativos. Semiestruturado Em dados semiestruturados, cada registro tem uma organização diferenciada e uma prévia análise dos dados precisa ser feita para identi�cação da estrutura. Normalmente são provenientes de formatos XML e JSON. Não estruturado Por �m, os dados não estruturados não possuem um formato de�nido e para capturá-los precisa ser feito um pré- processamento para análise. Exemplos típicos de dados não estruturados são vídeos, imagens, e-mails, documentos de texto de blogs e posts, dados gerados em redes sociais, como mensagens do WhatsApp. / Com relação a estratégia de armazenamento, existem vários tipos de banco de dados e cada um foi desenvolvido para atender necessidades especí�cas. Nas próximas seções, serão listadas as características, vantagens e desvantagens de vários tipos de banco de dados. Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online Banco de dados relacional No banco de dados relacional, os dados são armazenados como tabelas, que podem estar relacionadas com outras da mesma base de dados. Cada tabela representa um tipo de entidade e cada instância �ca registrada em uma linha. As linhas possuem colunas para representar as características da entidade, ou seja, seus atributos. Cada coluna tem um valor atômico de um tipo simples. A tabela a seguir ilustra uma representação simples de uma tabela de Cliente. Dados do Clientes armazenados em banco de dados relacional. Fonte: Próprio autor Para localização de cada registro, uma ou mais colunas são usadas para identi�cá-lo de forma única; essa coluna ou conjunto de colunas denomina-se chave primária. O atributo ID é a chave primária da tabela Cliente. O relacionamento entre entidades também é registrado através de uma coluna, nesse caso denominada de chave estrangeira. Essa estrutura viabiliza a manipulação de qualquer combinação de linhas de quaisquer tabelas em uma única transação. Por exemplo, supondo que a tabela Cliente registre os clientes de uma livraria virtual. E, além da tabela cliente, no banco de dado há uma tabela livro, conforme ilustrado a seguir, e o registro dos livros comprados pelos clientes são armazenados em uma tabela Venda usando somente as suas respectivas chaves das tabelas Cliente e Livro. Dados de Livros armazenados em banco de dados relacional. Fonte: Próprio autor / Dados de Vendas armazenados em banco de dados relacional. Fonte: Próprio autor Características Clique no botão acima. / Critérios As transações são realizadas usando Structured Query Language (SQL) e tem a característica de manter a atomicidade, consistência, isolamento e durabilidade (ACID) dos dados, oferecendo alta integridade aos dados armazenados. A atomicidade garante que as transações sejam indivisíveis, ou seja, elas serão executadas totalmente ou não serão executadas. Para tal, as manipulações devem atender a restrições de integridade para manter o banco em um estado consistente e uma transação deve �car isolada de outras transações para não ocorrer atualizações parciais. A propriedade de durabilidade garante que o que foi salvo ao �m de uma transação, não será mais perdido. Essas características do modelo relacional nos permitem pensar em todas as operações, como atuar em linhas e retornar linhas. Para criar bancos de dados no modelo relacional, surgiram diferentes sistemas gerenciadores de banco de dados (SGBDs), tais como Oracle, PostgreSQL e MySQL. Eles revolucionaram a área de gerenciamento de dados, oferecendo garantias de integridade e a possibilidade de gerar consultas complexas dos dados. Porém, o grande volume e a grande variedade de dados gerados nos últimos anos, trouxeram limitações à adoção desse modelo. Por exemplo, empresas que utilizavam um banco de dados relacional para armazenar dados de um e- commerce começaram a ter problemas de indisponibilidade de serviço, demora para execução de consultas ao banco e necessidade de muita manutenção para manter o banco de dados compatível com as mudanças do negócio. Em geral, os desa�os enfrentados estão relacionados à escalabilidade, disponibilidade e �exibilidade. Os SGBDs relacionais permitem a adição de mais recursos computacionais de infraestrutura no servidor que hospeda o banco de dados, tais como processador, memória e disco. Essa escalabilidade vertical foi su�ciente para as soluções por muitos anos. Entretanto, à medida que o volume de dados aumentou consideravelmente, esse modelo de expansão vertical passou a ser inviabilizado, dado que o custo para adquirir servidores capazes de lidar com a quantidade massiva de dados era alto e, em alguns casos, eles não ofereciam a capacidade e o desempenho necessários. Ao executar transações, os bancos de dados relacionais tornam os dados envolvidos indisponíveis, para garantir a integridade e a consistência. Essa garantia é muito útil em diversos cenários como, por exemplo, durante uma transferência bancária entre duas contas. Contudo, existem casos nos quais manter o serviço disponível é mais importante do que garantir todas as propriedades ACID. Por exemplo, em sistemas de e-commerce, é preferível que o cliente consiga escolher um item para comprar que não tenha disponibilidade em estoque e, no momento do fechamento do pedido seja informado da indisponibilidade do produto, do que a empresa perder a compra por completo devido à indisponibilidade do sistema para atualização de dados do estoque. A estrutura bem de�nida de tabelas, colunas, tipos de dados, chaves primárias e chaves estrangeiras facilita a consulta aos dados, mas torna o banco de dados in�exível para armazenamento de informações fora desta estrutura. Com isso, podemos perceber que os SGBDs relacionais não são ideais para aplicações e serviços que necessitam de escalabilidade, alta disponibilidade e �exibilidade para gerenciar os dados. Para atender a esses requisitos, novas alternativas foram desenvolvidas, nascendo assim o termo NoSQL./ Banco de dados NoSQL Os novos modelos de armazenamento de dados, criados para atenderem às necessidades de �exibilidade, disponibilidade, escalabilidade e desempenho usam tecnologia NoSQL (Not only SQL – não somente SQL). Sendo assim, NoSQL não diz respeito a um modelo de dados especí�co e sim ao agrupamento de modelos de dados que não seguem os princípios do modelo relacional. Eles precisam dar suporte a esquemas �exíveis ou ausentes, permitindo o armazenamento de dados semiestruturados ou não estruturados. Diferentemente do banco de dados relacional, em que o foco principal é voltado à integridade dos dados, os modelos existentes em NoSQL tendem a sacri�car uma ou mais propriedades ACID, para assim oferecer maior desempenho e escalabilidade às soluções que lidam com grande volume de dados. Não existe um modelo de armazenamento único que seja adequado para todos os cenários de aplicações, uma vez que cada solução requer necessidades especí�cas. Atualmente, existem 4 modelos principais: o modelo orientado a chave-valor, orientado a documentos, orientado a colunas e orientado a grafos. Banco de dados orientado a chave-valor Dentre os sistemas de bancos de dados conhecidos como NoSQL, o modelo chave-valor é o que apresenta representação mais simples. Sua estrutura constitui-se de uma lista de pares de elementos compostos por uma chave para identi�car as informações gravadas em um campo valor. Esse modelo pode ser comparado à estrutura de dados chamada tabela Hash, onde os valores são associados às chaves de busca que permitem um rápido acesso ao seu conteúdo. Os bancos de dados orientandos a chave-valor não oferecem suporte a relacionamentos e integridade referencial. Tal simplicidade diminui os tempos de resposta, permitindo que a capacidade de armazenamento de suas bases de dados seja uma das maiores dos sistemas enquadrados na categoria NoSQL. Saiba mais Ele vem sendo utilizado tanto para persistir os dados em disco quanto para mantê-los em memória e assim agilizar o acesso às informações. Nesse segundo caso, é possível recuperar os valores em um banco de dados e armazená-los em um cache, criando uma chave para cada valor armazenado. A tabela a seguir mostra um exemplo dessa estrutura, usando os dados de cadastro do cliente da livraria, ilustrados anteriormente. Dados do Clientes armazenados em banco de dados orientado a chave-valor. Fonte: Próprio autor Dica / Por esse motivo, esse modelo de banco de dados pode ser uma solução ideal para resolver questões de lentidão para leitura e escrita de dados em grande variedade e volume. Com sua estrutura simples, ele é capaz de otimizar o desempenho da consulta e realizar operações com alta vazão. Em contrapartida, esse modelo de banco de dados não costuma permitir que consultas sejam realizadas sobre os seus dados, apenas sobre as chaves de busca. Assim, todo o acesso é feito por meio das chaves de busca e, somente através da chave é possível ter acesso ao valor. O conteúdo do campo valor é “opaco”, não sendo possível fazer uma indexação com esse campo e uma consulta mais complexa. Nos casos de necessidade de criação de consultas mais elaboradas no banco de dados, esse modelo não é a melhor opção. Porém, mesmo com essa limitação, bancos de dados orientados a chave-valor podem ser adequados para diversos cenários, como o armazenamento de imagens e de documentos, criação de cache de objetos, armazenamento de dados de sessões do usuário e rastreamento de atributos transientes, como no caso do carrinho de compras. Existem atualmente diversas opções de banco de dados orientado a chave-valor. Embora cada um possua suas próprias características, todas as opções disponíveis são criadas com foco em oferecer �exibilidade, desempenho e escalabilidade no gerenciamento dos dados. Exemplos de banco de dados orientados a chave-valor são: DynamoDB Redis Riak Memcached / Banco de dados orientado a documentos Assim como o banco de dados orientado a chave-valor, os bancos de dados orientados a documentos também fazem uso de associações entre pares de chaves e valores. Os documentos são organizados em coleções de forma análoga a tabelas dos bancos de dados relacionais. Um documento pode ser visto como linha de uma tabela e um conjunto de documentos como sendo a tabela com todos os registros. Porém, essa estrutura tem a vantagem de que cada documento pode ter uma estrutura diferente. Além disso, esse modelo oferece meios de criação de índices pelo campo chave e sobre os valores dos dados armazenados, enriquecendo as possibilidades de consultas. A Figura ilustra um exemplo do cadastro de cliente usando essa estrutura. Dados do Clientes armazenados em banco de dados orientado a documento. Fonte: Próprio autor Conforme ilustrado, esse modelo é uma ótima opção para armazenar atributos variados em cada registro. Os dados são armazenados em forma desnormalizada, violando as formas normais do modelo relacional, oferecendo grande escalabilidade e velocidade de leitura. Por esse motivo, um documento armazenado deve conter todas as informações relevantes para uma consulta, sem necessitar da criação de junções. Tal fato viabiliza a replicação dos dados em um cluster e, assim, garantir que o dado �cará disponível mesmo com a ocorrência de falha em um dos servidores. / Saiba mais Esse modelo é indicado para realizar o armazenamento de conteúdo de páginas Web, na catalogação de documentos de uma empresa e no gerenciamento de inventário de e-commerce, pois são aplicações que trabalham diretamente com coleções de documentos e, portanto, podem se bene�ciar da �exibilidade que o armazenamento orientado a documentos oferece. São exemplos de bancos de dados orientados a documentos: Couchbase CouchDB MarkLogic MongoDB Banco de dados orientado a colunas Esse modelo possui conceitos similares ao do modelo relacional, como a criação de linhas e colunas, porém, faz uma inversão na organização de seus dados. No modelo relacional, cada registro da tabela �ca armazenado em uma linha, enquanto no banco de dados orientado a colunas os registros passam a ser armazenados em colunas. Dessa forma, as linhas não mais armazenam o registro de uma instância, mas sim um conjunto de valores do mesmo atributo, enquanto o conjunto de valores de uma coluna contém a informação de uma instância por completo. Essa forma de armazenamento tem algumas vantagens, tais como, o aumento da capacidade de compressão dos dados comparado com banco de dados relacional. Atenção Quando os registros são armazenados em linha, em uma mesma linha há diferentes tipos de dados e o processo de compressão �ca mais complicado. Já no banco de dados orientado a colunas, cada coluna contém o mesmo tipo de dado tornando mais e�caz a compressão. Essa estrutura também permite que consultas de análises em subconjuntos de dados possam ser mais e�cientes, porém a obtenção de instâncias inteiras passa a ser mais custosa. Essa diferença ocorre pelo esforço necessário para se percorrer as colunas das informações. / Além disso, o modelo tem a �exibilidade de permitir o uso de famílias de colunas. Ao invés de de�nir antecipadamente as colunas necessárias para armazenar um registro, o responsável pela modelagem de dados de�ne famílias de colunas. As famílias de colunas são organizadas em grupos de itens de dados que são frequentemente usados em conjunto em uma aplicação. Em uma família de colunas, é possível a existência de atributos não atômicos, por meio da representação de listas de valores. Além disso, nas famílias de colunas, as instâncias podem apresentar quantidades de atributos diferentes, não sendo necessário reservar espaços de armazenamento para valores nulos. Para exempli�car esse tipo de estrutura, a Figura mostra o cadastro de clientes representado através de famílias de colunas. Dados do Clientes armazenados em banco de dados orientado a coluna. Fonte: Próprio autor A Figura mostra que clientes diferentes têm a �exibilidade de serem armazenados com mais ou menos atributos. Esse modelooferece �exibilidade para inclusão de campos dinamicamente, evitando o desperdício de espaço com campos nulos ou vazios, sendo indicado para aplicações com volumes imensos de dados que necessitam de alto desempenho e de alta disponibilidade na leitura e escrita dos dados. Em contrapartida, podem ocorrer eventuais inconsistências. Tal modelo tem sido usado no serviço de mensagens do Facebook. Os bancos de dados orientados a colunas, em sua maioria, são inspirados na solução BigTable da Google e, dentre eles, destacam-se: Accumulo Cassandra HBase hypertable / Banco de dados orientado a grafos O banco de dados orientado a grafos tem como principal objetivo evidenciar os relacionamentos que ocorrem entre entidades. Com base na Teoria de Grafos, os bancos de dados que seguem essa abordagem possuem três tipos de elementos: nós, arestas e propriedades. Cada nó corresponde a uma instância de uma entidade, as arestas representam os relacionamentos entre as instâncias e as propriedades dizem respeito aos valores de dados contidos nas instâncias ou nas arestas. Uma aresta possui um nó de entrada e um nó de saída. Diferentemente dos demais modelos, além de dar suporte a referências, também garante a integridade referencial, assegurando que o nó de entrada sempre faça referência ao nó de saída. Relacionamento de compra representado em banco de dados orientado a grafo. Fonte: Próprio autor Existem casos em que a descoberta de como os dados estão relacionados é mais importante do que os dados em si. Em situações como essa, com foco no relacionamento dos dados, o banco de dados orientado a grafos é recomendado, como, por exemplo, em aplicações que precisam identi�car como um conjunto de pessoas está conectado em uma rede, ou descobrir a melhor rota para se chegar a um local em menor tempo. São exemplos de bancos de dados orientados a grafos: AllegroGraph ArangoDB InfoGrid Neo4J Titan Nesta aula, estudamos as formas de captura e armazenamento de dados, destacando o papel dos diferentes tipos de bancos de dados, desde o tradicional banco de dados relacional aos quatro principais modelos de banco de dados não relacionais, denominados NoSQL. Um ranking de popularidade dos bancos de dados, por modelo de dados, é mantido atualizado no link do DB-Engines. / Atividade Objetiva 1. (IBFC – 2019 – Emdec – Analista de Tecnologia da Informação Jr) Os Sistemas Gerenciadores de Banco de Dados: Oracle, PostgreSQL, MySQL são todos considerados, tecnicamente, como sendo um modelo de dados _____. Assinale a alternativa que preencha corretamente a lacuna. a) Hierárquico b) Em Rede c) Tabular d) Relacional e) NoSQL Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online 2. Os bancos de dados NoSQL foram criados para atender às necessidades de �exibilidade, disponibilidade, escalabilidade e desempenho no gerenciamento de dados. Porém, cada solução tem enfoque em suprir necessidades especí�cas. Marque a opção que apresenta o tipo de banco de dados cujas consultas são realizadas somente sobre a chave e tem um bom tempo de resposta, sendo indicado para resolver questões de lentidão para leitura e escrita de dados em grande variedade e volume. a) Relacional. b) Chave-valor. c) Coluna. d) Documento. e) Grafo. 3. Marque a opção que tem sido usada como uma alternativa aos bancos de dados relacionais para dar suporte aos sistemas que possuem muita interconectividade. a) Rede. b) Chave-valor. c) Coluna. d) Documento. e) Grafo. Notas Título modal 1 / Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ�ca e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ�ca e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ�ca e de impressos. Título modal 1 Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ�ca e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ�ca e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ�ca e de impressos. Referências MARQUESONE, Rosangela. Big Data: Técnicas e tecnologias para extração de valor dos dados. Editora Casa do Código, 2016. RIBEIRO NETO, Jose Antonio. Big Data para Executivos e Pro�ssionais de Mercado - Segunda Edição. TAURION, Cezar. Big data. Editora Brasport, 2013. Próxima aula As tecnologias usadas para obter processamento escalável de grande volume de dados; Os benefícios da computação em nuvem; O funcionamento do processamento em tempo real. Explore mais Exercite a captura e armazenamento de dados usando o tutorial “2.5 Praticando: armazenando tweets com mongodb” que se encontra na página 62 do livro MARQUESONE, Rosangela. Big Data: Técnicas e tecnologias para extração de valor dos dados. Editora Casa do Código, 2016. Reportagem do site da Revista Super Interessante de 22/07/2019: Metade do planeta está nas redes sociais – que já somam 3,5 bilhões de usuárioshttps://super.abril.com.br/tecnologia/metade-do-planeta-esta-nas-redes-sociais-que-ja- somam-35-bilhoes-de-usuarios/. javascript:void(0);
Compartilhar