WebSphere eXtreme Scale é uma grade de dados na memória, elástica e escalável. A grade de dados dinamicamente armazena em cache, particiona, replica e gerencia dados do aplicativo e a lógica de negócios em diversos servidores. O WebSphere eXtreme Scale executa grandes volumes de processamento de transações com alta eficiência e escalabilidade linear. Com WebSphere eXtreme Scale, você também pode obter qualidades de serviço como integridade transacional, alta disponibilidade e tempos de respostas previsíveis.
O WebSphere eXtreme Scale pode ser usado de diferentes formas. É possível usar o produto como um cache muito poderoso, como um espaço de processamento de banco de dados em memória para gerenciar o estado do aplicativo ou para construir aplicativos do Extreme Transaction Processing (XTP). Essas capacidades do XTP incluem uma infraestrutura de aplicativo para suportar seus aplicativos de negócios críticos mais exigentes.
A escalabilidade elástica é possível por meio do uso do armazenamento em cache de objeto distribuído. Com escalabilidade elástica, a grade de dados monitora e gerencia a si mesma. A grade de dados pode incluir ou remover servidores da topologia, que aumenta ou diminui a memória, o rendimento de rede e a capacidade de processamento conforme necessário. Quando um processo de scale-out é iniciado, a capacidade é incluída na grade de dados enquanto ela está em execução sem requerer um reinício. De modo inverso, um processo de scale-in imediatamente remove a capacidade. A grade de dados também é auto-recuperável recuperando-se automaticamente de falhas.
O WebSphere eXtreme Scale não pode ser considerado um banco de dados em memória real. Um banco de dados em memória é muito simples para manipular algumas das complexidades que o WebSphere eXtreme Scale pode gerenciar. Se um banco de dados em memória tiver um servidor que falha, ele não poderá reparar o problema. Uma falha poderá ser desastrosa se o seu ambiente inteiro estiver em um servidor.
Para resolver o problema desse tipo de falha, o eXtreme Scale divide o determinado conjunto de dados em partições, que são equivalentes aos esquemas em árvore restritos. Os esquemas em árvore restritos descrevem o relacionamento entre entidades. Quando estiver usando partições, os relacionamentos da entidade devem modelar uma estrutura de dados em árvore. Nesta estrutura, o cabeça da árvore é a entidade raiz e é a única entidade particionada. Todos os outros filhos da entidade raiz são armazenados na mesma partição que a entidade raiz. Cada partição existe como uma cópia primária ou shard. Uma partição também contém shards de réplica para fazer backup de dados. Um banco de dados em memória não pode fornecer esta função porque ele não é estruturado e dinâmico dessa maneira. Com um banco de dados em memória, você deve implementar as operações que o WebSphere eXtreme Scale faz automaticamente. É possível executar operações SQL em bancos de dados em memória, aumentando a velocidade de processamento comparado com os bancos de dados que não são de memória. O WebSphere eXtreme Scale possui sua própria linguagem de consulta em vez de suporte SQL. Esta linguagem de consulta é mais elástica, permite o particionamento de dados e fornece recuperação de falha confiável.
Com o recurso de cache write-behind, o WebSphere eXtreme Scale pode servir de cache front-end para um banco de dados. Com o uso desse cache front-end, o rendimento aumenta enquanto reduz a contenção e o carregamento do banco de dados. WebSphere eXtreme Scale fornece ampliação e adição previsíveis a um custo de processamento previsível.
O WebSphere eXtreme Scale possui servidores, chamados de servidores de contêiner, que oferecem sua grade de dados em memória. Esses servidores podem executar dentro do WebSphere Application Server ou em um Java Standard Edition (J2SE) Java virtual machines simples. Mais de um servidor de contêiner pode ser executado em um único servidor físico. Como resultado, a grade de dados em memória pode ser grande. A grade de dados não é limitada pela memória ou pelo espaço de endereço do aplicativo ou do servidor de aplicativos e também não tem um impacto sobre eles. A memória pode ser a soma da memória de centenas ou milhares de Java virtual machines executados em vários servidores físicos diferentes.
Assim como no espaço de processamento do banco de dados em memória, o WebSphere eXtreme Scale pode ser suportado por disco, banco de dados ou ambos.
Enquanto o eXtreme Scale fornece diversas APIs Java, muitos casos de uso não necessitam de programação do usuário, apenas a configuração e implementação de sua infraestrutura do WebSphere.
A interface de programação mais simples do eXtreme Scale é a interface ObjectMap, que é uma interface de mapa simples que inclui: um método map.put(key,value) para colocar um valor no cache e um método map.get(key) posteriormente para recuperar o valor.
O paradigma fundamental da grade de dados é um par de chave-valor, no qual a grade de dados armazena valores (objetos Java), com uma chave associada (outro objeto Java). A chave é utilizada posteriormente para recuperar o valor. No eXtreme Scale, um mapa consiste em entradas desses pares de chave-valor.
O WebSphere eXtreme Scale oferece várias configurações da grade de dados, de um cache local único e simples até um cache grande distribuído, usando várias Java virtual machines ou servidores.
Além de armazenar objetos Java simples, é possível armazenar objetos com relacionamentos. É possível utilizar uma linguagem de consulta como SQL, com instruções SELECT … FROM … WHERE para recuperar esses objetos. Por exemplo, um objeto de ordem pode ter um objeto de cliente e vários objetos de item associados a ele. WebSphere eXtreme Scale suporta relacionamentos um-para-um, um-para-muitos, muitos-para-um e muitos-para-muitos.
WebSphere eXtreme Scale também suporta uma interface de programação EntityManager para armazenar entidades no cache. Essa interface de programação é semelhante às entidades do Java Enterprise Edition. Os relacionamentos de entidades podem ser automaticamente descobertos a partir de um arquivo XML do descritor de entidade ou de anotações nas classes Java . É possível recuperar uma entidade do cache pela chave primária usando o método find na interface EntityManager. As entidades podem ser persistidas para a grade de dados ou removidas dela dentro de um limite de transação.
Considere um exemplo distribuído em que a chave é um nome alfabético simples. O cache pode ser dividido em quatro partições por chave: a partição 1 para chaves que começam com A-E, partição 2 para chaves que começam com F-L, e assim por diante. Para disponibilidade, uma partição possui um shard primário e um shard de réplica. As mudanças nos dados do cache são feitas no shard primário e replicadas para o shard de réplica. Configure um número de servidores que contêm os dados da grade de dados e o eXtreme Scale distribui os shards nos dados sobre essas instâncias do servidor. Para disponibilidade, os shards de réplica são posicionados em servidores físicos separados dos shards primários.
O WebSphere eXtreme Scale usa um serviço de catálogo para localizar o shard primário para cada chave. Ele manipula a movimentação dos shards entre servidores do eXtreme Scale quando os servidores físicos falham e se recuperam posteriormente. Por exemplo, se o servidor contendo um shard de réplica falhar, o eXtreme Scale alocará um novo shard de réplica. Se um servidor que contém um shard primário falhar, o shard de réplica será promovido como shard primário. Como antes, um novo shard de réplica é construído.