HAYATO FUJII PROPOSTA DE INSERÇÃO EM LOTE DE ELEMENTOS EM ARVORES MÉTRICAS DISTRIBUIDAS

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

Download "HAYATO FUJII PROPOSTA DE INSERÇÃO EM LOTE DE ELEMENTOS EM ARVORES MÉTRICAS DISTRIBUIDAS"

Transcrição

1 HAYATO FUJII PROPOSTA DE INSERÇÃO EM LOTE DE ELEMENTOS EM ARVORES MÉTRICAS DISTRIBUIDAS LONDRINA PR 2014

2

3 HAYATO FUJII PROPOSTA DE INSERÇÃO EM LOTE DE ELEMENTOS EM ARVORES MÉTRICAS DISTRIBUIDAS Trabalho de Conclusão de Curso apresentado ao curso de Bacharelado em Ciência da Computação da Universidade Estadual de Londrina para obtenção do título de Bacharel em Ciência da Computação. Orientador: Prof. Dr. Daniel dos Santos Kaster Coorientador: Guilherme José Henrique LONDRINA PR 2014

4 Hayato Fujii Proposta de inserção em lote de elementos em arvores métricas distribuidas/ Hayato Fujii. Londrina PR, p. : il. (algumas color.) ; 30 cm. Orientador: Prof. Dr. Daniel dos Santos Kaster Universidade Estadual de Londrina, inserção. 2. lote. 3. método de acesso métrico. 4. I. Prof. Dr. Daniel dos Santos Kaster. II. Universidade Estadual de Londrina. III. Departamento de Computação. IV. Proposta de inserção em lote de elementos em arvores métricas distribuidas CDU 02:141:005.7

5 HAYATO FUJII PROPOSTA DE INSERÇÃO EM LOTE DE ELEMENTOS EM ARVORES MÉTRICAS DISTRIBUIDAS Trabalho de Conclusão de Curso apresentado ao curso de Bacharelado em Ciência da Computação da Universidade Estadual de Londrina para obtenção do título de Bacharel em Ciência da Computação. BANCA EXAMINADORA Prof. Dr. Daniel dos Santos Kaster Universidade Estadual de Londrina Orientador Prof. Dr. Segundo Membro da Banca Universidade/Instituição do Segundo Membro da Banca Prof. Msc. Terceiro Membro da Banca Universidade/Instituição do Terceiro Membro da Banca Londrina PR, 16 de junhode 2014 LONDRINA PR 2014

6

7 AGRADECIMENTOS À minha família por me darem todo o suporte durante o contínuo e longo suporte que me deram durante toda a minha formação, tanto acadêmico e profissional como emocional e pessoal. Ao mestrando Guilherme José Henrique, que explicou seu trabalho e de ajuda exaustiva para resolver problemas. De acordo com Isac Newton, se eu vi longe, foi por estar sobre ombros de gigantes. Ao professor Dr. Daniel dos Santos Kaster pelas conversas de grande valia por onde este trabalho foi guiado e principalmente pela amizade colhida. À minha namorada Renna Karoline Costa pelo suporte emocional e válvula de escape. Neste ano que passou, tudo ficou mais feliz e me deu forças para continuar. Ao pessoal das turmas de 2011 e 2012 do curso de Ciência da Computação da UEL, que sempre estiverem presentes durantes os estudos e outros durante outros tempos de lazer, além do convivio do dia-a-dia durante o período da graduação. O valor do companheirismo e as amizades formadas durante os anos é incalculável.

8

9 FUJII, H.. Proposta de inserção em lote de elementos em arvores métricas distribuidas. 92 p. Trabalho de Conclusão de Curso (Graduação). Bacharelado em Ciência da Computação Universidade Estadual de Londrina, RESUMO Um problema levantado durante os esforços de paralelização da Slim-tree foi o fato do sistema distribuído de arquivos usados durante a implementação ser melhor utlizado para um tamanho de página relativamente grande (4MB ou mais). No entanto, nem todas operações e aplicações de MAMs exigem tanto espaço, utilizando somente uma fração do espaço disponível para um nó. Este trabalho apresenta o conceito de caching durante a inserção dos elementos na Slim-tree, acumulando dados suficientes para que as manipulações de arquivo no sistema distruibuído usufruam de toda sua arquitetura e toda sua performance. Nos experimentos, demonstram-se que, mesmo em um ambiente não distribuído, o algoritmo de inserção com cache constroi um índice mais rapidamente que a inserção elemento a elemento, mantendo o tempo das consultas constante e o número de acesso a disco reduzidas. Palavras-chave: inserção em lote. método de acesso métrico. distribuido. cache.

10

11 FUJII, H.. Bulk element insertion proposal in distributed metric trees. 92 p. Final Project (Undergraduation). Bachelor of Science in Computer Science State University of Londrina, ABSTRACT During the distributed slim-tree paralelization efforts, it was noted that configuring the page size has to be configured to relatively big page sizes (4MB or more) to the structure achieve better performance. Yet, not all operations and applications of Metric Acess Methods (MAM) require such page size, using only a fraction of the space avaliable in a node. This works introduces a caching concept to be used during the index population, gathering data enough to the file operations achieve better performance in their activities. In experimental results, even in a non distrubuted envirovment, the cached bulk-loading inserition algorithm performs better in indexing operations compared to element by element insertions, maintaining query execution times and reduced disk access events. Keywords: bulk insertion. metric acess method. distributed. cache.

12

13 LISTA DE ILUSTRAÇÕES Figura 1 (a) consulta por abrangência e (b) consulta aos k-vizinhos mais próximos 18 Figura 2 Estrutura da Slim-tree Figura 3 HDFS: esquema de replicação das páginas no cluster. [1] Figura 4 Carga rápida da M-tree: exemplo de desbalanceamento conforme densidade dos elementos no espaço.[2] Figura 5 Tempos de construção de índice - us-cities. Tempos no eixo Y em ms.. 32 Figura 6 Tempos de construção de índice - rand-5d-5m. Tempos no eixo Y em ms. 33 Figura 7 Tempos de construção de índice - cluster-100k-rand-10d-5m. Tempos no eixo Y em ms Figura 8 Tempos de Consultas (knn) - us-cities. No eixo X, varia-se os parâmetros da cache; no eixo Y, é mostrado o tempo em ms Figura 9 Tempos de Consultas (Rq) - us-cities. No eixo X, varia-se os parâmetros da cache; no eixo Y, é mostrado o tempo em ms Figura 10 Tempos de Consultas (knn) - rand-5d-5m. No eixo X, varia-se os parâmetros da cache; no eixo Y, é mostrado o tempo em ms Figura 11 Tempos de Consultas (Rq) - rand-5d-5m. No eixo X, varia-se os parâmetros da cache; no eixo Y, é mostrado o tempo em ms Figura 12 Tempos de Consultas (knn) - cluster-100k-rand-10d-5m. No eixo X, varia-se os parâmetros da cache; no eixo Y, é mostrado o tempo em ms. 36 Figura 13 Tempos de Consultas (Rq) - cluster-100k-rand-10d-5m. No eixo X, varia-se os parâmetros da cache; no eixo Y, é mostrado o tempo em ms

14

15 SUMÁRIO 1 INTRODUÇÃO CONCEITOS Similaridade Consulta por Similaridade Espaços Métricos e Métodos de Acessos Métricos A Slim-Tree Jarboreutum: A Slim-Tree Distribuída Trabalhos Relacionados O CACHE DE INSERÇÃO Motivação Proposta Implementação RESULTADOS Tempo de Construção Tempos de Consultas CONCLUSÃO Considerações Finais Principais Contribuições Trabalhos Futuros Referências ANEXOS 43 ANEXO A RAND-2D-5M ANEXO B RAND-5D-5M ANEXO C RAND-10D-5M ANEXO D RAND-256D-1M ANEXO E CLUSTER-100K-3D-5M

16 ANEXO F CLUSTER-100K-10D-5M

17 15 1 INTRODUÇÃO Com as possibilidades de gravação e redução de custo de armazenamento de dados, a era da informação caracteriza-se pela grande quantidade de dados recolhidos - já processados ou não. Estes dados, frequentemente não estruturados ou semi-estruturados, são recolhidos por sensores, dispositivos inteligentes, logs de servidores, conteúdo gerado em plataformas de rede sociais, dentre outras fontes. Essa disseminação dos dispositivos de captura junto com a possibilidade de armazenarse mais dados também resultou não só no aumento de dados textuais gravados, mas também no surgimento de dados mais complexos, tais como coordenadas geoespaciais, arquivos de música, imagens e sequências de DNA. Ferramentas tradicionais não conseguem processá-los pois muitas vezes os tipos de dados não definem uma relação de ordem total de forma trivial, sendo então necessário a utilização de consultas por similaridade. Esse tipo de consulta baseia-se em um critério de similaridade definido entre os dados, retornando aqueles que atendem a este requisito. Uma das principais técnicas para se acessar os dados conforme o critério de similaridade são os Métodos de Acesso Métricos (MAMs), que assumem que os dados estão em um espaço métrico e relaciona-os por suas medida de similaridade. Estruturas que representam esses métodos são a M-Tree e sua variante Slim-Tree, que são hierárquicas, paginadas, assim como a B-Tree, e dinâmicas, ou seja, não degeneram sua estrutura com a adição de novos dados depois da árvore estar construída. Deve-se observar que determinadas computações das MAMs tem como principais limitantes os acessos ao disco e as computações de similaridade. Assim, uma forma de otimizar esses operações é a utilização de soluções paralelas, incluindo discos, processadores ou máquinas adicionais. No entanto, implementações convencionais foram projetadas de modo que sejam executados de maneira sequencial, exigindo um novo projeto de forma que o paralelismo seja utilizado. Devido às plataformas utilizadas para executar um dos paradigmas de paralelismo ser melhor utilizada grandes volumes de dados, a carga de processamento das MAMs aumenta devido a um problema inerente ao tamanho: a eficácia das otimizações efetuadas para evitar que consultas sejam processadas de forma desnecessária. Por exemplo, a adição de um novo elemento necessita de processamento de grande parte da estrutura caso o tamanho de um bloco básico seja muito grande. Portanto, o objetivo deste trabalho consiste na criação de uma estrutura auxiliar, no qual as inserções são realizadas nela. Essa nova estrutura é uma Slim-tree com um tamanho de página reduzido e com um limite máximo de elementos. Assim que o limiar

