2008-11-19 9 views
2

Voici mon problème à un niveau élevé:Comment effectueriez-vous le transfert de données en temps réel entre les bases de données lors de la mise à jour des données?

Nous avons deux applications d'affaires. App1 entre et stocke un grand nombre de données. Nous avons besoin de quelque chose qui va transférer des données de App1 à App2 chaque fois que des données pertinentes dans App1 ont changé. Essentiellement, nous voulons que les données dans App2 soient synchronisées à partir de App1, sauf que App2 contient un sous-ensemble des données.

App1 utilise une base de données SQL Server 2000.

App2 utilise une base de données SQL Server 2005. Par exemple, si un utilisateur utilise App1 et met à jour certaines données, ces données doivent être enregistrées dans la base de données App1, puis envoyées à la base de données App2, en temps réel.

À la recherche de bonnes idées qui ne mettront pas l'un ou l'autre système à genoux.

+0

App2 est-elle purement en lecture seule? Ou les utilisateurs vont-ils apporter des modifications à App2 et s'attendre à ce que ces changements se propagent à App1? –

+0

App2 ne sera pas en lecture seule, mais la quantité de données remontant sera beaucoup plus petite. Je suppose que ce sera un rapport de 100 à 1. – MrDustpan

Répondre

2

Avez-vous considéré replication?

+0

Je n'avais pas envisagé cela, mais je vais m'y pencher. Merci pour la suggestion! – MrDustpan

0

Sont-ils à différents endroits physiques? Pourquoi ne pouvez-vous pas utiliser une base de données unique et autoriser seulement app2 à accéder au sous-ensemble de données autorisé?

+0

De bonnes questions! Y a-t-il des emplacements physiques différents? Oui. Pourquoi ne pas utiliser une seule base de données? Parce que nous allons avoir plusieurs applications App1 (et bases de données) dont les données seront toutes combinées et utilisées par une seule application App2. – MrDustpan

1

Vous pouvez probablement l'indiquer comme "Lorsqu'un événement d'intérêt se produit dans le système A, appelez l'action B pour mettre à jour le système C de façon asynchrone (c'est-à-dire découplé)."

Ressemble à une file d'attente de messages, soit formellement, soit dans une table de base de données.

Certains pourraient penser "déclencher", mais il existe une dépendance synchrone mortelle là-bas. Mais un déclencheur pourrait nourrir la file d'attente.

+0

Je pense que vous avez tout à fait raison - je continue à penser au modèle Observer, où la base de données pour App1 est l'objet, et App2 est l'observateur. Et une file d'attente de messages semblait être un moyen évident de l'implémenter. En outre, j'aime votre suggestion d'utiliser des déclencheurs pour alimenter la file d'attente. Merci! – MrDustpan

Questions connexes