Módulo de consultas distribuídas do Innispan. Israel Danilo Lacerra

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

Download "Módulo de consultas distribuídas do Innispan. Israel Danilo Lacerra"

Transcrição

1 Módulo de consultas distribuídas do Innispan Israel Danilo Lacerra Exame de qualificação de mestrado Instituto de Matemática e Estatística da Universidade de São Paulo Programa: Ciência da Computação Orientador: Prof. Dr. Francisco Carlos da Rocha Reverbel São Paulo, março de 2011

2 ii

3 Resumo Com a grande quantidade de informações existentes nas aplicações computacionais hoje em dia, cada vez mais tornam-se necessários mecanismos que facilitem e aumentem o desempenho da recuperação dessas informações. Nesse contexto vem surgindo o JBoss Innispan, um sistema de cache distribuído que pode trabalhar como uma plataforma para armazenamento em sistemas de grades de dados. Nesse trabalho iremos contribuir com o módulo de consultas distribuídas do JBoss Innispan. A idéia é que buscas no cache sejam feitas em um estilo MapReduce. iii

4 iv

5 Sumário Lista de Figuras vii 1 Introdução Objetivos Estrutura do texto JBoss Innispan Funcionamento Uso da API Políticas de despejo Opções de organização do cache Comunicação Hash consistente Arquitetura interna Comandos Visitantes Interceptadores O uxo de uma chamada Módulo de consultas Uso do Apache Lucene Uso do Hibernate Search Consultas distribuídas no Innispan O projeto MapReduce Implementação ClusteredQueryCommand ClusteredQueryCommandInvoker ClusteredCacheQueryImpl QueryBox Impactos de mudanças no aglomerado Cronograma das atividades programadas Referências Bibliográcas 23 v

6 vi

7 Lista de Figuras 2.1 java.util.concurrent.concurrentmap - API Exemplo de uso da API Exemplo de invalidação [9] ReplicableCommand API VisitableCommand API Visitor API [8] CommandInterceptor API Adicionando um documento ao índice Buscando um documento no índice Exemplo de classe que será indexada pelo Hibernate Search Exemplo de uso do módulo de consultas Métodos de CacheQuery vii

8 Capítulo 1 Introdução Em muitos ambientes há a obtenção repetida de informações, seja por meio de uma busca em um sistema de armazenamento, seja como resultado de algum processamento. A gura do cache surge em tais ambientes. O cache é um componente que armazena dados uma vez acessados para que futuros acessos possam ser feitos de maneira mais rápida, evitando que se repita algum processamento ou se busque a informação em um local mais distante computacionalmente como, por exemplo, um banco de dados em um disco. O JBoss Innispan [12] é um projeto escrito nas linguagens Java e Scala que, além de oferecer um serviço de cache local, tem como foco principal oferecer um sistema de cache distribuído que pode ser usado por aplicações que rodam em aglomerados (clusters) que tratam e armazenam enormes quantidades de dados. No contexto de um aglomerado, um sistema de cache distribuído oferece vantagens signicativas se comparado a um simples cache local. Considere, por exemplo, um aglomerado com 10 máquinas contendo 3GB de memória cada uma delas. Se nesse aglomerado tívessemos em cada nó um cache local, cada instância da aplicação teria disponível apenas as informações armazenadas localmente, e contaria com, no máximo, 3GB de espaço para armazená-las. Agora, considere que nesse mesmo aglomerado estivesse ativo um cache distribuído. Teríamos 30GB de informações em cache. Poderíamos, conforme a necessidade, adicionar mais máquinas e ter a capacidade do cache aumentando. Teríamos, portanto, um sistema de dados mais escalável. Outra vantagem do cache distribuído é a possibilidade de termos maior disponibilidade dos dados. Com várias instâncias de cache formando um cache global, poderíamos replicar os dados em mais de uma instância e, então, manteríamos a disponibilidade de todos os dados mesmo que alguma máquina se tornasse indisponível. 1.1 Objetivos O Innispan oferece a possibilidade de fazermos buscas no cache usando propriedades (campos) dos objetos lá salvos. No entanto, para que essa funcionalidade esteja ativa é necessária a criação de um índice para a coleção de todos os objetos que estão no cache. Um índice é, a grosso modo, uma estrutura criada a m de facilitar consultas (queries) a uma coleção de dados. Nele guardamos informações adicionais sobre a coleção de objetos de modo a 1

9 CAPÍTULO 1. INTRODUÇÃO permitir a execução mais eciente das consultas. Seu funcionamento será explicado mais adiante neste trabalho. Atualmente, mesmo que o Innispan esteja rodando em um aglomerado, a criação e o uso de índices não são feitos de maneira realmente distribuída. O Innispan cria em cada máquina um índice para a coleção de todos os objetos guardados no aglomerado. Isto é, cada nó cria e mantém uma instância completa do índice, a qual contém inclusive informações sobre objetos em outras máquinas do aglomerado. Dessa forma, temos instâncias iguais de um mesmo índice global replicadas em todas as máquinas. O objetivo deste trabalho é fazer com que o índice seja realmente distribuído no aglomerado, ou seja, que cada nó mantenha um sub-índice apenas para a coleção dos objetos residentes em seu cache local. Ao se fazer uma busca no aglomerado, a idéia é que a busca seja disparada em todos os nós e depois as respostas sejam agrupadas em um estilo map-reduce. 1.2 Estrutura do texto O Capítulo 2, apresenta algumas motivações para o surgimento do Innispan, detalhes sobre seu funcionamento e conguração, além de mais detalhes de seu módulo de consulta, que é parte importante para esse trabalho. O Capítulo 3 mostra como será a estrutura do novo módulo de consultas distribúidas, dando aspectos básicos da arquitetura da solução e quais os desaos que a envolvem. 2

10 Capítulo 2 JBoss Innispan Com o uso crescente de grandes aplicações na Internet, tais como comunidades sociais e gigantes de compras, a demanda por um sistema de dados sempre disponível, que consiga lidar com enormes quantidades de dados em tempo real, tem determinado o surgimento de novas soluções para o armazenamento de dados de maneira mais eciente nesse cenário. Um gargalo considerável para a maioria dessas aplicações são os bancos de dados em disco [25]. Isso acontece porque o acesso o acesso a dados em disco é bem mais lento que acesso a dados em memória. Uma das possibilidades para tentar amenizar esses problemas são os caches. Um cache é tipicamente uma estrutura que armazena pares (chave, valor). Usar um cache entre o banco de dados e a aplicação consegue diminuir consideravelmente o acesso ao disco. Dois destaques entre esses produtos são o JBoss Cache [11] e o EhCache [3] (adquirido em 2009 pela Terracotta [17]), ambos projetos de código aberto. Mas, anal, caches não são uma solução ideal para todas as aplicações. Eventualmente as informações serão colocadas no banco de dados, e esse poderá novamente ser um gargalo. Para lidar melhor com o cenário das grandes aplicações da internet surgiram bancos de dados que apostam em paradigmas diferentes, e são frequentemente classicados como NoSQL. É dícil caracterizar precisamente esses bancos de dados, mas eles geralmente são bancos de dados não relacionais, distribuídos, com suporte a replicação e horizontalmente escaláveis [23]. A idéia é fornecer um banco de dados distribuído e escalável o bastante para comportar grandes aplicações na internet. O surgimento desses bancos de dados se deve principalmente a alguns gigantes da Internet que buscaram alternativas para suas enormes quantidades de dados. Nesse cenário se destacaram alguns bancos de dados como o Google BigTable [20], um banco de dados proprietário feito pelo Google, e o Cassandra [2], desenvolvido pela equipe do Facebook, mas de código aberto. Os bancos de dados NoSQL tentam resolver a questão das enormes quantidades de dados e da disponibilidade desses dados oferecendo a possibilidade de armazenar os dados de maneira distríbuida em um aglomerado. Dessa maneira consegue ser escalável e, além disso, aumentar a disponibilidade dos dados, uma vez que cada dado pode ser replicado por mais de um nó. Com a busca por maior desempenho, surgiram ainda alguns bancos de dados NoSQL que possuem uma camada de cache situada entre a aplicação e o banco de dados em disco [26]. São 3

