Como notificar um repositório sobre mudanças de persistência

5

Eu tenho um repositório, que no momento, lê a partir do banco de dados toda vez que é chamado. No entanto, os dados são atualizados apenas uma vez por dia e, para melhorar o desempenho, gostaria que o repositório armazenasse os dados na memória.

Quando os dados são atualizados, por outro aplicativo (mas mesma solução), eu gostaria de notificar o repositório que deveria reler os dados no banco de dados.

Eu considerei escrever um sinalizador em um arquivo, que o repositório então lê toda vez, e releia o banco de dados se for verdade.

    
por Chris Wohlert 15.09.2017 / 12:01
fonte

3 respostas

1

Quais problemas de desempenho você está enfrentando agora? Lembre-se de que você não deve lidar com esses tipos de problemas antes que eles realmente se tornem uma necessidade.

Leia um registro de data e hora de outra tabela. Se o registro de data e hora for atualizado, o mesmo acontecerá com os dados.

Não há necessidade de introduzir um sinalizador em um arquivo quando você já tem acesso a um banco de dados.

    
por 19.09.2017 / 09:02
fonte
1

Este é realmente o mesmo problema que how can a server inform a client that data has changed .

pesquisa otimizada:

Para a otimização http, tanto o cliente quanto o servidor têm uma data de modificação conhecida pela última vez.

quando httpclient solicita um http-url, ele também envia a data de mdoificação do last-known-last-client do URL e o servidor responde com "você já tem os dados mais recentes" ou com os novos dados. / p>

assumindo que repository-app e modifying-app tenham acesso ao mesmo sistema de arquivos (ou seja, na mesma máquina), o aplicativo de modificação pode definir lastModifiedDate de um arquivo conhecido e o repository app pode verificar lastModifiedDate do arquivo conhecido antes que a cópia na memória seja acessada.

Eu assumo que a comunicação entre processos do servidor para todos os repositórios-clientes conhecidos é um exagero

    
por 19.09.2017 / 17:56
fonte
0

Para aplicativos da web / APIs REST, você pode usar cabeçalhos de controle de cache para especificar quando você deseja que os dados sejam relidos. Existem até proxies que você pode colocar na frente do seu repositório que irá lidar com o cache para você. Basicamente, você teria que fazer uma solicitação GET com um conjunto de cabeçalhos Cache-Control: no-cache após a atualização dos dados.

    
por 15.09.2017 / 13:08
fonte