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

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

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

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

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

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

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

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

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

Bancos de Dados NoSQL x SGBDs Relacionais:Análise Comparativa*

Bancos de Dados NoSQL x SGBDs Relacionais:Análise Comparativa* Bancos de Dados NoSQL x SGBDs Relacionais:Análise Comparativa* Ricardo W. Brito, Faculdade Farias Brito e Universidade de Fortaleza, ricardow@ffb.edu.br Resumo O Modelo Relacional tem sido amplamente utilizado

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

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

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

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

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

2 Trabalhos Relacionados

2 Trabalhos Relacionados 2 Trabalhos Relacionados Nesse capítulo, apresentamos os trabalhos relacionados ao GridFS, entrando em mais detalhes sobre os sistemas citados durante a introdução e realizando algumas considerações sobre

Leia mais

Treinamento PostgreSQL Cluster de Banco de Dados - Aula 01

Treinamento PostgreSQL Cluster de Banco de Dados - Aula 01 Treinamento PostgreSQL Cluster de Banco de Dados - Aula 01 Eduardo Ferreira dos Santos SparkGroup Treinamento e Capacitação em Tecnologia eduardo.edusantos@gmail.com eduardosan.com 13 de Junho de 2013

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

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

NoSQL: Vantagens, Desvantagens e Compromissos. Mauricio De Diana (mestrando) Marco Aurélio Gerosa (orientador)

NoSQL: Vantagens, Desvantagens e Compromissos. Mauricio De Diana (mestrando) Marco Aurélio Gerosa (orientador) NoSQL: Vantagens, Desvantagens e Compromissos Mauricio De Diana (mestrando) Marco Aurélio Gerosa (orientador) Agenda Definição de NoSQL Atributos de qualidade e trocas Modelo de dados Escalabilidade Transações

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

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

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

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

Leia mais

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

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

Caracterização de Padrões de Uso da Rede Sem Fio do DECOM Proposta de Projeto de Monograa.

Caracterização de Padrões de Uso da Rede Sem Fio do DECOM Proposta de Projeto de Monograa. Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM Caracterização de Padrões de Uso da Rede Sem Fio do DECOM Proposta de Projeto

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

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

Características Básicas de Sistemas Distribuídos

Características Básicas de Sistemas Distribuídos Motivação Crescente dependência dos usuários aos sistemas: necessidade de partilhar dados e recursos entre utilizadores; porque os recursos estão naturalmente em máquinas diferentes. Demanda computacional

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

Capítulo 8 Arquitetura de Computadores Paralelos

Capítulo 8 Arquitetura de Computadores Paralelos Capítulo 8 Arquitetura de Computadores Paralelos Necessidade de máquinas com alta capacidade de computação Aumento do clock => alta dissipação de calor Velocidade limitada dos circuitos => velocidade da

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

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

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

NOMES: Leonardo Claro Diego Lage Charles Tancredo Márcio Castro

NOMES: Leonardo Claro Diego Lage Charles Tancredo Márcio Castro NOMES: Leonardo Claro Diego Lage Charles Tancredo Márcio Castro O MySQL Cluster é versão do MySQL adaptada para um ambiente de computação distribuída, provendo alta disponibilidade e alta redundância utilizando

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

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

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

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

Uma Breve Introdução. Andréa Bordin

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

Leia mais

Componentes internos de Um SGBD

Componentes internos de Um SGBD Arquitetura SBGD Gerenciamento de Processos joao@uefs.br Departamento de Ciências Exatas Universidade Estadual de Feira de Santana e sistemas paralelos 1 e sistemas paralelos Componentes internos de Um

Leia mais

CENTRO UNIVERSITÁRIO UNA DIRETORIA DE EDUCAÇÃO CONTINUADA, PESQUISA E EXTENSÃO CURSO DE PÓS GRADUAÇÃO ENGENHARIA DE SOFTWARE