11 CAPÍTULO 2. JBOSS INFINISPAN exemplos de tais sistemas o Dynamo [22] da Amazon e o Voldemort [16], uma implementação de código aberto inspirada no próprio Dynamo. Outro destaque nesse cenário é o MemCached [14], um cache distribuído que foi originalmente desenvolvido em 2003 para o LiveJournal (um serviço que mescla rede social e blogs) e que armazena pares (chave, valor). Hoje ele é usado por algumas grandes aplicações da Internet como Facebook, Youtube, Twitter, Wikipedia, entre outras. O Memcached é escrito em C, mas hoje bibliotecas para clientes em praticamente todas as linguagens de uso comum. Os clientes acessam o cache usando o MemCached Protocol, um protocolo de comunicação baseado em TCP. Nos últimos anos, a diminuição do preço de memórias foi grande e bem maior que o aumento da velocidade dos discos [25]. Esse cenário, aliado aos outros pontos já citados, trouxe à tona bancos de dados no estilo NoSQL que focam em usar a fundo a capacidade de memória das máquinas e usam os discos apenas em segundo plano. A idéia é que a maioria dos dados quem em memória e sempre disponíveis. Nesse caso, elimina-se o gargalo formado pelo acesso ao disco e temos um maior desempenho na leitura e escrita dos dados. O principal representante desse tipo de sistema é o Oracle Coherence [15], um produto proprietário. Nesse cenário, inspirado principalmente pelo Dynamo, surge o Innispan. O Innispan é, de certa forma, uma evolução do JBoss Cache. Há muito código e funcionalidade aproveitados do JBoss Cache, além das mentes por trás do projeto, que são essencialmente as mesmas. O Innispan marca a mudança de foco da equipe do JBoss Cache. Como resultado da realidade atual das aplicações que trabalham com enormes quantidades de dados, a idéia não é apenas prover um sistema de cache simples. O Innispan tem como foco principal oferecer um sistema de armazenamento distribuído que possa ser usado por grades de dados, como o Oracle Coherence, mas também possa ser usado da mesma maneira que o JBoss Cache ou o Memcached. Sua essência é muito parecida com o Voldemort e o Dynamo, mas o Innispan oferece também algumas ferramentas como controle de transação (JTA - Java Transaction API [10]) e uma API JPA (Java Persistence API [18]) para persistência no próprio Innispan. Essas características fazem com que o Innispan também possa ser encarado como um banco de dados NoSQL, como é também o caso do Coherence. O Innispan provê seu serviço armazenando pares (chave, valor) e implementa parte da especicação JSR107 (JCACHE - Java Temporary Caching API) [13] da Sun. Essa especicação começou a ser desenhada em 2001 mas não chegou a um estado nal. Mesmo assim vários produtos (como por exemplo o EhCache e o Google App Engine [4]) implementam parcialmente a especicação JSR107. Essa especicação dene uma interface javax.cache.cache que estende a interface java.util.concurrent.concurrentmap e adiciona algumas funcionalidades importantes de um cache. Quando usamos um ConcurrentMap com a função de um cache, geralmente precisamos de mais funcionalidades pra tornar o cache realmente robusto. E é nisso que um cache se difere de um simples ConcurrentMap. O Innispan, por exemplo, oferece, entre outros recursos, políticas de despejo (eviction), caches distribuídos com replicação de valores, controle transacional, uso de 4

12 2.1. FUNCIONAMENTO Figura 2.1: java.util.concurrent.concurrentmap - API memória de maneira distribuída em um aglomerado e métodos assíncronos, além do próprio módulo de consultas que será estudado mais a fundo neste trabalho. O Innispan é implementado em Java e Scala, mas oferece acesso a outras linguagens que não rodem em cima da JVM. Esse acesso é disponibilizado por meio de uma API REST (Representational State Transfer), ou através do protocolo Memcached. 2.1 Funcionamento Uso da API O uso da API do Innispan é bem intuitivo, como podemos ver na gura 2.2. Podemos usar os métodos tradicionais herdados da interface ConcurrentMap. Porém alguns desses métodos herdados não possuem o comportamento esperado, pois tal comportamento poderia prejudicar o desempenho do cache. Métodos como size(), keyset() e entryset() não garantem valores exatos. Nenhum deles obtem informações globais do cache, apenas informações locais. E, além disso, eles também não adquirem nenhuma trava e, portanto, podem disponibilizar valores não consistentes com o estado atual do cache. Figura 2.2: Exemplo de uso da API 5

13 CAPÍTULO 2. JBOSS INFINISPAN Temos a possibilidade de criar entradas mortais ou imortais no cache. Uma entrada imortal, adicionada por um simples put(object key, Object Value), é uma entrada que só deixará o cache quando for manualmente removida ou quando a política de despejo do aglomerado o zer. Podemos também adicionar uma entrada mortal, que tem um prazo de validade baseado no seu tempo de vida no cache ou também no tempo de inatividade, ou seja, em uma quantidade de tempo máxima que o objeto permanece vivo sem que ninguém o acesse (via get(), por exemplo). Como vemos no exemplo da fígura 2.2, podemos congurar esse prazo de validade das entradas através de argumentos passados ao método put(). Há também a possibilidades de congurarmos um valor padrão que será usado para todas as entradas: <expiration lifespan="1000"maxidle="500"/> Nesse caso, por exemplo, denimos que por padrão todas as entradas serão mortais e serão despejadas 1000 milisegundos após serem adicionadas no cache, ou após 500 milisegundos inativas. Esse comportamento só será adotado para as entradas que forem adicionadas sem que seja passado o período de vida para o método put() Políticas de despejo Nesta seção explicaremos também alguns detalhes sobre as entradas mortais que possuem seus prazos de validade, pois esses detalhes se relacionam com as políticas de despejo. As políticas de despejo são conguradas independentemente para cada instância do cache, ou seja, para cada nó do aglomerado. Por outro lado, informações de prazo de vida de um valor são válidas globalmente, em todos os nós do aglomerado. O Innispan possui 4 congurações possíveis para a política de despejo: EvictionStrategy.NONE: Nesse caso nunca ocorrerá despejo. EvictionStrategy.LRU: Com essa conguração, sempre que houver despejo, as entradas que estiverem há mais tempo sem ser acessadas serão despejadas. EvictionStrategy.FIFO: Aqui será utilizada uma estratégia de la, ou seja, em caso de despejo, as entradas há mais tempo no cache serão eliminadas. EvictionStrategy.UNORDERED: Com essa estratégia as entradas serão despejadas sem uma ordem arbitrária. Com as estratégias LRU e FIFO temos uma certa perda de desempenho, já que o cache terá que manter algumas informações para poder fazer a escolha de quais dados serão despejados. Por isso a criação da estratégia UNORDERED, que foi feita em uma das versões mais recentes. Nesse caso temos despejo, evitando que a memória seja esgotada, mas não temos nenhuma perda de desempenho com relação à manutenção das ordens de despejo. As congurações quanto ao despejo podem ser feitas no próprio código, via programação, ou via XML. Uma possível conguração seria: 6

