Tópicos em Gerenciamento de Dados e Informações 2014

Tamanho: px
Começar a partir da página:

Download "Tópicos em Gerenciamento de Dados e Informações 2014"

Transcrição

1

2 Tópicos em Gerenciamento de Dados e Informações a Edição Editora Sociedade Brasileira de Computação SBC Organizadores Bernadette Farias Lóscio, Carmem S. Hara e Vidal Martins ISBN

3 T674 Simpósio Brasileiro de Banco de Dados (29. : 2014 out. 6-9 : Curitiba, PR). Tópicos em Gerenciamento de Dados e Informações 2014 [recurso eletrônico] / [Organização: Departamento de Informática da UFPR e Escola Politécnica da PUC-PR ; editado por Bernardette Farias Lóscio... et al.]. Curitiba: UFPR; PUC-PR, pendrive. Disponível também no site do SBBD 2014: ISBN Bancos de dados - Encontros. 2. Gerência de Informações. 3. SBBD. I. Universidade Federal do Paraná. Departamento de Informática (Org.). II. Pontifícia Universidade Católica do Paraná. Escola Politécnica (Org.). III. Lóscio, Bernardette Farias (Ed.). IV. Título. CDD:

4 Editorial Os minicursos do SBBD são cursos de curta duração que abordam temas relevantes da área de Banco de Dados e têm como objetivo promover discussões sobre os fundamentos, tendências e desafios relacionados ao tema abordado. Os minicursos, com três horas de duração cada, constituem uma excelente oportunidade de atualização para acadêmicos e profissionais da área. Nesta edição, foram selecionadas três propostas para serem apresentadas durante o SBBD A seleção das propostas foi realizada por um Comitê de Avaliação formado por cinco avaliadores. Durante o processo de seleção, as propostas submetidas foram avaliadas por todos os membros do comitê. Os textos dos minicursos selecionados, que correspondem aos capítulos desse livro, foram revisados por membros do comitê para garantir a qualidade final dos mesmos. Os minicursos do SBBD 2014 abordam temais atuais e relevantes relacionados à Big Data e Cloud Computing. O primeiro minicurso, Big Social Data: Princípios sobre Coleta, Tratamento e Análise de Dados Sociais, apresenta uma abordagem de análise de Big Data em redes sociais online (Big Social Data), incluindo a coleta e tratamento de grande volume de dados sociais, mineração e princípios de análise de interações sociais. O segundo minicurso, Estratégias para Proteção da Privacidade de Dados Armazenados na Nuvem, apresenta e discute os principais conceitos, métodos e técnicas relacionados à segurança e à privacidade dos dados armazenados ou processados na nuvem. O terceiro minicurso, Otimização de Desempenho em Processamento de Consultas MapReduce, tem como tema central as soluções de tuning para processadores de consulta baseados em MapReduce com foco principal numa solução baseada em Hadoop, Hive e AutoConf. Gostaria de agradecer aos autores, pela submissão das propostas e geração dos textos finais, e ao Comitê de Avaliação, pela dedicação e eficiência em todo o processo de seleção dos minicursos. Bernadette Farias Lóscio, UFPE Coordenadora de Minicursos do SBBD 2014 Carmem S. Hara, UFPR Vidal Martins, PUC-PR Coordenadores Locais do SBBD 2014

5 XXIX Simpósio Brasileiro de Banco de Dados 6 a 9 de Outubro 2014 Curitiba PR Brasil MINICURSOS Promoção Sociedade Brasileira de Computação SBC Comissão Especial de Banco de Dados da SBC Organização Universidade Federal do Paraná UFPR Pontifícia Universidade Católica do Paraná PUC-PR Comitê Diretivo do SBBD Ana Carolina Salgado, UFPE Cristina Ciferri, ICMC-USP (coord.) José Palazzo Moreira de Oliveira, UFRGS Marco A. Casanova, PUC-Rio Mirella M. Moro, UFMG Vanessa Braganholo, UFF

6 Coordenadores do SBBD 2014 Coordenadora do Comitê Diretivo Cristina Ciferri, ICMC-USP Coordenadores Locais Carmem Hara, UFPR and Vidal Martins, PUC-PR Coordenadoras do Comitê de Programa Mirella M. Moro, UFMG and Renata Galante, UFRGS Coordenadores da Sessão de Demos e Aplicações José Antônio Macedo, UFC and Flávio Sousa, UFC Coordenadores do Workshop de Teses e Dissertações em Banco de Dados João Eduardo Ferreira, IME-USP and Fabio Porto, LNCC Coordenadora de Minicursos Bernadette Farias Lóscio, UFPE Coordenadora de Tutoriais Vanessa Braganholo, UFF Comitê de Organização Local Carmem Satie Hara, UFPR (coord.) Cristina Verçosa Pérez Barrios de Souza, PUC-PR Daniel S. Kaster, UEL (proceedings) Marcos A. Carrero, UFPR Nadia Puchalski Kozievitch, UTFPR Vidal Martins, PUC-PR (coord.) Comitê de Avaliação de Minicursos Angelo Brayner, UNIFOR Damires Souza, IFPB Edleno Silva de Moura, UFAM Ricardo Rodrigues Ciferri, UFSCAR Ronaldo Mello, UFSC

7 Sumário Capítulo Big Social Data: Princípios sobre Coleta, Tratamento e Análise de Dados Sociais Tiago Cruz França, Fabrício Firmino de Faria, Fabio Medeiros Rangel, Claudio Miceli de Farias, Jonice Oliveira Capítulo Estratégias para Proteção da Privacidade de Dados Armazenados na Nuvem Eliseu Castelo Branco Junior, Javam Machado, José Maria da Silva Monteiro Filho Capítulo Otimização de Desempenho em Processamento de Consultas MapReduce Ivan Luiz Picoli, Leandro Batista de Almeida, Eduardo Cunha de Almeida

8 cap:1 Capítulo 1 Big Social Data: Princípios sobre Coleta, Tratamento e Análise de Dados Sociais Tiago Cruz França, Fabrício Firmino de Faria, Fabio Medeiros Rangel, Claudio Miceli de Farias e Jonice Oliveira Abstract Online social networks have become a popular mean of sharing and disseminating data. From these data one can extract information about patterns of interpersonal interactions and opinions, aiding in the understanding of a phenomenon, an event prediction or decision making. Nowadays, the studies and techniques for social network analysis need to work with the increase of variety and volume of data besides quickly processing them. Therefore, new approaches are required to be employed in those analyzes. Data that have such characteristics (volume, variety and velocity) are called Big Data. This short course aims to present an approach for analyzing Big Data in online social networks (Social Big Data), including the collection and processing of large volumes of social data mining and analysis principles of social interactions. Resumo Os dados das redes sociais online podem ser usados para extrair informações sobre padrões de interações interpessoais e opiniões. Esses dados podem auxiliar no entendimento de fenômenos, na previsão de um evento ou na tomada de decisões. Com a ampla adoção dessas redes, esses dados aumentaram em volume, variedade e precisam de processamento rápido, exigindo, por esse motivo, que novas abordagens no tratamento sejam empregadas. Aos dados que possuem tais características (volume, variedade e necessidade de velocidade em seu tratamento), chamamo-los de Big Data. Este minicurso visa apresentar uma abordagem de análise de Big Data em redes sociais online (Big Social Data), incluindo a coleta e tratamento de grande volume de dados sociais, mineração e princípios de análise de interações sociais. 8

9 1.1. Introdução A redescoberta da importância da análise de redes sociais se deu pelo uso intensivo das mídias sociais. Nesta seção entenderemos os conceitos básicos de redes sociais, aplicações da análise de redes sociais e como a coleta e tratamento de dados das redes sociais online (ou mídias sociais) podem ser caracterizados como um problema de Big Data Conceitos de Redes Sociais e a Aplicabilidade da Análise de Redes Sociais Por definição, uma rede social é um conjunto de atores que pode possuir relacionamentos uns com os outros [Wasserman 1994]. Redes Sociais são como um organismo vivo, onde cada célula é uma pessoa. Como em todo organismo, vemos toda a sorte de células: as que permanecem nele por alguns dias, outras por alguns meses e aquelas que perduram por anos. Porém, invariavelmente, essas células acabam por deixar de existir, dando lugar a células novas ou muitas vezes nem isso. Se sairmos do campo metafórico e buscarmos algo mais concreto, do nosso dia-a-dia, podemos observar o mesmo padrão: pessoas que ficam desempregadas, se aposentam, são promovidas, empresas que se fundem, falecimentos, novas amizades, namoros e muito mais. Em nosso dia-a-dia não faltam exemplos práticos de redes sociais: nossa família, nossos amigos de faculdade, de academia, de trabalho ou até mesmo encontros casuais, imprevistos. Eles podem ser vistos e caracterizados como a criação de um relacionamento entre dois indivíduos (nós), ligando assim as redes já existentes de ambos. Tal relacionamento pode nunca mais ser nutrido ou, como em alguns casos, vir a se tornar algo mais forte do que todos os relacionamentos já existentes. A estrutura que advém dessas inúmeras relações, normalmente, se mostra complexa. A análise das redes sociais é feita do todo para a parte; da estrutura para a relação do indivíduo; do comportamento para a atitude. Para isto é estudada a rede como um todo, usando uma visão sociocêntrica (com todos os elos contendo relações específicas em uma população definida) ou como redes pessoais, em uma visão egocêntrica (com os elos que pessoas específicas possuem, bem como suas comunidades pessoais) [Hanneman 2005]. Podemos citar alguns cenários onde é aplicada a análise de redes sociais. No caso de uma empresa, por exemplo, é importante saber como os seus funcionários se organizam, pois assim é possível evitar problemas característicos que dificultam a disseminação de conhecimento [Wasserman 1994]. No campo da Ciência, as redes sociais podem auxiliar no estudo de propagações de endemias ou mesmo de epidemias [Pastor- Satorras 2001; Mikolajczyk 2008], bem como serem utilizadas para entender [Albuquerque 2014; Stroele 2011] ou melhorar a formação de grupos [Souza et al. 2011; Monclar et al. 2012; Melo e Oliveira 2014; Zudio et al. 2014]. Como tática de propaganda e marketing podemos usá-las como uma ferramenta para ajudar a propagar uma determinada marca ou conceito, podendo servir, também, para o estudo de um públicoalvo relacionado, verificando em quais nós aquelas informações morrem e em quais elas seguem em frente [Kempe 2003; Santos e Oliveira 2014]. Além disso, podemos aproveitar uma das grandes questões do início do século XXI desde os eventos de 11 de setembro de 2001, os atentados, para pensar na detecção e identificação de terroristas. 9

10 Pode-se realizar uma verificação de pessoas com as quais os terroristas costumam se relacionar, traçando um padrão de redes que auxilie futuras investigações [Svenson 2006]. Outra aplicação advém do levantamento de relacionamentos entre Weblogs 1 que realizam propaganda de ideais terroristas, montando a respectiva rede social representada por eles, como visto em [Yang 2007]. A tendência de pessoas se unirem e formarem grupos é uma característica de qualquer sociedade [Castells 2000]. Esse comportamento é retratado, nos dias atuais, através do avanço das mídias sociais e comunidades online que evidenciam o poder de unir usuários ao redor do mundo. Conteúdos gerados por seus usuários atingiram alto grau de alcance através de seus comentários, relatos de acontecimentos quase em tempo real, experiências, opiniões, críticas e recomendações que são lidos, compartilhados e discutidos, de forma quase instantânea, em diversas plataformas disponíveis na Web Redes Sociais no Mundo Digital: Redes Sociais Online O crescimento de usuários de telefones celulares e tablets com acesso à rede permite que as pessoas permaneçam conectadas ao longo do dia, aumentando a quantidade de informações disponibilizadas na Internet. De acordo com o relatório do instituto de pesquisa tecnológica Cozza et al. [2011], 428 milhões de dispositivos móveis, incluindo celulares, smartphones e tablets foram vendidos ao redor do mundo no primeiro semestre do ano de 2011 com 19% por cento de crescimento em relação ao ano anterior. Grande parte do acesso e disponibilização do conteúdo se deve à popularização das mídias sociais. Mídias Sociais é um tipo de mídia online que permite que usuários ao redor do mundo se conectem, troquem experiências e compartilhem conteúdo de forma instantânea através da Internet. Elas são fruto do processo de socialização da informação nos últimos anos representado pela extensão do diálogo e do modo como as informações passaram a ser organizadas através da Web. As mídias sociais e consequentemente o crescimento do seu uso pela população implicaram numa mudança de paradigma em relação à disseminação da informação. As grandes mídias como jornais, revistas e portais passaram a não ser os mais importantes provedores de informações para a população, ou seja, o modelo de disseminação um para muitos foi sendo substituído pelo modelo muito para muitos [Stempel 2000]. As mídias sociais deram espaço para que usuários gerassem e compartilhassem conteúdo de forma expressiva, deixando de lado o comportamento passivo de absorção da informação que possuíam, caracterizando uma forma de democratização na geração de conteúdo. Segundo Solis (2007), o termo mídia social descreve tecnologias e práticas online que pessoas usam para compartilhar opiniões, experiências e perspectivas, podendo se manifestar em diferentes formatos incluindo texto, imagens, áudio e vídeo. A expansão dessas mídias tornou mais simples encontrar amigos, compartilhar ideias e opiniões e obter informações, ou seja, uma democratização do conteúdo em que todos participam na construção de uma comunidade virtual. Existem diversos tipos de mídias sociais com os mais diferentes focos. As categorias mais conhecidas são: 1 Weblogs são páginas pessoais, ou sites sem fim lucrativos, dedicados a trazer informações sobre um determinado tema [Blood 2002]. 10

11 Colaboração: está relacionada às redes sociais colaborativas, ou seja, sites em que é importante a interação de diferentes usuários compartilhando informações a fim de atingir um objetivo comum. Como exemplo destacam-se a Wikipedia, Yelp e Digg. Comunicação: está relacionada ao fenômeno da conversação entre pessoas e o modo como essa conversa é percebida por seus participantes, que podem participar de forma direta, através da realização de comentários e produção de conteúdo, ou indireta, compartilhando e divulgando conteúdo e, consequentemente, ajudando a promover discussões. Podem-se citar, neste contexto, os blogs e microblogs, as redes sociais online (RSO) e os fóruns. Como exemplo, é possível mencionar WordPress 2, Twitter 3, Facebook 4 e GoogleGroups 5, respectivamente. Multimídia: refere-se aos componentes audiovisuais que ficam além do texto puro e simples como fotos, vídeos, podcasts e músicas. Alguns exemplos dessas mídias, respectivamente, são Flickr 6, YouTube 7, JustinTV 8 e Lastfm 9. Entretenimento: diz respeito aos conteúdos que geram um mundo virtual favorecendo o desenvolvimento da gamificação, ou seja, ambientes focados em games online ou ainda atividades que podem ser transformadas em algum tipo de competição, nos quais seus usuários se juntam com o objetivo de jogarem juntos ou compartilharem informações a respeito do tema. Como exemplo podem ser citados o Second Life 10 e TvTag 11. A popularidade dessas plataformas pode ser evidenciada através da capacidade que possuem de produzir enormes volumes de conteúdo. Conforme as estatísticas do Facebook [Statistics Facebook 2011], este possui mais de 800 milhões de usuários ativos e 50% destes usuários acessam o site todo dia. De acordo com o Compete 12, o Twitter possuía em Setembro de 2012 cerca de 42 milhões de usuários únicos registrados representando o vigésimo primeiro site da Internet em número de visitantes únicos e segundo Dale [2007], o YouTube concentra 20% de todo o tráfego de dados da Internet. A monitoração destas mídias sociais tornou-se um problema de Big Data, onde precisamos tratar um volume grande de dados, variedade (já que tais mídias apresentam características distintas no que se relaciona à estrutura, dinâmica, uso e modelagem) e necessidade de velocidade em seu tratamento para que diferentes análises sejam viáveis. 1.2 Redes Sociais Online: Coleta de dados e Técnicas de Análise Nesta seção, apresentamos os princípios da coleta dos dados e a análise das redes sociais extraídas a partir destes dados. 2 https://wordpress.com 3 4 https://www.facebook.com 5 https://groups.google.com 6 https://www.flickr.com/ 7 https://www.youtube.com/

12 1.2.1 A informação dos dados coletados na Web A Web é composta por uma grande quantidade de dados que não possuem uma estrutura definida ou que não possuem uma semântica explícita. Por exemplo, uma página HTML possui uma estrutura, mas esta estrutura pouco atribui informações sobre os dados presentes na página. Sendo assim, ao encontrar uma tag <img> em um determinado ponto do arquivo HTML é possível afirmar que se trata de uma imagem, porém pouco se pode afirmar sobre o conteúdo desta imagem. Ainda que a tag <img> possua um atributo que seja um texto relativo a essa imagem, textos são dados não estruturados e é necessário aplicar técnicas em mineração de dados para extrair informações do texto. Segundo Chen (2001), estima-se que 80% de todo conteúdo mundial online são textos. Considerando que dados não estruturados englobam textos, imagens, vídeos e músicas, pode-se perceber que realmente grande parte da Web é composta de dados não estruturados. Devido à necessidade de aperfeiçoar os mecanismos de busca e utilizar a Web como plataforma de integração, por meio de serviços, há uma busca crescente em estruturar os dados. Essa estruturação, entretanto, deve ter uma flexibilidade dado a própria natureza da Web em que há uma vasta variedade de dados. Com base nesse problema, alguns padrões foram criados. Entre eles, os padrões XML e JSON são os mais utilizados. Entretanto, nada impede de que outros padrões sejam criados ou aplicados. Essa diversidade cria um problema no processamento dos dados, pois é necessário criar uma aplicação para cada padrão de representação. Além disso, um mesmo padrão de representação pode estruturar o mesmo conjunto de dados de diferentes formas, como ilustrado na Figura Coleta de Dados: Crawler de páginas e APIs de RSO Atualmente, as principais redes sociais online (RSO) provêem interfaces ou serviços para a captura parcial ou total de seus dados. Nesta seção, comentaremos os principais desafios e recursos para se trabalhar com as principais (RSO) existentes atualmente Coletando Dados de Páginas Estáticas e Dinâmicas da Web: Ferramentas e Desafios Considera-se dinâmica uma página cuja atualização dependa de uma aplicação Web, enquanto páginas estáticas costumam não ter seu conteúdo modificado. Quando se faz necessário coletar dados de páginas, sejam estáticas ou dinâmicas, é necessário entender a estrutura dos dados contidos nessa página a fim de desenvolver um crawler capaz de buscar e armazenar esses dados. Quando a página não possui API de consumo ou a API possui limites indesejados, é possível utilizar ferramentas para capturar as páginas e extrair os dados sem a utilização de APIs. Um exemplo dessas ferramentas é o Node.js. O Node.js é uma plataforma construída na máquina virtual Javascript do Google para a fácil construção de aplicações de rede rápidas e escaláveis [Node 2014]. 12

13 Figura 1.1. Exemplos de conjuntos de dados em diferentes representações Coletando Dados do Twitter, Facebook, YouTube e Foursquare Normalmente, há duas formas diferentes de coleta de dados das redes sociais online. A primeira forma consiste em determinar termos e coletar por citações destes termos no passado. Desta forma, existe a possibilidade de restrições na obtenção de dados antigos, pois normalmente há um período de tempo viável para a coleta dos dados. A segunda se baseia em um conceito de streaming, onde a aplicação criada funciona como um ouvinte da rede e captura os dados à medida que estes surgem. Twitter O Twitter é uma rede social online que possui duas APIs diferentes para a captura dos seus dados: REST API e Streaming API. Para a utilização de ambas APIs é necessário inicialmente que o usuário tenha uma conta no Twitter. Acessando a página https://dev.twitter.com, é possível autenticar-se com a conta do Twitter e cadastrar uma aplicação. Após o cadastro da aplicação é necessário gerar o Access Token da mesma. Importante destacar que, tanto o API Secret como o Access Token Secret da sua aplicação não devem ser divulgados por questões de segurança. Essas chaves serão utilizadas na autenticação da sua aplicação de captura de dados. O Twitter trabalha com o padrão de arquivo JSON. Todos os dados são recebidos nesse formato. Um exemplo da utilização do Streaming API pode ser visto na Figura 1.2. Os programas usados como exemplo de crawlers para o Twitter foram codificados em Python 2.7. No primeiro exemplo (Figura 1.3), foram utilizadas as bibliotecas Auth1Session e json. A Auth1Session é responsável pelo estabelecimento da conexão com o Twitter e a biblioteca JSON é responsável por transformar o texto recebido em um objeto Python cuja estrutura é no formato JSON. Assim, é possível manipular o arquivo JSON. Um exemplo utilizando a REST API do Twitter pode ser visto na Figura

14 import json from requests_oauthlib import OAuth1Session key = "{sua API key}" secret = "{sua API secret}" token = "{seu Acess Token}" token_secret = "{seu Acess Token Secret}" requests = OAuth1Session(key, secret, token, token_secret) r = requests.post('https://stream.twitter.com/1/statuses/filter.json', data={'track': 'bom dia'}, stream=true) for line in r.iter_lines(): if line: print json.loads(line) # tweet retornado Figura 1.2. Exemplo usando a Streaming API. import oauth2 as oauth import json import time CONSUMER_KEY = "{sua API key}" CONSUMER_SECRET = "{sua API secret}" ACCESS_KEY = "{seu Acess Token}" ACCESS_SECRET = "{seu Acess Token Secret}" consumer = oauth.consumer(key=consumer_key, secret=consumer_secret) access_token = oauth.token(key=access_key, secret=access_secret) client = oauth.client(consumer, access_token) q = 'israel' #termo a ser buscado url = "https://api.twitter.com/1.1/search/tweets.json?q="+str(q)+"&count=100"+"&lang=pt" response, data = client.request(url, "GET") tweets = json.loads(data) for tweet in tweets['statuses']: print str(tweet) Figura 1.3. Exemplo usando a REST API. No código apresentado na Figura 1.3, a variável q representa a consulta buscada no Twitter. Neste caso, buscou-se pelo termo israel. A API retorna os 100 tweets mais recentes que possuem esse termo, que foi passado como parâmetro na URL de requisição através do parâmetro count igual a 100. Ainda sobre a consulta, a API retorna tweets com todos os termos presentes na string q separados por espaços. Ou seja, se q possui israel guerra, todos os tweets retornados possuirão as duas palavras. Exemplo: Há guerra em Israel seria um possível texto do tweet retornado. Utilizando a REST API, existem algumas restrições impostas pelo Twitter. Ao que se sabe, o Twitter não permite que a API busque por tweets mais antigos do que 7 14

15 dias e ainda bloqueia a aplicação caso ultrapasse o número de requisições permitidas, sendo necessário um intervalo de 15 minutos para que a aplicação seja desbloqueada. Facebook Uma das APIs de consumo disponibilizadas pelo Facebook se chama Graph API. Existe outra API chamada Public Feed API, porém esta possui acesso restrito a um conjunto de editores de mídia e seu uso requer aprovação prévia do Facebook [Facebook 2014]. import httplib app_id = "{sua app id}" app_secret = "{seu app secret}" client_credentials = "{label para de identificação do cliente}" url = "/oauth/access_token?client_id="+app_id+"&client_secret="+app_secret+"&grant_type=client_credentials" conn = httplib.httpsconnection("graph.facebook.com") conn.request("get", str(url)) response = conn.getresponse() print response.read() #access token Figura 1.4. Exemplo usando a Graph API. Primeiramente, para utilizar a Graph API é necessário criar uma aplicação. Essa aplicação pode ser criada no site https://developers.facebook.com/ e será vinculada a uma conta no Facebook. A segunda etapa consiste em gerar um access token para aquela sessão. Um exemplo, utlizando Python 2.7, de como adquirir o access token pode ser visto na Figura 1.4. Neste exemplo, utilizou-se a biblioteca httplib para executar a requisição. É importante destacar que algumas requisições necessitam de um app access token e outros necessitam do user access token. Este último deve ser criado no próprio site do Facebook através do endereço https://developers.facebook.com/tools /accesstoken/. Com o Graph API é possível buscar no Facebook por certos objetos que possuam um determinado termo. Esses objetos podem ser usuário, páginas, eventos, grupos e lugares. Porém, uma limitação da API é que não é possível procurar por posts públicos onde um determinado termo aparece. Entretanto, a busca por páginas e lugares requer um app access token, enquanto buscas pelos outros objetos utilizam o user access token. A Figura 1.5 mostra a utilização do Graph API na busca por usuários com o termo Fabio, codificado utilizando Python 2.7. As requisições ao Facebook do tipo search retornam objetos no formato JSON. 15

16 Youtube import httplib user_access_token = "{seu user access token}" q = "Fabio" url_consulta = "/search?q="+str(q)+"&type=user&access_token="+str(user_access_token) conn = httplib.httpsconnection("graph.facebook.com") conn.request("get", str(url_consulta)) response = conn.getresponse() print response.read() Figura 1.5. Segundo exemplo usando a Graph API. A API do Youtube atual é a versão 3.0. Nesta versão, é possível buscar por informações de vídeos e canais com base nos seus ids. Entretanto, não é possível buscar por usuários que comentaram em um determinado vídeo ou mesmo por comentários de um vídeo. Isso pode ser uma grande limitação quando se pensa em análises utilizando o Youtube. Mesmo assim, dado um id de um determinado vídeo e requisições feitas em determinados intervalos de tempo, é possível conhecer a progressão de visualizações de um vídeo e acompanhar sua divulgação em outra rede social, correlacionando esses dados e estudando a interatividade entre as redes. Para utilizar a API do youtube, é necessário a criação de uma aplicação na Google, no site https://console.developers.google.com/. Após a criação, é necessário a ativação da API do Youtube v3.0. Para a consulta de dados de vídeos ou vídeos de um determinado canal, utiliza-se o protocolo HTTPS. Uma uri exemplo para uma consulta é: https://www.googleapis.com/youtube/v3/videos?part=statistics&id=zkugnwxu5_s&ke y={key da sua aplicação}. Nesse caso, serão retornadas as estatísticas do vídeo cujo id foi passado como parâmetro, no formato JSON. Mais informações e exemplos de requisições estão disponíveis em https://developers.google.com/youtube/v3/docs/. Foursquare O Foursquare pode ser definido como uma rede geossocial, onde seus usuários podem indicar onde se encontram ou procurar por outros usuários que estejam próximos geograficamente. A API de consumo do Foursquare permite buscas por uma determinada latitude e longitude a fim de retornar locais de interesse público daquela região. No retorno das requisições é possível verificar a quantidade de check-in desses locais, além da quantidade de pessoas que recentemente efetuaram um check-in naquele local. Além desta busca, a API permite outra busca por tips (dicas), que tem como retorno dicas dos usuários sobre locais em uma determinada região. A API pode ser acessada no site https://developer.foursquare.com e o usuário precisa criar uma aplicação no site para começar a utilizar. Um exemplo de requisição da API do Foursquare, codificada em Python 2.7, pode ser visto na Figura 1.6. Dentre os parâmetros da requisição HTTP, v é um apenas um controle de versão, onde o desenvolvedor da aplicação pode informar ao foursquare se está utilizando uma versão anterior da API. No caso, este parâmetro recebe uma data no formato YYYYMMDD. 16

17 import urllib2 client_id = "{seu client id}" client_secret = "{seu client secret}" par_v = " " location = "40.7,-74" query = "sushi" response = urllib2.urlopen("https://api.foursquare.com/v2/tips/search"+ "?client_id="+client_id+ "&client_secret="+client_secret+ "&v="+par_v+ "&ll="+location+ "&query="+query) html = response.read() print str(html) Figura 1.6. Exemplo usando a API do Foursquare Princípios de Análises de Redes Sociais Após a leitura, desambiguação 13 dos nós e montagem do sociograma (grafo de relacionamentos), chegou a hora de analisarmos a rede social. Em um sociograma, podemos representar os relacionamentos como arestas, as quais podem ser direcionadas (João envia um para Maria) ou não (João e Maria participaram de uma reunião). Nesta seção, apresentamos apenas métricas de grafos não direcionados. Vale lembrar que para todas as métricas apresentadas neste capítulo existem suas respectivas versões para grafos direcionados. Maiores detalhes sobre tais métricas podem ser encontradas em [Newman 2010]. Casos e exemplos de uso podem ser obtidos em [Easley e Kleinberg 2010] Principais Métricas de Análise de Redes Sociais A seguir, resumidamente foram descritas algumas métricas divididas naquelas que são referentes aos nós de modo individual e aquelas que medem o comportamento da rede como um todo. 13 Quando estamos lidando com mídias sociais, normalmente temos diferentes usuários associados à uma única entidade. Por exemplo, imagine o João da Silva (entidade) que possui várias contas. No Twitter pode ser reconhecido como JS_RJ. No Facebook ele possui duas contas, uma de caráter profissional (Prof. João da Silva) e outra pessoal (João Carioca). O processo de desambiguação dos nós significa identificar as diferentes contas de uma mesma entidade e associá-las. Neste exemplo, identificaríamos que JS_RJ, Prof. João da Silva e João Carioca são diferentes contas de uma mesma pessoa. 17

18 Métricas Individuais A importância de um vértice pode ser identificada através do cálculo de centralidade. Uma destas centralidades é o grau do vértice (também conhecida como grau de centralidade ou ainda centralidade local por Wasserman e Faust (1994)), ou seja, o número de arestas conectadas diretamente a ele. A centralidade global de um vértice, também conhecida como closeness ou grau de proximidade é a soma do menor caminho entre um vértice e os demais vértices da rede. Um vértice que tenha a menor soma das menores distâncias está mais perto dos demais. Ou seja, quanto maior a centralidade global, maior será a distância de um membro para com os demais. Isto significa que o trajeto de um dado, informação ou conhecimento para chegar a um destes membros isolados é maior, e consequentemente, pode demorar mais, como também podem chegar deturpados e com ruído. Outra medida de centralidade muito utilizada é o betweenness ou grau de intermediação, que está relacionado ao número de caminhos mínimos aos quais um vértice pertence. O grau de intermediação revela o quanto um vértice está no caminho entre os outros vértices numa rede. Quanto maior for o valor deste grau, significa que este vértice é uma passagem obrigatória, muitas vezes conectando diferentes grupos. Seja xi a quantidade de todos os caminhos mínimos entre s e t (caso exista mais de um) cujo vértice i está incluído, então, sendo nst i um destes caminhos mínimos entre os vértices s e t, nst i =1, se o vértice i pertence a este caminho mínimo e nst i =0 caso contrário [5], como está representado na equação (3.2): x = i i n st st Seja gst o número total de caminhos mínimos entre s e t, então o grau de intermediação do vértice i será Xi calculado através da equação (3.3): X i xi = g Outra métrica, conhecida como coeficiente de agrupamento, pode informar para cada vértice e para a rede como um todo, como uma rede se apresenta em termos de grupos. Desta análise vem a definição de coeficiente de agrupamento: a probabilidade de que dois vizinhos de um vértice serão vizinhos entre si. Para calcular o coeficiente de agrupamento Ci, são contados todos os pares de vértice que são vizinhos de i e sejam conectados entre si, então, divide-se este valor pelo número total de vizinhos de i, ou ki, que é o grau de i: NúmeroDeParesDeVizinhosDeiQueSãoConectados C i = NúmerodeParesdeVizinhoDei Outras centralidades igualmente importantes são o PageRank e o cálculo de Hubs, que podem ser encontrados em [Newman 2010]. Métricas da Rede Watts e Strogatz (1998) propuseram o cálculo do coeficiente de agrupamento médio, Cm, para a rede através da média do coeficiente de agrupamento local para cada vértice. Ou seja, Cm é o somatório dos coeficientes de agrupamento de cada vértice do grafo, normalizado pelo número total de vértices. st 18