CENTRO UNIVERSITÁRIO UNA DIRETORIA DE EDUCAÇÃO CONTINUADA, PESQUISA E EXTENSÃO CURSO DE PÓS GRADUAÇÃO ENGENHARIA DE SOFTWARE CENTRO UNIVERSITÁRIO UNA DIRETORIA DE EDUCAÇÃO CONTINUADA, PESQUISA E EXTENSÃO CURSO DE PÓS GRADUAÇÃO ENGENHARIA DE SOFTWARE NoSQL Banco de Dados Não Relacional ALUNO: Heitor Oliveira Silva PROFESSOR ORIENTADOR:

Leia mais

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 6 - ALGORÍTIMOS PARALELOS MPI - Parallel Virtual Machine e PVM - Parallel Virtual Machine 1. INTRODUÇÃO Inicialmente é necessário conceber alguns conceitos para entendimento dos algoritmos paralelos:

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

Arquiteturas escaláveis utilizando ferramentas Shared Nothing. Victor Canô

Arquiteturas escaláveis utilizando ferramentas Shared Nothing. Victor Canô Arquiteturas escaláveis utilizando ferramentas Shared Nothing Victor Canô Victor Canô - Founder / CTO @ Cazamba - Founder @ Troz.io /victoracano Conteúdo O que esperamos de uma aplicação? Cloud, benefícios

Leia mais

Sistemas Distribuídos: Conceitos e Projeto Estilos Arquitetônicos e Arquitetura Cliente/Servidor

Sistemas Distribuídos: Conceitos e Projeto Estilos Arquitetônicos e Arquitetura Cliente/Servidor Sistemas Distribuídos: Conceitos e Projeto Estilos Arquitetônicos e Arquitetura Cliente/Servidor Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática /

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

Faculdade Integrada do Ceará FIC Graduação em Redes de Computadores

Faculdade Integrada do Ceará FIC Graduação em Redes de Computadores Faculdade Integrada do Ceará FIC Graduação em Redes de Computadores Disciplina - Sistemas Distribuídos Prof. Andrey Halysson Lima Barbosa Aula 8 Sistema de Arquivos Distribuído Sumário Problemas Solução

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

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

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

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

3. PARADIGMA ORIENTADO A OBJETOS

3. PARADIGMA ORIENTADO A OBJETOS Paradigmas de Linguagens I 1 3. PARADIGMA ORIENTADO A OBJETOS Este paradigma é o que mais reflete os problemas atuais. Linguagens orientada a objetos (OO) são projetadas para implementar diretamente a

Leia mais

4 Conversor EDTV Raw. 4.1 Arquitetura

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

Leia mais

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

The Eucalyptus Open- source Cloud-computing System. Janaina Siqueira Lara Wilpert Marcelo Scheidt Renata Silva

The Eucalyptus Open- source Cloud-computing System. Janaina Siqueira Lara Wilpert Marcelo Scheidt Renata Silva The Eucalyptus Open- source Cloud-computing System Janaina Siqueira Lara Wilpert Marcelo Scheidt Renata Silva Sumário Introdução Trabalhos Correlatos Eucalyptus Design Conclusões Visão Geral Introdução:

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

Sistemas Distribuídos Aula-4

Sistemas Distribuídos Aula-4 4. Sistemas de Arquivos Distribuídos Os Sistemas de Arquivos Distribuídos (SADs) se destacam pelo acesso remoto aos dados de forma transparente para os usuários. Nas seções a seguir, realizamos uma resenha

Leia mais

Desenvolvimento de Aplicações. Desenvolvimento de Aplicações. Desenvolvimento de Aplicações. Dificuldades no uso de Bancos de Dados

Desenvolvimento de Aplicações. Desenvolvimento de Aplicações. Desenvolvimento de Aplicações. Dificuldades no uso de Bancos de Dados Desenvolvimento de Aplicações Desenvolvimento de Aplicações Dificuldades no uso de Bancos de Dados Um leigo não sabe o que é e como funciona um BD Mesmo um profissional da área de informática pode ter

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