14 2.1. FUNCIONAMENTO <eviction strategy="fifo"wakeupinterval="1000"maxentries="2000"/> Nesse caso teríamos uma estratégia do tipo FIFO que suportaria no máximo 2000 objetos armazenados no cache. O atributo wakeupinterval dene de quanto em quanto tempo a thread que cuida do despejo será acordada. A cada vez que essa thread acorda, temos o despejo de elementos segundo a estratégia congurada e também temos o despejo das entradas mortais que tenham passado de seu tempo limite. Temos também a possibilidade de denir o campo wakeupinterval para -1. Nesse caso, a thread que cuida do despejo não rodará automaticamente, e poderá ser chamada pelo método EvictionManager.processEviction() Opções de organização do cache O Innispan oferece basicamente 4 possibilidades de funcionamento: modo local, modo de replicação, modo de invalidação e modo distribuído. Além disso, para cada uma dessas possibilidades, podemos ainda congurar se a comunicação entre os nós será síncrona ou assíncrona. Modo Local Nessa conguração temos um cache simples, rodando em uma máquina. Nesse caso o cache funciona de maneira parecida com o JBoss Cache. Se o Innispan estiver rodando em modo local em cada nó de um aglomerado, teríamos caches espalhados nas máquinas, trabalhando de maneira independente, com informações locais apenas. Modo de replicação Aqui teríamos o estado replicado entre todos os nós do aglomerado. Cada nó teria seu cache com as informações replicadas, ou seja, a cada momento em que houvesse alguma alteração no estado do cache, essa alteração seria replicada pra todos os outros nós do aglomerado. Nessa conguração temos perda de desempenho ao modicar alguma entrada no cache mas, por outro lado, existe um ganho ao recuperarmos uma informação no cache, pois essa será uma interação sempre local. Modo de invalidação Nesse caso cada nó tem sua instância do cache e a única ligação entre os nós é a invalidação de dados. Se um nó atualiza ou remove uma informação no cache, a informação é passada aos outros nós, que invalidam essa informação nas suas respectivas cópias do cache. Essa conguração só faz sentido se o Innispan estiver sendo usado como uma camada de cache para amenizar leituras em um local mais distante, como um banco de dados. Assim haveria a consistência entre os valores do cache e do banco de dados. 7

15 CAPÍTULO 2. JBOSS INFINISPAN Figura 2.3: Exemplo de invalidação [9] Modo distribuído Essa é a conguração que permite maior escalabilidade e, portanto, a mais interessante para grandes quantidades de dados e nós. Nessa conguração o cache ca realmente distribuído no aglomerado. Cada nó é responsável por manter em seu cache de uma certa porção de dados. A localização de um valor pode ser descoberta a partir de um hash consistente feito com a chave do valor. Basicamente, trata-se de um hash que procura distribuir igualmente os valores entre os nós e que procura fazer com que um rehash das chaves seja menos sentido computacionalmente, isto é, que ao sair ou entrar um novo nó, o menor número possível de mapeamentos valor/nó sejam alterados. Temos também a possibilidade de denir um número de cópias que cada valor terá. Nesse caso as cópias de uma entrada do cache serão distribuídas entre outros nós a m de aumentar sua disponibilidade, evitando que haja problemas devido a falha de um nó do aglomerado. Para o modo distribuído há ainda a possibilidade de se habilitar mais um nível de cache. Esse nível é denominado cache L1 (por analogia com os caches nível 1 presentes nas CPUs atuais) e é mantido localmente em um nó para guardar valores frequentemente acessados mas que se encontram em outro nó do aglomerado. Com isso, temos claramente um ganho ao se recuperar informações no cache. Por outro lado, quando há alguma alteração (atualização ou remoção) no estado de algum valor armazenado no cache, o nó que sofreu tal alteração terá que se responsabilizar pela invalidação desse valor em todos os outros nós, para que ele possa ser removido dos respectivos caches L Comunicação A comunicação entre os nós do Innispan é feita em parte com a comunicação TCP e em parte auxiliada pelo JGroups [19] (descobrimento e controle de nós do aglomerado). 8

16 2.1. FUNCIONAMENTO O JGroups é um projeto de código aberto que fornece uma camada para grupos de processos se comunicarem por meio de uma camada de transporte congurável (TCP, UDP ou JMS). Ele oferece serviços de comunicação de grupo e de manutenção dos elementos de um grupo. O Innispan é distribuído com duas congurações básicas do JGroups pré denidas, uma usando TCP e outra usando UDP. A partir dessas congurações, podemos fazer vários outros ajustes nos fornecidos pelo JGroups ou até mesmo criar uma outra conguração. Em cima dessa camada do JGroups e de comunicação TCP entre os nós, o Innispan monta sua infraestrutura de comunicação baseada na API RpcManager. Essa interface possui métodos que recebem ou devolvem objetos que implementam alguma das seguintes interfaces: ReplicableCommand: interface que encapsula os comandos que serão distribuídos entre os demais nós do aglomerado; Address: interface que dene o endereço de algum outro nó especíco do aglomerado; Response: interface que encapsula uma resposta de uma chamada remota feita a outros nós do aglomerado. O RpcManager é responsável por distribuir as chamadas de maneira otimizada para um ou mais endereços e por tratar as respostas das chamadas, podendo tal tratamento ser síncrono ou assíncrono Hash consistente O uso de Hash consistente é uma das características do Innispan inspiradas pelo Dynamo. A idéia dele é, basicamente, diminuir o número de movimentações dos valores entre os nós do aglomerado sempre que houver um rehash (entrada ou saída de um nó do aglomerado), distribuir igualmente a carga entre os nós, replicar cada valor por N nós no aglomerado (N é congurável, tanto no Dynamo quanto no Innispan) de forma que os nós sejam independentes, ou seja, que esses nós estejam em máquinas físicas diferentes, ou até em racks diferentes. Primeiramente considera-se um anel formado pela imagem da função de hash que espalha as chaves do cache pelo aglomerado, de forma que após o último valor da imagem, voltamos ao primeiro valor dela. Dividimos esse anel em partições iguais e distribuímos essas porções entre os nós do aglomerado. Para descobrirmos qual nó é responsável por uma dada chave, calculamos a função de hash da chave e então, após vermos a qual partição essa chave pertence no anel, vericamos qual nó é o responsável pelo armazenamento. A replicação é feita de maneira bem simples. Se uma chave qualquer tiver a sua função de hash mapeada para uma partição A, o nó responsável por essa partição irá transmitir o valor também 9