18 16 Capítulo 1. Introdução é atingido, os nós folhas da Slim-tree auxiliar são inseridos diretamente na sub-árvore mais apropriada do índice principal. Desta forma, utiliza-se dados presentes construídos durante o processo de inserção de elementos na estutura auxiliar. Este trabalho apresenta a seguinte organização: O capítulo 2 apresenta e formaliza o conceito de similaridade, bem como apresenta o conceito de espaço métrico e exemplifica os principais métodos para sua manipulação. A seção 2.2 apresenta a biblioteca Jarboretum, em que os algoritmos propostos foram implementados e experimentados. Finalmente, a seção 2.3 mostra os trabalhos relacionados. O capítulo 3 apresenta a motivação e o problema trabalhado. Em seguida, a proposta para a solução do problema é apresentada. Em seguida, detalhes de algoritmos são introduzidos junto com os detalhes de implementação. O capítulo 4 mostra qual foi o setup de testes, bem quais dados experimentais foram utilizados. Neste capítulo também são mostrados alguns resultados e conclusões tiradas a partir dos experimentos. O capítulo 5 extrai as conclusões finais dos experimentos, junto com algumas reflexões sobre o trabalho feito. Alguns trabalhos futuros também são sugeridos, bem como as contribuições feitas.

19 17 2 CONCEITOS 2.1 Similaridade Na década de 60, surgiram primeiros Sistemas de Gerenciamento de Banco de Dados (SGBDs) voltados ao processamento dados numérios e pequenos textos, tendo como foco grandes organizações, tais como bancos e corporações. Tais SGBDs oferencem recursos eficientes para realizar consultas sobre os dados usando relações de ordem total e de igualdade. Com a popularização dos SGBDs, outras áreas começaram a incorporar o uso destes; em aplicações mais específicas, tornou-se necessária a manipulação de outros tipos de dados além dos alfa-numéricos. Para estes dados não escalares, ou complexos, as relações de ordem total e de igualdade não se aplicam ou simplesmente são de pouco uso. Para estes tipos de dados, as consultas por similaridade são mais relevantes, onde a pesquisa por elementos se dá por algum critério de similaridade, que sejam mais "distintos"ou "parecidos"de um determinado elemento Consulta por Similaridade Segundo [3], uma consulta por similaridade é definida por um objeto de consulta e algum critério de similaridade, tipicamente representada por uma função de distância. O conjunto-resposta desta consulta tem como elementos todos os objetos que satisfazem tal critério. Dados complexos, no geral, podem ser modelados por um meio de conjunto de atributos que caracterizam seu conteúdo, como a quantidade de pixels de uma certa cor e/ou presença e quantidade de uma forma geométrica. Este conjunto é denominado como o vetor de características [4]. Uma função matemática então pode ser utilizada para quantificar quão similar os elementos são a partir do vetor extraído. Esta função, por definição, deve ter como contra-domínio valores reais maior ou igual a zero e quanto menor o valor maior é a similaridade; um valor nulo oriundo função de distância igual equivale à similaridade total. Esta função é chamada de função de dissimilaridade ou função de distância [5]. A função de distância indica exatamente quão dissimilar (diferente) é o objeto. A similaridade, então, pode ser medida pelo inverso deste valor. Existem vários tipos de consultas por similaridade, sendo as consultas por abrangência e consultas aos k-vizinhos mais próximos as mais comums. Além destes tipos, existem outros tipos de consultas por similaridade, sendo representativos as junções por

20 18 Capítulo 2. Conceitos similaridade e consultas por similaridade agregada [6]. São explicados as consultas por abrangência e os k-vizinhos mais próximos. Uma consulta por abrangência (range query - Rq) retorna todos os elementos dissimilares de um elemento de consulta até uma certa distância máxima de um objeto de consulta. Formalmente, seja S um domínio de dados, S S um conjunto de elementos, s q S um elemento de consulta, δ uma função de distância sobre elementos de S e ε um limiar de dissimilaridade, uma consulta por é dada por {s i S δ(s q, s i ) ε} Já as consultas aos k-vizinhos mais próximos (k-nearest Neighbors query - k-nnq) retornam os k elementos mais similares da consulta. Deve ser observado que se cardinalidade do conjunto de dados for menor que k, o número de elementos retornados será menor que k. Inversamente, podem existir dois ou mais elementos com distâncias iguais ao elemento de referência; nestes casos, pode-se descartar um dos elementos de forma aleatória ou, alternativamente, ambos poderão ser elementos do conjunto-resposta, fazendo que a cardinalidade deste conjunto seja maior que k. Formalmente, dado um domínio S, um conjunto de elementos S S, um elemento de consulta s q εs, uma função de distância δ definida sobre S e um inteiro k 1, o resultado de uma consulta será: K = {s i S s j S K, K = l, δ(s q, s i ) δ(sq, sj)} A Figura 1(a) representa um consulta por abrangência com elemento de consulta s q e raio ξ no plano R 2. Os elementos localizados no interior da região apresentada compõem o resultado da consulta. Já a figura 1(b) ilustra uma 5-NNq, com s q S como elemento de consulta. Figura 1 (a) consulta por abrangência e (b) consulta aos k-vizinhos mais próximos

21 2.1. Similaridade Espaços Métricos e Métodos de Acessos Métricos Formalmente, um espaço métrico é definido pelo par D, δ, onde D é o conjunto de elementos onde as consultas por similaridade são efetuadas e δ : D D R + é uma função de distância que avalia a "similaridade"entre dois objetos pertencentes ao conjunto. A função necessariamente deve possuir as seguintes propriedades: 1. Simetria: δ(s 1, s 2 ) = δ(s 2, s 1 ) 2. Não negativa: 0 < δ(s 1, s 2 ) < ses 1 s 2 eδ(s 1, s 1 ) = 0 3. Desigualdade triangular: δ(s 1, s 2 ) < δ(s 1, s 3 ) + δ(s 2, s 3 ) onde s 1, s 2 D. As funções de distâncias mais utilizadas são as funções da família Minkowski (L p ); entre elas, estão presentes a distância euclidiana (L 2 ) e a distância Manhattan (L 1 ). As funções da família Minkowski são representados por [3]: ni=1 d(x 1... x 2 )(y 1... y n ) = p x 1 y 1 p As propriedades do espaço métrico, principalmente a desigualdade triangular, permitem a criação de técnicas de indexação capazes de responder consultas de modo eficiente [5]. Um método de acesso (MA) utiliza algum tipo de estrutura de dados para uma consulta não realizar uma busca sequêncial sobre todos os elementos do conjunto de dados [7]. Através das propriedades dos elementos indexados, uma MA pode descartar parte do conjunto, economizando recursos computacionais. Os MAs mais importante são as estruturas na forma de árvore ou hierárquicas, tais como a B-Tree [8], R-Tree [9] e a Slim-Tree [10]. As MAs inicialmente foram projetadas para o tratamento de dados numéricos e de pequenas cadeias de texto. Estes dados definem uma relação de ordem total entre eles, sendo, por exemplo, a operações de maior ou menor aplicáveis para estes conjuntos de dados. Dados complexos, tais como coordenadas geográficas, não definem tais relações, além de necessitar de mais dimensões para serem tratadas corretamente. Para o armazenamento e posterior consulta de tais dados, foram criados os Métodos de Acesso Espaciais (MAEs), que tratam principalmente de dados geográficos. Exemplos de estruturas incluem a R-Tree e a R*-Tree [11]. No entanto, caso seja utilizado dados com dimensões maior, essas estruturas tendem a ter sua performance degradada [6]. Os Métodos de Acesso Métricos (MAMs) podem ser utilizados para indexar dados de alta dimensionalidade, pois os elementos são somente relacionados pelas suas