19 C m = 1 / n Outra medida é o diâmetro da rede, que é a distância máxima entre dois vértices, é o maior caminho mínimo (geodésico) entre dois vértices da rede, simbolizando o nível de ligação entre os vértices da rede. Newman (2010) define a densidade de uma rede utilizando o grau médio da rede em questão. Primeiramente calculando o valor de M, o número máximo possível de arestas numa rede de n vértices. n 1 C n 1 M = n n Sendo G o grau médio já calculado para esta rede com m arestas, a densidade é obtida fazendo-se: m 2m G ρ = = = n n n 1 n 1 2 Se a densidade de uma rede varia no intervalo [0,1], quanto mais próximo de zero, menos conectada é a rede. O contrário é válido, quanto mais próximo de um, a rede é mais densa. A vantagem do uso desta medida está na simplicidade de seu cálculo, no entanto, para redes com extenso número de nós, torna-se custoso realizar tal cálculo Principais Ferramentas Existem diversas ferramentas (muitas delas gratuitas!) que automatizam a análise, possuindo as principais métricas implementadas e ferramentas de visualização e extração de relatórios. Várias delas lêem e exportam para diferentes formatos. Em [Huisman e Van Duijn 2005] vocês têm uma análise comparativa destas principais ferramentas. Os autores mantêm o site atualizado com novos programas destinados à análise de redes sociais. Neste curso a ferramenta Gephi 14 será utilizada. Essa ferramenta se apresentou como uma boa opção quando se analisa redes não muito grandes Princípios de Mineração de Informação Mineração de dados é o processo de explorar dados à procura de padrões consistentes. Na análise de redes sociais, esses padrões descrevem como os indivíduos interagem ou as características (regras) que dão origem às redes sociais. Identificar fatores e as tendênciaschave dos dados que a rede produz também são aplicações possíveis de mineração de dados em redes sociais. Grafos representam estruturas de dados genéricas que descrevem componentes e suas interações, sendo assim são adotados para representar as redes sociais. Como consequência, os métodos de mineração de dados apresentados a seguir terão como foco a mineração em grafos. Segundo a taxonomia apresentada por Getoor e Diehl [Getoor e Diehl 2005], a mineração para grafos pode ser dividia em três grandes grupos: mineração orientados a objetos; mineração orientada a links; e mineração orientada a grafos. Os grupos e os métodos de cada grupo são: (i) Tarefas relacionadas a objetos; (ii) Tarefas i 14 https://gephi.github.io/ 19

20 relacionadas a ligações e (iii) Tarefas relacionadas a grafos. Por sua vez Tarefas relacionadas a objetos se dividem em: (i) Ranking baseado em ligação de objetos (RBLO); (ii) Classificação baseada em ligação de objeto (CBLO); (iii) Agrupamento de objetos e (iv) Identificação de objetos. As tarefas relacionadas a ligações resumem-se à predição de ligações. Por fim, as tarefas relacionadas a grafos se dividem em: (i) Descoberta de subgrafos e (ii) Classificação de grafos. Nas próximas subseções será feito o detalhamento de cada método. Essa taxonomia de tarefas de mineração em grafos foi retirada de [Getoor e Diehl 2005] Ranking baseado em link de objetos Uma das tarefas mais comuns na mineração de dados em grafos, o ranking baseado em link de objetos explora a estrutura dos links de um grafo para ordenar e priorizar o conjunto de vértices. Dentre os métodos para RBLO, os algoritmos HITS [Kleinberg 1999] e PageRank [Ranking e Order 1998] são os mais conhecidos. O PageRank funciona contando o número de ligações entre os vértices de um grafo orientado para estimar a importância desse vértice. Ligações de vértices importantes (onde a importância é definida pelo valor de PageRank desse vértice) para um vértice, fazem com que esse último melhore seu ranking. As ligações que um vértice faz com outros, ponderado pela importância desse vértice, faz com que o primeiro diminua sua importância. O balanço entre quais vértices apontam e são apontados determinam o grau de importância de um nó. O algoritmo HITS é um processo mais complexo se comparado com o PageRank, modelando o grafo com dois tipos de vértices: hubs e entidades. Hubs são vértices que ligam muitas entidades e por consequência, entidades são ligadas por hubs. Cada vértice do grafo nesse método recebe um grau de hub e de entidade. Esses valores são calculados por um processo iterativo que atualiza os valores de hub e entidade de cada vértice do grafo baseado na ligação entre os vértices. O algoritmo de HITS tem relação com o algoritmo de PageRank com dois loops separados: um para os hubs e outro para as entidades, correspondendo a um grafo bi-partido Classificação baseada em ligação de objetos A classificação baseada em ligação de objetos (CBLO) tem como função rotular um conjunto de vértices baseado nas suas características, diferindo dessa forma das técnicas de classificação tradicionais de mineração de dados por trabalhar com estruturas não homogêneas. Apesar da sua importância, é uma área de mineração não consolidada, apresentando como desafio o desenvolvimento de algoritmos para classificação coletiva que explorem as correlações de objetos associados [Getoor e Diehl 2005]. Dentre as propostas da CBLO, destacam-se os trabalhos de Lafferty et al (2001), que é uma extensão do modelos de máxima entropia em casos restritos onde os grafos são cadeias de dados. Taskar et al. (2002) estenderam o modelo Lafferty et al (2001) para o caso em que os dados formam um grafo arbitrário. Lu e Getoor (2003) estenderam um classificador simples, introduzindo novas características que medem a distribuição de classes de rótulos em uma cadeia de Markov. 20

21 Agrupamento de objetos O objetivo do Agrupamento de Objetos é o agrupamento de vértices de um grafo por meio de características comuns. Várias técnicas foram apresentadas em várias comunidades para essa finalidade. Entretanto, o desenvolvimento de métodos escaláveis adequados para exploração de grafos complexos em tempo hábil ainda é um desafio. Para grafos com arestas e vértices de um único tipo e sem atributos, pode-se utilizar técnicas de agrupamento aglomerativo ou divisivos. A tarefa de agrupamento envolve o particionamento de redes sociais em conjuntos de indivíduos que possuam um conjunto similar de links entre si. Uma medida de similaridade entre o conjunto de arestas e o agrupamento aglomerativo é definida e usada para identificar as posições. Métodos de separação espectral do grafo resolvem o problema de detecção de grupo, identificando um conjunto mínimo aproximado de arestas que devem ser removidas do grafo para atingir um determinado número de grupos. Outras abordagens para detecção de grupo fazem uso das medidas de betweenness dos vértices. Um exemplo é o método Girva-Newman (2002), o qual detecta uma comunidade removendo progressivamente arestas do grafo original. Esses autores consideram que se dois vértices possuem uma aresta ligando-os e se esses nós apresentam um valor de betweenness alto, provavelmente a aresta que os liga é uma ponte. Se a ponte for removida, os agrupamentos tornam-se visíveis Identificação de Entidades Denominada também de resolução de objetos, a identificação de entidades tem como objetivo determinar quais dados que fazem referência a entidades do mundo real. Tradicionalmente, a resolução de entidades é vista como um problema de semelhança entre atributos de objetos. Recentemente, houve significante interesse em usar links para aperfeiçoar a resolução de entidades com o uso de ligações entre vértices [Getoor e Diehl 2005]. A ideia central é considerar, em adição aos atributos dos vértices de um grafo que representa uma rede social, os atributos dos outros vértices que estão ligados com ele. Essas ligações podem ser, por exemplo, coautorias em uma publicação científica, onde os atributos dos indivíduos (nome, área de pesquisa) seriam utilizados em conjunto com os atributos dos coautores que trabalham com ele [Alonso et al. 2013] Predição de Ligações A predição de links trata do problema de predizer a existência de ligações entre dois vértices baseado em seus atributos e nos vértices existentes. Exemplos incluem predizer ligações entre atores de uma rede social, como amizade, participação dos atores em eventos, o envio de entre atores, chamadas de telefone, etc. Na maior parte dos casos, são observados alguns links para tentar predizer os links não observados ou se existe algum aspecto temporal. O problema pode ser visto como uma simples classificação binária: dado dois vértices v1 e v2, preveja quando um vértice entre v1 e v2 será 1 ou 0. Uma abordagem é fazer a predição ser inteiramente baseada em propriedades estruturais da rede. Liben- Nowell e Kleinberg (2007) apresentaram um survey sobre predição de links baseado em diferentes medidas de proximidade. Outra abordagem fazendo uso de informações dos 21

22 atributos é a de Popescul et al (2003), que propõe um modelo de regressão logística estrutural que faz uso das relações para predizer a existência de novas ligações. O Madadhain et al (2005) propõe a construção de um modelo local de probabilidades condicionais, baseado nos atributos e na estrutura. A respeito de predição de ligações, podemos ainda referenciar o minicurso de Appel e Hruschka (2011), ministrado no próprio SBBD Descoberta de subgrafos A determinação de subgrafoss frequentes é um importante instrumento para a análise de redes sociais, pois permite caracterizar e discretizar conjuntos de grafos, criar mecanismos de classificação e agrupamento, criar índices de busca, etc. Por exemplo, em um conjunto de grafos que representam uma rede colaborativa de coautoria em trabalhos científicos, os subgrafos frequentes podem identificar os grupos de pesquisas ou grupos de um mesmo laboratório. Um grafo g é definido como subgrafo de um grafo g se existir um padrão isomórfico entre g e g, ou seja, o conjunto de vértices e arestas de g são subconjuntos dos conjuntos de vértices e arestas de g respectivamente. Dentre os métodos de mineração de subgrafoss frequentes, duas abordagens são as mais empregadas: a abordagem baseada no método apriori e a abordagem baseada em padrões de crescimento. Ambas possuem em comum buscar estrutura frequentes nas bases de grafos. A frequência mínima que um subgrafo deve ocorrer na base D para que seja considerado frequente recebe o nome de suporte. A busca por grafos frequentes, utilizando o método apriori, começa por subgrafos de menor tamanho e procede de modo bottom-up gerando candidatos que possuam um vértice, aresta ou caminho extra que possuam um valor de suporte maior do que um valor pré-definido (min_sup). Para determinar se um grafo de tamanho k+1 é frequente, é necessário checar todos os subgrafos correspondentes de tamanho k para obter o limite superior de frequência (busca em largura). A abordagem baseada em padrões de crescimento é mais flexível se comparada com as abordagens baseadas no método apriori, pois é possível tanto fazer buscas em largura quanto busca em profundidade. Essa abordagem permite um menor consumo de memória, de acordo com o método de busca empregado, pois não é preciso gerar todo o conjunto de grafos candidatos de mesmo tamanho antes de expandir um grafo. Entretanto, a abordagem apresenta como limitação ser menos eficiente já que um mesmo grafo pode ser gerado mais de uma vez durante o processo de busca. O método inicia com um conjunto de subgrafos iniciais que são expandidos por meio da adição de arestas válidas. Grafos frequentes, com suporte igual ou maior que um valor pré-definido, são selecionados para dar origem à próxima geração de grafos frequentes. A busca continua até que seja gerado um grafo com suporte inferior ao mínimo definido, o último grafo gerado é armazenado para ser apresentado no conjunto de respostas. A busca prossegue com os outros candidatos Classificação de Grafos Classificação de grafos é um processo supervisionado de aprendizagem. O objetivo é caracterizar um grafo como todo como uma instância de um conceito. A classificação de 22

23 grafos não exige inferência coletiva - como é necessário para classificar vértices e arestas - devido ao grafo ser geralmente gerado de forma independentemente. Existem basicamente três abordagens que foram exploradas pelas comunidades de mineração de dados: Programação de Lógica Indutiva (PLI); Mineração de Características (MC); e definição de Kernel do Grafo (DK). A MC está relacionada com as técnicas de descoberta de grafo. A MC é usualmente feita encontrando as subestruturas informativas do grafo. Essas subestruturas são usadas para transformar os dados do grafo em uma tabela de dados e então aplicar classificadores tradicionais. A PLI usa relações como vértice (grafo_id, vértice_id, vértice_label, vértice_atributos) e aresta (grafo_id, vértice_id_1,vértice_id_3,aresta_label) para então aplicar em um sistema de PLI para encontrar um hipótese no espaço. Encontrar todas as subestruturas frequentes em um grafo pode ser um processo computacionalmente proibitivo. Uma abordagem alternativa faz uso dos métodos de kernel. Gartner [2002] e Kashima e Inokuchi [2002] proporam métodos baseado em medidas de caminhos no grafo para obter o kernel. Gartner [2002] conta caminhos com rótulos iguais no inicio e no fim, enquanto Kashima e Inokuchi [2002] faz uso da probabilidade de caminhar aleatoriamente em uma sequência de rótulos identicos. 1.3 Redes Sociais Online e Big Data: Métodos de Tratamento de Grande Volume de Dados Redes Sociais Online (RSOs) como Facebook, YouTube e Twitter estão conectando pessoas que estão produzindo exabytes de dados em suas interações [Tan et al. 2013]. O volume, a velocidade de geração e processamento dos dados de diferentes fontes criam grandes desafios isolados ou combinados a serem superados, tais como: armazenamento, processamento, visualização e, principalmente análise dos dados. A quantidade de dados produzidas na rede aumenta a cada dia e novas unidades de medida surgem para tão grande volume de dados. Para ilustrar este fato, previu-se que o valor chegue próximo a uma dezena de zettabytes em 2015 [Oliveira et al. 2013]. Tamanho crescimento faz com que muitas das soluções existentes para manipulação de dados (armazenamento, visualização e transmissão) não sejam úteis nesse cenário. Somadas as RSOs, outras fontes de dados também contribuem para o aumento do volume de dados: sensores, medidores elétricos inteligentes, dados convencionais de aplicações da Internet, dentre outros. O grande volume de dados heterogêneos produzidos por diferentes fontes autônomas, distribuídas e descentralizadas que geram rapidamente dados com relações complexas e em evolução é chamado Big Data [Silva et al. 2013]. O termo Big Data é frequentemente associado a 3Vs: i) Volume, relacionado a um grande conjunto de dados; ii) Velocidade, relacionado a necessidade de processo rápido dos dados; e iii) Variedade por provir de fontes diversas de dados [Kwon 2013 apud Oliveira 2013]. A grande quantidade de usuários das RSOs tem atraído a atenção de analistas e pesquisadores que desejam extrair ou inferir informações, podendo estar relacionadas a diversas áreas como predição de comportamento, marketing, comércio eletrônico, entre outras interações [Tan et al. 2013]. As análises devem ser eficientes, realizadas quase em tempo real e capazes de lidar com grafos com milhões de nós e arestas. Além disso, existem outros problemas, como falhas e redundâncias. 23

24 Esta seção aborda algumas das principais questões relacionadas ao tratamento de grandes massas de dados produzidas nas RSOs mais utilizadas no Brasil e no mundo. São apresentadas discussões sobre termos relacionados à Big Data, tecnologias utilizadas e características particulares das RSOs Armazenamento e Gerência de Grandes Volumes de Dados de RSO Quando se fala da gerência dos dados, o volume varia de acordo com a capacidade das ferramentas utilizadas em cada área de aplicação. Por exemplo, as informações de um grafo com milhões de nós e bilhões de arestas podem ser armazenadas em um arquivo de alguns gigabytes. O tamanho desse arquivo pode não ser grande do ponto de vista de armazenamento, porém o processamento desse grafo (a aplicação de técnicas de análises) pode exceder a capacidade das ferramentas utilizada com tal finalidade. Percebe-se que, apesar do tamanho ser a parte mais evidente do problema, a definição de Big Data deve observar outras características, as quais podem não estar diretamente associados ao tamanho absoluto dos dados [Costa et al. 2012]. Além de observar a capacidade das ferramentas utilizadas, segundo [Costa et al. 2012] há outros pontos a serem observados no cenário de Big Data, tais como: a velocidade de geração e de processamento dos dados, além da quantidade de fontes de geração desses dados. Sob este ponto de vista, pode-se citar como exemplo o Twitter com milhões de usuários ao redor do mundo. O Twitter recebe mensagens enviadas em uma frequência muito alta. Apesar de uma mensagem individual ser pequena, a quantidade de mensagens enviadas por diferentes usuários (fontes) gera um grande volume de dados. Cada dado precisa ser armazenado, disponibilizado e publicado para outros usuários dessa mídia. Ou seja, o dado precisa ser armazenado, processado, relacionado a outras informações (que usuários seguem?, quem publicou o dado?) e transmitido. O mesmo pode ser observado em outras RSOs como Facebook ou YouTube. Outro aspecto a ser observado é a estrutura (ou a sua ausência) dos dados das RSOs, os quais possuem formatos diferentes. O Twitter armazena mensagens textuais pequenas (de 140 caracteres, no máximo), além de outras informações como identificação da mensagem, data da postagem, armazena uma cópia das hashtags em um campo específico, posição geográfica do usuário ao enviar a mensagem (quando disponível), entre outros. A própria mídia trata com dados heterogêneos. O Facebook por, outro lado, armazena mensagens textuais, imagens, etc. O YouTube, além dos vídeos, mantém os comentários dos usuários relacionados ao conteúdo de multimídia. Além, dessas informações, essas mídias armazenam dados sobre os usuários, sobre suas interações na rede (seus amigos, curtidas, favoritismo, comentários, citações, dentre outros) e páginas ou canais mais acessados (no caso do Facebook e YouTube, respectivamente). Do ponto de vista da estrutura, percebe-se que as informações dessas redes podem ser armazenadas, parcialmente, em estruturas/formatos e tipos pré-definidos, enquanto outra parte não tem um tipo pré-estabelecido (não são estruturados). Do ponto de vista do relacionamento de dados de diferentes fontes, observa-se que as dificuldades são aumentadas. Um exemplo seria identificar, relacionar e analisar conteúdo dos perfis dos usuários do Twitter e do Facebook. A observação sobre o conteúdo de mídias sociais permite que se perceba que os dados gerados são diversificados, estão relacionados (ex: um vídeo no YouTube está relacionado aos comentários, curtidas, etc.) e fazem parte de um repositório comum de 24

25 cada mídia. Ou seja, o YouTube possui a sua base, o Twitter a sua e assim por diante. Antes da correlação dos dados, é necessário extrair os dados das fontes heterogêneas, cada uma com suas particularidades. Três exemplos de RSOs cujos dados são utilizados em muitos estudos são o Facebook, o YouTube e o Twitter. Segundo o serviço Alexa 15, no ranking dos sites mais acessados no mundo, essas três mídias estão entre as 10 mais: O Facebook é o segundo site mais acessado no mundo atualmente, o YouTube é o terceiro e o Twitter ocupa o sétimo lugar. No Brasil, o Facebook é o segundo mais acessado, o YouTube o quarto e o Twitter o décimo segundo, segundo o ranking do Alexa Brasil 16. Além dessas mídias digitais, existem outras redes bastante utilizadas no Brasil como LinkedIn 17, Google+ 18 e o Foursquare 19. Os dados das RSOs são abundantes. Para se ter uma ideia, o Facebook é acessado por mais 1 bilhão de usuários a cada mês [Zuckerberg 2012; Facebook Data Center 2013] e registrou uma média de 829 milhões de usuários ativos por dia no mês de junho de 2014 (624 milhões em dispositivos móveis), chegando a passar de 1,32 bilhões no dia 30 de junho [Facebook NewsRoom 2014]. A média de likes (curtidas) registrada por dia passa de 2,7 bilhões e quantidade total de itens (texto ou conteúdo multimídia como fotos e vídeos) compartilhados entre amigos é superior a 2,4 bilhões. Em 2011, o espaço ocupado pelas fotos compartilhadas no Facebook já ultrapassava 1,5 petabyte de espaço, sendo mais de 60 bilhões de fotos. Em 2013, o Instagram (aplicativo de compartilhamento de fotos e vídeos curtos, pertencente ao Facebook) registrou uma média de 100 milhões de usuários por mês. Diferentes tipos de relacionamentos acontecem entre os usuários do Facebook formando redes. Por exemplo, rede amizades, citações em mensagens ou marcações em imagens [Facebook NewsRoom 2014]. Outro exemplo que pode ser citado é o YouTube, o qual possui uma taxa de upload de vídeo superior a 100 horas de vídeo por minuto, sendo acessado por milhões de usuários mensalmente [ComScore 2014; YouTube Statistics 2014]. O conteúdo de 60 dias do YouTube equivale a 60 de vídeos televisionado pela emissoras norte-americanas NBC, CBS e ABS juntas [Benevenuto et al. 2011]. Dados mais recentes sobre essa mídia informam que mais de 1 bilhão de usuários visitam o YouTube mensalmente, e mais de 6 bilhões de horas de vídeo são assistidas a cada mês. A identificação de mais de 400 anos de vídeo são verificados diariamente devido as buscas por conteúdo e milhões de novas assinaturas feitas todos os meses [YouTube Statistics 2014]. O Twitter, por sua vez, possui mais de 600 milhões de usuários, recebe mais de 500 milhões de mensagens por dia e tem uma média de 271 milhões de usuários ativos por mês. Em julho, o total de atividades registradas era de 646 milhões e 2,1 bilhões de consultas foram realizadas em média. No Twitter, as redes podem ser formadas observando quem segue quem, quem mencionou quem ou quem fez um retweet (republicou a mensagem de) quem [Twitter Statistics 2014; About Twitter 2014]. As grandes empresas como Facebook, Google (proprietária do YouTube) e Twitter possuem centros de dados espalhados pelo mundo. Alguns desses centros de https://linkedin.com/ 18 https://plus.google.com 19 https://foursquare.com/ 25

26 dados ocupam grandes áreas e custam milhões para serem implantados e mantidos. Por exemplo, o centro de dados do Facebook em Iowa (o quarto da empresa) foi construído após o centro de dados da empresa na Carolina do Norte nos Estados Unidos, o qual custou aproximadamente 450 milhões [Online Tech 2011]. Empresas como as mencionadas acima possuem políticas próprias de gerência dos dados e definem as tecnologias a serem utilizadas. Além disso, elas também impõem uma série de restrições para acesso aos dados da sua base. Por esse motivo, os interessados em realizar análises precisam coletar (geralmente em períodos próximos à publicação), armazenar e gerenciar os dados do seu interesse [Costa et al. 2013]. Um exemplo são os dados publicados pelo Facebook sobre as publicações relacionadas à Copa do Mundo de Futebol de Segundo dados do próprio Facebook, mais de 1 bilhão de interações (publicações, comentários e curtidas) ocorreram durante este evento [Facebook World Cup 2014]. Aqueles que conseguiram coletar dados sobre esse evento nessa mídia precisam armazenar e gerenciar esses dados (um desafio à parte). Costa et al. (2012) apresentam uma discussão sobre o ciclo de vida dos dados por meio da comparação com o ciclo de vida biológico. Os autores observaram as seguintes fases: geração (nascimento), agregação (crescimento com a agregação de valores ao dado), análise (reprodução, quando a combinação de novos dados traz significado sobre os dados iniciais) e apagamento (morte). O apagamento pode não ser uma tarefa tão simples, pois não é simples definir quando um conjunto de dados não possui mais valor para ser analisado. Esse valor pode ser finalizado em um contexto, mas sob outros pontos de vista os dados podem possuir valor em novas análises. Por esse motivo, definir quanto tempo os dados devem permanecer armazenados (ou pelo menos parte dele) não é trivial, um dado pode ficar armazenado mais do que o seu valor consumindo recursos valiosos. Porém, descartar um dado valioso por causa das restrições de infraestrutura pode ser lamentável. Finalmente, não é possível definir valores fixos (prazos ou períodos exatos) de validade dos dados. Cabe aquele que gerencia o dado tomar a decisão de descartá-lo ou não. É um consenso que sempre que possível os dados devem ser mantidos (ou seja, a sua remoção deve ser evitada). Somadas aos desafios de armazenar esses volumes de dados, também existe o desafio de recuperar e analisar os dados dessas mídias digitais. Os problemas relacionados ao armazenamento, recuperação e análise são agravados por novas variações dos dados decorrente das alterações nas mídias digitais ocasionadas por novas tendências, pelo surgimento de novas mídias digitais com características novas e por comportamentos diferentes por parte dos usuários. Vale ressaltar que outras características desses dados são: redundâncias, inconsistências, dados com algum tipo de falha, etc. Todavia, apesar de todas essas dificuldades, as grandes massas de dados impulsionam a necessidade de extrair sentido dos mesmos. Correlacioná-los para compreendê-los apesar das constantes alterações dos dados podem trazer a tona informações preciosas, podendo se tornar essencial no futuro. Observamos que as tecnologias de bancos de dados utilizados nas RSOs devem ser capazes de atender os requisitos de armazenamento e processamento de Big Data, como alta velocidade e a capacidade de lidar com dados não relacionais, executando consultas em paralelo [Oliveira et al. 2013a]. Pesquisadores ou qualquer interessado em analisar esses dados também precisam de tecnologias adequadas. Do ponto de vista do armazenamento, os Sistemas de Gerenciamento de Banco de Dados (SGBDs) convencionais disponíveis comercialmente não são capazes de lidar com volumes de 26

27 dados na ordem de petabytes [Madden 2012]. Ao observar a velocidade e variedade os sistemas de banco de dados também podem não ter um bom desempenho, sobretudo quando são feitas recuperações textuais, de imagens ou vídeos. A análise de grandes volumes de dados requer SGBDs especializados capazes de processar dados estruturados e não estruturados distribuindo dados a fim de escalar grandes tamanhos [Begoli 2012 apud Oliveira et al. 2013a]. Dados como grafos, documentos hierárquicos e dados geoespaciais são dados úteis para diversos tipos de análise no contexto das RSOs, mas não podem ser modelados em bancos de dados relacionais. Para esses dados existem ferramentas especializadas como: PostGIS 20 e GeoTools 21 para dados geo-espaciais; HBase 22 ou Cassandra 23 para organização hierárquica de dados no formato chave-valor; e um exemplo de ferramenta para analisar grafos é o Neo4j 24. Porém, mesmos essas tecnologias ainda não são suficientes para suprir todos os desafios citados até aqui. Faz-se necessário explorar devidamente e de forma plena as informações disponíveis nas RSOs. Várias tecnologias estão sendo desenvolvidas e adaptadas para manipular, analisar e visualizar Big Data. As seções e apresentam uma discussão sobre técnicas e tecnologias apropriadas para se trabalhar com grandes volumes de dados. Neste trabalho, abordaremos em maiores detalhes o Hadoop (uma implementação do MapReduce) no domínio do armazenamento e análise de dados. O Hadoop permite que aplicações escaláveis sejam desenvolvidas provendo um meio de processar os dados de forma distribuída e paralela [White 2012; Shim 2012 apud Oliveira et al. 2013a] Tratamento de Grande Volume de Dados: Quando Processar se Torna Difícil? Uma série de desafios vem à tona quando o volume de dados excede os tamanhos convencionais, quando esses dados são variados (diferentes fontes, formatos e estruturas) e são recebidos em uma velocidade maior do que a capacidade de processamento. Por exemplo, ao extrair uma rede de retweets do Twitter e formar uma rede a partir desses retweets de um grande volume de dados, pode-se obter um grafo que excede a capacidade de tratamento em ferramentas convencionais de análise de redes sociais (como Gephi, por exemplo). Ou quando se deseja realizar processamento de linguagem natural de um texto muito grande a fim de realizar análises estatísticas do texto, o processamento e memória necessários excede a capacidade de computadores pessoais convencionais. Ou seja, os recursos de hardware (como a memória RAM, por exemplo) não comportam o volume dos dados [Jacobs 2009]. Jacobs (2009) apresentou um exemplo de difícil tratamento de um grande volume de dados usando um banco de dados relacional com 6,75 bilhões de linhas, com sistema de banco de dados PostgreSQL 25 em uma estação com 20 megabytes de memória RAM e 2 terabytes de disco rígido. O autor apresentou que obteve vários problemas de falhas e um alto tempo de processamento para as consultas realizadas

28 A velocidade do processamento, armazenamento, leitura e transferência de dados nos barramentos frequentemente fazem com que apenas extratos (amostras) dos dados sejam analisados o que não permite que todos os detalhes daquele conjunto de dados sejam observados [DiFranzo et al. 2013]. O desejo dos analistas é estudar as bases de dados por completo, não apenas uma amostra, ou ao menos aumentar as amostras o máximo possível. A necessidade de novas técnicas e ferramentas é reforçada pelo atual interesse em se empregar técnicas de análises que excedam as técnicas tradicionais de business intelligence. Extrair conhecimento a partir de grandes massas de dados é de fato desafiador como discutido até aqui, pois além de serem heterogêneos em sua representação, os dados das RSOs são de conteúdo multidisciplinar [Lieberman 2014]. As técnicas convencionais são utilizas em dados estruturados com formatos padronizados. As soluções de Big Data tratam com dados brutos, heterogêneos com e sem estrutura e sem padrão. Entender como tratar os desafios de Big Data é mais difícil do que entender o que significa o termo e quando empregá-lo. Apesar dos bancos de dados convencionais apresentam bons desempenhos no tratamento de dados estruturados e semiestruturados, as análises no contexto de Big Data requerem um modelo iterativo (de consultas recursivas) para análise de redes sociais e emprego de técnicas de clusterização como K-Mean ou PageRank [Silva et al. 2013]. O desafio do processamento dos grandes volumes de dados está relacionado a três aspectos: armazenamento dos dados na memória principal, a grande quantidade de iterações sobre os dados e as frequentes falhas (diferente dos bancos de dados convencionais onde as falhas são tratadas como exceções, no contexto de Big Data, as falhas são regras) [Silva et al. 2013]. O processamento intensivo e iterativo dos dados excede a capacidade individual de uma máquina convencional. Nesse contexto, clusters (arquiteturas de aglomeração) computacionais possibilitam a distribuição das tarefas e processamento paralelo dos dados. Em alguns cenários, não será possível processar e armazenar todos os dados. Nesse caso, é possível utilizar técnicas de mineração de dados para manipular os dados, sumarizando-os, extraindo conhecimento e fazendo predições sem intervenção humana, visto que o volume dos dados, seus tipos e estruturas não permitem tal intervenção. Muitas empresas têm apresentado requisitos de gerenciar e analisar grande quantidade de dados com alto desempenho. Esses requisitos estão se tornando cada vez mais comuns aos trabalhos de análise de redes sociais [DiFranzo et al. 2013]. Diferentes soluções têm surgido como proposta para esses problemas. Dentre as propostas, destacase o paradigma MapReduce implementado pelo Hadoop, o qual permite o processamento distribuído de grandes conjuntos de dados em clusters de computadores [White 2012]. O Hadoop é uma poderosa ferramenta para a construção de aplicações paralelas que fornece uma abstração da aplicação do paradigma do MapReduce para processar dados estruturados e não estruturados em larga escala, sendo essa sua grande vantagem [Silva et al. 2013]. Muitos algoritmos de mineração de dados utilizados na descoberta automática de modelos e padrões utilizam técnicas como classificação, associação, regressão e análise de agrupamento podem ser paralelizados com MapReduce [Shim 2012 apud Oliveira et al. 2013]. Segundo Silva et al. (2013), os projetos de mineração de dados no contexto de Big Data precisam de três componentes principais. O primeiro é um cenário de aplicação que permita que a demanda por descoberta de conhecimento seja identificada. O segundo é um modelo que realize a análise desejada. O terceiro é uma implementação adequada 28