17 CAPÍTULO 2. JBOSS INFINISPAN para os nós responsáveis pelas próximas N-1 partições encontradas no sentido horário do anel do hash. Há ainda detalhes que deixam essa lógica um pouco mais complexa. Repare, por exemplo, que sem o devido cuidado, há a possibilidade de um valor ser replicado pra N partições que na verdade são mantidos por menos que N nós. Existem políticas para se evitar que partições vizinhas sejam mantidas pelo mesmo nó. 2.2 Arquitetura interna Daremos aqui uma breve noção da arquitetura interna do Innispan, focando no que diz respeito à implementação deste trabalho. Iremos deixar de lado alguns outros detalhes Comandos Todas as operações efetuadas no cache são encapsuladas pela interface ReplicableCommand (gura 2.4). Figura 2.4: ReplicableCommand API Todos os comandos do Innispan possuem um id único denido estaticamente, que serve como identicador nas várias interações remotas entre os nós de um aglomerado, e facilita a seriação do comando. O método perform() efetivamente possui a lógica do comando. Os métodos getparameters() e setparameters() ajudam no processo de seriação do comando para transmissão de um comando pela rede. Temos ainda uma outra interface, que estende a interface ReplicableCommand e que muitos dos comandos implementam. Trata-se da interface VisitableCommand, que possui apenas dois métodos a mais, como podemos ver na gura 2.5. Ao implementar essa última interface, os comandos passam a aceitar a visita de visitantes e interceptadores. 10

18 2.2. ARQUITETURA INTERNA Figura 2.5: VisitableCommand API Visitantes Os visitantes, que são implementados sob a interface Visitor (gura 2.6), são componentes que devem vericar qual comando (VisitableCommand) será executado e vericar se há atitudes a tomar em relação a execução do comando. Figura 2.6: Visitor API [8] Repare que um Visitor deve implementar um comportamento pra cada comando do Innispan. A maioria deles implementa apenas alguns comandos e deixa métodos vazios em relação aos outros comandos. A utilidade desses visitantes será melhor visualizada no próximo item e quando explicarmos o módulo de consultas Interceptadores Interceptadores (CommandInterceptor) são classes que implementam a interface Visitor e possuem a capacidade de serem chamados em uma cadeia que é mantida pelo cache. Quando executamos um comando qualquer no cache como, por exemplo, o RemoveCommand que é chamado internamente após um cache.remove(), o cache passa esse comando pra uma cadeia de CommandInterceptors mantida pela classe InterceptorChain. Os interceptadores são mantidos sempre na mesma ordem, que deve ser denida no momento da adição deles à cadeia. 11

19 CAPÍTULO 2. JBOSS INFINISPAN Figura 2.7: CommandInterceptor API O uxo de uma chamada Ainda considerando o exemplo do RemoveCommand, o uxo que um cache.remove() geraria internamente seria: O cache cria um InvocationContext, que contém as informações necessárias de uma chamada ao cache, como o controle da transação (se houver uma), por exemplo. Repare que tanto os comandos como os interceptadores recebem esse contexto; Um RemoveCommand é criado com as informações que lhe cabem (exemplo: qual chave será removida do cache); O cache passa o InvocationContext e o RemoveCommand criados para cada um dos CommandInterceptors que estiverem registrados no InterceptorChain. Cada CommandIntercept faz o trabalho que lhe couber; O cache nalmente chama o método RemoveCommand.perform() que fará a remoção do valor de fato. 2.3 Módulo de consultas Além da possibilidade de se obter um valor usando sua chave, o Innispan também oferece a possibilidade de se fazer consultas no cache usando propriedades dos objetos que estão armazenados. Para isso o Innispan usa outras duas ferramentas, o Apache Lucene [1] aliado ao Hibernate Search [5], ambos projetos de código aberto. Explicaremos as características dessas duas bibliotecas nesta seção. Outros detalhes do módulo de consulta serão explicados no próximo capítulo Uso do Apache Lucene O Lucene é uma biblioteca Java de código aberto para indexação e busca de texto. É a ferramenta mais usada para esse tipo de atividade [24], e se caracteriza por oferecer uma API simples e algoritmos que acompanham o estado da arte da área de recuperação de informações. 12

20 2.3. MÓDULO DE CONSULTAS Índices Quando falamos de índices em bancos de dados ou outras estruturas que permitem buscas, estamos falando de algo semelhante a um índice de um livro. Trata-se de uma técnica que permita buscar algum conteúdo de forma mais rápida e inteligente. A idéia é evitar fazer buscas sequenciais como, por exemplo, folhear um livro até encontrar um conteúdo em especial. Esse procedimento pode ser bem lento. O mesmo acontece com algoritmos que buscam palavras em textos. Usualmente se faz antes alguma espécie de índice desse texto, para que a busca tenha um melhor desempenho. No caso do Lucene, é usada uma estratégia chamada indexação por índices invertidos [24]. Essa estratégia consiste em indexar os arquivos pelas palavras. Ou seja, para cada palavra temos uma lista dos documentos em que ela aparece, mas não conseguimos saber facilmente quais palavras um documento contém (daí o termo invertido). É importante salientar também que nem todas as palavras encontradas nos objetos que indexamos são de fato utilizadas. Por exemplo, para documentos em português, palavras como artigos e preposições podem ser ignoradas. O local onde o Lucene mantém os índices é congurável, mas o Innispan, por padrão, armazena os índices em disco. Uso da API Figura 2.8: Adicionando um documento ao índice A API do Lucene contém métodos que permitem adicionar elementos no índice e fazer buscas no índice. É claro que há vários recursos para essas duas funcionalidades, mas daremos apenas um exemplo simples para que possamos, na próxima seção, entender melhor as funções do Hibernate Search. 13

