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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Um cluster de servidores de email pode ser usado para servir os emails de uma empresa.

Um cluster de servidores de email pode ser usado para servir os emails de uma empresa. CLUSTERS Pode-se pegar uma certa quantidade de servidores e juntá-los para formar um cluster. O serviço então é distribuído entre esses servidores como se eles fossem uma máquina só. Um cluster de servidores

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

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

Programação Orientada a Objetos

Programação Orientada a Objetos Objetos, Dados e Serialização André Santanchè Laboratory of Information Systems LIS Instituto de Computação UNICAMP Maio 2015 Picture by Moyan Brenn [http://www.flickr.com/photos/aigle_dore/6225536653/]

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

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

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

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

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

RMI: Uma Visão Conceitual

RMI: Uma Visão Conceitual RMI: Uma Visão Conceitual Márcio Castro, Mateus Raeder e Thiago Nunes 11 de abril de 2007 Resumo Invocação de Método Remoto (Remote Method Invocation - RMI) trata-se de uma abordagem Java para disponibilizar

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

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

Teleprocessamento e Redes

Teleprocessamento e Redes Teleprocessamento e Redes Aula 21: 06 de julho de 2010 1 2 3 (RFC 959) Sumário Aplicação de transferência de arquivos de/para um host remoto O usuário deve prover login/senha O usa duas conexões TCP em

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

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

Prof. Daniela Barreiro Claro

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

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

Padrões de Projeto Implementados em Infraestrturas de Componentes

Padrões de Projeto Implementados em Infraestrturas de Componentes Padrões de Projeto Implementados em Infraestrturas de Componentes Paulo Pires paulopires@nce.ufrj.br http//genesis.nce.ufrj.br/dataware/hp/pires 1 distribuídas baseadas em componentes Comunicação transparente,

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 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

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

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

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

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

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira ENTERPRISE JAVABEANS 3 Msc. Daniele Carvalho Oliveira Apostila Servlets e JSP www.argonavis.com.br/cursos/java/j550/index.html INTRODUÇÃO Introdução Enterprise JavaBeans é um padrão de modelo de componentes

Leia mais

Avaliação do desempenho de gerenciadores de bancos de dados multi modelo em aplicações com persistência poliglota

Avaliação do desempenho de gerenciadores de bancos de dados multi modelo em aplicações com persistência poliglota Avaliação do desempenho de gerenciadores de bancos de dados multi modelo em aplicações com persistência poliglota Fábio Roberto Oliveira, Luis Mariano del Val Cura Faculdade Campo Limpo Paulista (FACCAMP)

Leia mais

23/05/12. Computação em Nuvem. Computação em nuvem: gerenciamento de dados. Computação em Nuvem - Características principais

23/05/12. Computação em Nuvem. Computação em nuvem: gerenciamento de dados. Computação em Nuvem - Características principais Computação em Nuvem Computação em nuvem: gerenciamento de dados Computação em nuvem (Cloud Computing) é uma tendência recente de tecnologia cujo objetivo é proporcionar serviços de Tecnologia da Informação

Leia mais

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com www.facom.ufu.br/~bacala

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com www.facom.ufu.br/~bacala Programação para a Internet Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com www.facom.ufu.br/~bacala A plataforma WEB Baseada em HTTP (RFC 2068) Protocolo simples de transferência de arquivos Sem estado

Leia mais

Introdução aos Bancos de Dados Não-Relacionais. Mauricio De Diana (mestrando) Marco Aurélio Gerosa (orientador)

Introdução aos Bancos de Dados Não-Relacionais. Mauricio De Diana (mestrando) Marco Aurélio Gerosa (orientador) Introdução aos Bancos de Dados Não-Relacionais Mauricio De Diana (mestrando) Marco Aurélio Gerosa (orientador) Conteúdo Histórico de BDs não-relacionais na Web 4 Categorias de bancos NoSQL Exemplos de

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

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

ADMINISTRAÇÃO DE SISTEMAS OPERACIONAIS SISTEMA DE ARQUIVOS

ADMINISTRAÇÃO DE SISTEMAS OPERACIONAIS SISTEMA DE ARQUIVOS ADMINISTRAÇÃO DE SISTEMAS OPERACIONAIS SISTEMA DE ARQUIVOS DISTRIBUÍDOS (DFS) Visão geral sobre o Sistema de Arquivos Distribuídos O Sistema de Arquivos Distribuídos(DFS) permite que administradores do

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

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

Pg. Autoria. Versão atual V10, nov 2008 C. Geyer. Sistemas de Arquivos Distribuídos: DFS. Projeto de. Sistemas de Arquivos Distribuídos (DFS) Súmula

Pg. Autoria. Versão atual V10, nov 2008 C. Geyer. Sistemas de Arquivos Distribuídos: DFS. Projeto de. Sistemas de Arquivos Distribuídos (DFS) Súmula Autoria 1 versão Alunos de disciplina do PPGC Sistemas de Arquivos Distribuídos: DFS Versão atual V10, nov 2008 C. Geyer Sistemas Distribuidos Sistema de Arquivos Distribuídos 1 Sistemas Distribuidos Sistema

Leia mais

Tabela 4.2 Estatística típica de um sistema em 2007

Tabela 4.2 Estatística típica de um sistema em 2007 4. CONSTRUÇÃO DE ÍNDICE Neste capítulo é mostrado como construir um índice invertido, processo chamado de indexação. O projeto de indexação depende de algumas restrições de hardware, fato que leva a necessidade

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

Implementar servidores de Web/FTP e DFS. Disciplina: Serviços de Redes Microsoft Professor: Fernando Santorsula fernando.santorsula@esamc.

Implementar servidores de Web/FTP e DFS. Disciplina: Serviços de Redes Microsoft Professor: Fernando Santorsula fernando.santorsula@esamc. Implementar servidores de Web/FTP e DFS Disciplina: Serviços de Redes Microsoft Professor: Fernando Santorsula fernando.santorsula@esamc.br Conteúdo programático Introdução ao protocolo HTTP Serviço web

Leia mais

6 Sistema de Gerenciamento de Memória

6 Sistema de Gerenciamento de Memória 6 Sistema de Gerenciamento de Memória Os sistemas de gerenciamento de memória baseiam-se no princípio de que a quantidade de dados necessária para realizar uma operação pode ser completamente armazenada

Leia mais

UNIVERSIDADE FEDERAL DA BAHIA INSTITUTO DE MATEMÁTICA CIÊNCIA DA COMPUTAÇÃO LINGUAGENS PARA APLICAÇÃO COMERCIAL. Java Peristence API 1.

UNIVERSIDADE FEDERAL DA BAHIA INSTITUTO DE MATEMÁTICA CIÊNCIA DA COMPUTAÇÃO LINGUAGENS PARA APLICAÇÃO COMERCIAL. Java Peristence API 1. UNIVERSIDADE FEDERAL DA BAHIA INSTITUTO DE MATEMÁTICA CIÊNCIA DA COMPUTAÇÃO LINGUAGENS PARA APLICAÇÃO COMERCIAL Java Peristence API 1.0 Salvador-Ba Março/2009 1 RAMON PEREIRA LOPES Java Peristence API

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

Unidade 5 Armazenamento e Indexação

Unidade 5 Armazenamento e Indexação Unidade 5 Armazenamento e Indexação Engenharia de Computação / Engenharia de Produção Banco de Dados Prof. Maria das Graças da Silva Teixeira Material base: Banco de Dados, 2009.2, prof. Otacílio José

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

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS Objetos distribuídos e invocação remota Introdução Comunicação entre objetos distribuídos Chamada de procedimento remoto Eventos e notificações Objetos

Leia mais

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING http://www.uniriotec.br/~tanaka/tin0036 tanaka@uniriotec.br Bancos de Dados Distribuídos Conceitos e Arquitetura Vantagens das Arquiteturas C/S (em relação

Leia mais

Cursos da Escola de Engenharias e Ciências Exatas - UnP

Cursos da Escola de Engenharias e Ciências Exatas - UnP Cursos da Escola de Engenharias e Ciências Exatas - UnP Professor Nielsen Castelo Damasceno E-mail: nielsen.castelo@unp.br Web: http://ncdd.com.br Sala de Aula Online Curso Sistemas distribuídos (CH Total

Leia mais

Modelo de dados do Data Warehouse

Modelo de dados do Data Warehouse Modelo de dados do Data Warehouse Ricardo Andreatto O modelo de dados tem um papel fundamental para o desenvolvimento interativo do data warehouse. Quando os esforços de desenvolvimentos são baseados em

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

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

Universidade Federal de Goiás Ciências da Computação Sistemas Operacionais 2

Universidade Federal de Goiás Ciências da Computação Sistemas Operacionais 2 Universidade Federal de Goiás Ciências da Computação Sistemas Operacionais 2 MongoDB Diego Fraga - 083746 Gabriel Henrique - 083771 Lauro Henrique - 074259 O que é MongoDB? - MongoDB é uma ferramenta de

Leia mais

COLETA E MINERAÇÃO DE DADOS DE REDES SOCIAIS

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

Leia mais

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

? O SQL SERVER é um sistema de gerenciamento de banco de dados relacional que foi desenvolvido inicialmente pela Microsoft em parceria com a Sybase.

? O SQL SERVER é um sistema de gerenciamento de banco de dados relacional que foi desenvolvido inicialmente pela Microsoft em parceria com a Sybase. ? O SQL SERVER é um sistema de gerenciamento de banco de dados relacional que foi desenvolvido inicialmente pela Microsoft em parceria com a Sybase.? Desde de 1994, a Microsoft lança versões do SQL SERVER

Leia mais

Processos (Threads,Virtualização e Migração de Código)

Processos (Threads,Virtualização e Migração de Código) Processos (Threads,Virtualização e Migração de Código) Roteiro Processos Threads Virtualização Migração de Código O que é um processo?! Processos são programas em execução. Processo Processo Processo tem

Leia mais

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos Capítulo 8 Sistemas com Múltiplos Processadores 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos 1 Sistemas Multiprocessadores Necessidade contínua de computadores mais rápidos modelo

Leia mais

William Stallings Arquitetura e Organização de Computadores 8 a Edição

William Stallings Arquitetura e Organização de Computadores 8 a Edição William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 7 Entrada/saída Os textos nestas caixas foram adicionados pelo Prof. Joubert slide 1 Problemas de entrada/saída Grande variedade

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

ESTRUTURA INTERNA DO SISTEMA ESTRUTURA GERAL DO SGBD. Desempenho do BD ÙSatisfação do usuário. A performance do sistema depende:

ESTRUTURA INTERNA DO SISTEMA ESTRUTURA GERAL DO SGBD. Desempenho do BD ÙSatisfação do usuário. A performance do sistema depende: ESTRUTURA INTERNA DO SISTEMA ESTRUTURA GERAL DO SGBD Desempenho do BD ÙSatisfação do usuário USUÁRIO A performance do sistema depende: da eficiência das estruturas de dados utilizadas; como o sistema opera

Leia mais

O texto desta seção foi publicado em http://msdn.microsoft.com/ptbr/library/ms177433.aspx. o http://msdn.microsoft.com/pt-br/library/ms178104.

O texto desta seção foi publicado em http://msdn.microsoft.com/ptbr/library/ms177433.aspx. o http://msdn.microsoft.com/pt-br/library/ms178104. AULA 12 - Deadlocks Em alguns casos pode ocorrer a seguinte situação: um processo solicita um determinado recurso e este não está disponível no momento. Quando isso ocontece o processo entra para o estado

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

Bancos de dados NOSQL (Not Only SQL)

Bancos de dados NOSQL (Not Only SQL) Bancos de dados NOSQL (Not Only SQL) Qual banco de dados utilizado pelo Facebook e Twitter???? E pelo Google? Quando você digita pindamonhangaba no Google, e ele traz: "Aproximadamente 7.220.000 resultados

Leia mais

COMPARANDO APLICAÇÃO WEB SERVICE REST E SOAP

COMPARANDO APLICAÇÃO WEB SERVICE REST E SOAP COMPARANDO APLICAÇÃO WEB SERVICE REST E SOAP Cleber de F. Ferreira¹, Roberto Dias Mota¹. ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil cleberferreirasi@hotmail.com, motaroberto@hotmail.com Resumo.

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

ARQUITETURA DE SISTEMAS. Cleviton Monteiro (cleviton@gmail.com)

ARQUITETURA DE SISTEMAS. Cleviton Monteiro (cleviton@gmail.com) ARQUITETURA DE SISTEMAS Cleviton Monteiro (cleviton@gmail.com) Roteiro Definição Documento de arquitetura Modelos de representação da arquitetura Estilos arquiteturais Arquitetura de sistemas web Arquitetura

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

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

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Comunicação Inter-Processos Sockets e Portas Introdução Sistemas distribuídos consistem da comunicação entre processos

Leia mais

Roteiro. Sistemas Distribuídos. Sistemas de Arquivos Distribuídos. Sistema de arquivos distribuídos

Roteiro. Sistemas Distribuídos. Sistemas de Arquivos Distribuídos. Sistema de arquivos distribuídos Sistemas Distribuídos Sistemas de Arquivos Distribuídos Roteiro Sistema de arquivos distribuídos Requisitos Arquivos e diretórios Compartilhamento Cache Replicação Estudo de caso: NFS e AFS Sistemas Distribuídos

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

Documento de Projeto de Software

Documento de Projeto de Software Documento de Projeto de Software Projeto: Vídeo Locadora Passatempo Versão: 1.0 Responsável: Ricardo de Almeida Falbo 1. Introdução Este documento apresenta o documento de projeto (design) do sistema de

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 5 Servidores de Aplicação

Leia mais

DESENVOLVIMENTO DE APLICATIVO MÓVEL PARA AUXÍLIO NA PREVENÇÃO DE TRAGÉDIAS EM DECORRÊNCIA DE ENCHENTES

DESENVOLVIMENTO DE APLICATIVO MÓVEL PARA AUXÍLIO NA PREVENÇÃO DE TRAGÉDIAS EM DECORRÊNCIA DE ENCHENTES DESENVOLVIMENTO DE APLICATIVO MÓVEL PARA AUXÍLIO NA PREVENÇÃO DE TRAGÉDIAS EM DECORRÊNCIA DE ENCHENTES Autores: Luciano GONÇALVES JUNIOR, Natália Maria Karmierczak DA SILVA, Paulo César Rodacki GOMES,

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

Padrões Arquiteturais e de Integração - Parte 1

Padrões Arquiteturais e de Integração - Parte 1 1 / 58 - Parte 1 Erick Nilsen Pereira de Souza T017 - Arquitetura e Design de Aplicações Análise e Desenvolvimento de Sistemas Universidade de Fortaleza - UNIFOR 11 de fevereiro de 2015 2 / 58 Agenda Tópicos

Leia mais