2010-07-29 12 views
1

Dans une application Delphi pilotée par une base de données Firebird, nous devons mettre certaines données en ligne afin de pouvoir ajouter des fonctionnalités de reporting en ligne.Demander une meilleure stratégie de mise en œuvre des rapports en ligne Delphi basés sur la base de données firebird

L'approche actuelle est la suivante: chaque fois que des données sont modifiées ou ajoutées, envoyez-les au serveur en ligne (php + mysql), en cas d'échec, ajoutez-les à la file et réessayez. Ensuite, le serveur ayant les données est capable de créer ses propres rapports. Donc, pour conclure: quel est un bon moyen de mettre ces données en ligne.

+0

+1 pour le découplage du stockage de données du serveur Web (MySQL) et la base de données interne (FireBird) – mjn

+0

Vous cherchez un rapport de PHP générateur, ou un moyen d'appeler un moteur de rapport Delphi à partir de PHP? – mjn

+0

Tout ce que je demande, c'est si c'est la bonne façon de le faire, ou il y a une autre méthode plus efficace. – zz1433

Répondre

0

Au moment où je connais ces deux stratégies différentes:

  • événement

    base: chaque fois que des changements sont détectés, les pousser au serveur web/base de données mysql. Comme vous l'avez écrit, cela nécessite une mise en file d'attente au cas où le système de destination ne recevrait pas les messages. Snapshot based: extraire les données pertinentes par intervalles (par exemple toutes les heures) et les transférer sur le serveur web/mysql db.

La stratégie basée snapshot permet de prétraiter les données d'une manière qui se intègre bien dans la structure de données db wb/mysql, qui peuvent aider à découpler les systèmes mieux et garder plus logique métier sur le côté de la système d'envoi (Delphi). Il génère également une charge plus continue, car il ne se soucie pas des changements de données de masse.

+0

Une décision difficile, basé sur l'instantané sera plus «convivial» et plus miséricordieux avec la connexion Internet. Donc, de ces remorquages ​​à choisir, je pense que je vais rester avec l'actuel (basé sur l'événement) depuis snapshot basé me donnera des moments difficiles avec des données qui sont déjà envoyées, mais mis à jour. Aussi, pourriez-vous me donner votre avis sur l'utilisation d'un système avec (Corriger ma terminologie si elle est erronée) Hanging GET et Comet (?) Similaire à la discussion sur facebook. Où l'application Delphi écoute continuellement depuis le serveur web, et en cas de demande, alors à la volée creares le rapport et l'envoie (Ça me semble bon). – zz1433

+0

Oui, Ajax Push ou Reverse Ajax - Je ne l'ai pas essayé moi-même, mais avec une bibliothèque HTTP pour Delphi et un timeout infini, les données pouvaient être lues depuis le socket jusqu'à l'arrivée d'un nouveau message. Le message devrait simplement avoir un simple identifiant de rapport comme contenu, qui peut être utilisé comme paramètre de requête dans une URL HTTP pour obtenir le rapport. Une autre option serait WebSocket puisqu'il s'agit d'une extension HTTP standardisée et déjà supportée par certains serveurs, un client Delphi pourrait tirer parti des fonctionnalités de protocoles comme la sécurité, etc. – mjn

+0

Il existe une nouvelle bibliothèque cliente WebSocket pour Delphi, dernière version avril 2011, http: //code.google.com/p/bauglir-websocket/ – mjn

0

Une autre façon peut être d'utiliser la réplication, mais je ne connais pas le système qui fait la réplication entre la base de données Firebird et MySQL.

Pour ajouter des outils de reporting capacité en ligne: vous pouvez également vérifier rapidement serveur de rapports