22 20 Capítulo 2. Conceitos relações de similaridade. Para isto, é necessário que os elementos estejam dentro do espaço métrico e que a métrica (a função de dissimilaridade) seja definida adequadamente. Exemplos de MAMs incluem M-tree [12], sua variante Slim-tree [10] e a DBM-tree [5]. Estes índices tem como caraterísticas serem hierárquicas, paginadas e balanceadas. Uma idéia que estas estruturas empregam é que alguns elementos são eleitos como representativos de um subconjunto de dados. Quando um novo elemento é adicionado, as distâncias do elemento com os representativos são calculados de forma que as propriedades do espaço métrico sejam utilizadas para descartar elementos durante a consulta ou a construção do índice. A M-tree foi o primeiro MAM dinâmico criado, isto é, os elementos podem ser inseridos após a construção do índice sem degeneração da estrutura (e perda de performance), característica não presente nos MAMs estáticos. A árvore gerada tem crescimento bottom-up, com dois tipos de nós, internos e folhas. A Slim-tree é reconhecida como uma evolução da M-tree, pois uma das suas grandes contribuições é o novo algoritmo de escolha de representativos, tendo base a árvore de cobertura mínima (Minimal Spanning Tree - MST) A Slim-Tree Na Slim-tree, assim como na M-tree, os elementos são reunidos em um tamanho fixo de acordo da página do disco. Os elementos em si são armazenados somente nas folhas, organizados em uma estrutura de árvore. Um elemento representante dé cada nó-folha é eleito e é utilizado como a parte central de todos os elementos de uma região de cobertura da árvore. Esse método de acesso utiliza dois tipos de estruturas: nós internos e nós folhas. Os nós folhas têm o seguinte formato [6]: nó-folha [ vetor de [OId i, d(s i, s rep ), s i ] ] onde OId i é o identificator do elemento s i ; d(s i, s rep ) é a distância do elemento s i até o elemento representativo s rep do nó. Os nós internos tem o seguinte formato [6]: onde nó-folha[ vetor de [s i, r i, d(s i, s rep ), ptr(t si ), #ent(ptr(t si ) ] ] s i é o elemento representante da subárvore apontada por ptr(t si );

23 2.1. Similaridade 21 r i é o raio de cobertura do nó (distância entre o elemento representativo e o elemento mais distante do nó); d(s i, s rep ) é a distância do elemento s i até seu representativo; #ent(ptr(t si )) é o número de entradas da subárvore apontada por ptr(t si ). A figura 2 mostra a estrutura da árvore. s 15 s 13 s 14 s 6 s 11 s 12 s 8 s 9 s 10 s 7 s 1 s 17 s 5 s 16 s 2 s 3 s 4 s 1 s 8 s 4 s 1 s 2 s 8 s 13 s 4 s 11 s 1 s 6 s 7 s 2 s 16 s 17 s 8 s 10 s 9 s 13 s 15 s 14 s 4 s 3 s 5 s 11 s 12 Figura 2 Estrutura da Slim-tree O algoritmo de inserção na Slim-tree tem início na nó raiz e sua estrutura é percorrida até encontrar o nó folha, de forma que o raio de cobertura de uma subárvore não aumente. Se o novo elemento não estiver dentro de nenhum raio de cobertura de algum nó já existente, é escolhido um nó cuja distância com o novo elemento seja minimizado. Se mais de um nó poder conter o objeto dentro do seu raio de cobertura, o algoritmo de escolha de subárvore é aplicado. Dependendo do algoritmo de escolha de subárvore, a árvore gerada pode ter diferentes características para o mesmo conjunto de dados. Caso seja escolhido a menor taxa de ocupação (minoccup), o nó com o menor número de elementos é selecionada, gerando uma árvore com alturas menores mas com um alto grau de sobreposição. Utilizando a menor distância como critério (mindist), no qual o nó mais perto em relação ao novo

24 22 Capítulo 2. Conceitos elemento é escolhido, a árvore é mais alta e com um grau de sobreposição menor. Alternativamente, o nó escolhido de forma aleatória gera árvores com performance igualável às duas opções [5]. Durante a inserção de um novo elemento, pode ocorrer dos nós escolhidos já estiverem totalmente preenchidos. Neste caso, uma operação de split deve ser realizada, criando um novo nó e a redistribuir os dados dos nós cheios para os novos espaços alocados. Há a necessidade de escolher os elementos representativos; dois elementos são escolhidos e então são referenciados pelo nó pai. Caso esse processo ocorra na raiz, uma nova raiz é criada e um novo nível da árvore é criada. Para a escolha dos representativos, a Slim-tree pode ser configurada com uma das seguintes estratégias: Aleatório (Random) : a escolha dos representativos é feita de forma aleatória, sendo o algoritmo mais rápido; Mínimo dos Menores Raios (minmax) : é escolhido o par de objetos que minimizam os novos raios de cobertura; este algoritmo é o mais custoso pois cada par de elementos pode ser utilizado; Minimal Spanning Tree (MST) : é construida uma árvore de caminhos mínimos e a aresta mais longa da árvore é podada. Dois grupamentos são espalhdos entre os nós e os objetos centrais de cada grupo são escolhidos como os novos representantes. 2.2 Jarboreutum: A Slim-Tree Distribuída Em [1], a biblioteca Jarboretum, escrita em Java, foi criada a partir da arquitetura e estrutura da biblioteca Arboretum[13], escrita em C++ com código-fonte aberto e desenvolvida pelo Grupo de Bases de Dados e Imagens do Instituto de Ciências Matemáticas e de Computação da USP (GBDI-ICMC-USP). A criação da Jarboretum foi necessária em uma tentativa de paralelizar a Slimtree, pois existem vários algoritmos passíveis de serem paralelizados e terem sua execução de forma mais rápida ao distribuir as funcionalidades para diferentes máquinas. Nesta aplicação, várias interfaces estão definidas de forma que modificações sejam de fácil escrita e a curva de aprendizado para implementação de novos algoritmos seja menor. Tanto na Jarboretum e na Arboretum existe a divisão em camadas distintas: camada de usuário, responsável pela implementação das funções de distância e dos tipos de objetos a serem armazenados; a camada de estrutura que enforça as regras dos métodos de acesso e a camada de armazenamento, que contém abstrações de diferentes dispositivos de armazenamento.

25 2.2. Jarboreutum: A Slim-Tree Distribuída 23 A camada de armazenamento disponibiliza uma interface para a criação de novos abstrações de locais de persistência. Por padrão, a abstração convencional que implementa tal interface é a DiskPageManager, que armazena páginas como um único arquivo e utiliza identificadores de página para acessar os nós armazenados no arquivo. Também existe a abstração de memória, MemoryPageMAnager, cujo mapeamento para escritas em memória, ganhando velocidade de acesso ao custo do armazenamento ser Na Jarboretum, uma abstração de armazenamento distribuído chamado Hadoop Distributed File System Page Manager, ou HdfsPageManager, foi criado a fim de auxiliar no esforço de paralelização da Slim-tree. Esta forma de armazenamento permite que os arquivos criados sejam replicados para um cluster de computação distribuída Hadoop de forma transparente ao programador facilitando a implementação de outros fatores que são exigidos da computação paralela. A figura 3 ilustra como a replicação de nível 3 é atingida. Figura 3 HDFS: esquema de replicação das páginas no cluster. [1] Os algoritmos de inserção de elementos, bem como suas funcionalidades necessárias tal como o algoritmo de Minimal Spanning Tree e de split de nós, e os algoritmos de consultas são totalmente implementadas na Jarboretum. No entanto, o algoritmo de slimdown, característico da Slim-tree, não está presente.

26 24 Capítulo 2. Conceitos 2.3 Trabalhos Relacionados Ciaccia e Patella[2] propõem um algoritmo de carga rápida para a M-tree, utilizando a técnica de amostragem dos dados. No entanto, em etapas intermediárias, a árvore não é balenceada, já que é construída de maneira descendente e de acordo com a proximidade dos elementos a serem inseridos. Incialmente, o algoritmo escolhe de forma aleatória uma amostra de k elementos do conjunto de dados a serem inseridos. Então, para cada elemento do conjunto, é escolhido o elemento pertencente à amostra mais próxima do dado, formando-se k conjuntos. Recursivamente, cada nó representante então é associado a um sub-conjunto, tendo-se então uma árvore não balanceada. Neste ponto, as sub-árvores tendem a serem mais altas em áreas do conjunto de dados mais densas e a amostras em regiões menos densas deverão ter sub-árvores de tamanho menor, com cardinalidade mais baixa. A figura 4 ilustra essa situação. A D E root B A B C F H I G A D E C F G C C" H I Figura 4 Carga rápida da M-tree: exemplo de desbalanceamento conforme densidade dos elementos no espaço.[2] Após a construção, o balanceamento é feito na tentativa da M-tree ser completa e balanceada. Pode-se eliminar uma amostra e re-associar os elementos antes associados à amostra eliminada ou a amostra pode ser subsituida por um elemento reprensentativo mais adequado, que pode ser obtida quebrando as sub-árvore com altura maior. Os elementos anteriormente associados devem ser reindexadas neste novo elemento. No entanto, existe o risco da árvore gerada ter somente um único elemento representativo e nós-folhas contendo somente um elemento em cada. Quando isso ocorre, é necessário re-executar o algoritmo com outro conjunto de amostras. Por este fato, o processo pode ser custoso e há chances do algoritmo nunca resultar em uma árvore válida. No trabalho de Vespa[14], o autor propõe um algoritmo de carga rápida para o

27 2.3. Trabalhos Relacionados 25 MAM Slim-tree. A idéia principal do algoritmo proposto é estimar o número de nós da árvore a ser construída e o número de elementos de cada antes de associar os elementos a cada lista, para então distribuir os elementos nos nós virtual. Desta forma, a estrutura criada é balanceada em todas as etapas da construção. Para a criar a estimativa da quantidade de novos nós, é necessário obter como parâmetros o número total de elementos a serem indexados e as taxas de ocupação mínima e máxima de um nó. Desta forma, o controle de número de elementos associado a cada nó pode ser calculado de três maneiras distintas, a saber: (a) manter o número de elementos constante para toda a árvore, (b) manter o número de elementos disposto para cada nó constante em cada nível da árvore, baseado na altura atual ou (c) avaliar o limite de acordo com a taxa de balanceamento da árvore. Neste último, Todas as três abordagens constroem árvores balanceadas, mas as duas primeiras constroem árvores com estruturas rígidas enquanto a terceira tenta utilizar a distribuição de dados para otimizar a estrutura sem a perca de balanceamento. Para otimizar requisições aos índices, Skopal, Lokoc e Bustos[15] propõem um cache volátil (em memória) para o armazenamento das distâncias entre os elementos, de forma que operações de cálculo de distância sejam minimizadas. A motivação vêm do fato que cada consulta é processada de forma independente ao invés de serem tratadas como um fluxo de consultas. Por causa disto, os esforços de otimização de SGBDs focam-se em como filtrar os dados e reduzir o número de acesso a disco. O autor menciona que o cache de distância é uma analogia ao cache de disco amplamente implementadas em SGBDs, mas economizando cálculos e não acesso ao disco. A idéia é utilizar os dados já calculados e armazená-los para poder inferir, de forma aproximada, os resultados mais rapidamente. Independentemente da operação na MAM, seja de inserção de novo elemento ou alguma consulta, o cache mantém a computação da distância no formato: [id(o i ), id(o j ), δ(o i, O j )] onde id(o i ), id(o j ) são identificadores dos objetos O i e O j e δ(o i, O j ) representa suas distâncias. Ao invés de armazenarem tuplas, os autores propõem que os dados sejam guardados em uma matriz esparsa, onde as linhas e as colunas são os objetos e a respectiva célula apontada armazena o valor da distância. Como o cache é volátil, inicialmente a matriz é vazia e é preenchida gradualmente assim que as operações são efetuadas. A vantagem de uso desta matriz se dá por duas formas: (a) no caso da tabela já tiver armazenado o valor exato da distância necessária para alguma computação, o que é útil no caso de algum procedimento de reindexação ou consultas repetidas e (b) a tabela, utilizando de dados já calculados, pode fornecer os limites superiores e inferiores

28 26 Capítulo 2. Conceitos da distância, ao invés do número exato não pré-calculado na tabela. Usando somente as informações de limites, pode-se podar seções do índice e efetuar consultas de forma mais rápida do que calcular todas as distâncias necessárias em situações que o cache não é utilizado. Falchi et al.[16] utiliza uma idéia similar, mas as informações armazenadas são utilizadas para calcular de forma aproximada o resultado final da consulta desejada.

29 27 3 O CACHE DE INSERÇÃO Os esforços de paralelização da Slim-tree incluem abordagens com o uso do framework para processamento de grandes volumes de dados Hadoop e seu sistemas de arquivos de arquivos distribuídos Hadoop Distributed File System (HDFS). A biblioteca Jarboretum realiza a leitura e escrita nesse sistema de arquivos através da classe HdfsPageManager e tem como principal requisito o uso de páginas relativamente grandes (4 MB ou mais). Com esse tamanho de página, vantagens em relação a ganhos de velocidade para processamento do índice podem ser observadas; caso contrário, degradação de desempenho pode ser esperado [1]. Além disso, escritas nesse sistemas de arquivos são bastante custosas, devido, principalmente, a sua natureza distribuída, o que exige a criação de novas técnicas que possam minimizar essas escritas. Uma desses métodos pode ser com a realização de operações de inserções em lote, em que um índice menor é utilizado para inserções elemento a elemento e, a partir de um certo limiar, os elementos desse índice são inseridos em lote no índice principal. Com isso, espera-se reduzir custosas escritas ao disco e, por consequência, diminuir o tempo de processamento dos dados. Neste capítulo, são apresentadas as contribuições esperadas desse trabalho. A seção 3.1 apresenta e especifica o problema explorado e a seção 3.2 apresenta uma possível modificação que possa contornar o problema mencionado anteriormente. Já a seção 3.3 mostra os algoritmos propostos e detalhes de implementação. 3.1 Motivação De acordo com [1], a Slim-tree é uma estrutura paginada de natureza não volátil, o que significa que cada nó é representado por uma página 1 de um arquivo no disco e cada arquivo é formado por páginas relativamente pequenas. Porém, se torna muito custoso utilizar o HDFS para armazenar e efetuar leituras aleatórias nesse tipo de arquivo, visto que ele foi projetado para processamento de blocos muito grandes e realização de acessos sequenciais a esses blocos. Então, a solução proposta no trabalho citado envolve serializar cada nó da Slim- Tree como um arquivo, sendo interessante então aumentar o tamanho da página, maximizando a quantidade de elementos em cada nó. O autor lista vantagens para se usar o HDFS: 1 A página ou bloco denotam uma unidade atômica de armazenamento de dados.

30 28 Capítulo 3. O Cache de Inserção Acesso sequencial é mais vantajoso; Tempo menor de inserção de blocos no HDFS, devido ao overhead da replicação e confirmação realizada pela HDFS para cada arquivo; Número reduzido de blocos no geral e altura reduzida da árvore, bem como o aumento da taxa de transferência de arquivos; A realização de consultas que exigem menos comunicação entre as máquinas participantes do cluster. O HDFS não foi projetado para lidar com vários arquivos com tamanhos menores que o seu tamanho de bloco padrão (64MB); seu design é orientado para fornecer streams de grandes arquivos ao invés de leituras a partir de um offset e acesso de máquinas para recuperar arquivos pequenos, que são padrões ineficientes para recuperação de dados [17]. 3.2 Proposta A proposta desse trabalho aborda diretamente o fato do HDFS não lidar de forma eficiente com pequenos arquivos distribuídos entre as diferentes máquinas no cluster. A ideia envolve acumular, em uma MAM secundária ao índice principal, os novos elementos oriundos das operações de inserção. Uma vez que o limite e ic de elementos é atingido na estrutura auxiliar, uma operação de flush é efetuada, que consiste em localizar os nós contendo os elementos e adicionar o conjunto de elementos na sub-árvore mais apropriada do MAM principal. A MAM secundária, cunhada de Cache de Inserção, tem a mesma estrutura e utiliza os mesmos algoritmos que uma Slim-tree, tendo como parâmetros o limite e ic de elementos e o tamanho de página b ic. Ambos parâmetros devem ser configurados conforme experimentos para obter-se eficiência tanto nas operações de inserção tanto nas operações de consulta. Nas melhores hipóteses, o tamanho da página b ic é pequeno o suficiente para que um número pequeno de elementos seja associado a um nó. Quando a transferência de nó é executada, espera-se que a probabilidade de ocorrer modificações nas propriedades do nó no índice principal, tal como alteração do raio de cobertura e operações de split, seja mais baixa pelo fato de haver um pequeno número de elementos a serem reassociados. Os objetivos desta abordagem com cache de inserção serão: 1. Identificar os ganhos e perdas de performance nas operações de inserção e de consulta;

31 3.3. Implementação Identificar os melhores parâmetros de configuração da estrutura secundária; 3. Ponderar se o uso do cache traz vantagens e em quais casos. 3.3 Implementação A implementação do cache de inserção aproveita-se da estrutura da Slim-tree já existente, necessitando-se modificar a operação de inserção para detectar quando a estrutura secundária está em sua capacidade máxima limitada por e ic e então efetuar o flush: 1 public boolean add(float[] element, long rowid) { 2 this.elementcount++; 3 boolean split = super.add(element, rowid); 4 5 if (elementcount > elementlimit) { 6 flushcache(this.root, null); 7 this.deleteindex(); 8 } 9 return split; 10 } Listing 1: Implementação do add A função flush transversa o cache em busca dos nós folha de forma recursiva, para então identificar o elemento representativo do nó e adicionar o nó no índice principal: 1 private void flushcache(nodetree nodetree, EntryTree entrytree) { 2 if (nodetree instanceof IndexNodeTree) { 3 for (EntryTree entry : nodetree.getentries()) { 4 IndexEntryTree internalentry = (IndexEntryTree) entry; 5 flushcache(this.getpagemanager().fromfiletonode(internalentry.getptr()), 6 } 7 } else if (nodetree instanceof LeafNodeTree) { 8 LeafNodeTree leafnode = (LeafNodeTree) nodetree; 9 if (entrytree!= null) { 10 bigslim.addnode(leafnode, entrytree.getspaceelement()); 11 } else { 12 float[] randomleafelement = leafnode.getentry(0).getspaceelement(); 13 bigslim.addnode(leafnode, randomleafelement); 14 } 15 } 16 } Listing 2: Implementação da função flush No âmbito da estrutura principal, o método de inserção do novo nó consiste em uma modificação do método de inserção de um elemento comum, passando a receber

32 30 Capítulo 3. O Cache de Inserção um nó folha como argumento. O processo ainda continua recursivo; para a execução do roteamento, o elemento representativo é utilizado como parâmetro da funcionalidade. Antes da junção dos dois nós, a verificação do tamanho da página é executada de forma que as operações de split, caso necessário, sejam executadas. As consultas realizadas nesse novo sistema são realizadas de maneira trivial. Para a consulta aos k-vizinhos mais próximos, primeiramente é realizada a consulta ao índice principal e, em seguida, efetua-se a consulta com os mesmos parâmetros para o índice secundário. Depois disso, é realizado a adição dos elementos do índice secundário ao conjunto resposta principal e o elemento mais distante do raio de consulta é removido desse conjunto. A verificação da nulidade da raíz é necessária para o caso da consulta ter sido realizada logo após o cache ter realizado flush. O algoritmo para a consulta por abrangência se baseia nessa mesma ideia. 1 public TreeResult nearestquery(float[] sample, int k, boolean tie) { 2 3 TreeResult indexresult = bigslim.nearestquery(sample, k, tie); 4 5 if (this.root!= null) 6 { 7 TreeResult cacheresult = super.nearestquery(sample, k, tie); 8 9 for (ResultPair pairs : cacheresult.getpairs()) 10 { 11 indexresult.addpair(pairs); 12 indexresult.knncutoldresult(); 13 } } 16 return indexresult; 17 } Listing 3: Implementação da consulta aos k-vizinhos mais próximos. Esse método se encontra dentro do cache.

33 31 4 RESULTADOS Para a execução de testes, foi utilizado um computador equipado com um processador Intel Core i7 3610M, com clock a 2.6GHz, com 16GB de RAM DDR3 e um disco rígido SATA de 750GB à 7200 RPM. O sistema operacional utlizado foi o Ubuntu "Trusty Tahr". Um arquivo JAR contendo as dependências de biblioteca e a aplicação em si foi gerado de forma que o uso da Slim-tree fosse gerenciado a partir de argumentos passados por linha de comando. Para automatizar os testes, um script bash foi escrito, que executa primariamente a construção de uma Slim-tree sem o cache e depois, utilizado o índice gerado, executa consultas dos cinco, 10, 15, 20 e 30 elementos mais próximos e consultas por abrangência com raios de 0.1 até 0.5, com incrementos de 0.1. Para as consultas, foram extraídos de forma aleatória 25 elementos para cada tipo de consulta, oriundos dos conjuntos de dados utilizados para construir o índice. Os resultados referentes à performance do aplicativo, tais como tempos de execução, cálculos de distância e número de acesso a disco são armazenados a fim de comparações. O tamanho de página de cada índice foi configurado para a potência de 2 que possa conter ao menos que uma página caiba aproximadamente 50 elementos do conjunto de dados utilizados Após a geração das estatísticas sem o uso de cache, o script reconstrói o indice, mas desta vez utilizando o cache com seu tamanho de página 25% do tamanho de página do índice principal e um limite máximo de 100 elementos. As mesmas consultas efetuadas para a geração de estatísticas para comparação são efetuadas e armazenadas. O tamanho de página do cache é variado de 25% à 100% do tamanho de página do índice principal, com incrementos de 25%; para cada variação do tamanho de página, são executadas a criação do índice e as consultas com limite máximo de elementos configurado para 100, 250, 500, 1000, 5000 e A tabela 4 mostra os conjuntos de dados utilizados e suas características:

34 32 Capítulo 4. Resultados Conjunto de Dados # Elem. D Tam. Pág. Descrição us-cities Coordenadas geográficas de algumas cidades dos EUA. rand-2d-5m Conjunto de dados sintéticos com distribuição uniforme gerado pelo DBGen. rand-5d-5m Conjunto de dados sintéticos com distribuição uniforme gerado pelo DBGen. rand-10d-5m Conjunto de dados sintéticos com distribuição uniforme gerado pelo DBGen. rand-256d-1m Conjunto de dados sintéticos com distribuição uniforme gerado pelo DBGen. cluster-100k-rand-3d-5m Conjunto de dados sintéticos gerado pelo DBGen. Os elementos são distribuidos de forma que existam clusters espalhados. cluster-100k-rand-10d-5m Conjunto de dados sintéticos gerado pelo DBGen. Os elementos são distribuidos de forma que existam clusters espalhados. Nesta seção, são mostradas alguns exemplos colhidos durante os experimentos. Todos os resultados estão disponíveis nos anexos deste trabalho para posterior conferência. 4.1 Tempo de Construção Nos gráficos 5, 6, 7, pode-se observar que há um ganho considerável nas construções do índices. Os ganhos mais acentuados se destacaram onde o número de elementos na cache foram limitados à 100. Nota-se também que, conforme maior a dimensionalidade, maior é o ganho do uso do cache durante a construção. Pode-se notar também que, quando menor o tamanho do cache, maior é seu desempenho. Figura 5 Tempos de construção de índice - us-cities. Tempos no eixo Y em ms.

35 4.2. Tempos de Consultas 33 Figura 6 Tempos de construção de índice - rand-5d-5m. Tempos no eixo Y em ms. 4.2 Tempos de Consultas Em análise dos resultados, pôde ser observado que, conforme a dimensionalidade é reduzida, o tempo das consultas degradam-se, chegando a ser o triplo do tempo tomado nos conjuntos de dados com dimensionalidade dois. No entanto, conforme a este valor aumenta, os tempos começam a reduzir até que há um ganho mínimo em relação às consultas feitas em índices construídas sem o cache. Em alguns casos, pode-se noticiar que o índice está com altos níveis de sobreposição, devido à adição de nós com raio de cobertura grandes. Isso força o índice principal a atualizar seus próprios nós e aumentar o raio de cobertura para cobrir as novas adições. Devido a esse problema, a poda não é realizada e uma perca de performance é vista.

36 34 Capítulo 4. Resultados Figura 7 Tempos de construção de índice - cluster-100k-rand-10d-5m. Tempos no eixo Y em ms. Figura 8 Tempos de Consultas (knn) - us-cities. No eixo X, varia-se os parâmetros da cache; no eixo Y, é mostrado o tempo em ms.

37 4.2. Tempos de Consultas 35 Figura 9 Tempos de Consultas (Rq) - us-cities. No eixo X, varia-se os parâmetros da cache; no eixo Y, é mostrado o tempo em ms. Figura 10 Tempos de Consultas (knn) - rand-5d-5m. No eixo X, varia-se os parâmetros da cache; no eixo Y, é mostrado o tempo em ms.

38 36 Capítulo 4. Resultados Figura 11 Tempos de Consultas (Rq) - rand-5d-5m. No eixo X, varia-se os parâmetros da cache; no eixo Y, é mostrado o tempo em ms. Figura 12 Tempos de Consultas (knn) - cluster-100k-rand-10d-5m. No eixo X, varia-se os parâmetros da cache; no eixo Y, é mostrado o tempo em ms.

39 4.2. Tempos de Consultas 37 Figura 13 Tempos de Consultas (Rq) - cluster-100k-rand-10d-5m. No eixo X, varia-se os parâmetros da cache; no eixo Y, é mostrado o tempo em ms.

40

41 39 5 CONCLUSÃO 5.1 Considerações Finais Neste trabalho foi apresentado um novo método de inserção em lote de elementos nos métodos de acesso métricos. Pode-se notar que o uso do cache é vantajoso quando a dimensionalidade do conjunto de dados é maior que 2; nos conjuntos com dimensionalidade reduzida, os tempos para criação do índice foram consideralvemnte diminuídos. No entanto, consultas efetuadas sobre os índices construídos apresentaram consumo de recursos maior que os índices criados sem cache. Notou-se que em alguns casos, consultas aos índices construídos foram mais custosas do que consultas em índices construídos elemento a elemento, pois devido ao tamanho de página do cache, as operações de flush aumentaram o raio de cobertura da árvore, gerando sobreposição e aumentando o tempo de processamento pela estrutura não estar mais descartando elementos. Portanto, esses parâmetros em questão precisam ser bem aprimorados. Além disso, durante os experimentos, operações sobre conjuntos de dados agrupados não obtiveram diferenças em comparação aos conjuntos com distribuição uniforme. Um cenário de uso promissor se dá quando um cluster com o PageManager configurado para o HdfsPageManager, em que o tamanho das páginas deve ser de tamanho razoavelmente grande. As máquinas clientes manteriam um cache configurado com o PageManager configurado para o MemoryPageManager; dessa forma, todas as inserções unitárias seriam realizadas em memória. Quando o limiar de flush fosse atingido, as escrita é executada de forma que todos os elementos sejam transferidos para o HDFS com performance comparável a uma inserção de um elemento simples. Deve-se destacar o que o cenário acima descrito têm pontos de falha, pois, por exemplo, uma máquina realizando a inserção pode falhar e todos os elementos armazenados em memória seriam descartadas, além do fato dos elementos não serem acessíveis até a operação de flush ser realizada. Portanto, um mecanismo de journaling deverá ser implementado. 5.2 Principais Contribuições Criação do novo algoritmo de inserção em lote de elementos na Slim-Tree Criação de algoritmos de coexistência de estruturas métricas

42 40 Capítulo 5. Conclusão Extensão da Slim-Tree para suportar operações entre múltiplas estruturas Forma de mescla de estruturas métricas 5.3 Trabalhos Futuros Como trabalhos futuros, podem ser sugeridas: Implementar a cache de inserção na Arboretum e avaliar seu desempenho. Ciração de novas políticas de flush. Implementar outras estratégias e critérios para a execução do flush do cache. Possibilitar o uso da estratégia do cache para ambientes distribuídos.

43 41 REFERÊNCIAS 1 HENRIQUE, G. J. Consultas por similaridade em um ambiente distribuído. 2 CIACCIA, P.; PATELLA, M. Bulk loading the m-tree. In: Proceedings of the 9th Australasian Database Conference (ADC 98). [S.l.: s.n.], p ZEZULA PAVEL; AMATO, G. D. V. B. M. Similarity Search: The Metric Space Approach. 1st. ed. [S.l.]: Springer Publishing Company, Incorporated, ISBN , BARIONI, M. C. N. Operações de consulta por similaridade em grandes bases de dados complexos. Tese (Doutorado) Instituto de Ciências Matemáticas e de Computação (ICMC), Universidade de São Paulo (USP), VIEIRA MARCOS RODRIGUES; TRAINA JR, C. DBM-Tree: Método de acesso métrico sensível a densidade local. Tese (Doutorado) Instituto de Ciências Matemáticas e de Computação (ICMC), Universidade de São Paulo (USP), KASTER, D. d. S. Tratamento de condições especiais para busca por similaridade em bancos de dados complexos. Tese (Doutorado) Instituto de Ciências Matemáticas e de Computação (ICMC), Universidade de São Paulo (USP), POLA, I. R. V. Explorando conceitos da teoria de espaços métricos em consultas por similaridade sobre dados complexos. Tese (Doutorado) Instituto de Ciências Matemáticas e de Computação (ICMC), Universidade de São Paulo (USP), COMER, D. Ubiquitous b-tree. ACM Computing Surveys (CSUR), ACM, v. 11, n. 2, p , GUTTMAN, A. R-trees: A dynamic index structure for spatial searching. [S.l.]: ACM, JR CAETANO; TRAINA, A. S. B. F. C. T. Slim-trees: High performance metric trees minimizing overlap between nodes. [S.l.]: Springer, BECKMANN, N. et al. The R*-tree: an efficient and robust access method for points and rectangles. [S.l.]: ACM, CIACCIA, P.; PATELLA, M.; ZEZULA, P. M-tree: An efficient access method for similarity search in metric spaces. In: Proceedings of the International Conference on Very Large Data Bases. [S.l.]: Morgan Kaufmann Pub, v. 23, p VIEIRA FABIO J. T. CHINO CAETANO TRAINA JR., A. J. M. T. M. R. Disponível em: < 14 VESPA, T. G. Operação de carga-rápida (bulk-loading) em métodos de acesso métricos. Tese (Doutorado) Instituto de Ciências Matemáticas e de Computação (ICMC), Universidade de São Paulo (USP), 2007.

44 42 Referências 15 SKOPAL, T.; LOKOC, J.; BUSTOS, B. D-cache: Universal distance cache for metric access methods. Knowledge and Data Engineering, IEEE Transactions on, v. 24, n. 5, p , May ISSN FALCHI, F. et al. A metric cache for similarity search. In: Proceedings of the 2008 ACM Workshop on Large-Scale Distributed Systems for Information Retrieval. New York, NY, USA: ACM, (LSDS-IR 08), p ISBN Disponível em: < 17 WHITE, T. The Small Files Problem Disponível em: < com/blog/2009/02/the-small-files-problem/>.

45 Anexos

46

47 45 ANEXO A RAND-2D-5M

48 rand2d5m Inserção Rq0.1 Rq0.2 Rq0.3 Rq0.4 Rq0.5 Knn ms 5808ms 15153ms 30992ms 48819ms 66664ms 495ms Bloco Cache MaxEle ms 15881ms 25806ms 39512ms 56498ms 72841ms 1941ms ms 12581ms 22659ms 37239ms 54264ms 71516ms 1344ms ms 11207ms 21006ms 35778ms 53393ms 71060ms 1179ms ms 10940ms 20727ms 35118ms 52719ms 71005ms 1190ms ms 10340ms 20287ms 34319ms 53020ms 69670ms 1101ms ms 10311ms 20372ms 34576ms 52409ms 70278ms 1097ms Tempo ms 17182ms 26330ms 39254ms 57923ms 71517ms 2982ms ms 13885ms 23496ms 37474ms 57651ms 71463ms 1824ms ms 11365ms 21029ms 35673ms 52704ms 70751ms 1292ms ms 9455ms 18887ms 34063ms 51999ms 67323ms 1012ms ms 7930ms 17556ms 31502ms 49250ms 66220ms 841ms ms 7793ms 17679ms 32848ms 49911ms 66847ms 797ms ms 17837ms 26295ms 39457ms 55830ms 72907ms 5993ms ms 15393ms 24694ms 37923ms 53890ms 71092ms 3585ms ms 12921ms 22940ms 36461ms 53242ms 70483ms 2222ms ms 10929ms 20785ms 34502ms 52504ms 68978ms 1489ms ms 7406ms 16754ms 31218ms 48291ms 67027ms 738ms ms 6713ms 15908ms 30909ms 48184ms 65853ms 738ms Página 1

SUMÁRIO. Introdução... 3

SUMÁRIO. Introdução... 3 SUMÁRIO Introdução..................................... 3 1 Consultas por Similaridade e Espaços métricos............. 5 1.1 Consultas por abrangência e consultas aos k-vizinhos mais próximos... 5 1.2

Leia mais

Dados Espaciais e Indexação

Dados Espaciais e Indexação Dados Espaciais e Indexação Cristina Dutra de Aguiar Ciferri Arthur Emanuel de O. Carosia 1 Tipos de Dados Espaciais Ponto: menor unidade possível para representar um objeto espacial. Linha: seqüência

Leia mais

4 Testes e experimentos realizados 4.1. Implementação e banco de dados

4 Testes e experimentos realizados 4.1. Implementação e banco de dados 32 4 Testes e experimentos realizados 4.1. Implementação e banco de dados Devido à própria natureza dos sites de redes sociais, é normal que a maior parte deles possua uma grande quantidade de usuários

Leia mais

Universidade Federal de São Carlos - UFSCar Departamento de Computação - DC Programa de Pós-Graduação em Ciência da Computação - PPGCC

Universidade Federal de São Carlos - UFSCar Departamento de Computação - DC Programa de Pós-Graduação em Ciência da Computação - PPGCC Universidade Federal de São Carlos - UFSCar Departamento de Computação - DC Programa de Pós-Graduação em Ciência da Computação - PPGCC Revisão da R*-tree Aluno:Marcos Henrique de Paula Prof: Dr. Ricardo

Leia mais

Índices. 1. Introdução. Universidade Federal de Pelotas Departamento de Informática Bacharelado em Ciência da Computação Banco de Dados I

Índices. 1. Introdução. Universidade Federal de Pelotas Departamento de Informática Bacharelado em Ciência da Computação Banco de Dados I Universidade Federal de Pelotas Departamento de Informática Bacharelado em Ciência da Computação Banco de Dados I Prof. Paulo Ferreira Atividade para Sala de Aula: 25/11/2008 1. Introdução Índices Os índices

Leia mais

Árvores-B (Parte IV) Leandro C. Cintra M.C.F. de Oliveira Fonte: Folk & Zoelick, File Structures

Árvores-B (Parte IV) Leandro C. Cintra M.C.F. de Oliveira Fonte: Folk & Zoelick, File Structures Árvores-B (Parte IV) Leandro C. Cintra M.C.F. de Oliveira 2004 Fonte: Folk & Zoelick, File Structures http://www.icmc.sc.usp.br/~sce183 Definição e Propriedades de árvores-b Ordem A ordem de uma árvore-b

Leia mais

Hashing: conceitos. Hashing

Hashing: conceitos. Hashing Hashing: conceitos hashing é uma técnica conhecida como espalhamento, mapeamento ou randomização que tenta distribuir dados em posições aleatórias de uma tabela (array) associa cada objeto (de um determinado

Leia mais

B-Árvores. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados

B-Árvores. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados MAC 5710 - Estruturas de Dados - 2008 Referência bibliográfica Os slides sobre este assunto são parcialmente baseados nos artigos Bayer, R. and E. McCreight. Organization and maintenance of large ordered

Leia mais

Acesso Sequencial Indexado

Acesso Sequencial Indexado Acesso Sequencial Indexado Utiliza o princípio da pesquisa seqüencial cada registro é lido seqüencialmente até encontrar uma chave maior ou igual a chave de pesquisa. Providências necessárias para aumentar

Leia mais

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó

Leia mais

Uso de Índices na Otimização e Processamento de Consultas. Otimização e Processamento de Consultas. Otimização e Processamento de Consultas

Uso de Índices na Otimização e Processamento de Consultas. Otimização e Processamento de Consultas. Otimização e Processamento de Consultas usuário processador de E/S gerador de respostas Uso de Índices na Otimização e Processamento de Consultas Profa. Dra. Cristina Dutra de Aguiar Ciferri analisador controle de autorização verificador de

Leia mais

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura Árvores B Prof. Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Fonte: Material da Prof a Ana Eliza Lopes Moura Situação Problema Memória Principal Volátil e limitada Aplicações Grandes

Leia mais

Análise empírica de algoritmos de ordenação

Análise empírica de algoritmos de ordenação Análise empírica de algoritmos de ordenação Mario E. Matiusso Jr. (11028407) Bacharelado em Ciências da Computação Universidade Federal do ABC (UFABC) Santo André, SP Brasil mario3001[a]ig.com.br Resumo:

Leia mais

Subsistemas de E/S Device Driver Controlador de E/S Dispositivos de E/S Discos Magnéticos Desempenho, redundância, proteção de dados

Subsistemas de E/S Device Driver Controlador de E/S Dispositivos de E/S Discos Magnéticos Desempenho, redundância, proteção de dados Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Gerência de Dispositivos Subsistemas de E/S Device Driver Controlador de E/S

Leia mais

Organização de Arquivos. SCE-183 Algoritmos e Estruturas de Dados II

Organização de Arquivos. SCE-183 Algoritmos e Estruturas de Dados II Organização de Arquivos SCE-183 Algoritmos e Estruturas de Dados II 1 Arquivos Ao construir uma estrutura de arquivos, estamos impondo uma organização aos dados Qual a diferença entre os termos stream

Leia mais

Aula 16 Árvores Patricia e Árvores B

Aula 16 Árvores Patricia e Árvores B MC3305 Algoritmos e Estruturas de Dados II Aula 16 Árvores Patricia e Árvores B Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 2Q-2015 1 TRIE originado de 'Information retrieval' TRIE = digital tree

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Gerência de Memória Memória virtual Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Slides baseados nas apresentações dos prof. Tiago Ferreto e Alexandra Aguiar

Leia mais

Sistemas de Gerência de Bancos de Dados. Módulo 1 - Armazenamento

Sistemas de Gerência de Bancos de Dados. Módulo 1 - Armazenamento Sistemas de Gerência de Bancos de Dados Módulo 1 - Armazenamento Tópicos Introdução Gerência do Buffer Pool Armazenamento em SGBDs Convencionais Armazenamento em SGBDs Orientados a Objeto Introdução Etapas

Leia mais

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5. Cristina Boeres

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5. Cristina Boeres FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5 Cristina Boeres Introdução! Diferença de velocidade entre Processador e MP O processador executa uma operação rapidamente e fica em

Leia mais

Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou

Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou também denominada de tabela hashing com endereçamento aberto.

Leia mais

Os efeitos do paralelismo e relações de thesaurus em uma ferramenta de busca em bases textuais

Os efeitos do paralelismo e relações de thesaurus em uma ferramenta de busca em bases textuais 72 Resumos Expandidos: XII Mostra de Estagiários e Bolsistas... Os efeitos do paralelismo e relações de thesaurus em uma ferramenta de busca em bases textuais Renan Gomes Pereira¹ Maria Fernanda Moura²

Leia mais

DISCO MAGNÉTICO Cabeçote Trilha

DISCO MAGNÉTICO Cabeçote Trilha 1 São os componentes mais importantes da memória externa. É formado por um prato circular coberto de um material que pode ser magnetizado. Os dados são gravados e posteriormente lidos por meio de uma bobina

Leia mais

Introdução à Computação

Introdução à Computação Slide 02 22/05/2017 Introdução à Computação Prof. Cleziel Franzoni da Costa @Cleziel 1 /Cleziel cleziel@hotmail.com cleziel.wordpress.com 42 3 Hardware x Software 4 Hardware x Software 5 Hardware Todo

Leia mais

Introdução aos Sistemas Operacionais

Introdução aos Sistemas Operacionais 1 Introdução aos Sistemas Operacionais 1.1 O que é um sistema operacional 1.2 História dos sistemas operacionais 1.3 O zoológico de sistemas operacionais 1.4 Conceitos sobre sistemas operacionais 1.5 Chamadas

Leia mais

Benchmarks. 1. Introdução

Benchmarks. 1. Introdução Benchmarks 1. Introdução Um Benchmark é um programa de teste de desempenho que analisa as características de processamento e de movimentação de dados de um sistema de computação com o objetivo de medir

Leia mais

Principais Componentes do Gabinete. Componentes Básicos de um Computador. CPU ou UCP (Processador) 17/02/2017

Principais Componentes do Gabinete. Componentes Básicos de um Computador. CPU ou UCP (Processador) 17/02/2017 Professora: Janaide Nogueira E-mail: nogueirajanaide@gmail.com Materiais: https://janaide.wordpress.com Componentes Básicos de um Computador Principais Componentes do Gabinete 3 4 CPU ou UCP (Processador)

Leia mais

Implementação de Sistemas de Arquivos. Na Aula Anterior... Esquema do Sistema de Arquivos. Nesta Aula 31/10/2016. Estrutura de Baixo Nível de um Disco

Implementação de Sistemas de Arquivos. Na Aula Anterior... Esquema do Sistema de Arquivos. Nesta Aula 31/10/2016. Estrutura de Baixo Nível de um Disco GSI018 Sistemas Operacionais 31/10/2016 Implementação de Sistemas de Arquivos Universidade Federal de Uberlândia Faculdade de Computação Prof. Dr. rer. nat. Daniel D. Abdala Na Aula Anterior... Memória

Leia mais

I-Preproc: uma ferramenta para pré-processamento e indexação incremental de documentos

I-Preproc: uma ferramenta para pré-processamento e indexação incremental de documentos 17 I-Preproc: uma ferramenta para pré-processamento e indexação incremental de documentos Renan Gomes Pereira 1 Maria Fernanda Moura 2 Resumo: O objetivo deste trabalho é apresentar a ferramenta I-Preproc,

Leia mais

Capítulo 11 Sistemas de Arquivos

Capítulo 11 Sistemas de Arquivos Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Capítulo Sistemas de s Introdução O armazenamento e a recuperação de informações

Leia mais

Hardware Conceitos Básicos. Introdução*à*Informática 14

Hardware Conceitos Básicos. Introdução*à*Informática 14 Hardware Conceitos Básicos Introdução*à*Informática 14 Hardware Conceitos Básicos Componentes principais de um computador Introdução*à*Informática 15 Hardware Conceitos Básicos CPU (Unidade Central de

Leia mais

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2) Tecnólogo em Análise e Desenvolvimento de Sistemas Sistemas Operacionais (SOP A2) Conceitos de Hardware e Software Referências: Arquitetura de Sistemas Operacionais. F. B. Machado, L. P. Maia. Editora

Leia mais

S2I+: Armazenamento Eficiente em Índice Espaço-Textual

S2I+: Armazenamento Eficiente em Índice Espaço-Textual S2I+: Armazenamento Eficiente em Índice Espaço-Textual Tiago F. Athayde-Novaes 1, Fellipe L. Fonseca 1, João B. Rocha-Junior 1 1 Universidade Estadual de Feira de Santana (UEFS) Feira de Santana BA Brasil

Leia mais

Arquivos invertidos 39

Arquivos invertidos 39 Arquivos invertidos 39 Arquivos invertidos É um mecanismo que utiliza palavras para indexar uma coleção de documentos a fim de facilitar a busca e a recuperação Estruturas de um arquivo invertido Vocabulário

Leia mais

SSC546 -Avaliação de Desempenho de Sistemas

SSC546 -Avaliação de Desempenho de Sistemas Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC546 -Avaliação de Desempenho de Sistemas Parte 1 -Aula 2 Sarita Mazzini Bruschi Material

Leia mais

EDUARDO DA SILVA SARDÃO 0981/00-4 IGOR RODRIGO MACHADO DE MENEZES 1422/98-1 TRABALHO FINAL ÁRVORES B+

EDUARDO DA SILVA SARDÃO 0981/00-4 IGOR RODRIGO MACHADO DE MENEZES 1422/98-1 TRABALHO FINAL ÁRVORES B+ 1 UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA - CIÊNCIA DA COMPUTAÇÃO DEPARTAMENTO DE INFORMÁTICA APLICADA CLASSIFICAÇÃO E PESQUISA DE DADOS INF01124 EDUARDO DA SILVA SARDÃO 0981/00-4

Leia mais

Introdução 12 que inuenciam a execução do sistema. As informações necessárias para o diagnóstico de tais problemas podem ser obtidas através da instru

Introdução 12 que inuenciam a execução do sistema. As informações necessárias para o diagnóstico de tais problemas podem ser obtidas através da instru 1 Introdução Atualmente a demanda pela construção de novos sistemas de software tem aumentado. Junto com esse aumento também cresce a complexidade das soluções que estão sendo desenvolvidas, o que torna

Leia mais

3 Plano de Execução de Consultas

3 Plano de Execução de Consultas Sumário 1 Introdução ao Processamento de Consultas 2 Otimização de Consultas 3 Plano de Execução de Consultas 4 Introdução a Transações 5 Recuperação de Falhas 6 Controle de Concorrência 7 Fundamentos

Leia mais

Tipos de Índices. Profa. Dra. Cristina Dutra de Aguiar Ciferri

Tipos de Índices. Profa. Dra. Cristina Dutra de Aguiar Ciferri Tipos de Índices Cristina Dutra de Aguiar Ciferri Tipos de Índice Ordenados em um único nível primário agrupamento (cluster) secundário Estruturas de dados de árvores índices multiníveis árvores-b, árvores-b+

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Slide 1 Memória Virtual os primeiros computadores (início dos anos 60) tinham memória principal muito reduzida O PDP-1 funcionava com uma memória de 4096 palavras

Leia mais

Árvores AVL e Árvores B. Jeane Melo

Árvores AVL e Árvores B. Jeane Melo Árvores AVL e Árvores B Jeane Melo Roteiro Árvores Binárias Árvores AVL Definição Motivação Balanceamento Operações de rebalanceamento Árvores B Introdução Árvores Binárias Árvores binárias Cada nó tem

Leia mais

Indexação de dados espaciais R-Tree. CCO229 Bancos de dados Espaciais e Biológicos Prof. Ricardo Rodrigues Ciferri Debora Marrach

Indexação de dados espaciais R-Tree. CCO229 Bancos de dados Espaciais e Biológicos Prof. Ricardo Rodrigues Ciferri Debora Marrach CCO229 Bancos de dados Espaciais e Biológicos Prof. Ricardo Rodrigues Ciferri Debora Marrach Introdução É o método de acesso espacial mais referenciado na literatura É o mais importante dentre os métodos

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Memória Cache Slide 1 Introdução Tamanho Função de Mapeamento Política de Escrita Tamanho da Linha Número de Memórias Cache Cache em Níveis Slide 2 Introdução

Leia mais

Organização de Sistemas Computacionais Processadores: Organização da CPU

Organização de Sistemas Computacionais Processadores: Organização da CPU Universidade Paulista UNIP Curso: Ciências da Computação Turma: CCP30 Turno: Noturno Disciplina: Arquitetura de Computadores Professor: Ricardo Loiola Alunos: Thiago Gomes dos Santos Matrícula: C63873-0

Leia mais

Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que:

Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que: Tabelas Hash Tabelas Hash O uso de listas ou árvores para organizar informações é interessante e produz bons resultados. Porem, em nenhuma dessas estruturas se obtém o acesso direto a alguma informação,

Leia mais

Banco de Dados. Perspectiva Histórica dos Bancos de Dados. Prof. Walteno Martins Parreira Jr

Banco de Dados. Perspectiva Histórica dos Bancos de Dados. Prof. Walteno Martins Parreira Jr Banco de Dados Perspectiva Histórica dos Bancos de Dados Prof. Walteno Martins Parreira Jr www.waltenomartins.com.br waltenomartins@yahoo.com 2015 Histórico Antes dos computadores, as informações eram

Leia mais

Um estudo computacional de dois algoritmos de programação dinâmica com utilização eficiente de cache

Um estudo computacional de dois algoritmos de programação dinâmica com utilização eficiente de cache Um estudo computacional de dois algoritmos de programação dinâmica com utilização eficiente de cache Guilherme S. Ribeiro 1, Marcus Ritt 1, Luciana S. Buriol 1 1 Instituto de Informática Universidade Federal

Leia mais

Sumário. Definição do Plano de Execução

Sumário. Definição do Plano de Execução Sumário 1 Introdução ao Processamento de Consultas 2 Otimização de Consultas 3 Plano de Execução de Consultas Introdução a Transações 5 Recuperação de Falhas 6 Controle de Concorrência 7 Fundamentos de

Leia mais

UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA

UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA LEONARDO WILLIAM SILVEIRA FLORINDO RODRIGO VIEIRA ORTIZ DFS Distributed File System PONTA GROSSA

Leia mais

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 10: MEMÓRIA E HIERARQUIA DE MEMÓRIAS

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 10: MEMÓRIA E HIERARQUIA DE MEMÓRIAS ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 10: MEMÓRIA E HIERARQUIA DE MEMÓRIAS Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação MEMÓRIA SÃO TODOS

Leia mais

INF 1620 Estruturas de Dados Semestre Segundo Trabalho: Jogo de Caça-Palavras

INF 1620 Estruturas de Dados Semestre Segundo Trabalho: Jogo de Caça-Palavras INF 1620 Estruturas de Dados Semestre 08.2 Segundo Trabalho: Jogo de Caça-Palavras O jogo de caça-palavras é um passatempo que consiste em descobrir palavras escondidas entre um conjunto de letras espalhadas

Leia mais

Introdução a Sistemas Operacionais. Adão de Melo Neto

Introdução a Sistemas Operacionais. Adão de Melo Neto Introdução a Sistemas Operacionais Adão de Melo Neto 41 Definição de SO Sistema Operacional É um conjunto de rotinas (programa) executado pelo processador que controla o funcionamento do computador como

Leia mais

Compressão de Textos. Introdução. Introdução. Introdução. O volume de informação textual disponível on-line é imenso:

Compressão de Textos. Introdução. Introdução. Introdução. O volume de informação textual disponível on-line é imenso: Compressão de Textos Estrutura de Dados II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM O volume

Leia mais

Memória Compartilhada e Distribuída. _ Notas de Aula _ Prof. Tiago Garcia de Senna Carneiro DECOM/UFOP

Memória Compartilhada e Distribuída. _ Notas de Aula _ Prof. Tiago Garcia de Senna Carneiro DECOM/UFOP Introdução Memória Compartilhada e Distribuída _ Notas de Aula _ Prof. Tiago Garcia de Senna Carneiro DECOM/UFOP Um sistema de memória compartilhada faz a memória física global de um sistema igualmente

Leia mais

Matrizes esparsas: definição

Matrizes esparsas: definição Matrizes esparsas: definição o objetivo é mostrar os métodos de armazenamento e manipulação de matrizes esparsas esparsidade de uma matriz é a relação entre o número de elementos nulos de uma matriz e

Leia mais

ALP Algoritmos e Programação. . Um modelo de Computador

ALP Algoritmos e Programação. . Um modelo de Computador ALP Algoritmos e Programação Iniciação aos computadores. Breve Histórico da Computação. Conceito de Informática. 1 . Computador é uma máquina composta de elementos físicos do tipo eletrônico, que executa

Leia mais

Introdução à Informática. Alexandre Meslin

Introdução à Informática. Alexandre Meslin Introdução à Informática Alexandre Meslin (meslin@nce.ufrj.br) Objetivos Dispositivos de armazenamento Sistemas de arquivos Memória ROM Memória de apenas leitura Utilizada para armazenar programas e dados

Leia mais

ÁRVORE BINÁRIA DE BUSCA TDA-ABB

ÁRVORE BINÁRIA DE BUSCA TDA-ABB ÁRVORE BINÁRIA DE BUSCA TDA-ABB Conceitos Gerais sobre Árvores Uma árvore é uma estrutura hierárquica dividida em níveis, que ou está vazia, ou contém elementos chamados nós; Diferentemente da árvore natural,

Leia mais

Utilização de Algoritmos Genéticos para Otimização de Altura de Coluna da Matriz de Rigidez em Perfil no Método dos Elementos Finitos

Utilização de Algoritmos Genéticos para Otimização de Altura de Coluna da Matriz de Rigidez em Perfil no Método dos Elementos Finitos Utilização de Algoritmos Genéticos para Otimização de Altura de Coluna da Matriz de Rigidez em Perfil no Método dos Elementos Finitos André Luiz Ferreira Pinto Pontifícia Universidade Católica do Rio de

Leia mais

Memória Interna. Prof. Leonardo Barreto Campos 1

Memória Interna. Prof. Leonardo Barreto Campos 1 Memória Interna Prof. Leonardo Barreto Campos 1 Sumário Introdução; Sistema de Memória de Computadores; Hierarquia de Memória; Memória Principal de Semicondutores; Memória Cache; Organizações das Memórias

Leia mais

Níveis de memória. Diferentes velocidades de acesso. Memória Cache. Memórias Auxiliar e Auxiliar-Backup

Níveis de memória. Diferentes velocidades de acesso. Memória Cache. Memórias Auxiliar e Auxiliar-Backup Memória Níveis de memória Diferentes velocidades de acesso Pequeno Alto(a) Cache RAM Auxiliar Auxiliar-Backup Memória Cache altíssima velocidade de acesso acelerar o processo de busca de informações na

Leia mais

INF011 Padrões de Projeto. 11 Composite

INF011 Padrões de Projeto. 11 Composite INF011 Padrões de Projeto 11 Composite Sandro Santos Andrade sandroandrade@ifba.edu.br Instituto Federal de Educação, Ciência e Tecnologia da Bahia Departamento de Tecnologia Eletro-Eletrônica Graduação

Leia mais

http://www.ic.uff.br/~debora/fac! 1 Capítulo 4 Livro do Mário Monteiro Introdução Hierarquia de memória Memória Principal Organização Operações de leitura e escrita Capacidade 2 Componente de um sistema

Leia mais

Seleção de Atributos 1

Seleção de Atributos 1 Seleção de Atributos 1 Tópicos Por que atributos irrelevantes são um problema Quais tipos de algoritmos de aprendizado são afetados Seleção de atributos antes do aprendizado Benefícios Abordagens automáticas

Leia mais

Arquitetura de Computadores. Processamento Paralelo

Arquitetura de Computadores. Processamento Paralelo Arquitetura de Computadores Processamento Paralelo 1 Multiprogramação e Multiprocessamento Múltiplas organizações de computadores Single instruction, single data stream - SISD Single instruction, multiple

Leia mais

Ordenação Externa. Ordenação Externa. Ordenação Externa. Ordenação Externa

Ordenação Externa. Ordenação Externa. Ordenação Externa. Ordenação Externa Ordenação Externa Ordenação Externa Estrutura de Dados II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação

Leia mais

indexação e hashing Construção de Índices e Funções Hash Diego Gomes Tomé - MSc. Informática Orientador: Prof. Dr. Eduardo Almeida October 13, 2016

indexação e hashing Construção de Índices e Funções Hash Diego Gomes Tomé - MSc. Informática Orientador: Prof. Dr. Eduardo Almeida October 13, 2016 indexação e hashing Construção de Índices e Funções Hash Diego Gomes Tomé - MSc. Informática Orientador: Prof. Dr. Eduardo Almeida October 13, 2016 Universidade Federal do Paraná indexação e hashing Índices

Leia mais

Arquitectura interna de um computador. Organização de um computador. Organização de um computador. Organização de um computador

Arquitectura interna de um computador. Organização de um computador. Organização de um computador. Organização de um computador Arquitectura interna de um computador Descrição de uma tarefa Fases de execução de uma tarefa Unidades de execução de uma tarefa Computador como um conjunto de unidades de execução de tarefas Trabalho

Leia mais

Sistema de Informação Geográfica

Sistema de Informação Geográfica Sistema de Informação Geográfica Curso de Sistemas de Informação Karla Donato Fook karladf@ifma.edu.br DESU / DAI 2016 Arquiteturas SIG 2 1 Tipos de Implementação 3 Tipos de Implementação Em geral, um

Leia mais

Trabalho Linguagem e Programação de Compiladores

Trabalho Linguagem e Programação de Compiladores Trabalho Linguagem e Programação de Compiladores Responda as questões. Os exercícios deverão ser desenvolvidos utilizando as estruturas apresentadas em aula e adequadas para cada problema. Forma de entrega:

Leia mais

Um Algoritmo Genético para o Problema de Roteamento de Veículos com Janelas de Tempo

Um Algoritmo Genético para o Problema de Roteamento de Veículos com Janelas de Tempo Um Algoritmo Genético para o Problema de Roteamento de Veículos com Janelas de Tempo Francisco Henrique de Freitas Viana Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento de Informática

Leia mais

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA ÁRVORES E ÁRVORE BINÁRIA DE BUSCA Prof. André Backes Definição 2 Diversas aplicações necessitam que se represente um conjunto de objetos e as suas relações hierárquicas Uma árvore é uma abstração matemática

Leia mais

EA075 Memória virtual

EA075 Memória virtual EA075 Memória virtual Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1 Motivação Problema: programas cujos tamanhos ultrapassavam

Leia mais

Introdução aos Sistemas Operacionais. Subsistema de Arquivos

Introdução aos Sistemas Operacionais. Subsistema de Arquivos Introdução aos Sistemas Operacionais Subsistema de Arquivos Eleri Cardozo FEEC/Unicamp Subsistema de Arquivos O subsistema de arquivos deve prover soluções para as seguintes questões: Como a informação

Leia mais

Banco de Dados Espaciais

Banco de Dados Espaciais Banco de Dados Espaciais Disciplina BD Não Convencionais Prof. Ricardo Rodrigues Ciferri São Carlos, 20 de Agosto de 2010 Sumário Tipos de Dados Espaciais Representação dos Dados Processamento de Consultas

Leia mais

ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO4: MEMÓRIAPRINCIPAL

ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO4: MEMÓRIAPRINCIPAL ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO4: MEMÓRIAPRINCIPAL MEMÓRIA Componente de um sistema de computação cuja função é armazenar informações que são manipuladas pelo sistema para que possam ser recuperadas

Leia mais

Durante a evolução das arquiteturas de computadores e principalmente dos Sistemas Operacionais, muitas tecnologias tiveram que ser aprimoradas para

Durante a evolução das arquiteturas de computadores e principalmente dos Sistemas Operacionais, muitas tecnologias tiveram que ser aprimoradas para UM ESTUDO SOBRE O MECANISMO DE PAGINAÇÃO DE MEMÓRIA E OS ALGORITMOS DE SUBSTITUIÇÃO DE PÁGINAS FIFO E LRU Fernando Sales Ferreira, fernandobrabat@hotmail.com William Antônio Faria Da Silva, William_8716@hotmail.com

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I BARRAMENTO Slide 1 Sumário Introdução Componentes de Computador Funções dos Computadores Estruturas de Interconexão Interconexão de Barramentos Slide 2 Introdução

Leia mais

HARDWARE Componentes do Computador

HARDWARE Componentes do Computador 2009 HARDWARE 1 HARDWARE Componentes do Computador Breve descrição dos componentes físicos do computador Maria João Bastos 07-09-2009 HARDWARE 2 ÍNDICE 1. INTRODUÇÃO-HARDUARE... 3 2. MOTHERBOARDS ou PLACA

Leia mais

Computadores e Programação (DCC/UFRJ)

Computadores e Programação (DCC/UFRJ) Computadores e Programação (DCC/UFRJ) Aula 3: 1 2 3 Abstrações do Sistema Operacional Memória virtual Abstração que dá a cada processo a ilusão de que ele possui uso exclusivo da memória principal Todo

Leia mais

Capítulo 7. Expressões e Sentenças de Atribuição

Capítulo 7. Expressões e Sentenças de Atribuição Capítulo 7 Expressões e Sentenças de Atribuição Introdução Expressões são os meios fundamentais de especificar computações em uma linguagem de programação Para entender a avaliação de expressões, é necessário

Leia mais

Organização de Arquivos

Organização de Arquivos Construção de Sistemas de Gerência de Bancos de Dados DI PUC-Rio Prof: Sérgio Lifschitz Organização de Arquivos Organização de Arquivos Tipos básicos de arquivos: heap files (entry sequenced files) sorted

Leia mais

Conceitos e Gerenciamento de Memória

Conceitos e Gerenciamento de Memória Conceitos e Gerenciamento de Memória Introdução Num sistema computacional, temos diferentes tipos de memórias, para diferentes finalidades, que se interligam de forma estruturada e que formam o subsistema

Leia mais

Algoritmos Genéticos. Princípio de Seleção Natural. Sub-áreas da Computação Evolutiva. Idéias básicas da CE. Computação Evolutiva

Algoritmos Genéticos. Princípio de Seleção Natural. Sub-áreas da Computação Evolutiva. Idéias básicas da CE. Computação Evolutiva Computação Evolutiva Algoritmos Genéticos A computação evolutiva (CE) é uma área da ciência da computação que abrange modelos computacionais inspirados na Teoria da Evolução das Espécies, essencialmente

Leia mais

SSC643 -Avaliação de Desempenho de Sistemas Computacionais -

SSC643 -Avaliação de Desempenho de Sistemas Computacionais - Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC643 -Avaliação de Desempenho de Sistemas Computacionais - Aula 2 Sarita Mazzini Bruschi

Leia mais

GBC053 Gerenciamento de Banco de Dados. Plano de Curso e Introdução. Ilmério Reis da Silva UFU/FACOM/BCC

GBC053 Gerenciamento de Banco de Dados. Plano de Curso e Introdução. Ilmério Reis da Silva  UFU/FACOM/BCC GBC053 Gerenciamento de Banco de Dados Plano de Curso e Introdução Ilmério Reis da Silva ilmerio@ufu.br www.facom.ufu.br/~ilmerio/gbd UFU/FACOM/BCC Plano de Curso Ementa Arquitetura de um Sistema de Gerenciamento

Leia mais

Arquiteturas Paralelas

Arquiteturas Paralelas ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES Arquiteturas Paralelas Medidas de desempenho Alexandre Amory Edson Moreno Índice 2 1. Introdução 2. Medidas de Desempenho Introdução 3 Aumento de desempenho dos

Leia mais

A IMPORTÂNCIA DE THREADS NO DESEMPENHO DE APLICAÇÕES

A IMPORTÂNCIA DE THREADS NO DESEMPENHO DE APLICAÇÕES A IMPORTÂNCIA DE THREADS NO DESEMPENHO DE APLICAÇÕES Euzébio da Costa Silva 1, Victor Pereira Ribeiro 2, Susana Brunoro Costa de Oliveira 3 1 29520-000, euzebioprogramacao@gmail.com 2 29520-000, victor3ifes@gmail.com

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: ponteiros e alocação dinâmica Prof. Renato Pimentel 1 Ponteiros 2 Prof. Renato Pimentel 1 Ponteiros: introdução Toda a informação

Leia mais

Ordenação e Busca em Arquivos

Ordenação e Busca em Arquivos Ordenação e Busca em Arquivos Cristina D. A. Ciferri Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira Moacir Ponti Jr. Exemplos de Busca Registros de tamanho fixo M A R I A R U A b 1 S A O b C A

Leia mais

Gerência de Memória. Paginação

Gerência de Memória. Paginação Gerência de Memória Paginação Endereçamento Virtual (1) Espaço de endereçamento dos processos não linearmente relacionado com a memória física Cada vez que são usados, os endereços virtuais são convertidos

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Linguagens de Programação: sintaxe e semântica de linguagens de programação e conceitos de linguagens interpretadas e compiladas Engenharia da Computação Professor: Críston Pereira

Leia mais

Arquitetura de Computadores

Arquitetura de Computadores Arquitetura de Computadores AULA 4 Organização de Sistemas de Computadores s Bits Sumário de Ordem de Bytes Conceitos Básicos Secundária Códigos de Correção de Erros Prof. Edilberto M. Silva Edilberto

Leia mais

O Modelo e a Álgebra Relacional

O Modelo e a Álgebra Relacional O Modelo e a Álgebra Relacional O Modelo Relacional Modelo de dados, que se baseia no princípio em que todos os dados estão guardados em tabelas Baseado em lógica de predicados e na teoria de conjuntos.

Leia mais

Descritores de Imagens

Descritores de Imagens Descritores de Imagens André Tavares da Silva PPGCA/UDESC Outubro de 2017 André Tavares da Silva (PPGCA/UDESC) Descritores de Imagens Outubro de 2017 1 / 17 Introdução Excelentes pesquisas sobre descritores

Leia mais

Capítulo 5 Livro do Mário Monteiro Conceituação. Elementos de projeto de memória cache

Capítulo 5 Livro do Mário Monteiro Conceituação. Elementos de projeto de memória cache Capítulo 5 Livro do Mário Monteiro Conceituação Princípio da localidade Funcionamento da memória cache Elementos de projeto de memória cache Mapeamento de dados MP/cache Algoritmos de substituição de dados

Leia mais

Lista - RAID. c) Redundância d) Capacidade

Lista - RAID. c) Redundância d) Capacidade Lista - RAID 1. O principal objetivo do RAID é a a) Autenticidade b) Compactação c) Redundância d) Capacidade e) Qualidade 2. As soluções de RAID 1 necessitam de, no mínimo, dois discos, possuem bom desempenho

Leia mais

Árvores Binárias Balanceadas

Árvores Binárias Balanceadas Árvores Binárias Balanceadas Elisa Maria Pivetta Cantarelli elisa@fw.uri.br Árvores Balanceadas Uma árvore é dita balanceada quando as suas subárvores à esquerda e à direita possuem a mesma altura. Todos

Leia mais