Implementação de Jogo de Damas em Python Orientado a Objetos e em Python Funcional

Implementação de Jogo de Damas em Python Orientado a Objetos e em Python Funcional Implementação de Jogo de Damas em Python Orientado a Objetos e em Python Funcional Cristiano Medeiros Dalbem - 173362 INF01121 Modelos de Linguagens de Programação Instituto de Informática Universidade

Leia mais

Conceitos de Segurança em Sistemas Distribuídos

Conceitos de Segurança em Sistemas Distribuídos Conceitos de Segurança em Sistemas Distribuídos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.ufma.br 30 de novembro de 2011

Leia mais

Resumo. Introdução Cluster Cluster Beowulf Curiosidades Conclução

Resumo. Introdução Cluster Cluster Beowulf Curiosidades Conclução Cluster Resumo Introdução Cluster Cluster Beowulf Curiosidades Conclução Introdução Sua empresa esta precisando fazer um grande processamento; As Nuvens existentes não são suficientes para sua empresa;

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

Nível 3 Sistema Operacional

Nível 3 Sistema Operacional Nível 3 Sistema Operacional Universidade Tuiuti do Paraná UTP Faculdade de Ciências Exatas - FACET Tecnologia de Análise e Desenvolvimento de Sistemas Organização de Computadores Prof. André Luiz 1 Ní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

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Computação Aula 01-02: Introdução 2o. Semestre / 2014 Prof. Jesus Agenda da Apresentação Definição e surgimento de Sistemas Distribuídos Principais aspectos de Sistemas Distribuídos

Leia mais

Maestro. Arthur Kazuo Tojo Costa 317497. Universidade Federal de São Carlos Campus Sorocaba Bacharelado em Ciência da Computação

Maestro. Arthur Kazuo Tojo Costa 317497. Universidade Federal de São Carlos Campus Sorocaba Bacharelado em Ciência da Computação Maestro Arthur Kazuo Tojo Costa 317497 Universidade Federal de São Carlos Campus Sorocaba Bacharelado em Ciência da Computação Introdução Sistema Operacional de Redes Detalhes do hardware Multiplexação

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

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 Questões Em uma rede de sobreposição (overlay), mensagens são roteadas de acordo com a topologia da sobreposição. Qual uma importante desvantagem

Leia mais

um token de requisição garante que o usuário final autorize a aplicação; um token de acesso permite que a aplicação execute as operações da API.

um token de requisição garante que o usuário final autorize a aplicação; um token de acesso permite que a aplicação execute as operações da API. 6 Implementação Este capítulo irá apresentar as tecnologias e os protocolos utilizados no Mobile Social Gateway e explicar de forma mais detalhada o papel de cada componente na arquitetura e o porquê de

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

Desenvolvendo e Integrando Serviços Multiplataforma de TV Digital Interativa

Desenvolvendo e Integrando Serviços Multiplataforma de TV Digital Interativa Desenvolvendo e Integrando Serviços Multiplataforma de TV Digital Interativa Agenda Introdução Aplicações interativas de TV Digital Desafios de layout e usabilidade Laboratório de usabilidade Desafios

Leia mais

Kemp LoadMaster Guia Prático

Kemp LoadMaster Guia Prático Kemp LoadMaster Guia Prático 2014 v1.1 Renato Pesca renato.pesca@alog.com.br 1. Topologias One Armed Balancer Figura 1: Topologia single-armed. Esta topologia mostra que as máquinas reais fazem parte da

Leia mais

Coleções Avançadas. Programação Orientada a Objetos Java. Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior

Coleções Avançadas. Programação Orientada a Objetos Java. Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior Coleções Avançadas Programação Orientada a Objetos Java Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior Objetivos Aprender como o conceito de coleção pode ser expresso de forma genérica Examinar

Leia mais

Gerenciamento de ES e Sistema de Arquivos do Windows 2000

Gerenciamento de ES e Sistema de Arquivos do Windows 2000 1 Gerenciamento de ES e Sistema de Arquivos do Windows 2000 Gerenciador de E/S Objetivo é fornecer uma estrutura de modo eficiente para lidar com a grande variedade de dispositivos Bastante relacionado

