2009-10-26 6 views
1

Notre activité porte sur les maisons et au fil des ans, nous avons créé plusieurs objets de gestion pour les représenter. Nous recevons également beaucoup de données provenant de sources externes et envoyons des données à des consommateurs externes. Chacun d'eux représente la maison d'une manière différente et nous passons beaucoup de temps et d'énergie à traduire un format en un autre. Je suis à la recherche de modèles généraux ou de meilleures pratiques sur la façon de gérer cette situation. Comment puis-je écrire un traducteur de données universel flexible, extensible et rapide. Contexte: Une maison a généralement 30-40 attributs tels que la taille, le nombre de chambres à coucher, le type de toit, le matériau de construction, le matériau de parement, etc. Ils sont généralement représentés comme des paires clé/valeur. Un problème de traduction typique est qu'un vendeur représentera le nombre de chambres à coucher en une seule paire clé/valeur: NumBedrooms = 3, tandis qu'un vendeur différent aura une paire clé/valeur par chambre à coucher: Bedroom = master, Bedroom = small, Bedroom = petit. Il n'y a rien de particulièrement difficile dans la traduction, mais nous passons beaucoup de temps et d'énergie à écrire et à tester des traductions. Comment puis-je optimiser cela?Optimisation de la traduction des données

Merci

(Mon environnement est .Net)

Répondre

2

Le meilleur endroit pour commencer est en créant une « représentation interne » qui est la représentation que votre traitement sera toujours. Ensuite, créez des traducteurs depuis et vers "représentations externes" si nécessaire. J'imagine que c'est ce que vous faites déjà, mais il devrait être mentionné pour l'exhaustivité. L'optimisation vient d'être capable d'écrire sélectivement l'importation et l'exportation seulement quand vous en avez besoin.

Une bonne stratégie de mise en œuvre consiste à externaliser la transformation si vous le pouvez. Si vous pouvez obtenir vos entrées et sorties dans des documents XML, vous pouvez écrire des transformations XSLT entre vos représentations internes et externes. L'objectif est de pouvoir mettre en place un pipeline de transformations depuis un document XML d'entrée vers votre représentation interne. Si tout est représenté en XML et en utilisant un protocole commun (par exemple ... hmm ... HTTP), alors le processus peut être contrôlé en utilisant la configuration. BTW - c'est essentiellement le modèle de conception Pipes and Filters. Regardez le Yahoo pipes, Apache Cocoon, XML pipeline et NetKernel pour l'inspiration

0

Mon employeur dans les années 90 a fait face à ce problème. Nous avions un format standard, nous avons converti les données des clients vers et depuis, comme le suggère D.Shawley. Je suis allé plus loin et j'ai conçu un langage simple de description de format; nous avons décrit notre format standard dans cette langue et ensuite, pour un nouveau jeu de données, nous rédigeons aussi son format. Ensuite, un programme prend les deux descriptions et convertit les données d'un format à l'autre, avec des conversions de type automatiques, des vérifications de sécurité, etc. (Cela est également utile pour d'autres opérations, pas seulement pour les conversions initiales/finales.)

Les détails ne vous aideront probablement pas - il y a de fortes chances que vous manipuliez des types de données complètement différents. Vous pouvez probablement profiter du principe général, cependant. Le "langage de définition de données" ne doit pas nécessairement être une chose de fantaisie avec un analyseur et un scanner; vous pourriez le définir directement avec une structure de données dans IronPython, disons.