Atualizador de Dados Baseado em Tempo JPA

Um atualizador de banco de dados baseado em tempo do Java Persistence API (JPA) atualiza os mapas do ObjectGrid com as últimas alterações no banco de dados.

Quando são feitas alterações diretamente em um banco de dados que está sendo confrontado pelo WebSphere eXtreme Scale, essas alterações não são refletidas simultaneamente na grade do eXtreme Scale. Para implementar corretamente o eXtreme Scale como um espaço de processamento de banco de dados de memória, lembre-se de que sua grade pode sair de sincronia com o banco de dados. O atualizar de banco de dados baseado em tempo usa o recurso System Change Number (SCN) no Oracle 10g e a indicação de data e hora da alteração da linha no DB2 9.5 para monitorar as alterações no banco de dados para invalidação e atualização. O atualizador também permite que os aplicativos tenham um campo definido pelo usuário para o mesmo propósito.

Figura 1. Atualização Periódica
Atualização periódica

O atualizador de banco de dados baseado em tempo consulta periodicamente o banco de dados usando as interfaces do JPA para obter as entidades do JPA que representam os registros recentemente inseridos e atualizados no banco de dados. Para atualizar periodicamente os registros, cada registro no banco de dados deve ter um registro de data e hora para identificar o tempo ou a sequência em que o registro foi atualizado ou inserido pela última vez. O registro de data e hora não precisa estar no formato do registro de data e hora. O valor do registro de data e hora pode estar em um formato inteiro ou longo, se ele gerar um valor exclusivo e cada vez maior.

Vários bancos de dados comerciais fornecem este recurso.

Por exemplo, no DB2 9.5, é possível definir uma coluna usando o formato ROW CHANGE TIMESTAMP como a seguir:

ROWCHGTS TIMESTAMP NOT NULL
      GENERATED ALWAYS
      FOR EACH ROW ON UPDATE AS
      ROW CHANGE TIMESTAMP

No Oracle, é possível utilizar a pseudo-coluna ora_rowscn, que representa o número de alteração de sistema do registro.

O atualizador do banco de dados baseado em tempo atualiza os mapas do ObjectGrid de três diferentes maneiras:
  1. INVALIDATE_ONLY. Invalidar as entradas no mapa ObjectGrid se os registros correspondentes no banco de dados foram alterados.
  2. UPDATE_ONLY. Atualizar as entradas no mapa do ObjectGrid se os registros correspondentes no banco de dados foram alterados. Entretanto, todos os registros recentemente inseridos no banco de dados são ignorados.
  3. INSERT_UPDATE. Atualizar as entradas existentes no mapa do ObjectGrid com os valores mais recentes do banco de dados. Além disso, todos os registros recentemente inseridos no banco de dados são inseridos no mapa do ObjectGrid.

Para obter informações adicionais sobre como configurar o atualizador de dados baseado em tempo JPA, consulte o Configurando um Atualizador de Dados Baseado em Tempo do JPA.