29 capaz de gerenciar um grande volume de dados. Além desses componentes fatores como a complexidade do dado, o tamanho da massa de dados, a dificuldade de transporte dos dados e a possibilidade de paralelização dos algoritmos empregados no processamento devem ser observados. O processamento do volume de dados variados em tempo hábil exige tecnologias de software e hardware adequados. O Hadoop pode ser utilizado para distribuir e paralelizar dados em diferentes estações de trabalhos comuns, aumentando a capacidade de hardware por meio da clusterização de máquinas comuns. Devido a essas características e as demais utilizadas, o Hadoop tem sido adotado em muitos trabalhos Capacidade de Processamento de Hardware vs Volume de Dados Como apresentado, o volume de dados na Internet cresce vertiginosamente. Não diferente, as RSOs acompanham esse crescimento à medida que novas mídias surgem e novos usuários começam a participar de RSOs possuindo contas em diferentes redes. As empresas que gerenciam as grandes RSOs possuem centros de dados gigantescos, distribuídos e gerenciam os seus dados contando com equipes especializadas. O sucesso dessas mídias permite que elas alcancem grandes ganhos financeiros, possibilitando-lhes a manutenção dessa estrutura. Empresas como a IBM, EMC, entre outras, são fornecedores de hardware e tecnologias para tratar grandes volumes de dados. Apesar de tratarem com volumes de dados na ordem de petabytes ou até exabytes, as grandes mídias sociais possuem condições para adquirir, criar e manter tecnologias para armazenar e gerenciar essas grandes massas de dados. Os analistas que coletam dados nas RSOs para analisá-los, como discutido nas seções anteriores, desejam armazenar, gerenciar e analisar esses dados. Todavia quando o volume dos dados ultrapassa a medida de gigabytes e passa a ser medida em terabytes ou dezenas de terabytes, muitos grupos já se veem na necessidade de excluir partes dos dados ou armazenar parte dos seus dados em tecnologias de mais baixo custo que normalmente tornam o acesso a esses dados mais difíceis. Sob o ponto de vista da análise, outros fatores se somam ao volume, como o tipo de análise que é realizada: grafos com milhões de nós e de centenas de milhões ou bilhões de áreas, processamento de linguagem natural de textos diferentes que exigem grande quantidade de processamento, entre outros exemplos. Nesses casos a dificuldade é saber qual (ou quais) plataforma(s) de hardware se deve utilizar para lidar com grandes massas de dados, os quais superam a capacidade de tratamento possibilitada pelos sistemas tradicionais. Para serem mais abrangentes (analisar maiores amostras de dados), as análises de redes sociais precisam tratar com amostras que podem ser consideradas Big Data sob a ótica apresentada neste trabalho. Essas análises exigem mais capacidade de hardware do que um computador pessoal comum pode oferecer. Por esse motivo, a capacidade do hardware utilizado nas análises, assim como os softwares utilizados, é um aspecto que não pode ser ignorado. O simples uso de servidores convencionais, antes empregados para abrigarem banco de dados relacionais, servidores Web, sistemas de intranet, entre outros, não são adequados para as tarefas de tratamento de enormes quantidades de dados. Estes servidores, ainda que possuam hardware superior aos computadores pessoais convencionais, podem ainda não ter a capacidade de hardware suficiente para algumas 29

30 análises, não fornecendo um rendimento adequado. Aumentar a capacidade desses servidores pode significar sua substituição. Quando adquirir equipamentos e softwares específicos para tratar grandes massas dados não são viáveis para os analistas por causa dos custos associados ou por causa da mão de obra para trabalhar com essas soluções, possíveis opções são: usar infraestruturas de nuvens privadas ou por contratação de provedores de serviços por meio do pagamento sob demanda de uso ou contratando pacotes de serviços específicos. Outra opção é distribuir e paralelizar o processamento e armazenamento dos dados que desejam manipular em cluster usando soluções como o Hadoop. A verdade é que qualquer solução exige conhecimento e investimento, porém o que deve ser considerado é o menor esforço e o menor custo de cada possível solução. As soluções de nuvem exigem, no caso da nuvem privada, esforços por parte dos analistas para criar e manter suas nuvens de dados, além de custos relacionados à compra de ferramentas específicas (quando proprietárias) ou de hardware. Quando se contrata um serviço de nuvem de terceiros, além dos custos para pagar esses serviços, existem desafios relacionados à movimentação dos dados (download ou upload) quando, por exemplo, é necessário manipular dados com ferramentas específicas não fornecidas pelo provedor contratado. No caso de uma solução de cluster como o Hadoop, a infraestrutura já existente pode ser aproveitada, fazendo com que a capacidade de hardware subutilizada seja direcionada para o processamento e armazenamento de dados. Faz-se necessário elaborar algoritmos adequados de MapReduce, tolerar ruídos e falhas existentes no mundo real. O Hadoop o primeiro passo para a análise dos dados [Silva et al. 2013; Oliveira et al a] Processamento Paralelo e Distribuído: Técnicas e Ferramentas Essa seção visa apresentar algumas técnicas e ferramentas para o processamento distribuído de dados de RSO. Entre elas podemos citar o uso de clusters, sensoriamento participativo, computação em nuvem e técnicas de fusão de dados. Entre as técnicas de processamento distribuído, o sensoriamento participativo ganha destaque. Os telefones celulares, cada vez mais se tornando dispositivos multisensores, acumulando grandes volumes de dados relacionados com a nossa vida diária. Ao mesmo tempo, os telefones celulares também estão servindo como um importante canal para gravar as atividades das pessoas em serviços de redes sociais na Internet. Estas tendências, obviamente, aumentam o potencial de colaboração, mesclando dados de sensores e dados sociais em uma nuvem móvel de computação de onde os aplicativos em execução na nuvem são acessados a partir de thin clients móveis. Tal arquitetura oferece poder de processamento praticamente ilimitado. Os dois tipos de dados populares, dados sociais e de sensores, são de fato mutuamente compensatórios em vários tipos de processamento e análise de dados. O Sensoriamento Participativo, por exemplo, permite a coleta de dados pessoais via serviços de rede sociais (por exemplo, Twitter) sobre as áreas onde os sensores físicos não estão disponíveis. Simultaneamente, os dados do sensor são capazes de oferecer informações de contexto preciso, levando a análise eficaz dos dados social. Obviamente, o potencial de combinar dados sociais e de sensores é alta. No entanto, eles são normalmente processados separadamente em aplicações em nuvem móvel e o potencial não tem sido investigado suficientemente. Um trabalho que explora essa capacidade é o Citizen Sensing [Nagarjaran et al. 2011]. O estudo introduz o paradigma da Citizen Sensing, ativada pelo sensor do celular e pelos seres humanos nos 30

31 computadores - os seres humanos agindo como cidadãos na Internet onipresente, que atuam como sensores e compartilham suas observações e visão através de Web 2.0. Outra técnica promissora é o uso de Sistemas de fusão de dados escaláveis. Muitos trabalhos buscam o uso de técnicas de fusão de dados distribuídas para o processamento de dados de RSOs. Os autores em [Lovett et al. 2010] apresentam métodos heurísticos e probabilísticos para a fusão de dados que combinam calendário pessoal do usuário com mensagens das RSOs, a fim de produzir uma interpretação em tempo real dos acontecimentos do mundo real. O estudo mostra que o calendário pode ser significativamente melhorado como um sensor e indexador de eventos do mundo real através de fusão de dados. Outra tendência é o uso da Nuvem (Cloud) que está começando a se expandir a partir da aplicação das TIC (Tecnologias da Informação e Comunicação) aos processos de negócios para a inovação, que se destina a aumentar as vendas e otimizar sistemas, identificando informações valiosas através de análise de dados das RSO agregados em nuvens. A inovação torna-se significativamente útil quando é aplicada diretamente no cotidiano das pessoas, auxiliando os usuários a tomarem decisões (por exemplo, que caminho tomar em um dia de engarrafamento [Lauand 2013; Sobral 2013]), e isso tornase gradualmente claro enquanto os grandes dados coletados são analisados de diversas maneiras. Por essa razão, a análise dos dados deve ser repetida muitas vezes a partir de diferentes perspectivas e é necessária alta velocidade e processamento de baixo custo em todas as fases de desenvolvimento e operação. Os benefícios oferecidos pela nuvem, como a disponibilidade temporária de grandes recursos de computação e de redução de custos através da partilha de recursos têm o potencial de atender a essa necessidade. Apesar dos clusters HPC tradicionais (High Performance Computing) serem mais adequados para os cálculos de alta precisão, um cluster HPC orientado a lotes ordenados oferece um potencial máximo de desempenho por aplicativos, mas limita a eficiência dos recursos e flexibilidade do usuário. Uma nuvem HPC pode hospedar vários clusters HPC virtuais, dando flexibilidade sem precedentes para o processamento de dados das RSO. Neste contexto, existem três novos desafios. O primeiro é o das despesas gerais de virtualização. A segunda é a complexidade administrativa para gerenciar os clusters virtuais. O terceiro é o modelo de programação. Os modelos de programação HPC existentes foram projetados para processadores paralelos homogêneos dedicados. A nuvem de HPC é tipicamente heterogênea e compartilhada. Um exemplo de um cluster HPC típico é o projeto Beowulf (2014) Exemplo Prático: Analisando Dados de RSP Usando Processamento Paralelo e Distribuído com Hadoop Hadoop é uma plataforma de software escrita em Java para computação distribuída. Essa plataforma é voltada para armazenar e processar grandes volumes de dados, tem como base o processamento com MapReduce [Dean e Ghemawat 2004] e um sistema de arquivos distribuído denominado Hadoop File System (HFS), baseado no GoogleFS (GFS) [Ghemawat et al. 2003]. Para a análise de redes sociais, o Hadoop apresenta como benefício: i) capacidade de armazenar grandes volumes de dados utilizando commodity hardware (no contexto de TI, é um dispositivo ou componente que e relativamente barato e disponível); ii) armazenar dados com formatos variados; iii) além de trazer um modelo de alto nível para processar dados paralelamente. 31

32 A arquitetura básica de um cluster Hadoop está apresentada na Figura 1.7. Nessa figura, cada retângulo representa um computador em um cluster fictício. No primeiro computador, da esquerda para direita, recebe a notação de NameNode, enquanto os demais recebem a denominação de DataNode. O NameNode é responsavel por gerenciar o espaço de nomes do sistema de arquivos e por regular o acesso de arquivos pelos clientes. O DataNode compõe a unidade de armazenamento do cluster, onde os arquivos estão distribuídos e replicados. Na imagem também estão apresentados os serviços de JobTracker, que gerencia as tarefas de MapReduce, coordenando sua execução e o TaskTracker que é o serviço de execução de tarefas do MapReduce. Figura 1.7: Arquitetura básica de um cluster Hadoop, adaptado de [Menon 2013]. O MapReduce é um modelo de programação para processar grandes volumes de dados de forma paralela. Um programa MapReduce é construído seguindo princípios de programaçao funcional para processar lista de dados. Nesse modelo, deve existir uma função de Mapeamento que processa partes de uma lista de dados paralelamente, ou seja, a função de mapeamento é executada por vários nós do cluster, processando partes independentes dos dados e uma função de Redução, que recebe os dados dos nós do cluster que estão executando a função de mapeamento, combinando-as. Por exemplo, considere um corpus textual onde se deseja obter as freqüências das palavras. Um programa em pseudocódigo, descrevendo a função de mapeamento e de redução, pode ser visto na Figura

33 function map(string document): for each word w in document: emit (w, 1) function reduce(string word, Iterator partialcounts): // word: a word // partialcounts: a list of aggregated partial counts sum = 0 for each pc in partialcounts: sum += ParseInt(pc) emit (word, sum) Ecossistema Hadoop Figura 1.8: Exemplo Hadoop Além da capacidade de armazenar grande volume de dados de forma distribuída, permitir que esses dados apresentem diferentes formatos e prover mecanismos para processamento desses dados por meio de programas MapReduce, o Hadoop apresenta um ecossistema de ferramentas e bibliotecas que auxiliam em tarefas administrativas para o cluster, no processamento e análise de dados e no próprio armazenamento de dados. A Figura 1.9 apresenta algumas ferramentas que compõem esse ecossistema. As ferramentas apresentadas são: D3: é uma biblioteca JavaScript para visualização de dados [http://d3js.org/]. Tableau: plataforma de visualizaçao e análise de dados proprietária, entretanto, possui versões gratuitas para estudantes e para universidades. [http://www.tableausoftware.com/pt-br] Mahout: é um projeto da Apache Software Foundation para produzir implementações livres de algoritmos de aprendizado de máquina escaláveis, focados principalmente nas áreas de filtragem colaborativa, clustering e classificação [https://mahout.apache.org/]. R: ambiente para análise estatísticas [http://www.r-project.org/] Java/Python/...: Java é a linguagem oficial para criar programas em um cluster Hadoop, entretanto, é possível utilizar outras linguagens como Python e Ruby. Pig: é uma plataforma para análise de dados que consiste de uma linguagem de alto nível para expressar uma análise de dados e a infraestrutura para executar essa linguagem. [http://pig.apache.org/] 33

34 Figura 1.9: Ecossistema Hadoop, adaptado de [Bidoop Layes 2014] Hive: fornece um mecanismo para projetar, estruturar e consultar os dados usando uma linguagem baseada em SQL, chamado HiveQL [http://hive.apache.org/] HDFS: Não é uma ferramenta nem uma biblioteca, mas é o cerne da plataforma Hadoop. HDFS é um sistema de arquivos distribuído projetado para ser executado em commodity hardware HBASE: é um banco de dados orientado a colunas e foi construído para fornecer pedidos com baixa latência sob Hadoop HDFS. [http://hbase.apache.org/] MongoDB: banco de dados orientado a documentos no formato JSON. [http://www.mongodb.org/] Kettle: ferramenta de ETL que permite tratamento de dados construindo workflows gráficos. [http://community.pentaho.com/projects/dataintegration/] Flume: ferramenta de coleta e agregação eficiente de streams de dados. [http://flume.apache.org/] Sqoop: ferramenta que permite a transferência de dados entre bancos relacionais e a plataforma Hadoop. [http://sqoop.apache.org/] Chukwa: sistema de coleta de dados para monitoramento de sistemas [https://chukwa.apache.org/] Oozie: é um sistema gerenciador de workflows para gerenciar tarefas no Hadoop. [http://oozie.apache.org/] Nagios: ferramenta para monitorar aplicativos e redes [http://www.nagios.org/] Zoo Keeper: é um serviço centralizador para manter informações de configuração. [http://zookeeper.apache.org/] 34

35 Exemplo de Análise de Redes Sociais Como exemplo será apresentado um algoritmo baseado em MapReduce para contagem de frequência em grafos. Algoritmos como APRIORI necessitam contar a frequência de cada subgrafo em uma base de grafos. Como esse processo é computacionalmente custoso e deve ser executado em cada etapa do APRIORI, abaixo está apresentado um exemplo simplificado para contagem de frequência. Considere uma base de Grafos D e a sua representação como uma lista de vértices e arestas como exemplificado na Figura a,b,c,d,e,f,g ab,de,gf,dc 2 h,i,c,d,e,f,n hc,dc,ef, en N a,g,h,j,n,r,h ag,ah,aj,rh Figura 1.10: Base de grafos D, contendo N grafos. O formato da base é id do grafo, vértices, arestas. 35

36 #MAP import sys sub_graf = #representação do subgrafo aqui for ling in sys.stdin: is_subgraph = True lista_vertices, lista_arestas = parser_grafo(line) # transformando o arquivo do grafo em uma lista de vértices e outra lista de arestas #checando se todos os vértices de sub_graf_input são vértices em graf for v in sub_graf.vertices: if v not in lista_vertices: is_subgraph = False break #checando se todas arestas de sub_graf_input são arestas em graf if is_subgraph: for a in sub_graf.arestas: if a not in lista_arestas: is_subgraph = False if is_subgraph: print "%d\t%d"%(sub_graf.id, 1) else: print "%d\t%d"%(sub_graf.id, 0) Figura 1.11: Algoritmo de mapeamento. O primeiro passo é criar o algoritmo para mapeamento. Ele deve processar um conjunto de subgrafos, com representação idêntica da Figura 1.11, comparando cada um com um dos subgrafos representados na variável sub_graf. Esses subgrafos poderiam ser provenientes de arquivos ou outras estruturas de armazenamento, mas foram postos diretamente no código apenas para simplicar o exemplo. Para definir se um grafo é subgrafo de outro está sendo feito a comparação dos vértices e das arestas. Quando todos vértices e arestas estão contidos no grafo, o algoritmo de mapamento retorna o id do subgrafo e o valor 1. Quando existe uma ou mais arestas ou vértices que não fazem parte do grafo, o algoritmo retorna o id do sub_grafo e valor 0. O algoritmo de redução agrega os resultados das tarefas de mapeamento, retornando o somatório dos valores para cada id do subgrafo (Figura 1.12). 36

37 #Reducer import sys current_graph = None current_count = 0 subgraph_id = None for line in sys.stdin: # removendo espaços em branco line = line.strip() # parseando o resultado produzido pelo mapper subgraph_id, count = line.split('\t') #convertento o contador para um inteiro count = int(count) #conta enquanto existirem valores para serem reduzidos if current_graph == subgraph_id: else: current_count += count #imprime o resultado caso outro id de sub_grafo esteja sendo processado if current_graph: print '%s\t%s' % (current_graph, current_count) current_count = count #zerando o contador current_graph = subgraph_id #atribuindo o novo id de sub_grafo #necessário para imprimir o ultimo resultado if current_graph == subgraph_id: print '%s\t%s' % (current_graph, current_count) Figura 1.12: Reducer. 1.4 Principais Desafios e oportunidades de pesquisa Analisar grandes volumes de dados extraídos das redes sociais online permite que novas informações sejam obtidas, as quais não eram possíveis de serem verificadas devido às amostras desses tipos de dados ser menor. Porém, o aumento dos dados a serem analisados somam novos desafios aos já existentes na área de análise de redes sociais. Agora esses desafios são tanto do ponto de vista da análise de redes sociais quanto do ponto de vista do avanço das tecnologias de Big Data. O aumento das massas de dados das redes sociais está fazendo com que as técnicas, metodologias e ferramentas de mineração de dados e análise de grafos sejam adaptadas, melhoradas ou soluções novas sejam criadas. Alguns dos principais desafios (que trazem novas oportunidades de pesquisa) são: Algoritmos adequados e escaláveis para milhões ou até bilhões de elementos a serem analisados; 37

38 Algoritmos que possam ser distribuídos, paralelizados e capazes de tratar de ruídos e falhas; Algoritmos que permitam análises rápidas de grandes massas de dados, sendo a análise quase em tempo real; Segurança dos dados, no contexto das RSOs, principalmente privacidade; Diminuir o consumo de recursos necessário para armazenar, gerenciar, processar e enviar grandes massas de dados; Segurança e confiabilidade da informação (publicação de informações íntimas por usuários leigos, geração e propagação de boatos nas RSOs, etc.); Desafios relacionados à multidisciplinaridade dos dados das RSOs que exigem conhecimentos de diferentes áreas do conhecimento sendo, quase sempre, necessário que profissionais de diferentes áreas consigam interagir e colaborar nessas análises; Analisar mensagens não estruturadas como análises de linguagem natural, de imagens e de vídeos; e Estruturas físicas para armazenar dados fornecendo acesso rápido aos mesmos. 1.5 Conclusão A quantidade de dados produzidos na Internet aumenta diariamente. Novas aplicações usadas na rede, aliadas às aplicações existentes e ao aumento do uso de sensores e dispositivos eletrônicos (medidores elétricos, por exemplo) aumentam cada vez mais a quantidade de dados produzidos. As redes sociais online seguem essa tendência. À medida que novas mídias digitais surgem e se popularizam, novas funcionalidades são adicionadas as mídias e novos usuários participam dessas redes, levando ao aumento da quantidade de dados oriundos de interações sociais. As informações das RSOs são multidisciplinares, em grandes quantidades, produzidos rapidamente e em diferentes fontes. Esses dados, produzidos em grande volume, velocidade e de fontes variadas precisam ser armazenados, gerenciados e possivelmente analisados sob diferentes óticas para geração de novos conhecimentos. Big data é o termo empregado para esse grande volume de dados oriundos de fontes heterogêneas, produzidos, transmitidos e processados em altas velocidades. O volume de conteúdo produzido e compartilhado nas redes sociais online, associado ao grande número de usuários (cidadãos de diferentes localidades), é fonte de diversas informações que se propagam e agregam novos valores às informações de diversas áreas. Atualmente, analisar essa grande massa de dados é um desafio, visto que as ferramentas utilizadas para mineração de dados, estudos de grafos, entre outras, podem não ser adequadas para tratar com grandes volumes de dados. Este trabalho apresentou uma discussão sobre tecnologias e abordagens para análises de redes sociais online, contextualizou o problema de análise de grandes volumes de dados, abordou as principais abordagens existentes para se trabalhar com esses dados e apresentou um exemplo prático de análise de grandes volumes de dados extraídos de 38

39 redes sociais online. Trabalhar com amostras maiores de dados possibilita que informações antes ocultas sejam aproveitadas e tragam novas e melhores informações. Ainda existem muitos desafios a serem enfrentados, porém a possibilidade de trabalhar com amostras maiores de dados das redes sociais online permite que novas informações sejam extraídas e que informações antes obtidas sejam mais consistentes, visto que a amostra analisada será maior. Além do desafio técnico de analisar grandes quantidades de dados, novos desafios surgem a partir dessa nova oportunidade de análise, visto que novas informações que antes não eram consideradas devido às limitações técnicas e humanas podem e devem ser agora consideradas. Tratar essas novas informações adequadamente extrapola as áreas técnicas da computação (e até da área das ciências exatas) visto que conhecimentos de áreas de humanas (como antropologia, sociologia, psicologia, entre outros) são necessários. Este trabalho introduziu o tema de Big Data e análise de redes sociais, permitindo que pesquisadores e analistas de redes sociais que desejam trabalhar com grande volume de dados conheçam as principais abordagens e desafios que existem atualmente. Ao mesmo tempo, este trabalho também pode ser utilizado por profissionais que estão trabalhando com Big Data e desejam agora analisar dados de redes sociais. Referências About Twitter (2014) Our mission: To give everyone the power to create and share ideas and information instantly, without barriers, Disponível em: https://about.twitter.com/company, Acessado em: 19 de julho de Albuquerque, R. P., Oliveira, J., Faria, F. F., Studart, R. M., Souza, J. M.(2014), Studying Group Dynamics through Social Networks Analysis in a Medical Community, Social Networking, v. 03, p Alonso, O., Ke, Q., Khandelwal, K., Vadrevu S. (2013), Exploiting Entities In Social Media, Proceedings of the sixth international workshop on Exploiting semantic annotations in information retrieval (ESAIR ), ACM, p Appel, A. P., Hruschka, E.(2011), Por dentro das redes complexas: detectando grupos e prevendo ligações, Anais do XXVI Simpósio Brasileiro de Banco de Dados, SBC. Bidoop Layer (2014), Soluções em Big Data Baseadas em Hadoop, Disponível em: Acessado em: 10 de maio de Benevenuto, F., Almeida, J., Silva, A. S. (2011), Explorando Redes Sociais Online: Da Coleta e Análise de Grandes Bases de Dados as Aplicacões, Minicurso do XXVI Simpósio Brasileiro de Redes de Computadores, SBC. Beowulf (2014), The Beowulf Archives, Disponível em: Acessado em: 14 de fevereiro de Castells, M. (1996), Rise of the Network Society: The Information Age: Economy, Society and Culture, Vol. 1, John Wiley & Sons. Chen, H. (2001), Knowledge management systems: a text mining perspective, Arizona: Knowledge Computing Corporation. 39

40 ComScore (2014), comscore Releases March U.S. Online Video Rankings. Disponível em: https://www.comscore.com/por/insights/press-releases/2014/4/comscore- Releases-March-2014-US-Online-Video-Rankings, Acessado em 19 de julho de Costa, L. H. M. K., Amorim, M. D., Campista, M. E. M., Rubinstein, M. G., Florissi, P., Duarte, O. C. M. B. (2012), Grandes Massas de Dados na Nuvem: Desafios e Técnicas para Inovação, Minicurso do XXX Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos, SBC, p. 58. Cozza, R., Milanesi, C., Gupta, A., Nguyen, T. H., Lu, C. K., Zimmermann, A., & De La Vernge, H. J. (2011), Market Share Analysis: Mobile Devices, Gartner Report, Disponível em: Acessado em 20 de julho de Dale, C., Cheng, X., Liu. J. (2007), Understanding the Characteristics of Internet Short Video Sharing : YouTube as a Case Study, Technical Report arxiv: v1, Cornell University. Dean, J., Ghemawat, S. (2008). MapReduce: simplified data processing on large clusters. Communications of the ACM, v. 51, n. 1, p DiFranzo, D., Zhang, Q., Gloria, K., Hendler, J. (2013). Large Scale Social Network Analysis Using Semantic Web Technologies, AAAI Fall Symposium Series. Easley, D., Kleinberg, J. (2010). Networks, crowds, and markets: Reasoning about a highly connected world, Cambridge University Press. Facebook (2014), Public Feed API, Disponível em: https://developers.facebook.com/docs/public_feed, Acessado em 21 de janeiro de Facebook Data Center (2014), A New Data Center for Iowa, Disponível em: https://newsroom.fb.com/news/2013/04/a-new-data-center-for-iowa/, Acessado em 20 de julho de Facebook NewsRoom (2014), NewsRoom, Disponível em: Acessado em 20 de julho de Facebook World Cup (2014), World Cup 2014: Facebook Tops A Billion Interactions, Disponível em: https://newsroom.fb.com/news/2014/06/world-cup-2014-facebooktops-a-billion-interactions/, Acessado em: 20 de julho de Gärtner, T. (2002), Exponential and geometric kernels for graphs, NIPS Workshop on Unreal Data: Principles of Modeling Nonvectorial Data, Vol. 5, pp Getoor, L., Diehl, C. P. (2005), Link mining: A survey, ACM SIGKDD Explorations Newsletter, v. 7, n. 2, p Ghemawat, S., Gobioff, H., Leung, S. T. (2003), The Google file system, ACM SIGOPS Operating Systems Review, ACM, v. 37, n. 5, p Girvan, M., Newman, M. (2002), Community structure in social and biological networks, Proceedings of the National Academy of Sciences, v. 99, n. 12, p Gomide, J., Veloso, A., Meira Jr, W., Almeida, V., Benevenuto, F., Ferraz, F., Teixeira, M. (2011), Dengue surveillance based on a computational model of spatio-temporal 40

41 locality of Twitter, Proceedings of the 3rd International Web Science Conference, ACM, p Hanneman, R. A., Riddle, M., Introduction to social network methods, Disponível em: Acessado em 20 de julho de Huisman, M., Van Duijn, M. A. J. (2005), Software for Social Network Analysis. In Carrington, P.J., Scott, J.,,Wasserman, S. (Editors), Models and Methods in Social Network Analysis, New York: Cambridge University Press, p Jacobs, A. (2009). The pathologies of Big Data. Magazine Communications of the ACM - A Blind Person's Interaction with Technology, New York, NY, USA. v. 52, n. 8, p Junior, E. A. S., Oliveira, J. (2013), Hermes: Identificação de Menores Rotas em Dispositivos Móveis. Anais do XXVIII Simpósio Brasileiro de Banco de Dados - Demos e Aplicações, Pernambuco, SBC. Kashima, H., Inokuchi, A. (2002), Kernels for graph classification. Proceedings of ICDM Workshop on Active Mining. Kempe, D., Kleinberg, J., Tardos, E. (2003), Maximizing the Spread of Influence through a Social Network, Proceedings of the ninth ACM SIGKDD international conference on Knowledge discovery and data mining, ACM, pp Kleinberg, J. M. (1999), Authoritative sources in a hyperlinked environment, Journal of the ACM, v. 46, n. 5, p Krauss, J., Nann, S., Simon, D., Gloor, P. A., Fischbach, K. (2008), Predicting movie success and academy awards through sentiment and social network analysis, Proceedings of European Coferance on Information Systems, p Lafferty, J., McCallum, A., Pereira, F. C. N. (2001), Conditional random fields: Probabilistic models for segmenting and labeling sequence data, Proceedings of XVIII International Conference on Machine Learning, Morgan Kaufmann Publishers, p Lam, C. (2010), Hadoop in action, Manning Publications Co. Lauand, B.; Oliveira, J. (2013), TweeTraffic: ferramenta de análise das condições de trânsito baseado nas informações do Twitter. Anais do II Brazilian Workshop on Social Network Analysis and Mining (BraSNAM), SBC. Liben-Nowell, D., Kleinberg, J. (2007), The link-prediction problem for social networks, Journal of the American Society for Information Science and Technology, v. 58, n. 7, p Lieberman, M., Visualizing Big Data: Social network analysis, Disponível em: Analysis-Paper-by-Michael-Lieberman.pdf, Acessado em 20 de julho de Lu, Q., Getoor, L. (2003), Link-based Classification, Proceedings of XX International Conference on Machine Learning, v. 20, n. 2, p Nagarajan, M., Sheth, A., Velmurugan, S. (2011), Citizen sensor data minning, social media analytics and development centric Web applications. Proceedings of the 20th international conference companion on World Wide Web, ACM, pp

42 Manovich, L. (2011), Trending: the promises and the challenges of big social data, Minneapolis, MN: University of Minnesota Press. Melo, H., Oliveira, J. (2014), Ambiente Analítico Web para Análise da Colaboração Científica no Cenário Médico, Anais do X Simpósio Brasileiro de Sistemas de Informação, SBC, p Menon, R. (2013), Introducing Hadoop Part II, Disponível em: Acessado em: 10 de dezembro de Mikolajczyk, R. T., Kretzschmar, M. (2008), Collecting social contact data in the context of disease transmission: Prospective and retrospective study designs, Social Networks, Elsevier, v. 30, n. 2, p Monclar, R.S., Oliveira, J., Faria, F.F., Ventura, L.V.F., Souza, J. M., Campos, M.L.M. (2012), The Analysis and Balancing of Scientific Social Networks in Cancer Control, Handbook of Research on Business Social Networking: Organizational, Managerial and Technological Dimensions, IGI Global, p Nakamura, E. F., Loureiro, A. A. F., Frery, A. C. (2007), Information fusion for wireless sensor networks: Methods, models, and classifications, Computing Surveys, ACM, v. 39, n. 3, p Neto, B.; Oliveira, J.; Souza, J. M. (2010). Collaboration in Innovation Networks: Competitors can become partners, Proceedings of International Conference on Information Society, IEEE, p Newman, M. E. J. (2010), Networks: An Introduction, Oxford: Oxford University Press. Nodejs (2014), Node.js, Disponível em: Acessado em: 20 de junho de O Madadhain, J., Hutchins, J., Smyth, P. (2005), Prediction and ranking algorithms for event-based network data, ACM SIGKDD Explorations Newsletter, 7(2), Oliveira, A. C., Salas, P. R., Roseto S., Boscarioli C., Barbosa W., Viterbo A. (2013a), Big Data: Desafios e Técnicas para a Análise Eficiente de Grandes Volumes e Variedades de Dados, Minicurso do IX Simpósio Brasileiro de Sistemas de Informação, SBC. Oliveira, J., Santos, R. P. (2013b), Análise e Aplicações de Redes Sociais em Ecossistema de Software, Minicurso do IX Simpósio Brasileiro de Sistema de Informação. Online Tech (2014), Cloud computing prompts 2012 data center expansion plans, Disponível em: datacenter-expansion-plans/, Acessado em: 19 de julho de Pastor-Satorras, R., Vespignani, A. (2001), Epidemic spreading in scale-free networks, Physical Review Letters, v. 86, n. 14, p Popescul, A; Ungar, L. H. (2003), Statistical Relational Learning for Link Prediction, Proceedings of IJCAI workshop on learning statistical models from relational data. 42

43 Ranking, T. P. C., Order, B. (1998), The PageRank Citation Ranking: Bringing Order to the Web. Technical Report, Stanford University, Disponível em Acessado em: 23 de setembro de Santos, F. B., Oliveira, J. (2014), More than Just a Game: The Power of Social Media on Super Bowl XLVI, Social Networking, Scientific Research, v. 03, p Silva, I. S., Gomide, J., Barbosa, G. A. R., Santos, W., Veloso A., Meira, W. Jr., Ferreira, R. (2011). Observatório da Dengue: Surveillance based on Twitter Sentiment Stream Analysis. XXVI Simpósio Brasileiro de Banco de Dados-Sessão de Demos. Silva, T. L. C., Araújo, A. C. N., Sousa, F. R. C., Macêdo, J. A. F., Machado, J. C. (2013), Análise em Big Data e um Estudo de Caso utilizando Ambientes de Computação em Nuvem. Minicurso do XXVII Simpósio Brasileiro de Banco de Dados. Solis, B. (2007), Manifesto, The Social Media, Disponível em: Acessado em: 20 de junho Souza, J. M., Neto, B., Oliveira, J. (2011), Innovation Networks as a Proposal to Overcome Problems and Improve Innovation Projects. International Journal for Infonomics, Infonomics Society, v. 4, p Statistics Facebook (2014), Disponível em: Acessado em: 20 de junho de Stempel, G. H., Hargrove, T., Bernt, J. P. (2000), Relation of Growth of Use of the Internet to Changes in Media Use from 1995 to 1999, Journalism & Mass Communication Quarterly, SAGE Journals, v. 77, n. 1, p Stroele, V., Silva, R., Souza, M.F., Mello, C. E., Souza, J. M., Zimbrao, G., Oliveira, J. (2011), Identifying Workgroups in Brazilian Scientific Social Networks, Journal of Universal Computer Science, v. 17, p Studart, R. M.; Oliveira, J.; Faria, F.F.; Ventura, L.V.F.; Souza, J. M.; Campos, M.L.M. (2011), Using social networks analysis for collaboration and team formation identification, Proceedings of XV International Conference on Computer Supported Cooperative Work in Design, IEEE, p Svenson, P., Svensson, P., Tullberg, H. (2006), Social Network Analysis And Information Fusion For Anti-Terrorism, Proceedings of Conference on Civil and Military Readiness, Paper S3.1. Lovett, T., O Neill, E., Irwin, J., Pollington, D. (2010). The calendar as a sensor: analysis and improvement using data fusion with social networks and location Proceedings of XXII International Conference on Ubiquitous Computing, ACM, p Tan, W., Blake, M. B., Saleh, I., Dustdar, S. (2013), Social-Network-Sourced Big Data Analytics. Internet Computing. IEEE Computer Society, v. 17, n. 5, p Taskar, B., Abbeel, P., Koller, D. (2002), Discriminative probabilistic models for relational data, Proceedings of the Eighteenth conference on Uncertainty in artificial intelligence, p

44 Twitter Statistics (2014), Twitter Statistics Verification, Disponível em: <http://www.statisticbrain.com/twitter-statistics/>, Acessado em: 19 de julho de Wasserman, S., Faust, K. (1994), Social Network Analysis: Methods and Applications, Cambridge University Press. Watts, D. J.; Strogatz, S. H. (1998), Collective dynamics of small-world networks, Nature, v. 393, n. 6684, p White, T. (2009), Hadoop: The Definitive Guide, O Reilly Media. Yang, C.C., Ng, T.D. (2007), Terrorism and Crime Related Weblog Social Network: Link,Content Analysis and Information Visualization, Intelligence and Security Informatics, IEEE. p YouTube Statistics (2014), Disponível em: https://www.youtube.com/yt/press/statistics.html, Acessado em: 19 de julho de Zikopoulos, P., Eaton, C. (2011), Understanding Big Data: Analytics for enterprise class Hadoop and streaming data, McGraw-Hill Osborne Media. Zuckerberg, M. (2014), One Billion People on Facebook, Disponível em: https://newsroom.fb.com/news/2012/10/one-billion-people-on-facebook/, Acessado em: 20 de julho de Zudio, P., Mendonca, L., Oliveira, J. (2014), Um método para recomendação de relacionamentos em redes sociais científicas heterogêneas, Anais do XI Simpósio Brasileiro de Sistemas Colaborativos, SBC. 44

45 Sobre os Autores Tiago Cruz França é professor assistente da Universidade Federal Rural do Rio de Janeiro (UFRRJ) e aluno de doutorado no Programa de Pós-Graduação em Informática, onde desenvolve pesquisas nas áreas de análise de redes sociais e big data. Tem interesse em tecnologias Web, Engenharia de Software e Análise de Redes Sociais. Nos últimos anos, Tiago tem atuado nos seguintes temas: Serviços Web, Mashups Web, Web das Coisas, Análise de Sentimentos, Fusão de Dados Web e dados oriundos de dispositivos inteligentes. Fabrício Firmino de Faria é professor substituto da Universidade Federal do Rio de Janeiro (UFRJ), possui mestrado em Informática pela Universidade Federal do Rio de Janeiro, durante o qual realizou intercâmbio no Digital Enterprise Research Institute (DERI, Irlanda). Atualmente atua em pesquisas com Web Semântica, Data Warehousing, Análises de Redes Sociais e Big Data. Nos últimos anos trabalhou com processamento de linguagem natural para análise de dados textuais e com o desenvolvimento de plataformas para captura e armazenamento de dados produzidos por sensores. Fabio Medeiros Rangel é graduando da Universidade Federal do Rio de Janeiro, possui experiência em Análise de Redes Sociais, com foco em visualização de dados e desenvolvimento de algoritmos para cálculo de métricas em ambientes distribuídos. Possui interesse nas áreas de Data Mining e Big Data. Claudio Miceli de Farias possui graduação em Ciência da Computação pela Universidade Federal do Rio de Janeiro (2008), mestrado (2010) e doutorado (2014) em Informática pela Universidade Federal do Rio de Janeiro. Atuou como professor substituto no Departamento de Ciência da Computação da UFRJ durante o período de 2012 a Atualmente é professor do Colégio Pedro II e professor visitante no laboratório de Redes e Multimídia do ince-ufrj. Atua como revisor no SBSEG e SBRC. É também membro do comitê de programa das conferências Wireless Days e IDCS. As principais áreas de atuação são: Redes de Sensores sem Fio, Redes de Sensores Compartilhadas, Fusão de Dados, Escalonamento de tarefas, Smart Grid, Análise de Dados e Segurança. Jonice Oliveira obteve o seu doutorado em 2007 em Engenharia de Sistemas e Computação, ênfase em Banco de Dados, pela COPPE/UFRJ. Durante o seu doutorado recebeu o prêmio IBM Ph.D. Fellowship Award. Na mesma instituição realizou o seu Pós-Doutorado, concluindo-o em Atualmente é professora adjunta do Departamento de Ciência da Computação da UFRJ, coordenadora do curso de Análise de Suporte à Decisão (habilitação do Bacharelado em Ciências da Matemática e da Terra) e atua no Programa de Pós-Graduação em Informática (PPGI-UFRJ). Em 2013, tornou-se Jovem Cientista do Nosso Estado pela FAPERJ. Coordena o Laboratório CORES (Laboratório de Computação Social e Análise de Redes Sociais), que conduz pesquisas multidisciplinares para o entendimento, simulação e fomento às interações sociais. É coordenadora de Disseminação e Parcerias do Centro de Referência em Big Data, da UFRJ. Suas principais áreas de pesquisa são Gestão do Conhecimento, Análise de Redes Sociais, Big Data e Computação Móvel. 45

46 cap:2 Capítulo 2 Estratégias para Proteção da Privacidade de Dados Armazenados na Nuvem Eliseu C. Branco Jr., Javam C. Machado e Jose Maria Monteiro Abstract This short course describes the problem of data privacy in cloud computing. Besides, a short review of the main concepts about security and privacy in cloud environments is presented and discussed. In addition, it presents methods and techniques concerning privacy preserving of data stored or processed in the cloud. Finally, an original solution to ensure data privacy in cloud computing environments is discussed. Resumo Este minicurso discute o problema da privacidade de dados na computação em nuvem. Além disto, uma revisão dos principais conceitos relacionados à segurança e à privacidade em computação em nuvem é apresentada e discutida. Adicionalmente, os principais métodos e técnicas atualmente existentes para a proteção da privacidade dos dados armazenados ou processados na nuvem são apresentados. Por fim, uma solução original para assegurar a privacidade de dados em ambientes de computação em nuvem é discutida. 46

47 2.1. Introdução A computação em nuvem é uma tecnologia que tem como objetivo proporcionar serviços de Tecnologia da Informação (TI) sob demanda com pagamento baseado no uso. A nuvem computacional é um modelo de computação em que dados, arquivos e aplicações residem em servidores físicos ou virtuais, acessíveis por meio de uma rede em qualquer dispositivo compatível (fixo ou móvel), e que podem ser acessados a qualquer hora, de qualquer lugar, sem a necessidade de instalação ou configuração de programas específicos. Contudo, para que todo o potencial da computação em nuvem possa ser explorado pelas organizações, é de fundamental importância garantir a segurança e a privacidade dos dados armazenados na nuvem. O relatório Top Threats to Cloud Computing, 2013, produzido pela Cloud Security Alliance-CSA 1, lista as 10 maiores ameaças para a computação em nuvem. Em primeiro lugar no ranking desta pesquisa ficou o "roubo de dados"e em segundo lugar a "perda de dados". Portanto, não será possível atingir todo o potencial da computação em nuvem sem o desenvolvimento de estratégias que assegurem a proteção da privacidade dos dados de seus usuários O que é Privacidade? Os trabalhos de pesquisa sobre privacidade abrangem disciplinas da filosofia à ciência política, teoria política e legal, ciência da informação e, de forma crescente, engenharia e ciência da computação. Um aspecto comum entre os pesquisadores do tema é que privacidade é um assunto complexo. Privacidade é um conceito relacionado a pessoas. Trata-se de um direito humano, como liberdade, justiça ou igualdade perante a lei. Privacidade está relacionada ao interesse em que as pessoas têm em manterem um espaço pessoal, sem interferências de outras pessoas ou organizações. Segundo [Jr et al. 2010], existem basicamente três elementos na privacidade: o sigilo, o anonimato e o isolamento (ou solidão, o direito de ficar sozinho). Inicialmente, é importante fazer uma distinção entre dados e informação. O padrão RFC-2828 define informação como "fatos e ideias que podem ser representados (codificados) sob vários formatos de dados"e dados como "informações em uma representação física específica, normalmente uma sequência de símbolos que possuem um significado; especialmente uma representação da informação que pode ser processada ou produzida por um computador." [Jr et al. 2010] definem 3 dimensões para a privacidade: a) Privacidade Territorial: proteção da região próxima a um indivíduo. b) Privacidade do Indivíduo: proteção contra danos morais e interferências indesejadas. c) Privacidade da Informação: proteção para dados pessoais coletados, armazenados, processados e propagados para terceiros. A privacidade, em relação aos dados disponibilizados na nuvem, pode ser vista como uma questão de controle de acesso, em que é assegurado que os dados armazenados 1 https://downloads.cloudsecurityalliance.org/initiatives/top_threats/the_notorious _Nine_Cloud_Computing_Top_Threats_in_2013.pdf, acessado em março de

