Arsenal para enfrentar o Big Data
por Tetsu Sakamoto

alt_text

Fonte: freepik

O Big Data é realidade em diversos setores, sejam eles da área acadêmica ou industrial. Os dados biológicos são os que mais crescem e com isso vêm trazendo “Big” avanços no nosso entendimento sobre os mecanismos por trás de diversos processos biológicos. No entanto, extrair benefícios do Big Data requer estratégias e planejamento diferenciado e proporcional a sua dimensão. Caso estes não sejam atentados, o que era para ser um avanço, pode se tornar um “Big” problema.

Se você é um destes profissionais que vivencia esta realidade e está a procura de soluções para o Big Data ou possuem curiosidade sobre o assunto, esta matéria pode ser um bom pontapé para estender o seu horizonte e conhecer as soluções existentes.

Na matéria anterior foi apresentado um panorama geral sobre a dimensão do Big Data na Bioinformática e um dos recursos utilizados para lidar com esse grande volume de dados, que é a computação distribuída. Nesta matéria, apresento a vocês mais alguns recursos que podem te ajudar na manipulação do Big Data. Algumas das soluções que serão apresentadas já são amplamente utilizadas pela comunidade da Bioinformática, como os métodos da Inteligência Artificial, NoSQL, HPC e GPU. Outras possuem um potencial na Bioinformática e estão à espera para serem aplicadas de forma mais ampla.

O conteúdo apresentado a seguir foi gerado por um esforço colaborativo dos alunos que cursaram a disciplina "Tópicos especiais em Bioinformática - Bioinformática e Big Data" (turma 2021.12021.1) da pós-graduação em Bioinformática da UFRN.

HPC

A computação de alto desempenho (HPC) se refere à prática de agregar poder computacional e de utilizar técnicas de processamento em paralelo, oferecendo um desempenho maior do que é comumente encontrado nos computadores convencionais. Isto permite a resolução de problemas complexos, como de modelagem e simulação, em um tempo hábil. Uma das soluções do HPC é o uso de supercomputadores que se referem a um arranjo de vários computadores (cada um deles referidos como nó) que trabalham juntos para realizar as tarefas mais rapidamente.

Existem duas formas de implantação de HPC: on-premise e na nuvem. A implantação de HPC on-premise consiste na própria instituição ou empresa construir um HPC próprio, sendo ela responsável pela sua manutenção e administração. As vantagens de se ter um HPC próprio consistem em ter uma maior liberdade de customização e maior privacidade dos dados. A desvantagem é que esta implantação possui um custo elevado, já que é necessário um alto investimento na infraestrutura (espaço físico, sistema de resfriamento), recursos humanos (profissionais de TI) e nos softwares (compra de licença, atualização). Já o HPC na nuvem, é administrado e gerenciado por um provedor de serviço de nuvem, o que permite ampla escalabilidade para aumentar o poder de processamento conforme a necessidade da empresa. As plataformas mais conhecidas de HPC em nuvem são Amazon Web Services, Microsoft Azure e Google Cloud Platform.

Inteligência artificial (IA)

A Inteligência Artificial (IA, do inglês Artificial Intelligence) é um ramo da ciências da computação que estuda e aplica a inteligência demonstrada pelas máquinas. Os programas desenvolvidos nesta área possibilitam que os computadores aprendam através da experiência para executar tarefas e tomar decisões similares a um humano. A IA engloba subcampos de Aprendizado de Máquina (Machine Learning) e Aprendizado profundo (Deep Learning), que são compostos por algoritmos de IA que buscam criar sistemas especialistas que fazem previsões, classificações ou reconhecimento de padrões com base nos dados fornecidos. O Big Data fez com que esta área se intensificasse nos últimos anos, oferecendo avanços em vários campos da Bioinformática.

GPU

As GPUs (Graphics Processing Unit, ou Unidade de Processamento Gráfico) são um tipo de microprocessador especializado em processar (manipular e alterar) rapidamente a memória para acelerar a criação de imagens. Elas são utilizadas em sistemas embarcados, telefones celulares, computadores pessoais, estações de trabalho e console de jogos. Inicialmente foram projetados para acelerar a renderização de imagens 3D, mas com o surgimento de novas tecnologias tornaram-se instrumentos mais flexíveis e programáveis. Com isso, os desenvolvedores começaram a aproveitar desse poder para acelerar trabalhos em HPC, inteligência artificial e entre outros. O principal motivo que torna GPUs tão atrativas para trabalhos de alta carga é a sua grande quantidade de núcleos, hoje uma GPU moderna conta com mais de 10 mil núcleos, contra 56 dos melhores processadores presentes no mercado. Por essa razão, GPUs conseguem trabalhar de maneira inigualável quando o conteúdo a ser processado pode ser paralelizado.