Leia mais

Capítulo 2. Charm++ 16

Capítulo 2. Charm++ 16 2 Charm++ O Charm++ é uma linguagem orientada a objetos para programação paralela baseada em C++ (34). Ela possui uma biblioteca de execução para suporte a computação paralela que se chama Kernel do Charm

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

Auditoria Avançada de Persistência com Hibernate, JPA e Envers

Auditoria Avançada de Persistência com Hibernate, JPA e Envers a r t i g o José Yoshiriro Ajisaka Ramos (jyoshiriro@gmail.com): bacharel em Sistema de Informação (IESAM). Mestrando em Ciência da Computação (UFPA). Instrutor na Equilibrium Web e na UAB. Engenheiro

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

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

Um arcabouço para gerenciamento automático de máquinas virtuais em CPDsbaseado em perfil

Um arcabouço para gerenciamento automático de máquinas virtuais em CPDsbaseado em perfil VIII WORKSHOP DE PÓS-GRADUAÇÃO E PESQUISA DO CENTRO PAULA SOUZA São Paulo, 9 e 10 de outubro de 2013 Sistemas produtivos: da inovação à sustentabilidade ISSN: 2175-1897 Um arcabouço para gerenciamento

Leia mais

Treinamento PostgreSQL - Aula 01

Treinamento PostgreSQL - Aula 01 Treinamento PostgreSQL - Aula 01 Eduardo Ferreira dos Santos SparkGroup Treinamento e Capacitação em Tecnologia eduardo.edusantos@gmail.com eduardosan.com 27 de Maio de 2013 Eduardo Ferreira dos Santos

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

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

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

Redes de Computadores LFG TI

Redes de Computadores LFG TI Redes de Computadores LFG TI Prof. Bruno Guilhen Camada de Aplicação Fundamentos Fundamentos Trata os detalhes específicos de cada tipo de aplicação. Mensagens trocadas por cada tipo de aplicação definem

Leia mais

TEMA DA MONOGRAFIA PODERÁ SER EM MAIS DE UMA LINHA

TEMA DA MONOGRAFIA PODERÁ SER EM MAIS DE UMA LINHA ; FACULDADE LOURENÇO FILHO CURSO DE BACHARELADO EM NOME DO CURSO NOME DO ALUNO TEMA DA MONOGRAFIA PODERÁ SER EM MAIS DE UMA LINHA FORTALEZA CE Nome do aluno TEMA DA MONOGRAFIA PODERÁ SER EM MAIS DE UMA

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

Consistência Eventual - Sistemas Distribuidos e Tolerância a Falhas

Consistência Eventual - Sistemas Distribuidos e Tolerância a Falhas Consistência Eventual Sistemas Distribuidos e Tolerância a Falhas Marco Bernardo Departamento de Informática Universidade da Beira Interior 25 de Maio de 2009 Descrição Geral 1 Introdução O Problema Definições

Leia mais

BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com

BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com Coleções List Set Map Classes e interfaces do pacote java.util que representam listas, conjuntos e mapas. Solução flexível para armazenar objetos. Quantidade

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

Trabalho de Sistemas Distribuídos

Trabalho de Sistemas Distribuídos Cássio de Olivera Ferraz Trabalho de Sistemas Distribuídos Petrópolis 2015, v-1.0 Cássio de Olivera Ferraz Trabalho de Sistemas Distribuídos Trabalho sobre sistemas distribuídos e suas tecnologias. Universidade

Leia mais

Ciência de Computadores Sistemas Distribuídos e Móveis

Ciência de Computadores Sistemas Distribuídos e Móveis Ciência de Computadores Sistemas Distribuídos e Móveis Lista de Exercícios Data: 4 de Novembro de 2013 Questões sobre o capítulo 1, Tanenbaum & van Steen: Fundamentos 1) Explique o significado de transparência,

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