48 estarão acessíveis apenas para pessoas, máquinas e processos autorizados. A privacidade assegura que os indivíduos controlam ou influenciam quais informações relacionadas a eles podem ser coletadas e armazenadas por alguém e com quem elas podem ser compartilhadas [Stallings 2007]. Adicionalmente, privacidade em computação em nuvem é a habilidade de um usuário ou organização controlar que informações eles revelam sobre si próprios na nuvem, ou seja, controlar quem pode acessar qual informação e de que forma isto pode ocorrer. Neste contexto, a proteção de dados está relacionada ao gerenciamento de informações pessoais. De modo geral, informações pessoais descrevem fatos, comunicações ou opiniões relacionadas ao indivíduo, as quais ele desejaria manter em segredo, controlando sua coleta, uso ou compartilhamento. Informações pessoais podem ser associadas a um indivíduo específico tais como nome, cpf, número do cartão de crédito, número da identidade. Algumas informações pessoais são consideradas mais sensíveis do que outras. Por exemplo, informações sobre saúde (registros médicos) são consideradas sensíveis em todas as circunstâncias. Também são exemplos de informações sensíveis: aquelas relacionadas à biometria de um indivíduo e os resultados de uma avaliação de desempenho realizada com os funcionários de uma determinada empresa. Este tipo de informação necessita de proteção adicional em relação à privacidade e segurança. Para que seja possível discutir em detalhes os principais aspectos relacionados à privacidade dos dados armazenados na nuvem, necessitamos definir precisamente o que é computação em nuvem. Existem várias definições para computação em nuvem. Contudo, neste trabalho, será utilizada a definição apresentada em [Hon et al. 2011]: a) A computação em nuvem fornece acesso flexível, independente de localização, para recursos de computação que são rapidamente alocados ou liberados em resposta à demanda. b) Serviços (especialmente infraestrutura) são abstraídos e virtualizados, geralmente sendo alocados como um pool de recursos compartilhados com diversos clientes. c) Tarifas, quando cobradas, geralmente, são calculadas com base no acesso, de forma proporcional, aos recursos utilizados. À medida em que grandes volumes de informações pessoais são transferidas para a nuvem, cresce a preocupação de pessoas e organizações sobre como estes dados serão armazenados e processados. O fato dos dados estarem armazenados em múltiplos locais, muitas vezes de forma transparente em relação à sua localização, provoca insegurança quando ao grau de privacidade a que estão expostos. Segundo [Pearson 2013], a terminologia para tratar questões de privacidade de dados na nuvem inclui a noção de controlador do dado, processador do dado e sujeito proprietário do dado. Estes conceitos serão descritos a seguir: a) Controlador de Dado: Uma entidade (pessoa física ou jurídica, autoridade pública, agência ou organização) que sozinha ou em conjunto com outros, determina a maneira e o propósito pela qual as informações pessoais são processadas. 48

49 b) Processador de Dado: Uma entidade (pessoa física ou jurídica, autoridade pública, agência ou organização) que processa as informações pessoais de acordo com as instruções do Controlador de Dado. c) Sujeito do Dado: Um indivíduo identificado ou identificável ao qual a informação pessoal se refere, seja por identificação direta ou indireta (por exemplo por referência a um número de identificação ou por um ou mais fatores físicos, psicológicos, mentais, econômicos, culturais ou sociais) Conceitos Fundamentais Nesta seção, iremos apresentar os principais conceitos relacionados à segurança e à privacidade em computação em nuvem Privacidade de Dados na Nuvem Diversos estudos têm sido realizados para investigar os problemas relacionados à privacidade e segurança em ambientes de computação em nuvem. [Liu et al. 2012] estudou o assunto nas áreas de saúde e energia elétrica. Já o trabalho apresentado por [Gruschka and Jensen 2010] sugeriu modelar o ecosistema de segurança baseado em três participantes do ambiente de nuvem: o usuário do serviço, a instância do serviço e o provedor do serviço. Os ataques podem ser classificados em 6 categorias, conforme descrição na Tabela 2.1. Em cada categoria representa-se a origem e o destino dos ataques. Por exemplo, usuário -> provedor indica ataques de usuários a provedores de nuvem. Usuário Serviço Instância Serviço Provedor Nuvem Tabela 2.1. Tipos de Ataques na Nuvem do do de Usuário Serviço serviço usuário provedor usuário do Instância do Serviço usuário serviço provedor serviço Provedor Nuvem usuário provedor serviço provedor de [Spiekermann and Cranor 2009] classificou 3 domínios técnicos para o armazenamento de dados na nuvem: esfera do usuário, esfera da organização e esfera dos provedores de serviços. O autor relacionou áreas de atividades que causam grande preocupação em relação à privacidade de dados com as 3 esferas de privacidade, conforme ilustrado na Tabela 2.2, a seguir. O National Institute of Standards and Technology (NIST) propõe uma terminologia para a classificação de problemas relacionados à privacidade e a segurança em ambientes de computação em nuvem. A terminologia proposta contém 9 áreas: governança, conformidade, confiança, arquitetura, gerenciamento de acesso e identidade, isolamento de software, proteção de dados, disponibilidade e resposta a incidentes [Jansen and Grance 2011]. Em relação à proteção de dados, o NIST recomenda que sejam avaliadas a adequação de soluções de gerenciamento 49

50 Tabela 2.2. Esferas de Influência Associadas às Preocupações com Privacidade de Dados. Adaptado de [Spiekermann and Cranor 2009]. Esfera de Influência Esfera do usuário Esfera da organização Esfera dos provedores de serviços de nuvem Preocupação com a Privacidade de Dados Coleção e armazenamento de dados não autorizados Acesso não autorizado a dados Exposição de dados Entrada indesejada de dados Exposição de dados Mau julgamento a partir de dados parciais ou incorretos Acesso não autorizado a dados pessoais Uso não autorizado de dados por terceiros envolvidos na coleta dos dados ou por outras organizações com as quais os dados foram compartilhados Uso não autorizado de dados por terceiros envolvidos na coleta dos dados Uso não autorizado por outras organizações com as quais os dados foram compartilhados Acesso não autorizado de dados pessoais Erros acidentais ou deliberados em dados pessoais Mau julgamento a partir de dados parciais ou incorretos Combinação de dados pessoais, a partir de banco de dados diferentes para recriar o perfil de um sujeito de dados do provedor de nuvem para os dados organizacionais envolvidos e a capacidade de controlar o acesso aos dados, para proteção dos dados em repouso, em movimento e em uso, incluindo o descarte dos dados Segurança de Dados na Nuvem O NIST Computer Security Handbook define segurança computacional como sendo "a proteção conferida a um sistema de informação automatizado, a fim de atingir os objetivos propostos de preservação da integridade, disponibilidade e confidencialidade dos recursos do sistema de informação (incluindo hardware, software, firmware, informações/dados e telecomunicações)"[guttman and Roback 1995]. Esta definição contém 3 conceitos chaves para segurança computacional: confidencialidade, disponibilidade e integridade. Além dos riscos e ameaças inerentes aos ambientes tradicionais de TI, o ambiente de computação em nuvem possui seu próprio conjunto de problemas de segurança, classificados por [Krutz and Vines 2010] em sete categorias: segurança de rede, interfaces, segurança de dados, virtualização, governança, conformidade e questões legais. Os princípios fundamentais da segurança da informação: confidencialidade, integridade e disponibilidade, definem a postura de segurança de uma organização e influenciam os controles e processos de segurança que podem ser adotados para minimizar os riscos. Estes princípios se aplicam também aos processos executados na nuvem. O processo de desenvolvimento e implantação de aplicações para a plataforma de computação em nuvem, que seguem o modelo software como um serviço (Software as a Service - SaaS), deve considerar os seguintes aspectos de segurança em relação aos dados armazenados na nuvem [Subashini and Kavitha 2011]: 50

51 a) Segurança dos dados: no modelo SaaS, os dados são armazenados fora dos limites da infraestrutura de tecnologia da organização, por isso o provedor de nuvem deve prover mecanismos que garantam a segurança dos dados. Por exemplo, isso pode ser feito utilizando técnicas de criptografia forte e mecanismos de ajuste preciso para autorização e controle de acesso. b) Segurança da rede: os dados do cliente são processados pelas aplicações SaaS e armazenados nos servidores da nuvem. A transferência dos dados da organização para a nuvem deve ser protegida para evitar perda de informação sensível. Por exemplo, pelo uso de técnicas de encriptação do tráfego de rede, tais como Secure Socket Layer (SSL) e Transport Layer Security (TLS). c) Localização dos dados: no modelo SaaS, o cliente utiliza as aplicações SaaS para processar seus dados, mas não sabe onde os dados serão armazenados. Isto pode ser um problema, devido à legislação sobre privacidade em alguns países proibir que os dados sejam armazenados fora de seus limites geográficos. O que ocorre, por exemplo, em relação ao armazenamento de dados médicos na nuvem, em alguns países da União Européia. d) Integridade dos dados: o modelo SaaS é composto por aplicações multi-inquilino hospedadas na nuvem. Estas aplicações utilizam interfaces baseadas em API-Application Program Interfaces XML para expor suas funcionalidades sob a forma de serviços Web (web services). Embora existam padrões para gerenciar a integridade das transações com web services, tais como WS-Transaction e WS-Reliability, estes padrões não são amplamente utilizados pelos desenvolvedores de aplicações SaaS. e) Segregação dos dados: os dados de vários clientes podem estar armazenados no mesmo servidor ou banco de dados no modelo SaaS. A aplicação SaaS deve garantir a segregação, no nível físico e na camada de aplicação, dos dados dos clientes. f) Acesso aos dados: o ambiente muilti-inquilino da nuvem pode gerar problemas relacionados à falta de flexibilidade de aplicações SaaS para incorportar políticas específicas de acesso a dados pelos usuários de organizações clientes do serviço SaaS Vulnerabilidades da Nuvem [Zhifeng and Yang 2013] relaciona características da nuvem que causam vulnerabilidades de segurança e privacidade, as quais são descritas a seguir: a) Máquinas virtuais de diferentes clientes compartilhando os mesmos recursos físicos (hardware) possibilitam ataque de canal lateral (side-channel attack), situação em que o atacante pode ler informações do cache da máquina e descobrir o conteúdo de chaves criptográficas de outros clientes. b) Perda de controle físico da máquina pelo cliente, que não pode se proteger contra ataques e acidentes. Por exemplo: alteração ou perda de dados. 51

52 c) Sub-provisionamento da largura de banda da rede, o que provocou o surgimento de um novo tipo de ataque de negação de serviço (DOS- Denial of Service) que se aproveita do fato da capacidade de rede do provedor de nuvem ser menor do que a quantidade de máquinas alocadas na mesma sub-rede [Liu 2010] Modelos de Preservação da Privacidade As soluções propostas para preservação da privacidade de dados armazenados ou processados na nuvem, que são discutidas neste documento, são classificadas em quatro categorias. A primeira categoria trata da proteção da privacidade de dados privados que devem ser disponibilizados na nuvem de forma pública. Neste contexto, pode-se aplicar os modelos de anonimização apresentados na Seção 2.4. A segunda categoria se refere a situações nas quais deseja-se realizar consultas sobre dados criptografados disponibilizados na nuvem, sem revelar o conteúdo destes dados, nem o conteúdo da consulta para o provedor de nuvem. Para este cenário, a técnica de Busca Criptográfica, apresentada na Seção 2.5, pode ser aplicada. A terceira categoria engloba os cenários nos quais é necessário assegurar a privacidade do acesso na recuperação de dados armazenados na nuvem. Neste contexto, pode-se aplicar a a técnica de proteção PIR-Private Information Retrieval, discutida na Seção 2.6. A quarta categoria, trata do problema de manter a privacidade em transações distribuidas na nuvem. Neste contexto, a técnica SMC-Secure Multiparty Computation, apresentada na Seção 2.7, pode ser utilizada. Por fim, a Seção 2.8 apresenta uma proposta de uma nova técnica para assegurar a privacidade de dados armazenados na nuvem, utilizando decomposição e fragmentação de dados Anonimização de Dados na Nuvem Organizações públicas e privadas têm, cada vez mais, sido cobradas para publicar seus dados "brutos"em formato eletrônico, em vez de disponibilizarem apenas dados estatísticos ou tabulados. Esses dados "brutos"são denominados microdados (microdata). Neste caso, antes de sua publicação, os dados devem ser sanitizados, com a remoção de identificadores explícitos, tais como nomes, endereços e números de telefone. Para isso, pode-se utilizar técnicas de anonimização. O termo anonimato, que vem do adjetivo "anônimo", representa o fato do sujeito não ser unicamente caracterizado dentro de um conjunto de sujeitos. Neste caso, afirmase que o conjunto está anonimizado. O conceito de sujeito refere-se a uma entidade ativa, como uma pessoa ou um computador. Conjunto de sujeitos pode ser um grupo de pessoas ou uma rede de computadores [Pfitzmann and Köhntopp 2005]. Um registro ou transação é considerada anônima quando seus dados, individualmente ou combinados com outros dados, não podem ser associados a um sujeito particular [Clarke 1999]. Os dados sensíveis armazenados em sistemas de banco de dados relacionais sofrem riscos de divulgação não autorizada. Por este motivo, tais dados precisam ser protegidos. Os dados são normalmente armazenados em uma única relação r, definida por um esquema relacional R(a 1,a 2,a 3,...,a n ), onde a i é um atributo no domínio D i, com i = 1,..,n. Na perspectiva da divulgação de dados de indivíduos, os atributos em R podem ser classificados da seguinte forma [Camenisch et al. 2011]: 52

53 a) Identificadores: atributos que identificam unicamente os indivíduos (ex.: CPF, Nome, Número da Identidade). b) Semi-identificadores (SI): atributos que podem ser combinados com informações externas para expor alguns ou todos os indivíduos, ou ainda reduzir a incerteza sobre suas identidades (ex.: data do nascimento, CEP, cargo, função, tipo sanguíneo). c) Atributos sensíveis: atributos que contêm informações sensíveis sobre os indivíduos (ex.: salário, exames médicos, lançamentos do cartão de crédito) Operações de Anonimização [Clarke 1999] conceitua privacidade da informação como sendo o interesse que um indivíduo tem em controlar, ou, ao menos, influenciar significativamente, o conjunto de dados a seu respeito. Com o crescimento da oferta de serviços de armazenamento de dados e programas em nuvem, preocupações com segurança e privacidade dos dados tem requerido, dos provedores destes serviços, a implementação de estratégias para mitigar riscos e aumentar a confiança dos usuários. Existe a preocupação de que dados privativos coletados e armazenados em bancos de dados na nuvem estejam protegidos e não sejam visualizados por pessoas não autorizadas, citados na literatura como bisbilhoteiros de dados, espião de dados, intruso ou atacante [Duncan et al. 2001]. As técnicas atualmente existentes para a proteção de dados, (generalização, supressão, embaralhamento e perturbação), propostas pela comunidade acadêmica, podem ser utilizadas e/ou combinadas com o objetivo de anonimizar os dados. Essas técnicas são apresentadas a seguir: a) Generalização: para tornar o dado anônimo, esta técnica substitui os valores de atributos semi-identificadores por valores menos específicos, mas semanticamente consistentes, que os representam. A técnica categoriza os atributos, criando uma taxonomia de valores com níveis de abstração indo do nível particular para o genérico. Como exemplo, podemos citar a generalização do atributo Código de Endereçamento Postal (CEP), o qual pode ser generalizado de acordo com os seguintes níveis: CEP ( ) -> Rua -> Bairro -> Cidade -> Estado -> País. b) Supressão: esta técnica exclui alguns valores de atributos identificadores e/ou semiidentificadores da tabela anonimizada. Ela é utilizada no contexto de bancos de dados estatísticos, onde são disponibilizados apenas resumos estatísticos dos dados da tabela, ao invés dos microdados [Samarati 2001]. c) Encriptação: esta técnica utiliza esquemas criptográficos normalmente baseados em chave pública ou chave simétrica para substituir dados sensíveis (identificadores, semiidentificadores e atributos sensíveis) por dados encriptados. d) Perturbação (Mascaramento): esta técnica é utilizada para preservação de privacidade em data mining ou para substituição de valores dos dados reais por dados fictícios para mascaramento de bancos de dados de testes ou treinamento. A idéia geral é alterar randomicamente os dados para disfarçar informações sensíveis enquanto preserva as 53

54 características dos dados que são críticos para o modelo de dados. Duas abordagens comuns desta técnica são a randomização (Random Data Perturbation - RDP) e a condensação dos dados [Chen and Liu ]. Condensação de Dados: técnica proposta por [Aggarwal and Philip 2004], condensa os dados em múltiplos grupos de tamanhos predefinidos. Informações estatísticas sobre média e correlações entre diferentes dimensões de cada grupo são preservadas. Dentro de um grupo não é possível distinguir diferenças entre os registros. Cada grupo tem um tamanho mínimo k, que é o nível de privacidade obtido com esta técnica. Random Data Perturbation (RDP): esta técnica adiciona ruídos, de forma randômica, aos dados numéricos sensíveis. Desta forma, mesmo que um bisbilhoteiro consiga identificar um valor individual de um atributo confidencial, o valor verdadeiro não será revelado. A maioria dos métodos utilizados para adicionar ruído randômico são casos especiais de mascaramento de matriz. Por exemplo, seja o conjunto de dados X, o conjunto Z dos dados randomizados é computado como Z = AXB +C, onde A é uma máscara de transformação de registro, B é um máscara de transformação de atributo e C é um mascara de deslocamento (ruído) [Domingo-Ferrer 2008, Muralidhar and Sarathy 1999]. O mascaramento de dados é utilizado para disponibilizar bases de dados para teste ou treinamento de usuários, com informações que pareçam reais, mas não revelem informações sobre ninguém. Isto protege a privacidade dos dados pessoais presentes no banco de dados, bem como outras informações sensíveis que não possam ser colocadas a disposição para a equipe de testes ou usuários em treinamento. Algumas técnicas de mascaramento de dados são descritas a seguir [Lane 2012]: a) Substituição: substuição randômica de conteúdo por informações similares, mas sem nenhuma relação com o dado real. Como exemplo, podemos citar a substituição de sobrenome de família por outro proveniente de uma grande lista randômica de sobrenomes. b) Embaralhamento (Shuffling): substituição randômica semelhante ao item anterior, com a diferença de que o dado é derivado da própria coluna da tabela. Assim, o valor do atributo A em uma determinada tupla c 1 é substituído pelo valor do atributo A em uma outra tupla c n, selecionada randomicamente, onde n 1. c) Blurring: esta técnica é aplicada a dados numéricos e datas. A técnica altera o valor do dado por alguma percentagem randômica do seu valor real. Logo, pode-se alterar uma determinada data somando-se ou diminuindo-se um determinado número de dias, determinado randomicamente, 120 dias, por exemplo; valores de salários podem ser substituídos por um valor calculado a partir do valor original, aplicando-se, para mais ou para menos, uma percentagem do valor original, selecionada randomicamente, por exemplo, 10% do valor inicial. d) Anulação/Truncagem (Redaction/Nulling ): esta técnica substitui os dados sensíveis por valores nulos (NULL). A técnica é utilizada quando os dados existentes na tabela não são requeridos para teste ou treinamento. 54

