Um aplicativo precisa ter os dados o mais atualizados possível a partir de um banco de dados. Nesse caso, existe outra maneira de obter os dados, além de um cronômetro solicitar (pesquisar) o banco de dados?
Trabalho com um MS SQL Server 2008 (e aplicativos .NET + Entity Framework), mas também gostaria de conhecer outros tipos de bancos de dados.
Respostas:
O Service Broker para SQL Server 2005+ pode fazer isso.
Desculpe, não tenho certeza de outros RDBMS
fonte
No Oracle, você pode usar o pacote DBMS_ALERT interno para facilitar isso.
fonte
Certos fornecedores de banco de dados também fornecem barramentos de mensagens integrados nos quais seu aplicativo pode simplesmente se inscrever:
Uma alternativa seria rotear os dados para o banco de dados em primeiro lugar por meio de um barramento de mensagens como o Tibco / RV e simplesmente "ramificá-lo", no fluxo que entra no banco de dados e outro que vai para o seu aplicativo, ou usa uma camada de cache como Coherence entre seu aplicativo e o banco de dados.
fonte
LISTEN / NOTIFY para PostgreSQL
http://www.postgresql.org/docs/current/static/sql-notify.html
no banco de dados ...
ou em uma função / gatilho:
no cliente de banco de dados:
O cliente LISTEN receberá o ID do processo do PostgreSQL, o nome do canal e o valor da mensagem.
O driver JDBC padrão para o PostgreSQL não gosta de notificações, no entanto, você pode usar o https://github.com/impossibl/pgjdbc-ng para essa finalidade
fonte
Outra solução Oracle: desenvolvemos aplicativos usando a estrutura dotnet da Microsoft que aproveitam o recurso de Notificação de Mudança de Banco de Dados da Oracle em conjunto com o ODP.Net (o provedor de dados Oracle para dotnet). Usando isso, o banco de dados notifica o aplicativo dotnet quando novos dados chegam, o que nos permite evitar pesquisas constantes. O link que refiro acima é um tutorial da Oracle para fazer exatamente isso. Espero que isso ajude você.
Não conheço nenhum outro RDBMS.
fonte
Para um de nossos aplicativos (acessado através do Chrome e ONLY Chrome), estamos usando o MySQL com sys_exec UDF . Basicamente, por que o Chrome - devido ao suporte do WebSocket.
Depois que uma atualização / inserção / exclusão crítica ocorre, um programa externo é chamado através da funcionalidade sys_exec recém-adicionada incorporada em determinados gatilhos. Nesse ponto, temos tudo o que precisamos para transmitir a mensagem a todos os clientes conectados, sem a necessidade de pesquisas ou várias consultas, pois tudo acontece em tempo real.
fonte
Usamos uma combinação do Oracle GoldenGate e da Java Persistence API (JPA) para fazer isso com o banco de dados Oracle, mas também com o DB2, Sybase, Microsoft SQL Server, MySQL, Teradata etc. O recurso é descrito aqui: http: // docs .oracle.com / middleware / 1212 / coerência / COHIG / golden_g.htm
O que o GoldenGate faz é transformar o log de transações do banco de dados em um fluxo de eventos filtrável que possa ser consumido em qualquer lugar da rede. Nós o usamos para transformar transações relevantes em atualizações de cache ou invalidações de cache, as quais podem desencadear eventos no nível do aplicativo, por exemplo, enviando os dados para aplicativos de desktop ou HTML5 da Web.
(Para divulgação completa, trabalho na Oracle em um dos produtos usando o GoldenGate.)
fonte