Data Lake

Um data lake é um sistema ou repositório, centralizado, de dados armazenados em seu formato natural / bruto. Ele é capaz de abranger todo tipo de informação, seja ela estruturada ou não-estruturada, em qualquer escala. Um data lake pode incluir dados estruturados de bancos de dados relacionais (tabelas), dados semiestruturados (CSV, logs, XML, JSON), dados não estruturados (e-mails, documentos, PDFs) e dados binários (imagens, áudio, vídeo). Um conceito que bate de frente com o Data Lake é o de Data Warehouse, que também é uma base de dados, mas que armazena dados limpos e curados em uma estrutura relacional. Dentre as razões que para que uma empresa ou instituição adquira uma Data Lake seriam (1) crescimento exponencial do armazenamento de dados de diferentes origens (arquivos logs, dados de sensores, transações detalhadas, logs de infraestrutura, dados de redes sociais, etc); (2) existência de diversos tipos de usuários que consomem estes dados (cientistas de dados, analistas de negócio, clientes externos, etc); e (3) a necessidade de diversas formas de acesso a esses dados (de forma remota, através de APIs, etc). O Data Lake também pode ser utilizado em conjunto com o Data Warehouse onde o Data Lake armazena os dados brutos e o Data Warehouse armazena os dados advindos do Data Lake que passou por procedimentos de limpeza, curadoria e de estruturação. Três ferramentas populares para construção de Data Lakes são: Hadoop, Amazon S3 e Google FIle System (GFS).

Streaming Data

Considera-se Dados em Streaming ou Processamento de Dados em Streaming como uma abordagem utilizada quando existe um fluxo de dados contínuo e a necessidade de processar esses dados em tempo real, ou seja, logo depois que eles são gerados. O Streaming Data é amplamente utilizado em aplicações que exigem um constante monitoramento, como em veículos autônomos, que recebem constantemente dados de sensores distribuídos no veículo durante um percurso; e em instituições financeiras para calcular em tempo real os riscos sobre a compra ou venda de ações baseada nas flutuações recentes de seus preços. Na área de saúde, o Streaming Data pode ser utilizado no monitoramento de pacientes em condições crônicas. Entre as ferramentas que podem ser utilizadas para processar streams estão o Spark Streaming e o Apache Kafka.

NoSQL

NoSQL é um termo genérico para representar todo banco de dados que fornece um mecanismo para armazenamento e recuperação de dados diferente da estrutura de tabelas usadas nos bancos de dados relacionais, como o MySQL. Dentre os diferentes mecanismos de armazenamento de dados do NoSQL estão os baseados no par chave-valor (Key-value), grafos, documento-orientado e wide-column. A necessidade desse tipo de banco de dados se deve ao fato dos bancos relacionais não serem adequados para pesquisas que necessitam tratar de dados volumosos, com estruturas não convencionais e/ou dinâmicas. Um dos bancos de dados NoSQL mais populares é o MongoDB.

Cloud Computing

A computação em nuvem consiste no uso de serviços e recursos computacionais oferecidos por uma empresa/instituição através da internet (“a nuvem”). Ou seja, algumas grandes empresas como Amazon e Google, que possuem um grande arsenal computacional, disponibilizam ou vendem parte desse recurso para os usuários. O usuário, por sua vez, consegue acessar o recurso computacional contratado de forma remota através da internet. Existem vários recursos e serviços que estão disponíveis para o Cloud Computing e eles são subdivididos em:

  • infraestrutura como serviço (IaaS): nesta categoria é contratada uma parte da infraestrutura computacional (memória, armazenamento, processamento, rede) da empresa que oferece este serviço. O contratante, neste caso, recebe acesso a uma máquina virtual com os recursos contratado, oferecendo maior liberdade para instalar programas e configurar o servidor. Esse serviço pode ser utilizado para diversas finalidades, desde hospedagem de sites, armazenamento de dados, até para análise do Big Data. Exemplos de empresas que oferecem o IaaS são: Microsoft Azure, Google Cloud e Amazon Web Services.
  • plataforma como serviço (PaaS): é um serviço direcionado principalmente para desenvolvedores e programadores. Ele fornece para o usuário um ambiente computacional com várias ferramentas já instalados que permite ao usuário desenvolver, executar e gerenciar aplicações sem ter o trabalho de criar e manter a infraestrutura ou plataforma associada a esses processos. Exemplos: AWS Elastic Beanstalk, Google App Engine, Microsoft Azure.
  • software como serviço (SaaS): o produto oferecido por este serviço é um aplicativo na nuvem que é gerenciado e hospedado pela própria empresa que o oferece. Este representa o serviço mais comum e utilizado no mercado da nuvem. O Gmail, por exemplo, é considerado SaaS já que todo o serviço de armazenamento, de envio e de recebimento de e-mails é realizado nos servidores do Google e bastaria para o usuário um browser e a internet para acessar a sua conta. Outros exemplos de SaaS são: Dropbox, Google Drive, Netflix, PayPal.