55 Tipos de Ataque à Privacidade dos Dados O controle de inferência em banco de dados, também conhecido como Statistical Disclosure Control (SDC), trata da proteção de dados que podem ser publicados sem revelar informações confidenciais que possam ser relacionadas a pessoas específicas aos quais os dados publicados correspondem. A proteção que as técnicas de SDC proporcionam, provocam, em algum grau, modificação nos dados publicados, dentro dos limites de nenhuma modificação (máxima utilidade para os usuários e nenhuma proteção dos dados) e encriptação de dados (máxima proteção e nenhuma utilidade para o usuário sem a chave criptográfica). O desafio para SDC é prover a proteção necessária e suficiente para as informações divulgadas com o mínimo de perda de informação possível [Domingo-Ferrer 2008]. Existem dois tipos de divulgação de informações que podem ocorrer em dados anonimizados: divulgação de identidade, que ocorre quando a identidade de um indivíduo pode ser reconstruída e associada com um registro em uma tabela; e divulgação de atributo, que ocorre quando o valor de um atributo pode ser associado a um indivíduo (sem necessariamente poder ser associado a um registro específico). Modelos de privacidade para proteção da divulgação de informações propostos por [Fung et al. 2010] são classificados em duas categorias, com base nos tipos de ataques possíveis: a) A primeira categoria considera que a ameaça à privacidade dos dados ocorre quando um adversário consegue ligar um proprietário de dados a um registro da tabela, ou a um atributo sensível da tabela ou ainda à tabela inteira. Estes tipos de ataques são denominados de: ataque de ligação ao registro, ataque de ligação ao atributo e ataque de ligação à tabela. b) A segunda categoria considera a variação no conhecimento do adversário antes e depois de acessar os dados anonimizados. Caso esta variação seja significativa, esta situação configura o ataque probabilístico. A remoção ou encriptação de atributos do tipo Identificadores é o primeiro passo para anominização. A tabela resultante desta alteração é chamada tabela anonimizada. Para ilustrar os ataques e os modelos de anominização, considere a Tabela 2.3, que apresenta dados fictícios de infrações de trânsito. A Tabela 2.3 é anonimizada, utilizando-se as técnicas de generalização e supressão, sendo os atributos classificados da seguinte forma: atributos identificadores: Motorista, Número da Placa e CPF. Esses atributos serão suprimidos da tabela anonimizada; atributos semi-identificadores: data nascimento e data infração. Esses atributos serão generalizados; atributos sensíveis: tipo de infração e valor da multa. A Tabela 2.4 ilustra o resultado do processo de anonimização aplicado sobre a Tabela 2.3. Os modelos de ataque (de ligação ao atributo, ao registro e à tabela) contra a tabela com dados anonimizados (Tabela 2.4) são apresentados a seguir Ataque de Ligação ao Atributo Neste tipo de ataque, valores de atributos sensíveis são inferidos a partir dos dados anonimizados publicados. Caso o atacante saiba que o Sr. José Sá nasceu em 05/1978 e recebeu 55

56 Número Placa Tabela 2.3. Dados Privados sobre Infrações de Trânsito Motorista CPF Data Nascimento Data Infração Tipo Infração Valor Multa HXR-1542 José Pereira /03/ /01/ ,00 HTS-5864 Jorge Cury /03/ /01/ ,00 HUI-5846 Paula Maria /05/ /01/ ,00 HTR-5874 Joatan Lima /04/ /01/ ,00 HOI-6845 José Sá /05/ /01/ ,00 HQO-5846 Kilvia Mota /05/ /01/ ,00 HUY-8545 José Pereira /05/ /01/ ,00 Tabela 2.4. Dados Públicos Anonimizados sobre Infrações de Trânsito Número Motorista CPF Data Nascimento Data Tipo In- Valor Placa Infração fração Multa * * * 03/ / ,00 * * * 03/ / ,00 * * * 05/ / ,00 * * * 04/ / ,00 * * * 05/ / ,00 * * * 05/ / ,00 * * * 05/ / ,00 uma multa de trânsito em 01/2013, por exemplo, analisando a Tabela 2.4, ele pode inferir com 2/3 de confiança que o valor da multa paga pelo Sr. José Sá foi de R$ 250,00, conforme descrito na Tabela 2.5. Para evitar este ataque, a estratégia geral é diminuir a correlação entre os atributos sensíveis e os atributos semi-identificadores. Tabela 2.5. Ataque de Ligação ao Atributo Data_Nascimento Data_Infração Tipo_Infração Valor_Multa 03/ / ,00 03/ / ,00 05/ / ,00 04/ / ,00 05/ / ,00 05/ / ,00 05/ / , Ataque de Ligação ao Registro Neste tipo de ataque, registros com os mesmos valores para um determinado conjunto de atributos semi-identidicadores formam um grupo. Se os valores dos atributos semiidentificadores estiverem vulneráveis e puderem ser ligados a um pequeno número de registros no grupo, o adversário poderá identificar que um determinado registro refere-se a um indivíduo (vítima) particular. 56

57 Por exemplo, considere a Tabela 2.6, a qual contém dados de infrações de trânsito. Suponha que a Secretaria da Fazenda do Ceará - SEFAZ publicou uma relação dos proprietários de veículos de Fortaleza (Tabela 2.7). Supondo que cada pessoa com um registro na Tabela 2.6 tenha um registro na Tabela 2.7. O conjunto de registros dos atributos semi-identificadores (data nascimento e data infração) do grupo {05/1977,01/2013} possui apenas um registro. Neste caso é possível ligar este registro com o registro da Sra. Paula Maria na Tabela 2.7. Tabela 2.6. Ataque de Ligação ao Registro na Tabela de Multas Data Nascimentçãfração Data Infra- Tipo In- Valor Multa 03/ / ,00 03/ / ,00 05/ / ,00 04/ / ,00 05/ / ,00 05/ / ,00 03/ / ,00 Tabela 2.7. Tabela dos Proprietários de Veículos (Dados Externos) Número da Motorista CPF Data Nascimento Placa HXR-1542 José Pereira /06/1977 HTS-5864 Jorge Cury /06/1977 HUI-5846 Paula Maria /05/1977 HTR-5874 Joatan Lima /05/1978 HOI-6845 Leonardo Sá /05/1978 HQO-5846 Kilvia Mota /06/1977 HUY-8545 José Pereira /06/ Ataque de Ligação à Tabela O ataque de ligação à tabela acontece quando o adversário consegue inferir a ausência ou a presença de um registro da vítima na tabela anonimizada. No caso de registros médicos ou financeiros, a simples identificação da presença do registro da vítima na tabela já pode causar prejuizo a ela. Um exemplo deste tipo de ataque ocorre quando uma tabela anonimizada T (Tabela 2.8) é disponibilizada e o adversário tem acesso a uma tabela pública P (Tabela 2.7) em que T P. A probabilidade da Sra. Kilvia Mota Maria estar presente na Tabela 2.8 é de 3/4 = 0,75, uma vez que há 3 registros na Tabela 2.8 contendo a data de nascimento "06/1977"e 4 registros na Tabela 2.7 com data de nascimento "06/1977" Modelos de Anonimização Com a finalidade de evitar os ataques discutidos anteriormente, vários modelos de anonimização foram propostos por [Wong et al. 2010], [Tassa et al. 2012], [Last et al. 2014] e 57

58 Tabela 2.8. Ataque de Ligação à Tabela Data Nascimento Data Infração Tipo Infração Valor da Multa 06/ / ,00 06/ / ,00 06/ / ,00 04/ / ,00 05/ / ,00 05/ / ,00 03/ / ,00 [Gionis et al. 2008]. A seguir, são apresentados os principais modelos de anonimização encontrados na literatura: k-anonymity, l-diversity, LKC-Privacy, t-closeness e b-likeness k-anonymity O modelo k anonymity requer que qualquer combinação de atributos semi-identificadores (grupo SI) seja compartilhada por pelo menos k registros em um banco de dados anonimizado [Samarati 2001], onde k é um valor inteiro positivo definido pelo proprietário dos dados, possivelmente como resultado de negociações com outras partes interessadas. Um valor alto de k indica que o banco anonimizado tem baixo risco de divulgação, porque a probabilidade de re-identificar um registro é de 1/k, mas isto não protege o banco contra divulgação de atributos. Mesmo que o atacante não tenha capacidade de re-identificar o registro, ele pode descobrir atributos sensíveis no banco anonimizado. [Samarati and Sweeney 1998] apresentam dois esquemas de transformação dos dados por generalização e supressão. O primeiro esquema substitui os valores de atributos semi-identificadores por valores menos específicos, mas semanticamente consistentes, que os representam. Como exemplo, pode-se trocar datas (dd/mm/aaaa) por mês/ano (mm/aaaa). A supressão é um caso extremo de generalização, o qual anula alguns valores de atributos semi-identificadores ou até mesmo exclui registros da tabela. A supressão deve ser utilizada como uma forma de moderação para a técnica de generalização, quando sua utilização provocar um grande aumento de generalização dos atributos semi-identificadores em um conjunto pequeno de registros com menos de k ocorrências. [Fung et al. 2007] propõe discretizar os atributos SI que apresentem valores contínuos, substituindo-os por um intervalo que contenha estes valores. Como exemplo, pode-se substituir o preço de produtos de supermercado por uma faixa de valores [1 a 3], [3 a 7], etc. O esquema de generalização para o grupo SI (data nascimento, data infração) faz o mapeamento destes valores para um nível hierárquico mais genérico, conforme ilustrado na Tabela 2.9, em que vários valores diferentes de um domínio inicial são mapeados para um valor único em um domínio final. Utilizando o modelo k-anonymity na Tabela 2.10 com o valor de k = 2 para o grupo SI = {data nascimento, data infração}, os registros 3 e 4 foram excluídos porque a 58

59 Tabela 2.9. Mapeamento de Valores entre Domínios Domínio Domínio Final Inicial dd/mm/aaa mm/aaaa 14/03/ / /03/ / /03/ /1967 quantidade de registros dos grupos SI 1 = {05/1977,01/2014} e SI 2 ={04/1978, 01/2014} é menor do que k. Tabela Dados Públicos Anonimizados sobre Infrações de Trânsito Número do Registro Motorista CPF Data Nascimento Data Infração Tipo Infração Valor da Multa 1 * * 03/ / ,00 2 * * 03/ / , excluído * * 05/ / , excluído * * 04/ / ,00 5 * * 05/ / ,00 6 * * 05/ / ,00 7 * * 05/ / ,00 k anonymity não protege os atributos sensíveis de serem descobertos quando um grupo SI não possui diversidade nos valores de atributos sensíveis. Por exemplo, se Bob sabe que Alice foi multada em janeiro/2013 e que Alice nasceu em 1978, consultando a tabela anonimizada (registros 5, 6 e 7), Bob descobre que Alice recebeu uma multa do tipo 2 (avançar sinal vermelho), pois este é o único valor do atributo sensível tipo de infração do grupo SI ={05/1978, 01/2013} na Tabela O modelo k anonymity assume como pressuposto que cada registro representa apenas um indivíduo. O problema aqui posto é que se vários registros na tabela representarem um único indivíduo, um grupo de k registros pode representar menos do que k indivíduos, colocando em risco a proteção da privacidade de algum indivíduo. Para resolver esta questão, [Wang and Fung 2006] propuseram o modelo (x,y)-anonymity em que x e y representam conjuntos de atributos disjuntos, onde cada valor de x descreve um conjunto de registros (ex.: x =data nascimento) e está ligado a pelo menos k valores distintos de y (ex.: y = data infração). A associação entre x e y proposta pelo modelo dificulta a descoberta de atributos sensíveis l-diversity O modelo l diversity proposto por [Machanavajjhala et al. 2006] captura o risco da descoberta de atributos sensíveis em um banco de dados anonimizado. o modelo l diversity requer que, para cada combinação de atributos semi-identificadores (grupo SI), deva existir pelo menos l valores bem representados para cada atributo sensível. 59

60 A definição de l diversity proposta por [Machanavajjhala et al. 2006] é a seguinte: um grupo SI é l-diverso se contiver pelo menos l valores bem representados para os atributos sensíveis. Uma tabela é l-diversa se cada grupo SI for l-diverso. Proporciona privacidade, mesmo quando não são conhecidas quais informações o atacante possui, pois garante a existência de pelo menos l valores de atributos sensíveis em cada grupo SI. Dado um grupo SI = {data nascimento, data infração}, considere uma tabela a ser anonimizada onde existem registros de motoristas com datas de nascimento de 1960 a 1980, totalizando 240 meses e datas de infração do ano de 2013 (12 meses). Nesta tabela, podem existir no máximo 240 x 12 = grupos SI distintos. Se for definido um limite k = 5 para a k-anonimização destes dados, cada grupo SI deverá ter pelo menos 5 registros com valores identicos para os atributos semi-identificadores. Por exemplo, utilizando-se o modelo l diversity, os atributos sensíveis (tipo de infração e valor da multa) deverão ter l valores distintos em cada grupo SI. A Tabela 2.11 ilustra um exemplo dos registros do grupo SI = {03/1977,01/2013}. Se for definido o valor de l = 3, este grupo deverá ser excluído pois a diversidade dos atributos sensíveis tem apenas 2 valores distintos ({1,2},{170,250}) neste grupo. Tabela Grupo SI = 03/1977,01/2013 Data Nascimento Data Infração Tipo Infração Valor da Multa 03/ / ,00 03/ / ,00 03/ / ,00 03/ / ,00 03/ / ,00 03/ / ,00 03/ / ,00 A interpretação do princípio de valores bem representados para os atributos de cada grupo SI pela métrica l-diversity originou 3 variações desta métrica: [Ninghui et al. 2007] a) l diversity com valores distintos: neste caso existem l valores distintos para cada grupo SI. Um grupo SI pode ter um valor que apareça mais frequentemente que outros valores, possibilitando ao atacante re-identificar este valor ao sujeito que está presente no grupo SI. Este ataque é denominado ataque de probabilidade de inferência. b) l diversity com entropia: neste caso, a entropia da tabela inteira deve ser pelo menos log(l) e a entropia de cada grupo SI deve ser maior ou igual a log(l). Esta definição é mais forte do que a definição anterior e pode ser muito restritiva se existirem poucos valores com alta frequência de ocorrência na tabela. A entropia de cada grupo SI é definida pelo indíce de diversidade de Shannon: Entropia(SI) = s SI f (s)log( f (s)) onde f (s) é a fração de registros do grupo SI que contem atributo sensível com valor igual a s. 60

61 c) (c,l)-diversity recursivo: Considere um grupo SI em que existem diversos valores para o atributo S, dado pelo conjunto {s 1,...,s m }. Considere o conjunto de contagem destes valores (Ex.: r 1 = count(*) where S=s 1 ), ordenados em ordem decrescente {r 1,...r m }, neste caso, dada uma constante c, cada grupo SI satisfaz recursivamente (c,l)-diversity se r 1 < c(r l + r l r m ). Este procedimento assegura que valores muito frequentes não apareçam tão frequentemente e que valores mais raros não apareçam tão raramente nos grupos SI. Um grupo SI satisfaz (c,l)-diversity recursivo se for possível eliminar um valor sensível e mesmo assim o grupo SI continuar (c,l-1)-diverso. [Ninghui et al. 2007] apresenta alguns problemas do modelo l diversity: a) O modelo é limitado na pressuposição do conhecimento do adversário sobre os atibutos sensíveis. Por exemplo, não considera a possibilidade do adversário obter informações sobre um atributo sensível a partir da informação da frequência da distribuição global deste atributo na tabela. b) O modelo assume que todos os atributos sensíveis são categorizados, desconsiderando atributos numéricos, nos quais, apenas pode ser suficiente a descoberta de valores aproximados. Segundo [Ninghui et al. 2007], l diversity é vulnerável a dois tipos de ataques: ataque de assimetria (Skewness attack) e ataque de similaridade (Similiarity attack). Esses ataques são discutidos a seguir: a) Ataque de assimetria: ocorre quando existe grande assimetria na distribuição dos valores dos atributos sensíveis. Por exemplo, um atributo com 2 valores em que existe 99% de ocorrencia de um valor e 1% de ocorrência do outro valor. b) Ataque de similaridade: ocorre quando os valores em um grupo SI são distintos mas semanticamente equivalentes. Por exemplo, o atributo salário poderia ser discretizado por faixa de valores, mas as faixas de valores mais altas indicariam que os indivíduos ocupavam funções de chefia, enquanto faixas de valores mais baixas poderiam indicar pessoas recém-contratadas que ocupavam funções operacionais LKC-Privacy Uma das maneiras de evitar o ataque de ligação de atributo consiste em utilizar a técnica de generalização de dados em grupos SI, de forma que cada grupo contenha k registros com os mesmos valores de semi-identificadores e diversificação dos atributos sensíveis para desorientar inferências do atacante sobre atributos da vítima conhecidos por ele [Fung et al. 2010]. O problema de aplicar esta técnica quando a quantidade de atributos semi-identificadores é muito grande é que a maior parte dos atributos tem que ser suprimida para se obter k-anonimização, o que diminue a qualidade dos dados anominizados. Este problema foi identificado por [Aggarwal 2005] e é conhecido como problema da alta dimensionalidade dos dados em k-anonimização. 61

62 [Mohammed et al. 2009] criaram o modelo LKC Privacy como uma proposta de solução para o problema da alta dimensionalidade dos dados. Este modelo parte do pressuposto de que o atacante não possui todas as informações dos atributos semiidentificadores do seu alvo. Neste caso, é razoável supor que o atacante possui conhecimento de pelo menos "L"valores de atributos semi-identificadores. O modelo LKC Privacy assegura que cada combinação de valores de atributos SI em SI j SI com tamanho máximo L em uma tabela T seja compartilhada por pelo menos K registros, e a confiança da inferência de qualquer valor sensível em S não seja maior do que C, onde L, K e C são limites e S é um conjunto de valores de atributos semiidentificadores. O modelo limita a probabilidade de sucesso na identificação do registro da vítima a ser menor ou igual a 1/K e a probabilidade de sucesso no ataque de ligação de atributo a ser menor ou igual a C, considerando que o conhecimento prévio do adversário não excede o valor de L. [Fung et al. 2010] apresenta propriedades do modelo LKC Privacy que são adequadas para anominização de dados com alta dimensionalidade: a) Requer que apenas um subconjunto de atributos semi-identificadores seja compartilhado por k registros. Este relaxamento da restrição tradicional de k-anonimização baseia-se na premissa de que o adversário tem limitado conhecimento dos atributos sensíveis da vítima. b) Generaliza vários modelos tradicionais de k-anonimização. Por exemplo: k-anonymity é um caso especial de LKC Privacy onde L = Conjunto de Todos os Atributos semiidentificadores, K = k e C = 100%; l diversity é um caso especial de LKC Privacy onde L= conjunto de todos os atributos semi-identificadores, K = 1 e C = 1/l. c) É flexível para ajustar o dilema entre privacidade de dados e utilidade de dados. Aumentando L e K ou diminuindo C pode-se aumentar a privacidade, embora isso reduza a utilidade dos dados d) É um modelo de privacidade geral que evita ataques de ligação de registro e ligação de atributos. É aplicável para anonimização de dados com ou sem atributos sensíveis. A seguir, na Tabela 2.14, é apresentado um exemplo de anonimização utilizando o modelo LKC Privacy que satisfaz (2,2,50%)-privacidade pela generalização de todos os valores dos atributos SI da Tabela 2.12, de acordo com a taxonomia proposta na Tabela Cada possível valor de SI j (SI 1 = {Sexo, Idade}, SI 2 = {Sexo, Data Infração}, SI 3 = {Idade, Data Infração}) com tamanho máximo igual a 2 na Tabela 2.14 é compartilhado por pelo menos 2 registros. Neste caso, a confiança do atacante inferir o valor sensível de tipo de infração = 1 não é maior do que 50% t-closeness Este modelo propõe-se a corrigir algumas limitações de l diversity no que diz respeito à proteção contra divulgação de atributo. O objetivo é limitar o risco de descoberta a 62

63 Tabela Multas de Trânsito do Mês de Janeiro/2014 Semi-identificadores Atributos Sensíveis Id Sexo Idade Data Infração Tipo Infração Valor Multa 1 M 37 03/01/ ,00 2 F 22 30/01/ ,00 3 F 37 03/01/ ,00 4 M 18 13/01/ ,00 5 M 19 04/01/ ,00 6 M 36 05/01/ ,00 7 F 22 05/01/ ,00 8 F 47 20/01/ ,00 Tabela Mapeamento de Valores entre Domínios Sexo Idade Data Infração Domínio Domínio Domínio Domínio Domínio Inicial Domínio Final Inicial Final Inicial Final M P 27 [1-30] DD/MM/AAAA MM/AAAA F P 57 [30-60] Tabela Dados Anonimizados (L = 2, K = 2, C = 0,5) Semi-identificadores Atributos Sensíveis Id Sexo Idade Data Infração Tipo Infração Valor Multa 1 P [30-60] 01/ ,00 2 P [1-30] 01/ ,00 3 P [30-60] 01/ ,00 4 P [1-30] 01/ ,00 5 P [1-30] 01/ ,00 6 P [30-60] 01/ ,00 7 P [1-30] 01/ ,00 8 P [30-60] 01/ ,00 um nível aceitável. A técnica t closeness utiliza o conceito de "conhecimento global de retaguarda", que pressupõe que o adversário pode inferir informações sobre atributos sensíveis, a partir do conhecimento da frequência de ocorrência destes atributos na tabela. Como os dados anonimizados disponibilizados devem conter a maior parte ou todos os registros da tabela original, é possível para o atacante calcular a medida da distribuição do atributo sensível em relação ao total de registros da tabela. Por exemplo, considere uma tabela anonimizada de registros de multas de trânsito em que foram disponibilizados registros. A Tabela 2.15 apresenta a frequência do atributo "Tipo de Infração". O modelo t closeness estima o risco de divulgação computando a distância entre a distribuição de atributos confidenciais dentro do grupo SI e a tabela inteira. Esta métrica requer que a distribuição de um atributo sensível em qualquer grupo SI seja um valor pró- 63

64 Tabela Frequência do Atributo "Tipo de Infração" Tipo de Quant. Registros Frequência Infração % % % % Total % ximo do valor da distribuição do atributo em relação à tabela inteira [Ninghui et al. 2007]. Sendo Q a medida da distribuição do atributo sensível em toda a tabela e P a medida da distribuição do atributo sensível em um grupo SI, quanto mais próximas estas medidas estiverem, menor será o conhecimento que o atacante poderá ter sobre indivíduos específicos e maior será o grau de privacidade dos grupos SI. A distância entre as duas distribuições não pode ser maior que um limite t. t closeness limita as possibilidades de um adversário obter informações sobre atributos sensíveis pela análise da distribuição de valores globais destes atributos. [Ninghui et al. 2007] sugere o uso da fórmula da distância variacional para calcular a distância entre P = {p 1,p 2,p 3,...,p m } e Q ={q 1,q 2,q 3,...,q m }, definida pela medida Earth-Mover Distance (EMD), que mede a quantidade mínima de esforço necessário para mover uma distribuição de massa entre pontos de um espaço probabilístico [Liang and Yuan 2013]. O valor de EMD entre duas distribuições em um espaço normalizado é um número entre 0 e 1. A fórmula EMD é apresentada a seguir: D[P,Q] = m i=1 1 2 p i q i. Por exemplo, considere o grupo SI = {03/1977,01/2013} da Tabela 2.16 que contém apenas infrações do tipo 1 e 2. A distribuição de frequência do atributo "tipo de infração"no grupo SI é P = {50%,50%,0%,0%}. A distribuição do atributo "tipo de infração"na tabela toda, de acordo com a tabela 2.16 é Q = 11%,11%,44%,33%. Calculando a distância entre P e Q utilizando EMD, obtem-se o valor de 0,775 (77,5%). Quanto maior for a distância entre P e Q, maior a probabilidade da descoberta de atributos sensíveis. Tabela Grupo SI = (03/1977,01/2013) Data Nascimento Data Infração Tipo Infração Valor da Multa 03/ / ,00 03/ / ,00 03/ / ,00 03/ / ,00 03/ / ,00 03/ / ,00 64

65 b-likeness O modelo b likeness, proposto por [Cao and Karras 2012], assegura que a confiança de um atacante no valor de um atributo sensível não aumenta em termos relativos, mais que um limite b pré-estabelecido, depois que o atacante tem conhecimento dos dados publicados. A definição básica de b likeness, formulada por [Cao and Karras 2012], é de que dada uma tabela T que contem atributos sensíveis (sensitive attributes-sa), seja V = {v 1,v 2,v 3,...,v m } o domínio de SA e P = {p 1,p 2,p 3,...,p m } a distribuição global de SA em T. Uma classe de equivalência G com distribuição de atributos sensíveis Q = {q 1,q 2,q 3,...,q m } satisfaz um limite básico b likeness, se e somente se max{d(p i,q i ) p i P, p i < q i } b onde b > 0 é um limite e D é uma função de distância entre p i e q i. A distância D deve ser grande o suficiente para proteger os dados de ataques de assimetria (Skewness attack) e de similaridade (Similiarity attack). Esta técnica difere das anteriores em relação ao uso da função de distância D para estabelecer o limite de distância máximo, ao invés da distância cumulativa entre os atributos sensíveis. É utilizada uma medida relativa, ao invés das medidas absolutas utilizadas pelas funções cumulativas de diferenças de frequências dos outros modelos anteriores. D é calculado pela fórmula D(p i,q i ) = p i,q i p i O modelo b likeness apresenta-se como uma solução ao problema da exposição de privacidade de valores de atributos sensíveis que ocorrem com menor frequência. Em geral, modelos de privacidade, como o t-closeness, que utilizam funções cumulativas de diferenças de frequências entre as distribuições não conseguem fornecer uma relação compreensível entre o limite t e a privacidade proporcionada pelo modelo. Tais modelos não dão atenção aos valores de atributos sensíveis que são menos frequentes e que são mais vulneráveis a exposição de privacidade. A restrição imposta à função D(p i,q i ) de ser menor ou igual ao limite b, tem como consequência, a criação de um limite superior para a frequência de v i V em qualquer classe de equivalência G, conforme descrito na expressão (q i p i )/p i b q i p i (1 + b). Esta função representa um limite de proteção de privacidade compreensível apenas se p i (1 + b) < 1, neste caso, valores de p i < 1/(1 + b) devem ser monitorados, pois pode ocorrer de tais valores assumirem valor igual a 1 na classe de equivalência, tornando possível ao atacante, que saiba que o registro da vítima está presente na classe de equivalência, a inferência do valor atributo sensível com 100% de confiança Busca Criptográfica Busca Criptográfica (Searchable Encryption) é uma técnica que provê funcionalidades de pesquisa em dados encriptados sem requerer a chave de encriptação. Esta técnica utiliza duas partes: um cliente e um servidor que armazena um banco de dados D encriptado, onde o cliente possui uma chave de acesso Q e a utiliza para obter o resultado da consulta Q(D) sem revelar o texto e o resultado da consulta para o servidor. Uma chave de acesso é um conjunto de palavras codificadas que estão relacionadas a palavras-chaves associadas aos registros da tabela pesquisada no banco de dados. A consulta retornará os registros em que houver coincidência entre as palavras da chave de acesso Q e as palavras dos registros da tabela. 65

66 Como exemplo de um cenário de uso de busca encriptada, suponha que um determinado cliente deseja armazenar seus dados médicos criptografados em um banco de dados na nuvem, de forma que possa recuperar os registros seletivamente. O cliente associa um conjunto de palavras-chaves para cada registro da tabela, por exemplo tipo da doença. Para usar a busca criptográfica, o cliente criptografa o conjunto de palavras chaves que estão associadas aos registros da tabela. Os registros dos dados médicos também são criptografados usando algum esquema de criptografia padrão. As palavras-chaves e os dados médicos são armazenados em uma tabela no banco de dados. Para consultar registros que estejam associados com a palavra "diabetes", o cliente cria uma chave de consulta Q usando a palavra "diabetes"e envia a consulta para o servidor, que verificar cada palavra-chave da tabela e seleciona os registros onde existe correspondência entre a chave de consulta e a palavra-chace "diabetes", retornando estes registros para o cliente, caso existam. Neste caso, o servidor obtém a informação de quais registros foram retornados, mas não aprende nada sobre o conteúdo destes registros. Esquemas de busca criptográfica podem utilizar esquemas criptográficos baseados em chave simétrica ou chave pública. Esquemas de chave pública são adequados para atributos multi-usuário, em que qualquer cliente pode encriptar os dados utilizando parâmetros públicos, mas somente um usuário pode realizar consultas aos dados. No esquema de chave simétrica, apenas o proprietário da chave secreta pode criar as palavras-chaves. A Tabela 2.17 mostra uma comparação entre os esquemas de criptografia de chave pública e chave simétrica. Tabela Comparação entre Esquemas de Busca Criptográfica. Fonte:[Sedghi 2012] Busca criptográfica com chave simétrica Criado por uma chave secreta Busca criptográfica com chave pública Criado por parâmetros públicos Construção do texto cifrado pesquisável Gerenciamento Atributos de usuário único Atributos de multiusuário da chave Funcionalidade Busca por um palavra chave Busca por uma palavra chave e decriptação parcial dos dados Desempenho Mais eficiente Menos eficiente 2.6. Private Information Retrieval Segundo [Yang et al. 2011a], para proteger a privacidade do padrão de acesso a dados, a intenção de cada operação de acesso a dados deve ficar escondida de forma que quem estiver observando a transação, não obtenha nenhuma informação significativa. PIR - Private Information Retrieval é uma técnica de consulta em bancos de dados públicos não criptografados com proteção à violação de privacidade de acesso dos usuários. Uma violação de privacidade de acesso ocorre quando, além de aprender as propriedades dos dados estatísticos agregados, o provedor de nuvem pode, com alta probabilidade de acerto, saber determinada informação privada do usuário a partir de dados criptografados armazenados. Protocolos PIR permitem que clientes recuperem informações de bancos de dados públicos ou privados sem revelarem para os servidores de banco de dados quais registros são 66