21 CAPÍTULO 2. JBOSS INFINISPAN Vemos na gura 2.8 como adicionar um documento ao índice. O índice é formado por vários documentos (Document) que, por sua vez, são formados por um ou mais campos (Field). No exemplo, ao adicionar os campos no documento, adicionamos também duas congurações. Através da conguração Field.Store.YES estamos guardando esse campo dentro do documento. Caso contrário, poderíamos fazer a busca por esse campo, mas o campo não estaria dentro do Document docretrieved no exemplo da gura 2.9. A conguração Field.Index.ANALYZED diz que esse campo passará por um ltro que removerá palavras sem signicado importante (artigos, por exemplo). Figura 2.9: Buscando um documento no índice A classe TopDocs armazena uma lista de ponteiros para os primeiros 10 (no exemplo da - gura 2.9) resultados da consulta. Esses resultados estão encapsulados em um vetor de ScoreDoc, que possuem a pontuação (score) do documento, isto é, sua relevância e o id do documento para que possamos recuperá-lo no índice. Quando não denimos nenhuma ordenação em especial para nossa consulta, o vetor de ScoreDoc vem ordenado pela pontuação. No Innispan, os ids dos documentos são, na verdade, as chaves relacionadas a eles no cache Uso do Hibernate Search O Hibernate Search é uma biblioteca implementada como uma camada sobre o Lucene. Sua intenção é: facilitar o uso dos índices do Lucene, que originalmente lidam basicamente com texto, fazendo com que possamos armazenar e buscar objetos Java no índice, sem nos preocupar em convertêlos para texto; manter a sincronização entre um banco de dados e os índices do Lucene; ao recuperar um documento no índice, agora um objeto Java, não carregar seus campos a princípio. A idéia é carregar esses campos apenas quando eles forem acessados (carga preguiçosa). 14

Módulo de consultas distribuídas do Innispan. Israel Danilo Lacerra

Módulo de consultas distribuídas do Innispan. Israel Danilo Lacerra Módulo de consultas distribuídas do Innispan Israel Danilo Lacerra Dissertação apresentada ao Instituto de Matemática e Estatística da Universidade de São Paulo para obtenção do título de Mestre em Ciências

Leia mais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais Notas da Aula 17 - Fundamentos de Sistemas Operacionais 1. Gerenciamento de Memória: Introdução O gerenciamento de memória é provavelmente a tarefa mais complexa de um sistema operacional multiprogramado.

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

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

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

Engenharia de software 2011A. Trabalho sobre

Engenharia de software 2011A. Trabalho sobre Engenharia de software 2011A Trabalho sobre NOSQL Not only SQL NoSQL Not only SQL GRUPO - 9 Cléverton Heming Jardel Palagi Jonatam Gebing Marcos Wassem NOSQL O Termo NoSQL, foi utilizado pela primeira

Leia mais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 10 Persistência de Dados

Leia mais

NoSQL - 2014. Edward Ribeiro

NoSQL - 2014. Edward Ribeiro NoSQL - 2014 Edward Ribeiro Edward Pesquisador independente (UnB) Professor Universitário Analista de Sistemas (Senado) Contribuidor de software livre Agenda 1. Motivação 2. Definição 3. Descrição a. Modelos

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Cassandra - Particionamento de Dados Sistemas Distribuídos Douglas Macedo Hugo Lourenço Sumário Introdução Conceito Anel Multíplos Data center Fatores envolvidos Arquitetura do Sistema Módulo de Particionamento

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Arquiteturas Capítulo 2 Agenda Estilos Arquitetônicos Arquiteturas de Sistemas Arquiteturas Centralizadas Arquiteturas Descentralizadas Arquiteturas

Leia mais

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44 Armazenando Dados em Aplicações Java Parte 2 de 3: Apresentando as opções Hua Lin Chang Costa, hualin@cos.ufrj.br, COPPE/UFRJ. Leonardo Gresta Paulino Murta, leomurta@ic.uff.br, IC/UFF. Vanessa Braganholo,

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

Visão do Usuário da DSM

Visão do Usuário da DSM Memória Compartilhada Distribuída Visão Geral Implementação Produtos 1 Memória Compartilhada Distribuída Mecanismos tradicionais de comunicação via RPC/RMI ou mensagens deixam explícitas as interações

Leia mais

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador Sistemas de Informação Prof. Anderson D. Moura Um programa de computador é composto por uma seqüência de instruções, que é interpretada e executada por um processador ou por uma máquina virtual. Em um

Leia mais

Segurança na Rede Local Redes de Computadores

Segurança na Rede Local Redes de Computadores Ciência da Computação Segurança na Rede Local Redes de Computadores Disciplina de Desenvolvimento de Sotware para Web Professor: Danilo Vido Leonardo Siqueira 20130474 São Paulo 2011 Sumário 1.Introdução...3

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS Arquiteturas www.pearson.com.br capítulo 2 slide 1 2.1 Estilos Arquitetônicos Formado em termos de componentes, do modo como esses componentes estão conectados uns aos outros, dos dados trocados entre

Leia mais

MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS

MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS Quando falamos em arquitetura, normalmente utilizamos esse termo para referenciar a forma como os aplicativos computacionais são estruturados e os hardwares

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

XDOC. Solução otimizada para armazenamento e recuperação de documentos

XDOC. Solução otimizada para armazenamento e recuperação de documentos XDOC Solução otimizada para armazenamento e recuperação de documentos ObJetivo Principal O Que você ACHA De ter Disponível Online todos OS Documentos emitidos por SUA empresa em UMA intranet OU Mesmo NA

Leia mais

Seminário: Google File System (GFS)

Seminário: Google File System (GFS) UNIVERSIDADE FEDERAL DE SANTA CATARINA UFSC Disciplina: Sistemas Operacionais I INE5355 Alunos: Armando Fracalossi 06132008 Maurílio Tiago Brüning Schmitt 06132033 Ricardo Vieira Fritsche 06132044 Seminário:

Leia mais

Sistemas distribuídos:comunicação

Sistemas distribuídos:comunicação M. G. Santos marcela@estacio.edu.br Faculdade Câmara Cascudo - Estácio de Sá 16 de abril de 2010 Formas de comunicação Produtor-consumidor: comunicação uni-direccional, com o produtor entregando ao consumidor.

Leia mais

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Aula 3 Virtualização de Sistemas 1. Conceito Virtualização pode ser definida

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Basedos na Web Capítulo 12 Agenda Arquitetura Processos Comunicação Nomeação Sincronização Consistência e Replicação Introdução

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Gerenciamento de Memória Norton Trevisan Roman Marcelo Morandini Jó Ueyama Apostila baseada nos trabalhos de Kalinka Castelo Branco, Antônio Carlos Sementille, Paula Prata e nas transparências

Leia mais

Considerações no Projeto de Sistemas Cliente/Servidor

Considerações no Projeto de Sistemas Cliente/Servidor Cliente/Servidor Desenvolvimento de Sistemas Graça Bressan Graça Bressan/LARC 2000 1 Desenvolvimento de Sistemas Cliente/Servidor As metodologias clássicas, tradicional ou orientada a objeto, são aplicáveis

Leia mais

Arquitetura dos Sistemas de Informação Distribuídos

Arquitetura dos Sistemas de Informação Distribuídos Arquitetura dos Sistemas de Informação Distribuídos Quando se projeta um sistema cuja utilização é destinada a ser feita em ambientes do mundo real, projeções devem ser feitas para que o sistema possa

Leia mais

Arquitetura de Sistemas Distribuídos. Introdução a Sistemas Distribuídos

Arquitetura de Sistemas Distribuídos. Introdução a Sistemas Distribuídos Introdução a Sistemas Distribuídos Definição: "Um sistema distribuído é uma coleção de computadores autônomos conectados por uma rede e equipados com um sistema de software distribuído." "Um sistema distribuído

Leia mais

SISTEMAS DISTRIBUIDOS

SISTEMAS DISTRIBUIDOS 1 2 Caracterização de Sistemas Distribuídos: Os sistemas distribuídos estão em toda parte. A Internet permite que usuários de todo o mundo acessem seus serviços onde quer que possam estar. Cada organização

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Processos I: Threads, virtualização e comunicação via protocolos Prof. MSc. Hugo Souza Nesta primeira parte sobre os Processos Distribuídos iremos abordar: Processos e a comunicação

Leia mais

Chord. Tecnologias de Middleware. Fernando Martins - fmp.martins@gmail.com

Chord. Tecnologias de Middleware. Fernando Martins - fmp.martins@gmail.com Chord Tecnologias de Middleware 2006/2007 Fernando Martins - fmp.martins@gmail.com Tópicos Objectivo Motivação Peer-To-Peer Chord Descrição Geral Características Distintivas Comparação DNS Modelo do Sistema

Leia mais

Disciplina de Banco de Dados Introdução

Disciplina de Banco de Dados Introdução Disciplina de Banco de Dados Introdução Prof. Elisa Maria Pivetta CAFW - UFSM Banco de Dados: Conceitos A empresa JJ. Gomes tem uma lista com mais ou menos 4.000 nomes de clientes bem como seus dados pessoais.

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

Curso de Aprendizado Industrial Desenvolvedor WEB

Curso de Aprendizado Industrial Desenvolvedor WEB Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos II Professor: Cheli dos S. Mendes da Costa Modelo Cliente- Servidor Modelo de Aplicação Cliente-servidor Os

Leia mais

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10 ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10 Índice 1. A Organização do Computador - Continuação...3 1.1. Memória Primária - II... 3 1.1.1. Memória cache... 3 1.2. Memória Secundária... 3 1.2.1. Hierarquias de

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

Estudo Comparativo Entre Sistemas de Banco de Dados NoSQL e Relacional

Estudo Comparativo Entre Sistemas de Banco de Dados NoSQL e Relacional Universidade Federal de Pernambuco Centro de Informática Graduação em Ciência da Computação Estudo Comparativo Entre Sistemas de Banco de Dados NoSQL e Relacional Marcelo Nascimento Oliveira Proposta de

Leia mais

AULA 13 - Gerência de Memória

AULA 13 - Gerência de Memória AULA 13 - Gerência de Memória omo sabemos, os computadores utilizam uma hierarquia de memória em sua organização, combinando memórias voláteis e não-voláteis, tais como: memória cache, memória principal

Leia mais

2 Ferramentas Utilizadas

2 Ferramentas Utilizadas 2 Ferramentas Utilizadas Esta dissertação utiliza vários outros trabalhos para implementar os mecanismos de adaptação abordados. Essas ferramentas são descritas nas seções seguintes. 2.1 Lua Lua [7, 8]

Leia mais

XDR. Solução para Big Data.

XDR. Solução para Big Data. XDR Solução para Big Data. ObJetivo Principal O volume de informações com os quais as empresas de telecomunicações/internet têm que lidar é muito grande, e está em constante crescimento devido à franca

Leia mais

Introdução ao Modelos de Duas Camadas Cliente Servidor

Introdução ao Modelos de Duas Camadas Cliente Servidor Introdução ao Modelos de Duas Camadas Cliente Servidor Desenvolvimento de Sistemas Cliente Servidor Prof. Esp. MBA Heuber G. F. Lima Aula 1 Ciclo de Vida Clássico Aonde estamos? Page 2 Análise O que fizemos

Leia mais

Apostila de Gerenciamento e Administração de Redes

Apostila de Gerenciamento e Administração de Redes Apostila de Gerenciamento e Administração de Redes 1. Necessidades de Gerenciamento Por menor e mais simples que seja uma rede de computadores, precisa ser gerenciada, a fim de garantir, aos seus usuários,

Leia mais

GERENCIAMENTO CENTRALIZADO DELL POWERVAULT DL 2000 BASEADO EM TECNOLOGIA SYMANTEC

GERENCIAMENTO CENTRALIZADO DELL POWERVAULT DL 2000 BASEADO EM TECNOLOGIA SYMANTEC GERENCIAMENTO CENTRALIZADO DELL POWERVAULT DL 2000 BASEADO EM TECNOLOGIA SYMANTEC RESUMO EXECUTIVO O PowerVault DL2000, baseado na tecnologia Symantec Backup Exec, oferece a única solução de backup em

Leia mais

Service Oriented Architecture (SOA)

Service Oriented Architecture (SOA) São Paulo, 2011 Universidade Paulista (UNIP) Service Oriented Architecture (SOA) Prof. MSc. Vladimir Camelo vladimir.professor@gmail.com 04/09/11 vladimir.professor@gmail.com 1 04/09/11 vladimir.professor@gmail.com

Leia mais

Metas de um Sistema Distribuído

Metas de um Sistema Distribuído Metas de um Sistema Distribuído Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do

Leia mais

Novell Vibe 4.0. Março de 2015. Inicialização Rápida. Iniciando o Novell Vibe. Conhecendo a interface do Novell Vibe e seus recursos

Novell Vibe 4.0. Março de 2015. Inicialização Rápida. Iniciando o Novell Vibe. Conhecendo a interface do Novell Vibe e seus recursos Novell Vibe 4.0 Março de 2015 Inicialização Rápida Quando você começa a usar o Novell Vibe, a primeira coisa a se fazer é configurar sua área de trabalho pessoal e criar uma área de trabalho de equipe.

Leia mais

CAPITULO 4 A ARQUITETURA LÓGICA PARA O AMBIENTE

CAPITULO 4 A ARQUITETURA LÓGICA PARA O AMBIENTE CAPITULO 4 A ARQUITETURA LÓGICA PARA O AMBIENTE A proposta para o ambiente apresentada neste trabalho é baseada no conjunto de requisitos levantados no capítulo anterior. Este levantamento, sugere uma

Leia mais

Programação Concorrente Processos e Threads

Programação Concorrente Processos e Threads Programação Concorrente Processos e Threads Prof. Eduardo Alchieri Processos O conceito mais central em qualquer sistema operacional é o processo Uma abstração de um programa em execução Um programa por

Leia mais

HIBERNATE EM APLICAÇÃO JAVA WEB

HIBERNATE EM APLICAÇÃO JAVA WEB HIBERNATE EM APLICAÇÃO JAVA WEB Raul Victtor Barbosa Claudino¹, Ricardo Ribeiro Rufino¹ ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil victtor.claudino@gmail.com, ricardo@unipar.br Resumo: Este

Leia mais

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com Última atualização: 20.03.2013 Conceitos Banco de dados distribuídos pode ser entendido como uma coleção de múltiplos bds

Leia mais

