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