67 recuperados. [Olumofin and Goldberg 2012] argumentam que, pela proteção do conteúdo das consultas, PIR pode proteger importantes domínios de aplicações, tais como banco de dados de patentes, banco de dados farmaceuticos, censo online, serviços baseados em localização e análise de comportamento online para propaganda pela rede. Um esquema PIR modela o banco de dados como uma string binária x = x 1,x 2,x 3,...,x n de tamanho n. Cópias idênticas desta string são armazenadas em k servidores, sendo k 2. Os usuários possuem um índice i (um inteiro entre 1 e n) e estão interessados em obter o valor do bit x i fazem consultas aleatórias aos servidores e obtém respostas com as quais podem computar o bit x i. As consultas realizadas aos servidores são distribuidas independentemente do valor de i para que os servidores não obtenham nenhuma informação sobre i. As consultas não recuperam necessariamente um bit em particular ou conjuntos de bits. Elas podem definir funções computadas pelos servidores, como por exemplo, uma consulta pode especificar um conjunto de índices entre 1 e n e a resposta do servidor pode ser o XOR dos bits que possuem estes índices. O parâmetro de maior relevância nos esquemas PIR é a complexidade da comunicação entre o usuário e os servidores. Os protocolos mais eficientes para comunicaçao com 2 servidores têm complexidade de comunicação de O(n 1 3 ) [Chor et al. 1998]. Devido ao fato dos esquemas PIR utilizarem dados não criptografados, [Yang et al. 2011b] argumenta que eles não são adequados para uso em ambientes de nuvens não confiáveis SMC-Secure Multiparty Computation SMC (Secure Multiparty Computation) é técnica de processamento distribuido de dados, com garantia de privacidade. No SMC, um conjunto de partes interessadas deseja avaliar alguma função de interesse comum ao grupo e para tal processa dados individuais privados sem revelar estes dados uns aos outros. Apenas a saída da função é disponibilizada para todas as partes. O processamento de dados de forma colaborativa é muitas vezes necessário em ambiente de nuvem. No processamento distribuído, as partes podem ser adversários passivos que tentam obter informação "extra"sobre os dados de outras partes. Neste método, cada cliente C i possui uma entrada privada x i, e todos os clientes computam uma função pública f (x 1,x 2,x 3,...,x n ) sem revelar x i para os outros, exceto o que pode ser derivado da entrada ou saída da função Anonimização por Decomposição A criptografia é uma ferramenta útil para proteção da confidencialidade de dados sensíveis. Entretanto, quando os dados são encriptados, a realização de consultas se torna um desafio. Assim, embora a encriptação dos dados proporcione confidencialidade, os dados encriptados são muito menos convenientes para uso do que os dados descriptografados. Quando utilizada com bancos de dados relacionais, a criptografia cria dois grandes problemas. O primeiro problema é que os bancos relacionais requerem que os tipos de dados sejam definidos antes do seu armazenamento. O segundo problema é que consultas ou funções não podem ser executadas sobre dados criptografados. Não é possível avaliar faixas de datas ou fazer comparações de valores em dados criptografados. As estruturas de índice também não podem ser utilizadas. Adicionalmente, os métodos baseados em criptografia precisam incluir estraté- 67

68 gias de geração e distribuição de chaves [Tian and Zhang 2012]. Porém, existem várias desvantagens relacionadas com a gestão de chaves criptográficas, tais como: a) A necessidade de guardar as chaves pelo mesmo tempo em que os dados permanecerem criptografados. b) A atribuição ou a revogação de chaves para o acesso aos dados por parte dos usuários. c) A necessidade de manter múltiplas cópias encriptadas do mesmo arquivo, para acesso multi-usuário utilizando chave-pública. Neste sentido, novas técnicas para assegurar a privacidade dos dados armazenados na nuvem, que não sejam baseadas em criptografia, tornam-se necessárias em diversos cenários de aplicação. Desta forma, esta seção apresenta uma estratégia para preservar a privacidade dos dados armazenados na nuvem, denominada "decomposição", que utiliza decomposição e dispersão de arquivos para separar dados em partes irreconhecíveis e armazená-las em servidores distribuídos na nuvem. Além disso, a abordagem proposta não criptografa os dados a serem armazenados e processados na nuvem. A técnica de "decomposição"extrai informações dos arquivos de dados sobre quantidade, qualidade e medida. Os arquivos de dados são considerados objetos. Cada objeto, segundo Hegel, na doutrina do SER [HEGEL 1988], possui três características que o determinam: a qualidade, a quantidade e a medida. Em um arquivo de dados, a qualidade é representada pelas 256 combinações possíveis dos 8 bits que formam os bytes que compõem o arquivo. A quantidade é o número de vezes que cada byte é encontrado no arquivo e a medida é a ordem em que os bytes estão dispostos no arquivo. Por exemplo, em um arquivo de 256 bytes onde ocorrem apenas os bytes que representam as letras "A","B","C"e "D"em igual proporção, por exemplo: Arquivo: "ABCDABCDABCDABCDABCDABCDABCD...ABCD"(256 bytes) Quantidade: 64(A), 64(B), 64(C),64(D) Qualidade: A,B,C,D Medida: A (1 o,5 o,9 o,13 o o ), B (2 o,6 o,10 o,14 o...,254 o ), C (3 o,7 o,11 o,15 o...,255 o ), D (4 o,8 o,12 o,16 o,256 o ) A seguir, apresentamos as etapas que compõem a técnica de "decomposição": 1) O algoritmo de decomposição lê sequências de 256 bytes do arquivo de dados. Iremos nos referir de agora em diante a este conjunto de bytes como I-Objeto. 2) O algoritmo extrai as informações de qualidade, quantidade e medida do I-Objeto, armazenando estas informações em dois arrays com tamanho de 256 elementos cada um: o array de inteiros Quantidade-Qualidade[256] e o array de caracteres Medida[256]. Iremos nos referir a estes arrays como vetores daqui por diante. 68

69 3) O vetor Quantidade-Qualidade[256] irá armazenar, para cada um dos diferentes bytes existentes no I-Objeto, o número de vezes que este byte é encontrado no I-Objeto. Por exemplo, se o byte = estiver presente 20 vezes no I-Objeto, o item Quantidade-Qualidade[15] será igual a 20. Caso o byte não estiver presente, o valor do item Quantidade-Qualidade[15] será igual a zero. 4) Para cada item do vetor Quantidade-Qualidade, o algoritmo de decomposição, converte o valor do item em uma sequência de bits 1, caso o elemento do vetor seja maior que zero. Exemplo: Quantidade-Qualidade[25]=3 VetorBits[25] = 111. Caso o elemento do vetor Quantidade-Qualidade seja igual a zero, o VetorBits não irá armazenar nenhum valor. 5) Os itens do VetorBits são concatenados da seguinte forma: VetorBits[0]+ 0 + Vetor- Bits[1]+ 0 +, VetorBits[255], produzindo um vetor de 512 elementos, que é usado como entrada em uma função que lê o vetor em sequências de 8 itens e converte para a representação ASCII correspondente, criando uma sequência de 64 bytes, que é gravada no arquivo quantidade-qualidade.dec. Ex: é convertido para a letra A 6) O vetor de caracteres Medida[256] irá armazenar, para cada elemento do vetor Quantidade-Qualidade[256] > 0, a ordem em que os bytes aparecem no I-Objeto. A posição dos bytes irá variar de 0 a 255, representando do 1 o ao 256 o byte contido no bloco de dados. O vetor usará o valor decimal do byte para representar os valores das posições dos bytes do I-Objeto. A Tabela 2.18 mostra um exemplo em que o byte-1 ocorre 3 vezes e o byte-3 ocorre 1 vez no I-Objeto e não há ocorrência dos bytes 0, 2 e 255. O vetor Medida[256] é gravado no arquivo medida.dec. Tabela Exemplo de Preenchimento de Vetores de Qualidade-Quantidade e Medida Itens Vetor Quantidade_Qualidade[256] Itens Vetor Medida[256] Quantidade_Qualidade[0]=0 Quantidade_Qualidade[1]=3 Medida[1] = 5 10 = Medida[2] = = Medida[3] = = Quantidade_Qualidade[2]=0 Quantidade_Qualidade[3]=1 Medida[4] = = Quantidade_Qualidade[255]=0 Os arquivos medida.dec e quantidade-qualidade.dec são armazenados em provedores de nuvem diferentes. Neste caso, cada um dos arquivos é insuficiente para reconstruir o arquivo original. Por exemplo, supondo que o provedor que possua o arquivo quantidade-qualidade.dec tentasse reconstruir um bloco de 256 bytes do arquivo original. Utilizando o método de força-bruta para tentar reconstruir a sequência de 256 bytes de um I-Objeto, a probabilidade do provedor descobrir a sequência correta dos bytes, conhecendo a quantidade e a qualidade é uma permutação repetida P de 256 elementos: Prob = 69

70 1/P 256 n1,n2,n3..., onde n1,n2,n3... são os itens de quantidade e qualidade conhecidos. Para um I-Objeto com apenas 1 byte de qualidade ou quantidade, a probabilidade é de 1/256. Para um I-Objeto com 2 bytes diferentes, a probabilidade é de aproximadamente 1/ A medida que a quantidade de itens de quantidade ou qualidade aumenta, a probabilidade de descoberta da ordem dos bytes tende a zero. Com 10 bytes diferentes no I-Objeto, a probabilidade já chega a 1/ Para o provedor de nuvem que armazena o arquivo medida.dec, ou seja, a ordem em que os bytes estão dispostos no bloco, a probabilidade de recomposição do I-Objeto, utilizando força-bruta é 1/256!, ou seja, aproximadamente 1/ Quanto maior for o arquivo, maior será a dificuldade do atacante para reconstruilo. As vantagens desta técnica sobre as técnicas convencionais que utilizam criptografia para garantir confidencialidade dos dados armazenados na nuvem são as seguintes: a) Não utilização de chaves criptográficas. b) Aplicabilidade da técnica para soluções SaaS, PaaS e IaaS sem que haja nenhuma alteração nas interfaces dos aplicativos do usuário. c) A técnica pode ser aplicada a qualquer formato de dado armazenado (dados e programas). d) Não há limitação máxima para o tamanho do arquivo a ser anonimizado. e) A solução suporta expurgo de dados da nuvem, pois os arquivos disponibilizados em provedores distintos não revelam informações sobre os dados originais. Caso o usuário deixe a nuvem, os dados podem ser considerados automaticamente expurgados. A recomposição do arquivo original é feita pela recuperação dos arquivos quantidade-qualidade.dec e medida.dec que estão armazenados em 2 provedores distintos na nuvem, que são utilizados como entrada para o algoritmo de remontagem do arquivo original. A complexidade computacional do algoritmo de recomposição é de O(n). A complexidade de comunicação é de O( 5 n 4 ), devido a soma do tamanho dos arquivos quantidade-qualidade.dec e medida.dec ser 25% maior do que o tamanho do arquivo original Considerações Finais Para que todo o potencial da computação em nuvem possa ser explorado pelas organizações, é de fundamental importância garantir a segurança e a privacidade dos dados armazenados na nuvem. Nos últimos anos, vários mecanismos para assegurar privacidade dos dados armazenados na nuvem têm sido propostos [Stefanov and Shi 2013, Li et al. 2013, Yang et al. 2013, Jung et al. 2013, Yeh 2013, Nimgaonkar et al. 2012]. Este minicurso discutiu o problema da privacidade dos dados armazenados e processados nos ambientes de computação em nuvem, bem como as principais abordagens atualmente existentes para solucionar este importante problema. Por fim, uma nova técnica para assegurar a privacidade dos dados processados e armazenados nos ambientes de computação em nuvem foi apresentada. 70

71 Referências [Aggarwal 2005] Aggarwal, C. C. (2005). On k-anonymity and the curse of dimensionality. In Proceedings of the 31st international conference on Very large data bases, pages VLDB Endowment. [Aggarwal and Philip 2004] Aggarwal, C. C. and Philip, S. Y. (2004). A condensation approach to privacy preserving data mining, pages Springer. [Camenisch et al. 2011] Camenisch, J., Fischer-Hübner, S., and Rannenberg, K. (2011). Privacy and identity management for life. Springer. [Cao and Karras 2012] Cao, J. and Karras, P. (2012). Publishing microdata with a robust privacy guarantee. Proc. VLDB Endow., 5(11): [Chen and Liu ] Chen, K. and Liu, L. Privacy preserving data classification with rotation perturbation. In Proceedings of the Fifth IEEE International Conference on Data Mining, pages IEEE Computer Society. [Chor et al. 1998] Chor, B., Kushilevitz, E., Goldreich, O., and Sudan, M. (1998). Private information retrieval. Journal of the ACM (JACM), 45(6): [Clarke 1999] Clarke, R. (1999). Introduction to dataveillance and information privacy, and definition of terms. [Domingo-Ferrer 2008] Domingo-Ferrer, J. (2008). A survey of inference control methods for privacy-preserving data mining, pages Springer. [Duncan et al. 2001] Duncan, G. T., Keller-McNulty, S. A., and Stokes, S. L. (2001). Disclosure risk vs. data utility: The ru confidentiality map. In Chance. Citeseer. [Fung et al. 2010] Fung, B. C., Wang, K., Fu, A. W.-C., and Yu, P. S. (2010). Introduction to Privacy-Preserving Data Publishing: Concepts and Techniques. Chapman-Hall. [Fung et al. 2007] Fung, B. C. M., Ke, W., and Yu, P. S. (2007). Anonymizing classification data for privacy preservation. Knowledge and Data Engineering, IEEE Transactions on, 19(5): [Gionis et al. 2008] Gionis, A., Mazza, A., and Tassa, T. (2008). k-anonymization revisited. In Data Engineering, ICDE IEEE 24th International Conference on, pages IEEE. [Gruschka and Jensen 2010] Gruschka, N. and Jensen, M. (2010). Attack surfaces: A taxonomy for attacks on cloud services. In Cloud Computing (CLOUD), 2010 IEEE 3rd International Conference on, pages [Guttman and Roback 1995] Guttman, B. and Roback, E. A. (1995). An introduction to computer security: the NIST handbook. DIANE Publishing. [HEGEL 1988] HEGEL, G. (1988). Enciclopédia das ciências filosóficas em epítome. 3 vols. lisboa. [Hon et al. 2011] Hon, W. K., Millard, C., and Walden, I. (2011). The problem of personal data in cloud computing: what information is regulated? the cloud of unknowing. International Data Privacy Law, 1(4):

72 [Jansen and Grance 2011] Jansen, W. and Grance, T. (2011). Guidelines on security and privacy in public cloud computing. NIST Special Publication, pages [Jr et al. 2010] Jr, A. M., Laureano, M., Santin, A., and Maziero, C. (2010). Aspectos de segurança e privacidade em ambientes de computação em nuvem. [Jung et al. 2013] Jung, T., Li, X.-y., Wan, Z., and Wan, M. (2013). Privacy preserving cloud data access with multi-authorities. In INFOCOM, 2013 Proceedings IEEE, pages [Krutz and Vines 2010] Krutz, R. L. and Vines, R. D. (2010). Cloud security: A comprehensive guide to secure cloud computing. Wiley. com. [Lane 2012] Lane, A. (2012). secure and useful data. Understanding and selecting data masking solutions: Creating [Last et al. 2014] Last, M., Tassa, T., Zhmudyak, A., and Shmueli, E. (2014). Improving accuracy of classification models induced from anonymized datasets. Information Sciences, 256: [Li et al. 2013] Li, M., Yu, S., Ren, K., Lou, W., and Hou, Y. T. (2013). Toward privacy-assured and searchable cloud data storage services. Network, IEEE, 27(4): [Liang and Yuan 2013] Liang, H. and Yuan, H. (2013). On the complexity of t-closeness anonymization and related problems. In Database Systems for Advanced Applications, pages Springer. [Liu 2010] Liu, H. (2010). A new form of dos attack in a cloud and its avoidance mechanism. In Proceedings of the 2010 ACM workshop on Cloud computing security workshop, pages ACM. [Liu et al. 2012] Liu, J., Xiao, Y., Li, S., Liang, W., and Chen, C. L. P. (2012). Cyber security and privacy issues in smart grids. Communications Surveys & Tutorials, IEEE, 14(4): [Machanavajjhala et al. 2006] Machanavajjhala, A., Gehrke, J., Kifer, D., and Venkitasubramaniam, M. (2006). L-diversity: privacy beyond k-anonymity. In Data Engineering, ICDE 06. Proceedings of the 22nd International Conference on, pages [Mohammed et al. 2009] Mohammed, N., Fung, B. C., Hung, P. C., and Lee, C.-k. (2009). Anonymizing healthcare data: A case study on the blood transfusion service. In Proceedings of the 15th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, KDD 09, pages , New York, NY, USA. ACM. [Muralidhar and Sarathy 1999] Muralidhar, K. and Sarathy, R. (1999). Security of random data perturbation methods. ACM Transactions on Database Systems (TODS), 24(4): [Nimgaonkar et al. 2012] Nimgaonkar, S., Kotikela, S., and Gomathisankaran, M. (2012). Ctrust: A framework for secure and trustworthy application execution in cloud computing. In Cyber Security (CyberSecurity), 2012 International Conference on, pages [Ninghui et al. 2007] Ninghui, L., Tiancheng, L., and Venkatasubramanian, S. (2007). t- closeness: Privacy beyond k-anonymity and l-diversity. In Data Engineering, ICDE IEEE 23rd International Conference on, pages [Olumofin and Goldberg 2012] Olumofin, F. and Goldberg, I. (2012). Revisiting the computational practicality of private information retrieval, pages Springer. 72

73 [Pearson 2013] Pearson, S. (2013). Privacy, Security and Trust in Cloud Computing, pages Springer. [Pfitzmann and Köhntopp 2005] Pfitzmann, A. and Köhntopp, M. (2005). Anonymity, unobservability, and pseudonymity a proposal for terminology. In Designing privacy enhancing technologies, pages 1 9. Springer. [Samarati 2001] Samarati, P. (2001). Protecting respondents identities in microdata release. Knowledge and Data Engineering, IEEE Transactions on, 13(6): [Samarati and Sweeney 1998] Samarati, P. and Sweeney, L. (1998). Protecting privacy when disclosing information: k-anonymity and its enforcement through generalization and suppression. Technical report, Technical report, SRI International. [Sedghi 2012] Sedghi, S. (2012). Towards provably secure efficiently searchable encryption. University of Twente. [Spiekermann and Cranor 2009] Spiekermann, S. and Cranor, L. F. (2009). Engineering privacy. Software Engineering, IEEE Transactions on, 35(1): [Stallings 2007] Stallings, W. (2007). Network security essentials: applications and standards. Pearson Education India. [Stefanov and Shi 2013] Stefanov, E. and Shi, E. (2013). Oblivistore: High performance oblivious cloud storage. In Security and Privacy (SP), 2013 IEEE Symposium on, pages [Subashini and Kavitha 2011] Subashini, S. and Kavitha, V. (2011). Review: A survey on security issues in service delivery models of cloud computing. J. Netw. Comput. Appl., 34(1):1 11. [Tassa et al. 2012] Tassa, T., Mazza, A., and Gionis, A. (2012). k-concealment: An alternative model of k-type anonymity. Transactions on Data Privacy, 5(1): [Tian and Zhang 2012] Tian, M. and Zhang, Y. (2012). Analysis of cloud computing and its security. In International Symposium on Information Technology in Medicine and Education (ITME), TIME 12. [Wang and Fung 2006] Wang, K. and Fung, B. C. M. (2006). Anonymizing sequential releases. In Proceedings of the 12th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, KDD 06, pages , New York, NY, USA. ACM. [Wong et al. 2010] Wong, W. K., Mamoulis, N., and Cheung, D. W. L. (2010). Non-homogeneous generalization in privacy preserving data publishing. In Proceedings of the 2010 ACM SIGMOD International Conference on Management of data, pages ACM. [Yang et al. 2013] Yang, K., Jia, X., Ren, K., Zhang, B., and Xie, R. (2013). Dac-macs: Effective data access control for multiauthority cloud storage systems. IEEE Transactions on Information Forensics and Security, 8(11): [Yang et al. 2011a] Yang, K., Zhang, J., Zhang, W., and Qiao, D. (2011a). A light-weight solution to preservation of access pattern privacy in un-trusted clouds. In Proceedings of the 16th European Conference on Research in Computer Security, ESORICS 11, pages , Berlin, Heidelberg. Springer-Verlag. [Yang et al. 2011b] Yang, K., Zhang, J., Zhang, W., and Qiao, D. (2011b). A light-weight solution to preservation of access pattern privacy in un-trusted clouds, pages Springer. 73

74 [Yeh 2013] Yeh, C.-H. (2013). A secure shared group model of cloud storage. In Proceedings of the th International Conference on Advanced Information Networking and Applications Workshops, WAINA 13, pages , Washington, DC, USA. IEEE Computer Society. [Zhifeng and Yang 2013] Zhifeng, X. and Yang, X. (2013). Security and privacy in cloud computing. Communications Surveys & Tutorials, IEEE, 15(2):

75 Sobre os Autores Eliseu Castelo Branco Júnior é aluno do Curso de Doutorado em Ciências da Computação do MDCC-Mestrado e Doutorado em Ciências da Computação da UFC-Universidade Federal do Ceará e Professor do Centro Universitário Estácio do Ceará desde Possui graduação em Bacharelado em Filosofia pela Universidade Estadual do Ceará (1992),Especialização em Redes de Computadores(1994) e Mestrado em Informática Aplicada pela UNIFOR-Universidade de Fortaleza(2001). Possui e Especialização em Ciências da Computação(1995) pela UFC. Atualmente é Coordenador de Curso de Pos-graduação em Gestão de Projetos do Centro Universitário Estácio do Ceará. Possui experiência na área de Ciência da Computação, com ênfase em Sistemas de Informação, atuando nos seguintes temas: computação em nuvem, segurança da informação, privacidade de dados, gerência de projetos, multicritério, avaliação de qualidade e processos de software. Prof. Eliseu Castelo Branco Jr. é autor de artigos publicados em periódicos e conferências internacionais e nacionais. Javam de Castro Machado possui graduação em Processamento de Dados pela Universidade Federal do Ceará (1987), mestrado em Ciências da Computação pela Universidade Federal do Rio Grande do Sul (1990), Diplome detudes Approfondies (Dea) em Informática - Universite de Grenoble I (1992) e doutorado em Informática também pela Universite de Grenoble I (1995). Foi diretor da Secretaria de Tecnologia de Informação da UFC por 8 anos. Atualmente é professor associado do Departamento de Computação da Universidade Federal do Ceará, Vice-diretor do Centro de Ciências da mesma Universidade e coordenador do Laboratório de Sistemas e Banco de Dados (LSBD). É também coordenador de vários projetos de pesquisa e desenvolvimento em Computação, além de atuar como pesquisador do Programa de Mestrado e Doutorado em Ciência da Computação da UFC. Prof Javam tem vários artigos publicados em veículos nacionais e internacionais e participa de projetos de cooperação internacional com universidades européias. No momento suas áreas de interesse são sistemas de banco de dados e computação em nuvens, além de sistemas distribuídos José Maria da Silva Monteiro Filho é professor Adjunto do Departamento de Computação da Universidade Federal do Ceará, onde leciona nos cursos de graduação, mestrado e doutorado em Ciência da Computação. Possui graduação em Bacharelado em Computação pela Universidade Federal do Ceará (1998), mestrado em Ciência da Computação pela Universidade Federal do Ceará (2001) e doutorado em Informática pela Pontifícia Universidade Católica do Rio de Janeiro - PUC-Rio (2008). Tem mais de 15 anos de experiência na área de Ciência da Computação, com ênfase em Banco de Dados e Engenharia de Software, atuando principalmente nos seguintes temas: sintonia automática de bancos de dados, bancos de dados em nuvem, big data, data science e qualidade de software. Prof. José Maria Monteiro é autor de mais de 30 artigos publicados em periódicos e conferências internacionais e nacionais. 75

76 cap:3 Capítulo 3 Otimização de Desempenho em Processamento de Consultas MapReduce Ivan Luiz Picoli, Leandro Batista de Almeida, Eduardo Cunha de Almeida Abstract Performance tuning in MapReduce query processing systems is a current hot topic in database research. Solutions like Starfish and AutoConf provide mechanisms to tune MapReduce queries by changing the values of the configuration parameters for the entire query plan. In this course, it will be presented some performance tuning solutions for query processors based on MapReduce focused on a solution using Hadoop, Hive and AutoConf. Furthermore, it will be presented how the unsupervised learning can be used as a powerful tool for the parameter tuning. Resumo Otimização de desempenho em processamento de consulta MapReduce é um tópico de pesquisa bastante investigado atualmente. Soluções como o Starfish e AutoConf fornecem mecanismos para ajustar a execução de consultas MapReduce através da alteração de parâmetros de configuração. Neste minicurso serão apresentadas soluções de tuning para processadores de consulta baseados em MapReduce com foco principal numa solução baseada em Hadoop, Hive e AutoConf. Além disso, iremos discutir como um sistema de aprendizado de máquina não supervisionado pode ser utilizado como uma poderosa ferramenta na tarefa de configuração de parâmetros do sistema. 76

77 3.1 Introdução Na última década, houve um crescimento exponencial na quantidade de dados a serem armazenados na rede mundial. A Internet se tornou o meio de comunicação mais utilizado do planeta e devido à facilidade que essa tecnologia proporciona cada vez mais pessoas se juntam às redes sociais e utilizam sistemas em nuvem para armazenar arquivos e assistir vídeos em alta resolução. Além disso, ligações utilizando voz sobre IP também crescem a cada ano, auxiliando no aumento do tráfego de dados. Segundo a empresa Cisco, em 2015 o tráfego de dados mundial anual atingirá 1.0 ZB, o que equivale a 87,125 PB por mês [Cisco 2012]. Aliado a isso, sistemas de business intelligence começam a utilizar uma massa de dados cada vez maior, para gerar relatórios e estratégias de negócio. Fatores como: crescente massa de dados, a exaustão de recursos dos sistemas centralizados e seu custo mais alto para aumento de capacidade exige escalabilidade dos sistemas, obrigando a utilização de sistemas distribuídos. A escalabilidade gera grandes esforços de hardware e software para o armazenamento, processamento e transferência de informações, e processos que levavam algumas horas passam a levar dias para concluírem. Da mesma forma, podemos analisar os esforços no desenvolvimento de novos sistemas de banco de dados e data warehouse distribuídos, de acordo com a necessidade de processamento. Com o crescimento da demanda de processamento analítico, outro esforço no desenvolvimento de novos data warehouses baseados em sistemas escaláveis é atender as propriedades MAD (Magnetic, Agile e Deep) [Cohen 2009] criadas em 2009 que determinam uma arquitetura para padronização e realização de business inteligence em data warehouses. Essas características exigem que o sistema de data warehouse seja capaz de processar em tempo hábil toda a demanda requisitada. No cenário de hoje, reduzir o tempo em processamento de consultas pode gerar benefícios como economia no uso de recursos de hardware [Babu e Herodotou 2011]. O presente minicurso aborda os esforços atuais e formas de otimização do desempenho de data warehouses baseados em MapReduce. Também apresentaremos uma solução de otimização de consultas baseada em uma abordagem de aprendizado não supervisionada de máquinas BigData O conceito de Big Data é amplo, mas pode ser resumidamente definido como o processamento (eficiente e escalável) analítico de grandes volumes de dados complexos, produzidos por possivelmente várias aplicações [Labrinidis e Jagadish 2012]. É uma estratégia que se adequa a cenários onde se faz necessário analisar dados semiestruturados e não estruturados, de uma variedade de fontes, além dos dados estruturados convencionalmente tratados. Também se mostra interessante quando o conjunto completo de informações de uma determinada fonte deve ser analisada e processada, isso torna o processamento lento, permitindo análises interativas e exploratórias. Esses conceitos se apoiam nos chamados V s de BigData: Variedade, Volume e Velocidade, além de Veracidade e Valor [Troester 2012]. De maneira simplista, a Variedade mostra que os dados podem vir de fontes das mais diversas, com estrutura ou não, em formatos também diversificados. O Volume acrescenta a complexidade de se tratar espaços de dados da ordem de Pb ou Zb, e a Velocidade exige que esse 77

78 processamento ocorra ainda em tempo suficientemente pequeno para que as análises possam ser de utilidade. O Valor e Veracidade se referenciam a confiabilidade, correlação e validação das informações. Analisado pela ótica dos V s, o panorama de BigData se mostra complexo e com tarefas que fogem ao que geralmente é encontrado em processamento de dados. Sendo assim, novas técnicas de processamento distribuído vêm sendo pesquisadas, desenvolvidas e aprimoradas. Uma das tecnologias existentes é o MapReduce [Dean e Ghemawat 2004]. Desenvolvido para simplificar o processamento distribuído, o MapReduce torna os problemas de escalabilidade transparentes, possibilitando que um programa do usuário seja executado de forma distribuída sem a preocupação com os diversos fatores que dificultam esse tipo de programação. Exemplos de dificuldades são as falhas de rede e a comunicação entre os nodos de armazenamento espalhados pela rede MapReduce O MapReduce, desenvolvido em 2004 pela Google Inc. [Dean e Ghemawat 2004] foi projetado para simplificar as tarefas de processamento distribuído que necessitavam de escalabilidade linear. Esse tipo de tarefa e plataformas baseadas em nuvem podem ser reduzidas às aplicações MapReduce, juntamente com o ecossistema de aplicações envolvidas a partir dessa tecnologia emergente [Labrinidis e Jagadish 2012]. As principais características do MapReduce são a transparência quanto à programação distribuída. Dentre elas se encontram o gerenciamento automático de falhas, de redundância dos dados e de transferência de informações; balanceamento de carga; e a escalabilidade. O MapReduce é baseado na estrutura de dados em formato de chave/valor. Gerenciar uma grande quantidade de dados requer processamento distribuído, e o uso de sistemas de armazenamento e busca utilizando pares de chave/valor tornou-se comum para esse tipo de tarefa, pois oferecem escalabilidade linear. O Hadoop [Apache 2014] é uma implementação de código aberto do MapReduce, hoje gerenciado e repassado a comunidade de desenvolvedores através da Fundação Apache. Existem outras implementações baseadas em MapReduce, como por exemplo o Disco [Papadimitriou e Sum 2008], Spark [UC Berkeley 2012], Hadapt [Abouzeid 2011] e Impala [Cloudera 2014] Arquitetura do MapReduce Uma tarefa ou Job é um programa MapReduce sendo executado em um cluster de máquinas. Os programas são desenvolvidos utilizando as diretivas Map e Reduce, que em linguagem de programação são métodos definidos pelo programador. Abaixo é detalhado o modelo de cada primitiva. Map: Processa cada registro da entrada, gerando uma lista intermediária de pares chave/valor; 78

79 Reduce: A partir da lista intermediária, combina os pares que contenham a mesma chave, agrupando os valores; Para exemplificar o modelo MapReduce utilizaremos um programa que realiza a contagem da frequência de palavras em um arquivo texto. A Figura 3.1 ilustra um programa MapReduce. A função map recebe por parâmetro uma chave (nome do documento) e um valor (conteúdo do documento) e para cada palavra emite um par intermediário onde a chave é a palavra e o valor é o inteiro 1. A função reduce recebe como parâmetro uma chave (a palavra) e o valor (no caso, uma lista de inteiros 1 emitidos por map), em seguida a variável result recebe a soma dos valores contidos na lista values, e por fim a função emite o valor total de ocorrências da palavra contida em key. Figura 3.1. Primitivas Map e Reduce contando a frequência de palavras em um texto [Dean e Ghemawat 2004] Hadoop O Hadoop é um framework de código aberto desenvolvido na linguagem Java, C e Bash. O framework disponibiliza bibliotecas em Java (.jar) para desenvolvimento de aplicações MapReduce, onde o programador poderá criar suas próprias funções Map e Reduce Entrada e Saída de Dados O Hadoop possui o HDFS (Hadoop Distributed File System) [Shvachko 2010] como sistema de arquivos, sendo responsável pela persistência e consistência dos dados distribuídos. Ele também possui transparência em falhas de rede e replicação dos dados. Para que o Hadoop processe informações, essas devem estar contidas em um diretório do HDFS. Os dados de entrada são arquivos de texto, que serão interpretados pelo Hadoop como pares de chave/valor de acordo com o programa definido pelo desenvolvedor MapReduce. Após o processamento da tarefa, a saída é exportada em um ou vários arquivos de texto armazenados no HDFS e escritos no formato chave/valor Arquitetura do Hadoop O software é dividido em dois módulos, o sistema de arquivos global denominado HDFS e o módulo de processamento. Como arquitetura do sistema distribuído temos uma máquina que coordena as demais denominada master, e as outras máquinas de processamento e armazenamento denominadas slaves ou workers. 79