No contexto do Big Data, que requer um poder computacional elevado para o processamento e o armazenamento de dados, a contratação da infraestrutura computacional oferecida por estas empresas se torna uma ótima alternativa já que ela:

  • reduz custos com infraestrutura: elimina os gastos com compras de hardwares e softwares, instalação e manutenção;
  • economiza espaço: os recursos permanecem armazenados online;
  • centraliza as informações: isso impede que os dados sejam mantidos em diferentes programas;
  • possui o modelo de contratação sob demanda: permite o contrato de apenas os recursos computacionais necessários para a sua demanda, o que auxilia na redução dos gastos.

Edge Computing

Edge computing (computação de borda) é uma abordagem de computação distribuída que procura aproximar os aplicativos corporativos das fontes de dados. Em outras palavras, ao invés de enviar os dados coletados para um centro de processamento ou na nuvem, a abordagem do Edge Computing procura processar estes dados de forma local e coletar apenas aquelas informações que podem ser relevantes para a análise posterior. Essa proximidade com os dados em sua origem oferece grandes benefícios, incluindo “insights” mais rápidos, tempos de resposta aprimorados e diminuição considerável no tráfego de dados.

Uma área que deve receber grandes benefícios e oportunidades com esta abordagem é a de saúde. Nesta área, vários dispositivos de monitoramento (monitor de glicose e outros sensores) geram uma quantidade massiva de dados. Ao invés de enviar estes dados para um centro de processamento para a sua análise, o próprio dispositivo poderia processar estes dados localmente utilizando, por exemplo, a IA, e permitir notificações em tempo hábil de comportamentos fora do padrão. Outra vantagem é que essa abordagem permite um nível mais elevado de privacidade, já que os dados gerados não precisam transitar para outros servidores.

Blockchain

O blockchain é um tipo de banco de dados que é conhecido pelo alto nível de segurança que ele confere aos seus dados armazenados. O seu uso é comum em aplicativos de transações monetárias, como o Bitcoin, que devem ser livres de falhas e fraudes.

Os dados em um blockchain são armazenados em grupos, conhecidos como blocos. Um bloco, quando preenchido, é ligado (‘chained’) a um outro bloco que foi anteriormente adicionado, formando uma cadeia de dados que é conhecida como blockchain. Toda nova informação uma vez adicionada nesta cadeia não pode ser alterada, ou seja, os dados do blockchain são imutáveis. A imutabilidade dos dados confere um nível de segurança ao blockchain, mas uma outra característica importante associada a sua segurança é a descentralização. Diferente dos bancos de dados centralizados, onde existe um servidor que armazena todo o conteúdo de um banco de dados, os bancos de dados descentralizados utilizam múltiplos servidores onde cada um armazena uma cópia do blockchain. Isto permite que os diferentes servidores que possuam uma cópia do blockchain consultem um ao outro para verificar possíveis fraudes e corrigi-las.

Em uma época em que é possível contratar serviços de sequenciamento do próprio DNA, uma das preocupações é a respeito da segurança dos dados genéticos gerados por estas empresas, já que, infelizmente, o compartilhamento e a venda desses dados para grandes empresas é uma realidade. Dados genéticos armazenados na forma de um blockchain podem ajudar a reduzir drasticamente o roubo de dados e assegurar que haverá um registro caso uma cópia desses dados sejam feitas.

Você pode gostar de ler:

Referências:

HPC:

Inteligência Artificial:

GPU:

Data Lake:

Streaming Data:

NoSQL:

  • Schulz WL, Nelson BG, Felker DK, Durant TJS, Torres R. Avaliação de arquiteturas de banco de dados relacionais e noSQL para gerenciar anotações genômicas. J Biomed Inform. 2016 Dez;64:288-295.

Cloud Computing:

Edge Computing:

Blockchain: