Como atualizar múltiplas informações em locais diferentes (tabela) sobre a mudança de um registro?

StackOverflow https://stackoverflow.com/questions/1442399

Pergunta

Isto não é questão SO Meta. Eu estou usando isso apenas como exemplo.

Em Stackoverflow cada resposta, cada comentário, cada pergunta, cada voto tem um efeito que produz um crachá em algum ponto do tempo. Quero dizer depois de cada ação uma lista de consultas são testados.

por exemplo. Se Mr.A se vota Mr.B Resposta. Então nós temos que verificar é a resposta deste Mr.B upvoted 100 vezes de modo a dar Mr.B um crachá, tem Mr.A upvoted tempo 100 para dar-lhe um distintivo.

Isso significa que eu tenho que correr pelo menos 100 consultas / IfElse para cada ação.

Agora o meu exemplo de vida real é que tenho uma aplicação onde eu receber dados online a partir de uma máquina de atendimento. Quando um usuário mostra seu cartão de máquina. I receber este e armazená-lo como um registro. Agora com base neste disco eu tenho vários calculations.i.e ele está atrasado. Ele está atrasado para continuar 3 dias. Ele está em um deslocamento para a direita (shift Day / Night Shift). É feriado hoje. Será esta uma prorrogação. ele é cedo ....... etc, etc, etc.

O que é a melhor estratégia para este tipo de requisitos.

Update: SO pode equipa guiar-nos sobre isso?

Foi útil?

Solução

Você usa filas e fluxos de trabalho. Desta forma, você dissociar o momento da atualização a partir das notificações reais, permitindo que o sistema de escala. Tighly acoplada, gatilho base ou soluções semelhantes não é possível dimensionar, já que cada atualização tem que esperar por todas as partes interessadas a reagir à notificação. O design do processamento motor usando fluxos de trabalho permite adicionar facilmente etapas e notificações consumidores alterando os dados, w / o mudar o esquema.

Por exemplo ver como MSDN usa filas para lidar com problemas semelhantes com conteúdo MSDN: construindo a MSDN Agregação do sistema.

Outras dicas

Você não pode apenas usar "bandeiras" (outras mesas, outras colunas, qualquer que seja) para indicar quando ocorrem esses casos especiais? Dessa forma, você só tem que fazer uma pesquisa (por caso especial) de uma tonelada de pesquisas e / ou junta. Você pode gravar as mudanças (terceiro dia de atraso, etc.) em cima de inserção.

Além disso, o que verificar depende de um limiar.

por exemplo. É uma pessoa ausente últimos 3 dias? Essa verificação é necessária apenas quando a pessoa está ausente por 2 dias.

Eu quero dizer -. Você não precisa verificar tudo, toda vez que
Além disso, quanto de informações precisa ser atualizada imediatamente? SO não atualiza as coisas em tempo real.

Pode ser que você deve usar duas bases de dados com replicação on-line entre eles - uma para a obtenção de dados em tempo real e nada mais, no segundo você pode usar cálculos rígidos (por exemplo, calcular todos latings a cada 10 minutos ou por requsts). Localizar este bases de dados em servidores diferentes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top