80 DataNode: cliente do HDFS que gerencia o armazenamento local de dados e controla pedidos de leitura e escrita em disco; NameNode: servidor mestre do HDFS que gerencia a distribuição dos arquivos na rede e controla o acesso aos arquivos; JobTracker: servidor mestre do motor de processamento do Hadoop; é responsável por coordenar a distribuição das funções Map e Reduce para cada nodo. TaskTracker: cliente do motor de processamento do Hadoop; é responsável por executar as funções Map e Reduce recebidas do JobTracker sobre os dados locais do próprio nodo; O motor de processamento MapReduce é formado pelo servidor JobTracker e vários clientes TaskTracer. Usualmente, mas não necessariamente, executa-se um DataNode e um TaskTracker por nodo, enquanto que executa-se apenas um JobTracker e um NameNode em toda a cluster/rede. A Figura 3.2 mostra a arquitetura do Hadoop e seus módulos. Figura 3.2. Arquitetura do Hadoop e seus módulos Algumas tarefas importantes executadas pelo servidor mestre (master node) são as descritas abaixo. Controla as estruturas de dados necessárias para a gerência do cluster, como o endereço das máquinas de processamento, a lista de tarefas em execução e o estado das mesmas; 80

81 Armazena o estado de tarefas Map e Reduce, como: idle (em espera), in-progress (sendo processada) ou completed (completa); Armazena as regiões e tamanhos dos arquivos onde estão localizados os pares intermediários de chave/valor; Controla todos os workers (máquinas que executam Datanode e Tasktracker), verificando se estão ativos através de estímulos por ping. A Figura 3.3 mostra o fluxo de informações citadas nesta seção, usando como exemplo a contagem de palavras. O processamento inicia-se a partir de arquivos armazenados no HDFS. Esses arquivos são divididos em partes de acordo com o tamanho definido nos parâmetros de configuração. Uma das máquinas é definida para executar o servidor mestre, responsável por atribuir tarefas de Map e Reduce às demais denominadas workers. Os workers lêem sua partição de entrada, produzindo as chaves e valores que serão passadas para a função Map definida pelo usuário. Pares intermediários de chave e valor são armazenados em buffer na memória e periodicamente salvos em disco em regiões de memória que são enviadas ao servidor mestre. Figura 3.3. Fluxo de informações durante um programa MapReduce para contar palavras 81

82 O fluxo de informações pode ser dividido nas fases a seguir: SPLIT - Fase em que a entrada é dividida entre os workers disponíveis; MAP - Execução das funções Map; SHUFFLE - Fase em que pode ocorrer o agrupamento das saídas dos Maps pela chave, facilitando os trabalhos de Reduce; REDUCE - Execução das funções Reduce; OUTPUT - Criação dos dados de saída contendo o resultado do Job Frameworks construídos sobre sistemas baseados em MapReduce O uso do MapReduce e do Hadoop em ambientes de produção cresceu na última década devido a grande massa de dados denominada BigData. Pode-se destacar o uso dessas tecnologias principalmente nas grandes empresas de tecnologia da informação. Para cada situação do cotidiano da empresa novos programas MapReduce eram gerados, porém, com o tempo o número de programas cresceu e tornou-se inviável a reescrita de programas todos os dias conforme a necessidade da empresa. Tendo em vista o desafio de gerar programas MapReduce mais eficazes e rapidamente, a empresa Facebook desenvolveu o Data Warehouse Apache Hive [Thusoo 2009] que hoje é gerenciado pela Fundação Apache e possui código aberto. O Hive é um exemplo de framework desenvolvido sobre o Hadoop. Ele possui uma linguagem declarativa chamada HiveQL para geração de consultas. O principal objetivo desse framework é a geração automática de programas MapReduce através da análise da consulta HiveQL para manipulação do data warehouse. A linguagem HiveQL não possibilita alteração e deleção de registros, mas possibilita a criação de tabelas e importação de dados de arquivos. Possibilita também criar partições nos dados para melhorar o desempenho do sistema. Quando uma partição é criada, a tabela é dividida em subtabelas internamente, tornando possível selecionar os dados apenas de uma partição se assim desejar. Isso auxilia na redução de leitura em disco. A Figura 3.4 mostra um script HiveQL gerado pela empresa Facebook. Figura 3.4. Exemplo de script HiveQL [Thusoo 2009] 82

83 Podemos observar na Figura 3.4 a manipulação de duas tabelas e a execução de um join. Após, é populada a tabela gender_summary que conterá o resultado do agrupamento pelo atributo gender. E por fim, é populada a tabela school_summary contendo o resultado do agrupamento pela escola. Existem diversos frameworks desenvolvidos sobre sistemas baseados em MapReduce, outro exemplo de framework sobre o Hadoop é o Pig [Olston 2008] e sua linguagem declarativa PigLatin. Outro exemplo de framework é o Shark sobre o Spark [UC Berkeley 2012]. Além de sistemas de data warehouse, existem frameworks para otimização das tarefas executadas. Existem várias formas de otimizar a execução de uma tarefa, uma delas é ajustar os valores dos parâmetros de configuração do sistema MapReduce. O Hadoop, por exemplo, possui mais de 200 parâmetros de configuração. Um exemplo de framework construído sobre o Hadoop para otimização é o Starfish [Herodotou 2011], sendo responsável por sugerir uma melhor configuração de parâmetros ao administrador do sistema para cada tarefa MapReduce executada Otimização de Consultas em MapReduce Nesta seção apresentamos de forma geral como funciona a otimização de desempenho do processamento de consultas MapReduce. O desempenho de aplicações MapReduce é afetado por diversos fatores, como por exemplo a leitura e escrita em disco que torna-se custoso devido ao sistema de arquivos estar fragmentado na rede. Tarefas com diferentes usos de recursos requerem configurações diferentes em seus parâmetros para que haja diminuição no tempo de resposta da aplicação. Um software auto ajustável, o qual ajusta seus parâmetros de acordo com a carga de trabalho submetida é uma solução para a diminuição do tempo de processamento dos dados. O ajuste de parâmetros para otimização pode ser feito de duas formas, pelo administrador do cluster ou automaticamente por uma ferramenta de auto ajuste. A segunda alternativa é mais complexa, pois é necessário que as tarefas sejam classificadas e os parâmetros sejam ajustados antes que a tarefa seja executada. Os parâmetros geralmente já estão predefinidos no sistema de otimização, como no Starfish, mas sua arquitetura apenas gera um perfil da tarefa que foi executada e não aplica o ajuste em tempo de execução. O administrador deverá ajustar esses parâmetros manualmente para que nas próximas tarefas o sistema esteja otimizado. O desempenho das aplicações MapReduce está ligado diretamente aos parâmetros de configuração, e o correto ajuste desses parâmetros faz com que as aplicações aloquem recursos computacionais distribuídos de maneira mais eficiente. Para que um software de auto ajuste de parâmetros seja capaz de identificar os valores corretos, vê-se necessário a implementação de regras que classificam as tarefas de MapReduce. Alguns softwares de otimização preveem o possível uso de recurso computacional antes mesmo da execução propriamente dita. Porém, essa classificação não mostra o real uso de recursos que a tarefa irá utilizar e sim uma projeção através de regras impostas, este é o caso do Starfish e AutoConf. A sessão mostra uma visão sobre como classificar uma tarefa MapReduce através de um perfil e como é possível utilizar arquivos de log para classificálas. A sessão apresenta o AutoConf, uma ferramenta que auxilia um data warehouse baseado em MapReduce a otimizar suas consultas a partir da análise dos operadores da consulta. A sessão mostra uma abordagem que utiliza a análise de log em conjunto 83

84 com uma ferramenta de otimização baseada em regras, com o objetivo de obter uma otimização mais eficaz Geração de Perfis e Análise de Log A geração de perfis consiste em coletar informações sobre a execução de uma tarefa e criar o que chamamos de perfil, contendo todas as informações coletadas. Essa técnica é importante, pois através de buscas e análises nas informações coletadas é possível ajustar os parâmetros de sistemas MapReduce. A análise de log irá auxiliar na geração de um perfil mais preciso para as tarefas, pois os arquivos de log contêm informações de tarefas já executadas e qual foi o comportamento das mesmas, em termos de uso de recursos computacionais. Sendo assim, tarefas similares podem receber ajustes de parâmetros de acordo com o comportamento já conhecido. Sistemas como o Mochi [Tan 2009] e o Rumen [Apache 2013] analisam os logs do Hadoop com a finalidade de mostrar ao administrador informações relevantes sobre o ambiente, como tempo total de execução, volume de dados processados e tarefas falhas. O uso de logs para descoberta de padrões de comportamento é uma opção que auxilia na otimização. O Hadoop, por exemplo, possui um módulo que gerencia o histórico de execução de suas tarefas chamado JobHistory, onde no decorrer da execução de uma tarefa esse módulo cria logs que são constituídos por dois arquivos, um arquivo de configuração (xml) e outro contendo o histórico de execução detalhado. É a partir desses logs que se torna possível o uso de um mecanismo de classificação para encontrar um comportamento comum de uso de recursos computacionais. No caso do Hadoop, as informações mais relevantes a serem extraídas se encontram armazenadas nos contadores gerados durante a execução da tarefa. Como por exemplo, a quantidade bytes lidos do HDFS. A Figura 3.5 mostra alguns exemplos de parâmetros de configuração utilizados por uma tarefa Hadoop, e a Figura 3.6 mostra o histórico de um Map contendo um contador. Ambas as figuras foram extraídas de arquivos de log do Hadoop. Na Figura 3.5 podemos observar nas linhas 15, 16 e 17 parâmetros contendo valores inteiros, porém, a partir da linha 18 observamos um parâmetro contendo uma consulta, esse parâmetro é o nome da tarefa. Na Figura 3.6, podemos observar na linha 9 o identificador do Job e seu estado. Na linha 10 observamos uma subtarefa de Map, seu identificador e horário de início em milissegundos. Nas linhas 11 e 12 observamos as fases de execução do Map e seu histórico, contendo os contadores e as informações a serem extraídas para classificação. 84

85 Figura 3.5. Exemplos de parâmetros de configuração armazenados em arquivo de log do Hadoop Figura 3.6. Histórico de execução de um Map extraído de arquivo de log do Hadoop AutoConf AutoConf [Lucas Filho 2013] é uma ferramenta desenvolvida para otimização de consultas do sistema de Data Warehouse Apache Hive. O Hive analisa a consulta e a divide em estágios, onde cada estágio é um Job no Hadoop. O AutoConf realiza a análise dos operadores utilizados em cada estágio da consulta e extrai uma assinatura de código para esses estágios, por exemplo, se uma consulta possui um operador TableScan e um GroupBy então é atribuído a assinatura de código referente a essa estrutura. Cada assinatura possui uma configuração de parâmetros associada, a qual é aplicada em tempo de execução no Hadoop antes da tarefa ser executada. Ou seja, as tarefas MapReduce ou estágios da consulta serão executados após o autoajuste dos parâmetros, e cada estágio poderá receber valores de parâmetros diferentes de acordo com os operadores da consulta. Os grupos de tarefas classificadas a partir das assinaturas de código recebem o nome de grupos de intenção. A Figura 3.7 mostra a arquitetura do AutoConf e sua integração com o ecossistema do Hadoop. 85

86 O processo de otimização do AutoConf na Figura 3.7 é descrito a seguir. Em (1) as Interfaces de Usuário submetem uma consulta HiveQL; Após o Hive gerar e otimizar o plano de consulta, em (2) os estágios da consulta (Jobs) são enviados ao Hadoop; O JobTracker antes de ordenar a execução em (3) envia a consulta ao AutoConf; Após a extração da assinatura de código e a associação com a configuração correta, em (4) o AutoConf envia ao JobTracker os valores de parâmetros a serem ajustados; Por fim o JobTracker ajusta os parâmetros e ordena a execução da tarefa que agora possui as configurações ajustadas. Figura 3.7. AutoConf em meio ao ecossistema do Hive e Hadoop [Lucas Filho 2013] Uma Abordagem de Otimização de Consultas por Análise de Log O AutoConf, como vimos, classifica os estágios da consulta (tarefas MapReduce) antes da execução, analisando o script HiveQL e extraindo os operadores. Essa forma de otimização prevê o uso de recursos computacionais para classificar as tarefas. A junção da análise da consulta, no caso HiveQL, e a análise do histórico de logs é uma forma de classificar mais corretamente as tarefas oriundas da consulta. Essa hipótese existe devido aos seguintes tópicos. 86

87 Os arquivos de log dos sistemas MapReduce contêm dados que não se encontram antes da execução da tarefa, como por exemplo a quantidade total de bytes lidos e escritos em disco; O uso de regras para classificação gera predições de uso de recursos computacionais, predições são menos representativas do que os dados armazenados em arquivos de log; Os clusters e perfis criados antes da execução da tarefa são pouco representativos em termos do comportamento real das tarefas, pois utilizam regras; A melhoria citada é recriar e ajustar os grupos gerados pelos otimizadores que abordam as tarefas antes de sua execução. Por exemplo, as assinaturas de código do AutoConf substituindo por grupos mais consistentes que representam o consumo real de recursos das máquinas. As informações serão extraídas dos arquivos de log, sendo possível encontrar padrões com mais precisão e voltados para os recursos computacionais definidos pelo administrador do sistema. Para analisar os arquivos de log, utilizaremos algoritmos de classificação não supervisionados, responsáveis por classificar os logs em grupos, onde os logs integrantes de cada grupo possuirão comportamento similar. Sendo assim, tarefas oriundas de novas consultas poderão ser comparadas aos clusters gerados pelo algoritmo. O AutoConf classifica as tarefas de acordo com a assinatura de código recebida, então denominaremos os grupos de distintas assinaturas de código como grupos de intenção. O aprendizado não supervisionado classifica os logs das tarefas através do comportamento encontrado pelo algoritmo, então, denominaremos esses grupos como grupos de comportamento. É possível utilizar diversos algoritmos de aprendizagem não supervisionada durante a otimização, um deles é o K-Means [Jain 2008]. O estudo sugere o uso de logs de tarefas MapReduce, sendo assim, é possível utilizar qualquer sistema baseado em MapReduce que gere algum tipo de arquivo de log Aprendizado de Máquina A classificação é uma técnica de mineração de dados [Rezende 2005]. Sua função é classificar os dados de forma a determinar grupos de dados com características comuns. Abordaremos o algoritmo de aprendizagem não supervisionada K-Means para geração dos grupos de comportamento K-Means O algoritmo K-Means é capaz de classificar as informações de acordo com os próprios dados de entrada. Esta classificação é baseada na análise e na comparação entre as distâncias dos registros em valores numéricos a partir dos centroides dos clusters. Por exemplo, se desejamos seis grupos, o registro será classificado para o grupo onde a distância do centroide é mais próxima. Desta maneira, o algoritmo automaticamente fornecerá uma classificação sem nenhum conhecimento preexistente dos dados. Nesta sessão veremos como são calculados os valores dos centroides dos grupos e as distâncias entre os registros. 87

88 O usuário deve fornecer ao algoritmo a quantidade de classes desejadas. Para geração dessas classes e classificação dos registros o algoritmo faz uma comparação entre cada valor de cada linha por meio da distância, onde geralmente é utilizada a distância euclidiana [Qian, 2004] para calcular o quão distante uma ocorrência está da outra. Após o cálculo das distâncias o algoritmo calcula centroides para cada uma das classes. Considere os pontos P e Q em (1). (1) A equação abaixo (2) representa o cálculo da distância euclidiana entre os pontos P e Q em um espaço n-dimensional. (2) Uso com logs: No caso de logs, suponhamos que estamos trabalhando com apenas duas dimensões (total de bytes lidos e total de bytes escritos). Essas são as dimensões contidas no vetor P e Q da equação descrita. Suponhamos que P seja o ponto do centroide de uma das classes no espaço bidimensional e Q seja o ponto para um determinado log no espaço bidimensional. Os valores das dimensões do centroide são iguais às médias das dimensões de todos os logs classificados na classe de tal centroide, logo, a fórmula nos trará a distância do log em relação à média de todos da mesma classe. Cada tipo de informação que um log possui é uma dimensão para o algoritmo, se os logs possuem, por exemplo, três tipos de informação pode-se dizer que o K-Means trabalhará com três dimensões. O K-Means pode ser descrito em cinco passos, descritos pelo Algoritmo 3.1. No Algoritmo 3.1, os vetores C e LC armazenam o resultado final da classificação. C contém as classes que representam o uso dos recursos computacionais, onde os recursos são representados pelas dimensões dim_x. LC contém a referência para os logs e a qual classe eles pertencem após a classificação. A Figura 3.8 contém um exemplo de execução do K-Means com duas dimensões (bytes lidos e escritos). Podemos observar na Figura 3.8 a mudança da posição dos centroides no decorrer dos 6 estágios e a redistribuição dos registros (logs) nas classes de acordo com suas distâncias euclidianas. 88

89 Algoritmo 3.1. Algoritmo K-Means em um estudo de caso ao analisar logs Figura 3.8. Exemplo de execução do K-Means com duas dimensões 89

90 3.7. Chameleon: Otimização de Consultas por Análise de Log Chameleon é a uma ferramenta de auto ajuste de desempenho que utiliza o algoritmo K-Means sobre os logs de execução do Hadoop. O Chameleon complementa o AutoConf auxiliando na otimização de consultas do Hive, através da atribuição de um grupo de comportamento às tarefas da consulta. A Figura 3.9 mostra a arquitetura do Chameleon e onde se enquadra no ecossistema do Hadoop. Como extensão da Figura 3.7, a Figura 3.9 adiciona a Análise de Log ao ecossistema, onde dois módulos distintos trabalham separadamente. O Hadoop Log Parser é a implementação dos dados de entrada, nesse caso especificamente para o Hadoop, mas também seria possível ser implementado para outros frameworks MapReduce. O outro módulo é o algoritmo K-Means implementado. O Workload Database é um dos pontos de interação entre as arquiteturas, O Hadoop Log Parser usa-o para armazenar os logs que encontra, e por sua vez o K-Means busca os logs e salva seus resultados na mesma base de dados Workload Database Figura 3.9. Chameleon e o ecossistema do Hadoop O Workload Database é uma base de dados relacional contendo os logs do Hadoop estruturados de forma que outros módulos possam acessá-los mais facilmente. A base de dados contém informações sobre a execução da tarefa e também quais foram os parâmetros utilizados no momento da execução. A Figura 3.10 mostra o modelo entidaderelacionamento da base de dados. 90

91 Figura Modelo Entidade-Relacionamento da base de dados do Workload DW Na Figura 3.10 a tabela job é a tabela principal, que armazena as informações únicas de cada log das tarefas executadas, e as tabelas iniciadas com conf_ armazenam as configurações de parâmetros de diferentes tipos que foram utilizadas na execução das tarefas. As tabelas task e task_attempt armazenam o histórico de execução, nelas se pode encontrar os contadores que são utilizados pelo algoritmo de classificação. Após a execução do algoritmo K-Means, os valores dos clusters de comportamento são armazenados na tabela clusters e por fim, cada log é classificado a um cluster de comportamento através da tabela job_cluster Hadoop Log Parser Hadoop Log Parser é a implementação da entrada de logs para o Chameleon, tem a função de coletar os logs do Hadoop, criar a estrutura de tabelas e popular o Workload Database com os logs. Esse módulo pode ser executado no modo loop, proporcionando a verificação de novos logs conforme o Hadoop processa novos Jobs. Algumas características fazem com que o LogParser torne-se um módulo inteligente na coleta e estruturação dos logs, pois além do modo loop é possível determinar se os logs serão coletados do histórico do Hadoop ou a partir de uma pasta determinada pelo administrador. Outras características são a verificação de logs já existentes evitando a duplicação; e a exclusão de logs corrompidos ou incompletos, possibilitando uma maior consistência do Workload Database Classificação A Figura 3.9 demonstra o módulo responsável por gerar os chamados grupos de comportamento, que determinam quais os recursos computacionais usados pelo Hadoop em determinadas tarefas. No caso do Chameleon são os recursos usados pelas consultas do Hive. O módulo de classificação possui diversas configurações que podem ser alteradas pelo administrador. A Figura 3.11 mostra o arquivo de configuração do módulo. 91

Big Social Data: Princípios sobre Coleta, Tratamento e Análise de Dados Sociais

Big Social Data: Princípios sobre Coleta, Tratamento e Análise de Dados Sociais cap:1 Capítulo 1 Big Social Data: Princípios sobre Coleta, Tratamento e Análise de Dados Sociais Tiago Cruz França, Fabrício Firmino de Faria, Fabio Medeiros Rangel, Claudio Miceli de Farias e Jonice Oliveira

Leia mais

primeira parte da reunião: 29 de Setembro de 2013 segunda parte da reunião: 30 de Setembro de 2013

primeira parte da reunião: 29 de Setembro de 2013 segunda parte da reunião: 30 de Setembro de 2013 Ata da Reunião da Comissão Especial de Banco de Dados (CEBD) realizada durante o Simpósio Brasileiro de Banco de Dados (SBBD) 2013 na cidade do Recife, PE, Brasil primeira parte da reunião: 29 de Setembro

Leia mais

PLATAFORMA DE REDES SOCIAIS COMO FERRAMENTA DE ENSINO A DISTÂNCIA

PLATAFORMA DE REDES SOCIAIS COMO FERRAMENTA DE ENSINO A DISTÂNCIA Congresso de Métodos Numéricos em Engenharia 2015 Lisboa, 29 de Junho a 2 de Julho, 2015 APMTAC, Portugal, 2015 PLATAFORMA DE REDES SOCIAIS COMO FERRAMENTA DE ENSINO A DISTÂNCIA Thiago M. R. Dias 1, Elton

Leia mais

Capítulo 3. Redes Sociais 24

Capítulo 3. Redes Sociais 24 3 Redes Sociais No contexto da Internet, redes sociais podem ser definidas como locais (sites) em que pessoas se conectam umas às outras através de laços sociais baseados em afinidades, interesses em comum

Leia mais

Boas Práticas em Sistemas Web muito além do HTML...

Boas Práticas em Sistemas Web muito além do HTML... Boas Práticas em Sistemas Web muito além do HTML... Adriano C. Machado Pereira (adrianoc@dcc.ufmg.br) De que Web estamos falando? De que Web estamos falando? A Web foi concebida para ser uma biblioteca

Leia mais

Recuperação de Imagens na Web Baseada em Informações Textuais

Recuperação de Imagens na Web Baseada em Informações Textuais Recuperação de Imagens na Web Baseada em Informações Textuais André Ribeiro da Silva Mário Celso Candian Lobato Universidade Federal de Minas Gerais Departamento de Ciência da Computação {arsilva,mlobato}@dcc.ufmg.br

Leia mais

3 As Mídias Sociais como Ferramentas de Marketing

3 As Mídias Sociais como Ferramentas de Marketing 26 3 As Mídias Sociais como Ferramentas de Marketing O surgimento das mídias sociais está intimamente ligado ao fenômeno da geração de conteúdo pelo usuário e ao crescimento das redes sociais virtuais

Leia mais

RECUPERANDO INFORMAÇÃO SOBRE TEXTOS PUBLICADOS NO TWITTER

RECUPERANDO INFORMAÇÃO SOBRE TEXTOS PUBLICADOS NO TWITTER RECUPERANDO INFORMAÇÃO SOBRE TEXTOS PUBLICADOS NO TWITTER Autores: Miguel Airton FRANTZ 1 ;; Angelo Augusto FROZZA 2, Reginaldo Rubens da SILVA 2. Identificação autores: 1 Bolsista de Iniciação Científica

Leia mais

TWITKNOWLEDGE - OBTENDO CONHECIMENTO A PARTIR DOS TWITTES PESSOAIS

TWITKNOWLEDGE - OBTENDO CONHECIMENTO A PARTIR DOS TWITTES PESSOAIS TWITKNOWLEDGE - OBTENDO CONHECIMENTO A PARTIR DOS TWITTES PESSOAIS Miguel Airton Frantz 1 ; Angelo Augusto Frozza 2 RESUMO A proposta básica desse projeto consiste em criar uma base de conhecimento a partir

Leia mais

Laboratório de Mídias Sociais

Laboratório de Mídias Sociais Laboratório de Mídias Sociais Aula 02 Análise Textual de Mídias Sociais parte I Prof. Dalton Martins dmartins@gmail.com Gestão da Informação Universidade Federal de Goiás O que é Análise Textual? Análise

Leia mais

7 Utilização do Mobile Social Gateway

7 Utilização do Mobile Social Gateway 7 Utilização do Mobile Social Gateway Existem três atores envolvidos na arquitetura do Mobile Social Gateway: desenvolvedor do framework MoSoGw: é o responsável pelo desenvolvimento de novas features,

Leia mais

TRIBUNAL DE CONTAS DO DISTRITO FEDERAL

TRIBUNAL DE CONTAS DO DISTRITO FEDERAL TRIBUNAL DE CONTAS DO DISTRITO FEDERAL TÉCNICO EM ADMINISTRAÇÃO PÚBLICA E ANALISTA (EXCETO PARA O CARGO 4 e 8) GABARITO 1. (CESPE/2013/MPU/Conhecimentos Básicos para os cargos 34 e 35) Com a cloud computing,

Leia mais

A Estrutura da Web. Redes Sociais e Econômicas. Prof. André Vignatti