4 Arquitetura básica de um analisador de elementos de redes

4 Arquitetura básica de um analisador de elementos de redes 4 Arquitetura básica de um analisador de elementos de redes Neste capítulo é apresentado o desenvolvimento de um dispositivo analisador de redes e de elementos de redes, utilizando tecnologia FPGA. Conforme

Leia mais

Árvore B UNITINS ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 3º PERÍODO 43

Árvore B UNITINS ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 3º PERÍODO 43 AULA A 3 ESTRUTURA RA DE DADOS Árvore B Esperamos que, ao final desta aula, você seja capaz de: identificar as vantagens da árvore B em relação às árvores binária de busca e AVL; conhecer as funções de

Leia mais

Prof. Daniela Barreiro Claro

Prof. Daniela Barreiro Claro Prof. Daniela Barreiro Claro Volume de dados muito grande Principais problemas em relação aos SGBD Relacionais é conciliar o tipo de modelo com a demanda da escalabilidade. Exemplo -Facebook Um crescimento

Leia mais

Aula 5 Cálculo de máscara e de subredes

Aula 5 Cálculo de máscara e de subredes 1 Aula 5 Cálculo de máscara e de subredes 5.1 Conceitos Quando um host se comunica com outro usa o endereço de enlace dele. Os endereços de hardware das placas de rede, ou MAC Address, são constituídos

Leia mais

Estruturas de Armazenamento e Indexação. Rafael Lage Moreira Barbosa 10.1.4217

Estruturas de Armazenamento e Indexação. Rafael Lage Moreira Barbosa 10.1.4217 Estruturas de Armazenamento e Indexação Rafael Lage Moreira Barbosa 10.1.4217 Estruturas de Armazenamento Banco de Dados são armazenados fisicamente como arquivos de registro, que em geral ficam em discos

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas de Entrada/Saída Princípios de Software Sistema de Entrada/Saída Princípios de Software Tratadores (Manipuladores) de Interrupções Acionadores de Dispositivos (Device Drivers)

Leia mais

Roteamento e Comutação

Roteamento e Comutação Roteamento e Comutação Design de Rede Local Design Hierárquico Este design envolve a divisão da rede em camadas discretas. Cada camada fornece funções específicas que definem sua função dentro da rede

Leia mais

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki Prevayler Perola André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki Prevayler Prevayler é a implementação em Java do conceito de Prevalência. É um framework que prega uma JVM invulnerável

Leia mais

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013 MC714 Sistemas Distribuídos 2 semestre, 2013 Virtualização - motivação Consolidação de servidores. Consolidação de aplicações. Sandboxing. Múltiplos ambientes de execução. Hardware virtual. Executar múltiplos

Leia mais

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido Arquitetura Roteiro Arquitetura Tipos de Arquitetura Centralizado Descentralizado Hibrido Questionário 2 Arquitetura Figura 1: Planta baixa de uma casa 3 Arquitetura Engenharia de Software A arquitetura

Leia mais

Revista Eletrônica da FANESE ISSN 2317-3769

Revista Eletrônica da FANESE ISSN 2317-3769 REPLICAÇÃO E ALTA DISPONIBILIDADE NO SQL SERVER 2012 Renata Azevedo Santos Carvalho 1 RESUMO Neste artigo serão relatadas as novidades que o SQL Server 2012 vem trazendo nesta sua nova versão no que se

Leia mais

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo 4 PROCESSOS Os primeiros sistemas operacionais permitiam que apenas um processo fosse executado por vez. Dessa maneira, este processo tinha todo o sistema computacional a sua disposição. Os atuais sistemas

Leia mais

Banco de Dados. Introdução. João Eduardo Ferreira Osvaldo Kotaro Takai. jef@ime.usp.br DCC-IME-USP

Banco de Dados. Introdução. João Eduardo Ferreira Osvaldo Kotaro Takai. jef@ime.usp.br DCC-IME-USP Banco de Dados Introdução João Eduardo Ferreira Osvaldo Kotaro Takai jef@ime.usp.br DCC-IME-USP Importância dos Bancos de Dados A competitividade das empresas depende de dados precisos e atualizados. Conforme

Leia mais

Sistemas de Informação. Sistemas Operacionais 4º Período

Sistemas de Informação. Sistemas Operacionais 4º Período Sistemas de Informação Sistemas Operacionais 4º Período SISTEMA DE ARQUIVOS SUMÁRIO 7. SISTEMA DE ARQUIVOS: 7.1 Introdução; 7.2 s; 7.3 Diretórios; 7.4 Gerência de Espaço Livre em Disco; 7.5 Gerência de

Leia mais

4 Um Exemplo de Implementação

4 Um Exemplo de Implementação 4 Um Exemplo de Implementação Neste capítulo será discutida uma implementação baseada na arquitetura proposta. Para tanto, será explicado como a arquitetura proposta se casa com as necessidades da aplicação

Leia mais

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA 1. INTRODUÇÃO O conceito de concorrência é o princípio básico para o projeto e a implementação dos sistemas operacionais multiprogramáveis. O sistemas multiprogramáveis

Leia mais

5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância

5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância 5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância O capítulo anterior apresentou uma discussão sobre a inclusão dos chamados learning services no processo

Leia mais

ARQUITETURA TRADICIONAL

ARQUITETURA TRADICIONAL INTRODUÇÃO Atualmente no universo corporativo, a necessidade constante de gestores de tomar decisões cruciais para os bons negócios das empresas, faz da informação seu bem mais precioso. Nos dias de hoje,

Leia mais

PLATAFORMA DE DESENVOLVIMENTO PINHÃO PARANÁ MANUAL DE UTILIZAÇÃO DO CVS NO ECLIPSE

PLATAFORMA DE DESENVOLVIMENTO PINHÃO PARANÁ MANUAL DE UTILIZAÇÃO DO CVS NO ECLIPSE PLATAFORMA DE DESENVOLVIMENTO PINHÃO PARANÁ MANUAL DE UTILIZAÇÃO DO CVS NO ECLIPSE Agosto 2007 Sumário de Informações do Documento Tipo do Documento: Manual Título do Documento: MANUAL DE UTILIZAÇÃO DO

Leia mais

3 Arquitetura do Sistema

3 Arquitetura do Sistema 3 Arquitetura do Sistema Este capítulo irá descrever a arquitetura geral do sistema, justificando as decisões de implementação tomadas. Na primeira seção iremos considerar um conjunto de nós interagindo

Leia mais

Varnish-Cache: Velocidade e disponibilidade para aplicações WEB

Varnish-Cache: Velocidade e disponibilidade para aplicações WEB CESUMAR Centro Universitário de Maringá Curso Superior de Tecnologia em Sistemas para Internet PROJETO INTEGRADOR Varnish-Cache: Velocidade e disponibilidade para aplicações WEB Rafael Vaz Pinto Toledo

Leia mais

Uma solução de desempenho para a distribuição de documentos: Habilitando a distribuição de documentos em tempo real para corporações globais

