2009-08-19 8 views
2

J'ai un scénario dans lequel je veux afficher un tas de données sur une page Web.Comment: extraire des valeurs de la base de données uniquement lorsqu'elles sont mises à jour

Les données sont remplies dans la base de données par un processus (sur lequel je n'ai aucun contrôle) uniquement à (07h00) à une heure spécifique le matin ou en démarrant manuellement le processus. (PS Les mêmes données est également utilisé dans un autre endroit sur la page Web sous une forme différente, mais d'un autre canal.)

Je pensais à mettre dans une logique à la page que

  1. récupérer les données dans un fichier xml et lire les données du fichier xml (pour éviter les déplacements vers la base de données)
  2. récupérer des données uniquement s'il est 7h10 du matin. Mais si quelqu'un démarre manuellement la base de données de processus est mise à jour, mais ma page Web ne sera pas mise à jour jusqu'à 07h10. Même 1 seconde hors de la synchronisation des données n'est pas acceptable.

Quelle est la meilleure façon de faire cela? Des solutions intelligentes? Je veux éviter les allers-retours à la base de données pour les mêmes données encore et encore.

SQL Server 2000, ASP.

Répondre

0

Vous aurez besoin de solutions d'interrogation.

Juste au-dessus de ma tête, je vais faire quelque chose comme ça.

  1. Installation d'un déclencheur sur la table (tableau A) qui est peuplé de mettre à jour un certain indicateur de contrôle sur une autre table sur inserts et udpates, permet d'appeler ce tableau de commande.

  2. Configurez votre site Web pour interroger la table de contrôle dites, toutes les secondes entre 7h et 7h10. Si la table de contrôle indique que de nouvelles données sont arrivées dans la table A, allez les chercher et mettez à jour votre page, sinon, ne faites rien. Cependant, bien que l'interrogation du drapeau de contrôle à chaque seconde soit trop importante, il faut se demander si c'est vraiment un gros problème si les données sont décalées de quelques secondes, disons un sondage toutes les 10 secondes au lieu de toutes les secondes .

0

Ok si je lis ce droit ...

Si ce sont les mêmes données, vous pouvez réduire la charge sur les voyages à la base de données par l'indexation des champs appropriés et masser les données dans peut-être une forme pas si structurellement idéale pour accélérer les requêtes. Le problème est que le seul moyen de savoir si les données ont été modifiées ou non est de les interroger, de sorte que vous ne pouvez pas vraiment éviter d'interroger la base de données. Le plus sûr serait d'optimiser la structure et les requêtes pour rendre la taxation sur le serveur aussi minime que possible.

+0

+1 sur ne pas pouvoir éviter d'interroger la base de données. Si votre site reçoit BEAUCOUP de trafic, vous pouvez implémenter un cache de 1 seconde sur les résultats afin de réduire les trajets aller-retour. –

1

Pouvez-vous utiliser une dépendance SqlCacheD?

Et BTW, ne pas être 1 seconde désynchronisée n'est pas un objectif réaliste.

+0

Bro! ce n'est même pas. NET 1.1 c'est notre ASP classique. vous pointez une fonctionnalité 2.0 :) –

Questions connexes