Cache de Memória Local

Em um caso mais simples, o WebSphere eXtreme Scale pode ser utilizado como um cache de grade de dados em memória local (não distribuído). O caso local pode beneficiar especialmente aplicativos de alta simultaneidade nos quais vários encadeamentos precisam acessar e modificar dados transientes. Os dados mantidos em uma grade de dados local podem ser indexados e recuperados utilizando consultas. As consultas ajudam você a trabalhar com grandes em conjuntos de dados de memória. O suporte fornecido com o Java Virtual Machine (JVM), embora esteja pronto para uso, tem uma estrutura de dados limitada.

A topologia de cache em memória local para WebSphere eXtreme Scale é usado para oferecer acesso transacional e consistente aos dados temporários dentro de uma única Java virtual machine.

Figura 1. Cenário de Cache em Memória Local
Cenário de cache em memória local

Vantagens

  • Configuração simples: Um ObjectGrid pode ser criado programaticamente ou declarativamente com o arquivo XML do descritor de implementação ObjectGrid ou com outras estruturas como Spring.
  • Rápido: Cada BackingMap pode ser ajustado de maneira independente para utilização de memória e simultaneidade ideais.
  • Ideal para topologias de uma única Java virtual machine com pequenos conjuntos de dados ou para armazenamento em cache de dados frequentemente acessados.
  • Transacional. As atualizações BackingMap podem ser agrupadas em uma única unidade de trabalho e podem ser integradas como um último participante nas transações de duas fases como transações JTA (Java Transaction Architecture).

Desvantagens

  • Não tolerante a falhas.
  • Os dados não são replicados. Caches em memória são melhores para dados de referência somente para leitura.
  • Não escalável. A quantidade de memória necessária pelo banco de dados pode ultrapassar a capacidade da Java virtual machine.
  • Ocorrem problemas na inclusão de Java virtual machines:
    • Os dados não podem ser facilmente particionados
    • Você deve replicar manualmente o estado entre as Java virtual machines ou cada instância do cache poderá ter diferentes versões dos mesmos dados.
    • A invalidação é custosa.
    • Cada cache deve ser aquecido de maneira independente. O aquecimento é o período de carregamento de um conjunto de dados para que o cache seja preenchido com dados válidos.

Quando Utilizar

A topologia de implementação de cache em memória local deve ser usada somente quando a quantidade de dados a serem armazenados em cache for pequena (puder ser colocada em uma única Java virtual machine) e for relativamente estável. Dados antigos devem ser tolerados com esta abordagem. A utilização de evictors para manter os dados mais frequentemente ou recentemente usados no cache pode ajudar a diminuir o tamanho do cache e a aumentar a relevância dos dados.