Question

Dans une application de reporting, est-il possible à la logique de rapports abstraits et les détails du schéma de base de données?

J'ai une application Reporting Services avec une logique de rapports assez complexe, je suis en train de migrer l'application à d'autres bases de données. (Bases de données qui sont construites dans le même but, mais développés par différents logiciels maisons.)

Est-ce une sage décision d'utiliser une couche de services web / WCF au milieu? Quelles sont les options d'autre peut être considéré?

Était-ce utile?

La solution

Il serait difficile de faire ce genre de chose dans un one-size-fits-all façon dans le cas général, mais vous pouvez essayer un de ces:

  • Construire des vues sur le schéma de base de données et écrire les sprocs de recueil d'informations sur ceux. Cela signifie que vous avez une certaine flexibilité dans le schéma de base de données sous-jacente et peut utiliser les vues comme une couche d'abstraction.

  • Construire une sorte d'entrepôt de données la plate-forme et d'écriture d'un processus d'ETL à peupler des diverses sources de données. Ceci est plus souple, mais plus d'efforts pour construire et il ne fonctionnera que d'une actualisation périodique. Si ce degré de latence est acceptable pour votre application alors je suggère que le système d'entrepôt de données est la meilleure approche.

    L'avantage principal d'un entrepôt de données est qu'il est optimisé pour les rapports et a une interface cohérente sur l'ensemble des sources de données - vous les regrouper dans une seule base de données avec un schéma. Les rapports sont développés contre ce schéma. L'ajout de nouveaux systèmes est obtenue en écrivant un processus ETL pour alimenter l'entrepôt; les rapports continuent de travailler indépendamment de la source de données.

WCF est un système de communication de réseau. Vous trouverez qu'il est difficile de faire ce genre d'architecture gérer de gros volumes de données sur une transaction par transaction - un processus ETL de chargement par lots serait beaucoup plus efficace. Cependant, si vous avez besoin d'une alimentation en temps réel (peut-être un système de plancher commercial), vous pourriez être en mesure de le faire avec quelque chose comme ça.

Si vous souhaitez avoir un faible flux de latence une autre approche serait d'enquêter sur un genre d'outillage appelé Enterprise Information Integration . Peut-être l'outil le plus largement disponible qui peut le faire est un données Source Voir SSIS qui ne vous donne une certaine flexibilité dans la cartographie des sources de données arbitraires à un schéma cohérent. Il est pas aussi sophistiqué que le meilleur de la race des outils EII mais vous pouvez mettre des packages SSIS sur le dessus de celui-ci et les utiliser comme source de données pour vos rapports si vous avez besoin de transformer davantage les données.

Cependant, je ne l'ai jamais construit un système structuré comme celui-ci, donc je ne peux pas se porter garant vraiment comment il fonctionne dans la pratique. Je suppose que ce serait tout à fait fragile et difficile à décomposer en parties qui peuvent être testées unité, de sorte que le développement et l'entretien seront assez de temps pour un système de complexité non négligeable.

Si vous voulez enquêter sur d'autres systèmes EII sur le marché Ce lien est un répertoire de divers articles sur EII et d'autres fournisseurs d'outillage EII.

Autres conseils

Je suis d'accord avec la suggestion de l'entrepôt de données de NXC:

  • Si c'était un travail unique, non, mais comme il est une « application de rapports », il est fort probable que beaucoup de vos rapports s'intégrera dans le paradigme OLAP.
  • Il est évidemment une tâche faisables, car il existe de nombreux outils de requête OLAP avec succès sur le marché, avec plus ou moins de complexité degress
  • les schémas OLAP, par exemple, la norme ROLAP , mais en pratique, je l'ai trouvé à être aussi facile d'écrire des scripts ETL comme il est d'amadouer une bonne performance sur une configuration ROLAP.

Une réponse que je pense à vous mordre viendra généralement à l'arrière, mais que d'autres, je sais que tu aimes, est de produire des données XML à partir de chaque base de données. Cela vous donne un ensemble cohérent de données sous une forme que la plupart des produits peuvent facilement manipuler.

Si vous faites cela, assurez-vous que le XPath interroge courrez sur elle sera rapide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top