Uma solução de desempenho para a distribuição de documentos: Habilitando a distribuição de documentos em tempo real para corporações globais Uma solução de desempenho para a distribuição de documentos: Habilitando a distribuição de documentos em tempo real para corporações globais Visão Geral Desafio Hoje, os aplicativos da web são um tremendo

Leia mais

CONCEITOS E APLICAÇÕES DA COMPUTAÇÃO EM NUVEM

CONCEITOS E APLICAÇÕES DA COMPUTAÇÃO EM NUVEM CONCEITOS E APLICAÇÕES DA COMPUTAÇÃO EM NUVEM Rogério Schueroff Vandresen¹, Willian Barbosa Magalhães¹ ¹Universidade Paranaense(UNIPAR) Paranavaí-PR-Brasil rogeriovandresen@gmail.com, wmagalhaes@unipar.br

Leia mais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais Arquitetura de Computadores Introdução aos Sistemas Operacionais O que é um Sistema Operacional? Programa que atua como um intermediário entre um usuário do computador ou um programa e o hardware. Os 4

Leia mais

Weather Search System

Weather Search System Weather Search System PROJECTO DE COMPUTAÇÃO EM NUVEM RELATÓRIO Grupo 2 Gonçalo Carito - Nº57701 Bernardo Simões - Nº63503 Guilherme Vale - Nº64029 Índice Weather Search System...1 1. A Solução Implementada...3

Leia mais

CAPÍTULO 12 CONCLUSÃO

CAPÍTULO 12 CONCLUSÃO CAPÍTULO 12 CONCLUSÃO Existe somente um avanço. A hora mais escura da noite é o prenúncio do alvorecer. Nos dias sombrios de inverno, prosseguem incessantemente os preparativos para a primavera. Tudo que

Leia mais

Tipos de Sistemas Distribuídos (Cluster e Grid)

Tipos de Sistemas Distribuídos (Cluster e Grid) Tipos de Sistemas Distribuídos (Cluster e Grid) 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

3 Multi-Agent System for Stock Exchange Simulation

3 Multi-Agent System for Stock Exchange Simulation Multi-Agent System for Stock Exchange Simulation 29 3 Multi-Agent System for Stock Exchange Simulation A participação na competição Agent Reputation Trust (ART) Testbed [10] motivou o estudo do domínio

Leia mais

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande região de armazenamento formada por bytes ou palavras, cada

Leia mais

3 Modelo de Controle de Acesso no Projeto de Aplicações na Web Semântica

3 Modelo de Controle de Acesso no Projeto de Aplicações na Web Semântica 3 Modelo de Controle de Acesso no Projeto de Aplicações na Web Semântica Este trabalho tem o objetivo de integrar o controle de acesso no projeto de aplicações na web semântica. Uma arquitetura de software

Leia mais

Rotina de Discovery e Inventário

Rotina de Discovery e Inventário 16/08/2013 Rotina de Discovery e Inventário Fornece orientações necessárias para testar a rotina de Discovery e Inventário. Versão 1.0 01/12/2014 Visão Resumida Data Criação 01/12/2014 Versão Documento

Leia mais

Sistemas Distribuídos. Introdução

Sistemas Distribuídos. Introdução Sistemas Distribuídos Introdução Definição Processos Um sistema distribuído é um conjunto de computadores independentes, interligados por uma rede de conexão, executando um software distribuído. Executados

Leia mais

Projeto OBAA. Relatório Técnico RT-OBAA-07 Grupo Agentes e Ontologias. Proposta de Federação de Repositórios de Objetos Educacionais.

Projeto OBAA. Relatório Técnico RT-OBAA-07 Grupo Agentes e Ontologias. Proposta de Federação de Repositórios de Objetos Educacionais. Edital MCT/FINEP/MC/FUNTTEL Plataformas para Conteúdos Digitais 01/2007 Projeto OBAA Relatório Técnico RT-OBAA-07 Grupo Agentes e Ontologias Proposta de Federação de Repositórios de Objetos Educacionais

Leia mais

Consumindo um Web Service através de uma Aplicação Comercial em Android. Alex Malmann Becker www.alex.porthal.com.br alex@porthal.com.

Consumindo um Web Service através de uma Aplicação Comercial em Android. Alex Malmann Becker www.alex.porthal.com.br alex@porthal.com. Consumindo um Web Service através de uma Aplicação Comercial em Android Alex Malmann Becker www.alex.porthal.com.br alex@porthal.com.br 08/2014 Agenda Introdução Conceitos Web Service Por que utilizar

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.

Leia mais

Servidor Proxy armazenamento em cache.

Servidor Proxy armazenamento em cache. Servidor Proxy Servidor Proxy Um modo bastante simples de melhorar o desempenho de uma rede é gravar páginas que foram anteriormente acessadas, caso venham a ser solicitadas novamente. O procedimento de

Leia mais

Aspectos técnicos do desenvolvimento baseado em componentes

Aspectos técnicos do desenvolvimento baseado em componentes Aspectos técnicos do desenvolvimento baseado em componentes Um novo processo de desenvolvimento O uso de componentes traz mudanças no processo de desenvolvimento Além de desenvolver um produto, queremos

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Web Services Web Services Existem diferentes tipos de comunicação em um sistema distribuído: Sockets Invocação

Leia mais

PLANEJAMENTO DA MANUFATURA

PLANEJAMENTO DA MANUFATURA 58 FUNDIÇÃO e SERVIÇOS NOV. 2012 PLANEJAMENTO DA MANUFATURA Otimizando o planejamento de fundidos em uma linha de montagem de motores (II) O texto dá continuidade à análise do uso da simulação na otimização

Leia mais

CAPÍTULO 2. Este capítulo tratará :

CAPÍTULO 2. Este capítulo tratará : 1ª PARTE CAPÍTULO 2 Este capítulo tratará : 1. O que é necessário para se criar páginas para a Web. 2. A diferença entre páginas Web, Home Page e apresentação Web 3. Navegadores 4. O que é site, Host,

Leia mais

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA FERRAMENTAS DE COLABORAÇÃO CORPORATIVA Manual de Utilização Google Grupos Sumário (Clique sobre a opção desejada para ir direto à página correspondente) Utilização do Google Grupos Introdução... 3 Página

Leia mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

Leia mais

Sistemas Distribuídos. Nomeação. Nazareno Andrade. Universidade Federal de Campina Grande 02/2008

Sistemas Distribuídos. Nomeação. Nazareno Andrade. Universidade Federal de Campina Grande 02/2008 Sistemas Distribuídos Nomeação Nazareno Andrade Universidade Federal de Campina Grande 02/2008 Fundamentos Coordenando processos Construíndo sistemas Sistemas construídos 2 Fundamentos Coordenando processos

Leia mais

On Scalability of Software-Defined Networking

On Scalability of Software-Defined Networking On Scalability of Software-Defined Networking Bruno dos Santos Silva bruno.silva@ic.uff.br Instituto de Computação IC Universidade Federal Fluminense UFF 24 de Setembro de 2015 B. S. Silva (IC-UFF) On

Leia mais