A Estrutura da Web. Redes Sociais e Econômicas. Prof. André Vignatti A Estrutura da Web Redes Sociais e Econômicas Prof. André Vignatti A Estrutura da Web Até agora: redes onde unidades eram pessoas ou entidades sociais, como empresas e organizações Agora (Cap 13, 14 e

Leia mais

Mídias Sociais do jeito mais fácil. Guia do Usuário

Mídias Sociais do jeito mais fácil. Guia do Usuário Mídias Sociais do jeito mais fácil Guia do Usuário Índice 3. Buscas 4. Funcionalidades 5. Monitor 6. Relacionamento 7. Publicação 8. Estatísticas 9. Tutorial Cadastrando uma busca Classificando o conteúdo

Leia mais

E-books. Introdução às Mídias Sociais. Sebrae

E-books. Introdução às Mídias Sociais. Sebrae E-books Sebrae Marketing e Vendas Introdução às Mídias Sociais O que fazer com as mídias sociais Tipos de ações As principais mídias sociais Dicas e considerações finais Autor Felipe Orsoli 1 SUMÁRIO 1

Leia mais

19 Congresso de Iniciação Científica DESENVOLVIMENTO DE UM MECANISMO EFICIENTE DE CAPTURA E ANÁLISE DE COMENTÁRIOS NA WEB

19 Congresso de Iniciação Científica DESENVOLVIMENTO DE UM MECANISMO EFICIENTE DE CAPTURA E ANÁLISE DE COMENTÁRIOS NA WEB 19 Congresso de Iniciação Científica DESENVOLVIMENTO DE UM MECANISMO EFICIENTE DE CAPTURA E ANÁLISE DE COMENTÁRIOS NA WEB Autor(es) JEFFERSON DIAS DOS SANTOS Orientador(es) PLÍNIO ROBERTO SOUZA VILELA

Leia mais

MARKETING DIGITAL E E-BUSINESS AULA III ESTRATÉGIAS DO MARKETING DIGITAL PROF. M. SC. JOSUÉ VITOR MBA EM MARKETING ESTRATÉGICO

MARKETING DIGITAL E E-BUSINESS AULA III ESTRATÉGIAS DO MARKETING DIGITAL PROF. M. SC. JOSUÉ VITOR MBA EM MARKETING ESTRATÉGICO MBA EM MARKETING ESTRATÉGICO MARKETING DIGITAL E E-BUSINESS AULA III ESTRATÉGIAS DO MARKETING DIGITAL PROF. M. SC. JOSUÉ VITOR josuevitor16@gmail.com @josuevitor Marketing Digital Como usar a internet

Leia mais

ESTRATÉGIA DIGITAL. Prof. Luli Radfahrer

ESTRATÉGIA DIGITAL. Prof. Luli Radfahrer ESTRATÉGIA DIGITAL Prof. Luli Radfahrer - Conforme estipulado no Termo de Uso, todo o conteúdo ora disponibilizado é de titularidade exclusiva do IAB ou de terceiros parceiros e é protegido pela legislação

Leia mais

2 Atualidade de uma base de dados

2 Atualidade de uma base de dados 2 Atualidade de uma base de dados Manter a atualidade de uma base de dados é um problema que pode ser abordado de diferentes maneiras. Cho e Garcia-Molina [CHO] definem esse problema da seguinte forma:

Leia mais

Tentar entender como usar melhor os diferentes canais.

Tentar entender como usar melhor os diferentes canais. The New Conversation: Taking Social Media from Talk to Action A Nova Conversação: Levando a Mídia Social da Conversa para a Ação By: Harvard Business Review A sabedoria convencional do marketing por muito

Leia mais

Redes sociais x mídias sociais

Redes sociais x mídias sociais INTRODUÇÃO Esse workshop tem como objetivo de organizar o uso das redes sociais no Santuário Nacional e Rede Aparecida, de forma a facilitar o trabalho de monitoramento e de produção de conteúdo para as

Leia mais

2 Auto-sintonia de Bancos de Dados e Agentes de Software

2 Auto-sintonia de Bancos de Dados e Agentes de Software 2 Auto-sintonia de Bancos de Dados e Agentes de Software A uso da abordagem de agentes de software 1 pode trazer benefícios a áreas de aplicação em que é necessário construir sistemas autônomos, ou seja,

Leia mais

Descoberta de Domínio Conceitual de Páginas Web

Descoberta de Domínio Conceitual de Páginas Web paper:25 Descoberta de Domínio Conceitual de Páginas Web Aluno: Gleidson Antônio Cardoso da Silva gleidson.silva@posgrad.ufsc.br Orientadora: Carina Friedrich Dorneles dorneles@inf.ufsc.br Nível: Mestrado

Leia mais

MAPEAMENTO E LOCALIZAÇÃO DE REGIÕES DE INTERESSE UTILIZANDO REALIDADE AUMENTADA EM DISPOSITIVOS MÓVEIS COM PLATAFORMA ANDROID

MAPEAMENTO E LOCALIZAÇÃO DE REGIÕES DE INTERESSE UTILIZANDO REALIDADE AUMENTADA EM DISPOSITIVOS MÓVEIS COM PLATAFORMA ANDROID MAPEAMENTO E LOCALIZAÇÃO DE REGIÕES DE INTERESSE UTILIZANDO REALIDADE AUMENTADA EM DISPOSITIVOS MÓVEIS COM PLATAFORMA ANDROID Alessandro Teixeira de Andrade¹; Geazy Menezes² UFGD/FACET Caixa Postal 533,

Leia mais

Observatório da Saúde

Observatório da Saúde Observatório da Saúde TICs Aplicadas em Saúde Ronan Lopes Orientador: Dárlinton Carvalho 1 INTRODUÇÃO Com o crescimento da adesão dos internautas às redes sociais, o volume de dados gerados pela interação

Leia mais

Sumário 1. A extração de dados das redes sociais... 2 1.1 Serviços para o monitoramento... 2 1.2 Extração de dados do Facebook... 2 1.

Sumário 1. A extração de dados das redes sociais... 2 1.1 Serviços para o monitoramento... 2 1.2 Extração de dados do Facebook... 2 1. Sumário 1. A extração de dados das redes sociais... 2 1.1 Serviços para o monitoramento... 2 1.2 Extração de dados do Facebook... 2 1.3 Extração de dados do Twitter... 2 2. Metodologia... 6 2.1 Extração

Leia mais

1 http://www.google.com

1 http://www.google.com 1 Introdução A computação em grade se caracteriza pelo uso de recursos computacionais distribuídos em várias redes. Os diversos nós contribuem com capacidade de processamento, armazenamento de dados ou

Leia mais

Integração com a Mídia Social

Integração com a Mídia Social Guia rápido sobre... Integração com a Mídia Social Neste guia... Vamos mostrar como integrar seu marketing com as mídias sociais para você tirar o maior proveito de todo esse burburinho online! Nós ajudamos

Leia mais

Facebook. Java com o. Integrando Aplicações. Descubra como é fácil criar uma aplicação para rodar no Facebook. _capa

Facebook. Java com o. Integrando Aplicações. Descubra como é fácil criar uma aplicação para rodar no Facebook. _capa _capa Integrando Aplicações Java com o Facebook Descubra como é fácil criar uma aplicação para rodar no Facebook Desde o lançamento oficial do Facebook, em 2004, o número de usuários vem aumentando a cada

Leia mais

CONTEÚDOS. Blog REDES SOCIAIS VIDEOS ONLINE PARTILHA DE FOTOGRAFIAS PARTILHA DE APRESENTAÇÕES

CONTEÚDOS. Blog REDES SOCIAIS VIDEOS ONLINE PARTILHA DE FOTOGRAFIAS PARTILHA DE APRESENTAÇÕES CONTEÚDOS ANTES DE INICIAR A SUA AVENTURA NAS REDES, TENHA EM CONTA AS SEGUINTES DICAS: Atribua a administração de cada canal e/ou estratégia a alguém que faça parte da sua empresa; Dê formação à sua equipa

Leia mais

MBA Analytics em Big Data

MBA Analytics em Big Data MBA Analytics em Big Data Inscrições Abertas Início das Aulas: 04/06/2015 Dias e horários das aulas: Segunda-Feira 19h00 às 23h00 Semanal Sexta-Feira 19h00 às 23h00 Semanal Carga horária: 600 Horas Duração:

Leia mais

BIG DATA Armazenamento e Gerenciamento de grandes volumes de dados

BIG DATA Armazenamento e Gerenciamento de grandes volumes de dados BIG DATA Armazenamento e Gerenciamento de grandes volumes de dados Carlos Marques Business Development Manager, Data Connectivity and Integration Latin America & Caribbean Market (CALA) O que veremos hoje?

Leia mais

Palavras-chave: On-line Analytical Processing, Data Warehouse, Web mining.

Palavras-chave: On-line Analytical Processing, Data Warehouse, Web mining. BUSINESS INTELLIGENCE COM DADOS EXTRAÍDOS DO FACEBOOK UTILIZANDO A SUÍTE PENTAHO Francy H. Silva de Almeida 1 ; Maycon Henrique Trindade 2 ; Everton Castelão Tetila 3 UFGD/FACET Caixa Postal 364, 79.804-970

Leia mais

UNIVERSIDADE FEDERAL DE SANTA CATARINA GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA DATA MINING EM REDES SOCIAIS

UNIVERSIDADE FEDERAL DE SANTA CATARINA GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA DATA MINING EM REDES SOCIAIS UNIVERSIDADE FEDERAL DE SANTA CATARINA GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA DATA MINING EM REDES SOCIAIS FELIPE GONÇALVES BOTELHO PEDRO HENRIQUE ROCHA UGIONI FLORIANÓPOLIS

Leia mais

Computação nas nuvens (Vantagens)

Computação nas nuvens (Vantagens) Computação em Nuvem Computação em nuvem O conceito de computação em nuvem (em inglês, cloud computing) refere-se à possibilidade de utilizarmos computadores menos potentes que podem se conectar à Web e

Leia mais

Redes de Computadores. Camada de Aplicação Teoria de Redes Complexas: Conceitos Básicos em Grafos

Redes de Computadores. Camada de Aplicação Teoria de Redes Complexas: Conceitos Básicos em Grafos Redes de Computadores Camada de Aplicação Teoria de Redes Complexas: Conceitos Básicos em Grafos Introdução Como as coisas estão conectadas? Redes! A network is a set of vertices or nodes provided with

Leia mais

Ferramentas de informações e comunicações e as interações possíveis Tecnologias populares para uma Educação à Distância mais Popular.

Ferramentas de informações e comunicações e as interações possíveis Tecnologias populares para uma Educação à Distância mais Popular. Trabalha de Conclusão do Curso Educação a Distância : Um Novo Olhar Para a Educação - Formação de Professores/Tutores em EaD pelo Portal Somática Educar Ferramentas de informações e comunicações e as interações

Leia mais

4 Conversor EDTV Raw. 4.1 Arquitetura

4 Conversor EDTV Raw. 4.1 Arquitetura 4 Conversor EDTV Raw O conversor EDTV Raw é o programa que lê um documento escrito no perfil NCL EDTV e gera um documento Raw equivalente, i.e. que define a mesma apresentação. Este capítulo, apresenta

Leia mais

MANUAL E DICAS ASSISTENTE VIRTUAL (AV) ADS DIGITAL (WWW.ADSDIGITAL.COM.BR) VERSÃO DO ASSISTENTE VIRTUAL: 1.3.1 POR

MANUAL E DICAS ASSISTENTE VIRTUAL (AV) ADS DIGITAL (WWW.ADSDIGITAL.COM.BR) VERSÃO DO ASSISTENTE VIRTUAL: 1.3.1 POR MANUAL E DICAS DO ASSISTENTE VIRTUAL (AV) POR ADS DIGITAL (WWW.ADSDIGITAL.COM.BR) VERSÃO DO ASSISTENTE VIRTUAL: 1.3.1 ÍNDICE Introdução...3 Requisitos e Restrições do Assistente...3 Diferenças da Versão

Leia mais

Tecnologias Móveis e Ferramentas Web 2.0 no Ensino Superior: algumas possibilidades

Tecnologias Móveis e Ferramentas Web 2.0 no Ensino Superior: algumas possibilidades Tecnologias Móveis e Ferramentas Web 2.0 no Ensino Superior: algumas possibilidades João Batista Bottentuit Junior Universidade Federal do Maranhão UFMA jbbj@terra.com.br 29 de Outubro de 2013 Contexto

Leia mais

Capítulo 2 Web 2.0 22

Capítulo 2 Web 2.0 22 2 Web 2.0 Uma vez que o presente trabalho está intensamente relacionado à Web 2.0 (muitas tecnologias da mesma são utilizadas pela equipe estudada, que precisam de melhorias), torna-se necessário entender

Leia mais

2 Conceitos Gerais de Classificação de Documentos na Web

2 Conceitos Gerais de Classificação de Documentos na Web Conceitos Gerais de Classificação de Documentos na Web 13 2 Conceitos Gerais de Classificação de Documentos na Web 2.1. Páginas, Sites e Outras Terminologias É importante distinguir uma página de um site.

Leia mais

5 Mecanismo de seleção de componentes

5 Mecanismo de seleção de componentes Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações

Leia mais

UNIVERSIDADE FEDERAL DE SANTA CATARINA GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA DATA MINING EM VÍDEOS

UNIVERSIDADE FEDERAL DE SANTA CATARINA GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA DATA MINING EM VÍDEOS UNIVERSIDADE FEDERAL DE SANTA CATARINA GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA DATA MINING EM VÍDEOS VINICIUS DA SILVEIRA SEGALIN FLORIANÓPOLIS OUTUBRO/2013 Sumário

Leia mais

ÁREA DO PROFESSOR (TUTOR)

ÁREA DO PROFESSOR (TUTOR) ÁREA DO PROFESSOR (TUTOR) 2- FÓRUM O fórum serve para avaliar os alunos através da participação na discussão sobre um ou mais assuntos, inserção de textos ou arquivos. Os fóruns de discussão compõem uma

Leia mais

Iniciativa para Identificação de Oportunidades Tecnológicas para o Desenvolvimento da Internet do Futuro. Tania Regina Tronco

Iniciativa para Identificação de Oportunidades Tecnológicas para o Desenvolvimento da Internet do Futuro. Tania Regina Tronco Iniciativa para Identificação de Oportunidades Tecnológicas para o Desenvolvimento da Internet do Futuro Tania Regina Tronco Data: 15/04/2009 Motivadores A evolução da Internet causará um forte impacto

Leia mais

3 Ferramentas de busca

3 Ferramentas de busca 3 Ferramentas de busca A Internet se transformou em um vasto repositório de informações. Podemos encontrar sites sobre qualquer assunto, de futebol a religião. O difícil, porém é conseguir encontrar a

Leia mais

Novas Mídias e Relações Sociais.

Novas Mídias e Relações Sociais. Novas Mídias e Relações Sociais. Eduardo Foster 1 1 Caiena Soluções em Gestão do Conhecimento, Av. 34-578, CEP 13504-110 Rio Claro, Brasil foster@caiena.net Resumo. A comunicação é uma disciplina que acompanha

Leia mais

4 Trabalhos Relacionados

4 Trabalhos Relacionados 4 Trabalhos Relacionados Os trabalhos apresentados nesta seção são os que buscam de alguma forma resolver as questões levantadas nos capítulos 1 e 2 e possuem alguma semelhança entre si. Eles serão comparados

Leia mais

MANUAL DE UTILIZAÇÃO DAS MÍDIAS SOCIAIS CLUBE TURISMO

MANUAL DE UTILIZAÇÃO DAS MÍDIAS SOCIAIS CLUBE TURISMO MANUAL DE UTILIZAÇÃO DAS MÍDIAS SOCIAIS CLUBE TURISMO INTRODUÇÃO: As mídias sociais estão cada vez mais presentes no dia-a-dia das pessoas, oferecendo soluções e transformando as relações pessoais e comerciais.

Leia mais

Questão em foco: Colaboração de produto 2.0. Uso de técnicas de computação social para criar redes sociais corporativas

Questão em foco: Colaboração de produto 2.0. Uso de técnicas de computação social para criar redes sociais corporativas Questão em foco: Colaboração de produto 2.0 Uso de técnicas de computação social para criar redes sociais corporativas Tech-Clarity, Inc. 2009 Sumário Sumário... 2 Introdução à questão... 3 O futuro da

Leia mais

Tópic i o c s s E s E p s ec e i c a i i a s Gerencia i me m nto t d e D ados e I n I fo f rma m ção Ban a co c s s d e e D ad a os s N ão ã

Tópic i o c s s E s E p s ec e i c a i i a s Gerencia i me m nto t d e D ados e I n I fo f rma m ção Ban a co c s s d e e D ad a os s N ão ã Tópicos Especiais Gerenciamento de Dados e Informação Ana Carolina Salgado Fernando Fonseca Valeria Times Bernadette Lóscio Bancos de Dados Não Banco de Dados Multimídia Banco de Dados Ativos Banco de

Leia mais

Aula 1: Introdução à Disciplina Fonte: Plano de Aula Oficial da Disciplina

Aula 1: Introdução à Disciplina Fonte: Plano de Aula Oficial da Disciplina Programação para Internet Rica 1 Aula 1: Introdução à Disciplina Fonte: Plano de Aula Oficial da Disciplina Objetivo: Identificar os princípios que se destacam como características da Web 2.0. INTRODUÇÃO

Leia mais

Palavras Chave: Rede social, Grafo, Digrafo, Relação de amizade, Caminho 1 INTRODUÇÃO

Palavras Chave: Rede social, Grafo, Digrafo, Relação de amizade, Caminho 1 INTRODUÇÃO USANDO O FACEBOOK E APRENDENDO SOBRE GRAFOS Vinicius Schmidt Monego - viniciussm@rocketmail.com Monique Rubenich Nascimento - moniquee.rn@gmail.com Alice de Jesus Kozakevicius - alicek@ufsm.br Resumo.

Leia mais

10 Evoluções. Impactantes para o seu Video Marketing. em 2015

10 Evoluções. Impactantes para o seu Video Marketing. em 2015 10 Evoluções Impactantes para o seu Video Marketing em 2015 INTRODUÇÃO O vídeo online teve um crescimento explosivo em 2014. Para os empresários e profissionais de marketing, o ano de 2015 oferece oportunidades

Leia mais

CAPÍTULO 4. AG8 Informática

CAPÍTULO 4. AG8 Informática 2ª PARTE CAPÍTULO 4 Este capítulo têm como objetivo: 1. Tratar das etapas do projeto de um Website 2. Quais os profissionais envolvidos 3. Administração do site 4. Dicas para não cometer erros graves na

Leia mais

C O N S U L T O R I A E G E S T Ã O P A R A E S T R A T É G I A D E R E D E S S O C I A I S

C O N S U L T O R I A E G E S T Ã O P A R A E S T R A T É G I A D E R E D E S S O C I A I S C O N S U L T O R I A E G E S T Ã O P A R A E S T R A T É G I A D E R E D E S S O C I A I S A MELHOR OPORTUNIDADE PARA O SEU NEGÓCIO ESTÁ AO SEU ALCANCE NAS REDES SOCIAIS... O MUNDO É FEITO DE REDES SOCIAIS

Leia mais

Inteligência para ESTRATÉGIA DIGITAL

Inteligência para ESTRATÉGIA DIGITAL Inteligência para ESTRATÉGIA DIGITAL INTRODUÇÃO Já imaginou ter acesso a dados e estatísticas do website do concorrente? Com alguns aplicativos e ferramentas, isso já é possível. Com ajuda deles, você

Leia mais

Mineração de Opinião / Análise de Sentimentos

Mineração de Opinião / Análise de Sentimentos Mineração de Opinião / Análise de Sentimentos Carlos Augusto S. Rodrigues Leonardo Lino Vieira Leonardo Malagoli Níkolas Timmermann Introdução É evidente o crescimento da quantidade de informação disponível

Leia mais

Classes Funcionais 21

Classes Funcionais 21 Classes Funcionais 21 3 Classes Funcionais Em todo trabalho de classificação funcional é necessário determinar quais serão as classes funcionais utilizadas. Esta divisão não se propõe a ser extensiva,

Leia mais

UNIVERSIDADE FEDERAL FLUMINENSE ESCOLA DE ENGENHARIA MBA EM TV DIGITAL, RADIODIFUSÃO E NOVAS E NOVAS MÍDIAS

UNIVERSIDADE FEDERAL FLUMINENSE ESCOLA DE ENGENHARIA MBA EM TV DIGITAL, RADIODIFUSÃO E NOVAS E NOVAS MÍDIAS UNIVERSIDADE FEDERAL FLUMINENSE ESCOLA DE ENGENHARIA MBA EM TV DIGITAL, RADIODIFUSÃO E NOVAS E NOVAS MÍDIAS Trabalho final da disciplina Computadores, Redes, IP e Internet Professor: Walter Freire Aluno:

Leia mais

Teste de Qualidade Web based para Banda Larga FAQs

Teste de Qualidade Web based para Banda Larga FAQs Teste de Qualidade Web based para Banda Larga FAQs Pergunta O que é o teste de velocidade? Quem é o público alvo? O que oferece? Como funciona? Por onde é o acesso? Resposta Um teste de qualidade de banda

Leia mais

Trabalho sobre o Facebook. De Sistemas Formador Tomás Lima

Trabalho sobre o Facebook. De Sistemas Formador Tomás Lima Trabalho sobre o Facebook De Sistemas Formador Tomás Lima Formando Marco Silva S - 13 Índice Facebook... 3 Porque todas essas perguntas para criar um perfil?... 3 O Facebook fornece várias maneiras de

Leia mais

E-books. Guia completo de como criar uma Página no Facebook. Sebrae

E-books. Guia completo de como criar uma Página no Facebook. Sebrae E-books Sebrae Marketing e Vendas Guia completo de como criar uma Página no Facebook Como começar Criando uma Página Conhecendo a Página Configurações iniciais Estabelecendo conversas Autor Felipe Orsoli

Leia mais

Organizaçãoe Recuperaçãode Informação GSI521. Prof. Dr. Rodrigo Sanches Miani FACOM/UFU

Organizaçãoe Recuperaçãode Informação GSI521. Prof. Dr. Rodrigo Sanches Miani FACOM/UFU Organizaçãoe Recuperaçãode Informação GSI521 Prof. Dr. Rodrigo Sanches Miani FACOM/UFU Análisede links Page Rank Prof. Dr. Rodrigo Sanches Miani FACOM/UFU Motivação Suponha que um modelo clássico, como

Leia mais

Conheça o Projeto. Apresentação. Finalidade. Objetivo

Conheça o Projeto. Apresentação. Finalidade. Objetivo Manual do Usuário Índice Conheça o Projeto...3 Apresentação...3 Finalidade...3 Objetivo...3 Histórico...4 Usando o Portal...5 Efetuando o cadastro na biblioteca digital...5 Logando na Biblioteca Digital...6

Leia mais

Documento de Visão. Versão 2.5 Projeto SysTrack - Grupo 01

Documento de Visão. Versão 2.5 Projeto SysTrack - Grupo 01 Documento de Visão Versão 2.5 Projeto SysTrack - Grupo 01 Junho de 2011 Histórico de revisão: DATA VERSÃO DESCRIÇÃO AUTORES 19/02/2011 1.0 Versão inicial. João Ricardo, Diogo Henrique. 24/02/2011 2.0 Modificação

Leia mais

Prof. Msc. Paulo Muniz de Ávila

Prof. Msc. Paulo Muniz de Ávila Prof. Msc. Paulo Muniz de Ávila O que é Data Mining? Mineração de dados (descoberta de conhecimento em bases de dados): Extração de informação interessante (não-trivial, implícita, previamente desconhecida

Leia mais

BLOG: GRUPO DE DISCUSSÃO: PODCAST:

BLOG: GRUPO DE DISCUSSÃO: PODCAST: O MUNDO ONLINE Uma das marcas dessa nova era são as redes sociais. Comunidades online como o Facebook, Twitter, Fousquare, Youtube e outras, possibilitam a comunicação entre as pessoas, ao mesmo tempo,

Leia mais

Marcele Bastos Consultora de comunicação mbastos.sa@gmail.com MÍDIAS SOCIAIS

Marcele Bastos Consultora de comunicação mbastos.sa@gmail.com MÍDIAS SOCIAIS Marcele Bastos Consultora de comunicação mbastos.sa@gmail.com MÍDIAS SOCIAIS TEMAS o O que são mídias sociais (conceito, apresentação dos diversos canais das redes sociais, gestão dos canais) o Moda ou

Leia mais

E-books. Marketing no Facebook. Sebrae

E-books. Marketing no Facebook. Sebrae E-books Sebrae Marketing e Vendas Marketing no Facebook Marketing de conteúdo e engajamento na rede Marketing de conteúdo no Facebook Tipos de conteúdo Edge Rank e os fatores de engajamento Facebook Ads

Leia mais

Como cultivar leads do Comitê de TI

Como cultivar leads do Comitê de TI BRASIL Como cultivar leads do Comitê de TI O marketing está ajudando ou atrapalhando? Confiança + Credibilidade devem ser CONQUISTADAS O profissional de marketing moderno conhece a importância de cultivar

Leia mais

Ementário das Disciplinas

Ementário das Disciplinas Ementário das Disciplinas As ementas das disciplinas estão agrupadas em semestres para uma melhor visualização da organização da matriz curricular. As referências bibliográficas serão especificadas no

Leia mais

REDES SOCIAIS PARA PEQUENAS EMPRESAS

REDES SOCIAIS PARA PEQUENAS EMPRESAS REDES SOCIAIS PARA PEQUENAS EMPRESAS Entenda a importância da utilização das Redes Sociais para a sua pequena empresa e conheça os fundamentos necessários para obter resultados positivos com a sociabilidade.

Leia mais

Pollyanna Gonçalves. Seminário da disciplina Banco de Dados II

Pollyanna Gonçalves. Seminário da disciplina Banco de Dados II Pollyanna Gonçalves Seminário da disciplina Banco de Dados II Web 2.0 vem gerando grande volume de dados Conteúdo gerado por redes sociais, sensores inteligentes, tecnologias de colaboração, etc. Novas

Leia mais

TIRE SEU PROJETO- DAGAVETA. kinghost.com.br 2

TIRE SEU PROJETO- DAGAVETA. kinghost.com.br 2 TIRE SEU PROJETO- DAGAVETA 2 #2 Como minha empresa pode explorar as redes sociais Muitas empresas identificam nas redes sociais um caminho mais curto e rápido para divulgar uma promoção de produtos e serviços,

Leia mais

PROFISSIONAL. Por que o Comércio Eletrônico em Multicanais é Fundamental para o Sucesso do seu Negócio On-line

PROFISSIONAL. Por que o Comércio Eletrônico em Multicanais é Fundamental para o Sucesso do seu Negócio On-line EDIÇÃO Nº 05 GRÁTIS FOTOGRAFIA PROFISSIONAL SOLUÇÕES PARA IMAGENS DE PRODUTO QUE CONQUISTARAM OS LÍDERES DO COMÉRCIO ELETRÔNICO Por que o Comércio Eletrônico em Multicanais é Fundamental para o Sucesso

Leia mais

Workshop de Yammer. Guia de Introdução

Workshop de Yammer. Guia de Introdução Workshop de Yammer Guia de Introdução Por que usar o Yammer? A tecnologia evolui A comunicação é a mesma # users Time spent online A revolução da tecnologia das comunicações Por conta da tecnologia móvel,

Leia mais

Trabalho sobre Social Media Como implementar Social Media na empresa

Trabalho sobre Social Media Como implementar Social Media na empresa Como implementar Social Media na empresa 1 As razões: Empresas ainda desconhecem benefícios do uso de redes sociais Das 2,1 mil empresas ouvidas em estudo do SAS Institute e da Harvard Business Review,

Leia mais

9º Congresso de Pós-Graduação REDES SOCIAIS: DETERMINANDO UMA ORDEM PARCIAL DE INFORMAÇÕES RELEVANTES ATRAVÉS DE UM TWEET

9º Congresso de Pós-Graduação REDES SOCIAIS: DETERMINANDO UMA ORDEM PARCIAL DE INFORMAÇÕES RELEVANTES ATRAVÉS DE UM TWEET 9º Congresso de Pós-Graduação REDES SOCIAIS: DETERMINANDO UMA ORDEM PARCIAL DE INFORMAÇÕES RELEVANTES ATRAVÉS DE UM TWEET Autor(es) MARCOS ANTONIO DOS ANJOS Co-Autor(es) HAMILTON MACHITI DA COSTA PLÍNIO

Leia mais

Thursday, October 18, 12

Thursday, October 18, 12 O Site Legado do IFP é uma comunidade online e global dos ex-bolsistas do programa. É um recurso e um lugar para você publicar notícias profissionais, recursos e teses para a comunidade global do IFP,

Leia mais

História e Evolução da Web. Aécio Costa

História e Evolução da Web. Aécio Costa Aécio Costa A História da Web O que estamos estudando? Período em anos que a tecnologia demorou para atingir 50 milhões de usuários 3 As dez tecnologias mais promissoras 4 A evolução da Web Web 1.0- Passado

Leia mais

Título: ESTRATÉGIAS DE AMPLIAÇÃO DA PRESENÇA DO FLEURY MEDICINA E SAÚDE NAS REDES SOCIAIS

Título: ESTRATÉGIAS DE AMPLIAÇÃO DA PRESENÇA DO FLEURY MEDICINA E SAÚDE NAS REDES SOCIAIS Título: ESTRATÉGIAS DE AMPLIAÇÃO DA PRESENÇA DO FLEURY MEDICINA E SAÚDE NAS REDES SOCIAIS Autores: William Malfatti 1 ; Thaís Arruda 2 ; Sergio Auerbach 3 ; Kleber Soares Filho 4 ; Alex Fernandes 5 ; Melina

Leia mais

ESTUDO DA MELHOR METODOLOGIA PARA A DIFUSÃO DE VÍDEOS EXPLICATIVOS DE FENÔMENOS METEOROLÓGICOS

ESTUDO DA MELHOR METODOLOGIA PARA A DIFUSÃO DE VÍDEOS EXPLICATIVOS DE FENÔMENOS METEOROLÓGICOS Ana Beatriz Mesquita (CPTEC/INPE) ESTUDO DA MELHOR METODOLOGIA PARA A DIFUSÃO DE VÍDEOS EXPLICATIVOS DE FENÔMENOS METEOROLÓGICOS Metodologia do trabalho realizado referente a gravação e expansão dos vídeos

Leia mais

Uma Breve Introdução. Andréa Bordin

Uma Breve Introdução. Andréa Bordin Uma Breve Introdução Andréa Bordin O que significa? NoSQL é um termo genérico que define bancos de dados não-relacionais. A tecnologia NoSQL foi iniciada por companhias líderes da Internet - incluindo

Leia mais

SEMANA NACIONAL DE CIÊNCIA E TECNOLOGIA 2014 FORMULÁRIO PARA SUBMISSÃO DE PROJETOS

SEMANA NACIONAL DE CIÊNCIA E TECNOLOGIA 2014 FORMULÁRIO PARA SUBMISSÃO DE PROJETOS SEMANA NACIONAL DE CIÊNCIA E TECNOLOGIA 2014 FORMULÁRIO PARA SUBMISSÃO DE PROJETOS Formulário para submissão de projeto Dados do Projeto e do (a) Orientador (a) do Projeto Título do Projeto: Um aplicativo

Leia mais

Instituto de Educação Tecnológica Pós-graduação Gestão e Tecnologia da Informação - Turma 25 20/03/2015. Big Data Analytics:

Instituto de Educação Tecnológica Pós-graduação Gestão e Tecnologia da Informação - Turma 25 20/03/2015. Big Data Analytics: Instituto de Educação Tecnológica Pós-graduação Gestão e Tecnologia da Informação - Turma 25 20/03/2015 Big Data Analytics: Como melhorar a experiência do seu cliente Anderson Adriano de Freitas RESUMO

Leia mais

Tipos de Sistemas Distribuídos

Tipos de Sistemas Distribuídos (Sistemas de Informação Distribuída e Pervasivos) Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência

Leia mais

Sumário. Mineração de Dados aplicada à Gestão de Negócios. 1) Mineração de Dados

Sumário. Mineração de Dados aplicada à Gestão de Negócios. 1) Mineração de Dados Aula 1 Introdução -Mineração de Dados Prof. Dr. Sylvio Barbon Junior barbon@uel.br Sumário 1) Mineração de Dados 1) Atividades Relacionadas; 2) Desafios; 3) Exemplos de aplicativos; 4) Últimos assuntos;

Leia mais

Marketing digital NARCISO SANTAELLA

Marketing digital NARCISO SANTAELLA Marketing digital 1 Introdução As agências de publicidade recorrem ao marketing digital para conquistar o público que hoje tem na web uma das principais fontes de informação. Utilizar todos os recursos

Leia mais

O CMS certo para as suas necessidades! Quadro Comparativo

O CMS certo para as suas necessidades! Quadro Comparativo O CMS certo para as suas necessidades! Quadro Comparativo Prof. Ricardo 1 Um CMS (Content Management Systems) é um Sistema de gerenciamento de Conteúdo de websites, portais e intranet disponíveis para

Leia mais

COLETA E MINERAÇÃO DE DADOS DE REDES SOCIAIS

COLETA E MINERAÇÃO DE DADOS DE REDES SOCIAIS Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM COLETA E MINERAÇÃO DE DADOS DE REDES SOCIAIS Aluno: Milton Stiilpen Júnior

Leia mais

ENSINO DE MATEMÁTICA PONTO BLOG

ENSINO DE MATEMÁTICA PONTO BLOG ENSINO DE MATEMÁTICA PONTO BLOG Moema Gomes Moraes 1 RESUMO: Este trabalho faz uma reflexão sobre os aspectos relacionados ao uso de Blogs no ensino de Matemática. Para isto, ele inicia fazendo uma reflexão

Leia mais

COMO O NOVO FEED DO FACEBOOK IMPACTA MARCAS, CAMPANHAS E VENDAS

COMO O NOVO FEED DO FACEBOOK IMPACTA MARCAS, CAMPANHAS E VENDAS guia rápido COMO O NOVO FEED DO FACEBOOK IMPACTA MARCAS, CAMPANHAS E VENDAS Por Claudia Gasparini, Eliseu Barreira Junior e Thiago Costa Você já sabe que o News Feed do Facebook está de cara nova... início

Leia mais

SEO PARA INICIANTES Como otimizar um blog Guia passo a passo para fazer o seu blog otimizado e indexado corretamente!

SEO PARA INICIANTES Como otimizar um blog Guia passo a passo para fazer o seu blog otimizado e indexado corretamente! 1 SEO PARA INICIANTES Como otimizar um blog Guia passo a passo para fazer o seu blog otimizado e indexado corretamente! Fórmula Hotmart - www.formulahotmart.com 2 Este ebook pertence: Claudio J. Bueno

Leia mais

Receba Dicas Gratuitas para o Seu Negócio

Receba Dicas Gratuitas para o Seu Negócio Aprenda Como Gerar Vendas Através de Seu Blog Saiba Como! Home Sobre Visão Sistema Quem Eu Sou Quem Eu Sou Ferramentas Recomendadas Ferramentas Recomendadas Receba Dicas Gratuitas para o Seu Negócio seu@email.com.br

Leia mais

RECUPERAÇÃO DE DOCUMENTOS TEXTO USANDO MODELOS PROBABILISTICOS ESTENDIDOS

RECUPERAÇÃO DE DOCUMENTOS TEXTO USANDO MODELOS PROBABILISTICOS ESTENDIDOS ISBN 978-85-61091-05-7 Encontro Internacional de Produção Científica Cesumar 27 a 30 de outubro de 2009 RECUPERAÇÃO DE DOCUMENTOS TEXTO USANDO MODELOS PROBABILISTICOS ESTENDIDOS Marcello Erick Bonfim 1

Leia mais

Consultar Tabelas Administrativas

Consultar Tabelas Administrativas STN Coordenação-Geral de Sistemas e Tecnologia de Informação Sistema Integrado de Administração Financeira do Governo Federal SIAFI Secretaria do Tesouro Nacional STN Documentação de Serviços de Interoperabilidade

Leia mais

MONITORAMENTO E GOOGLE PLUS. Leonardo Alvez Letícia Chibior Patrick Miguel Ruth Derevecki Samara Bark / / 4MA

MONITORAMENTO E GOOGLE PLUS. Leonardo Alvez Letícia Chibior Patrick Miguel Ruth Derevecki Samara Bark / / 4MA MONITORAMENTO E GOOGLE PLUS Leonardo Alvez Letícia Chibior Patrick Miguel Ruth Derevecki Samara Bark / / 4MA MONITORAMENTO As empresas sabem que o planejamento digital, gestão de conteúdo, anúncios, campanhas

Leia mais

NOVAS MÍDIAS DIGITAIS - AULA 01 - APRESENTAÇÃO

NOVAS MÍDIAS DIGITAIS - AULA 01 - APRESENTAÇÃO NOVAS MÍDIAS DIGITAIS - AULA 01 - APRESENTAÇÃO O QUE É MÍDIA DIGITAL? É conjunto de meios de comunicação baseados em tecnologia digital, permitindo a distribuição de informação na forma escrita, sonora

Leia mais