2009-03-28 7 views
1

Je suis dans un projet d'écriture d'un programme en utilisant une base de données locale.Comment gérer les transactions MS Access dans une application multithread et comment synchroniser les tables MS Access et Oracle?

Nous utilisons Delphi, MS Access et Oracle.

La question sont:

  1. Il y a plusieurs threads nécessaires pour insérer et mettre à jour MS Access DB. Je ne l'ai pas testé maintenant, et je sais que l'accès a un problème multi-thread ici. Si j'ai besoin d'utiliser un verrou ou de mettre l'opération MS Access DB dans un thread?
  2. Nous avons besoin de déplacer la même table d'Oracle vers MS Access, pour des raisons de performances. (Personnellement, je ne le suggère pas, mais je ne suis pas le chef de projet). Nous devons toujours synchroniser les données de MS Access à Oracle pendant un certain temps (peut-être plusieurs jours). Je dois faire beaucoup de travail là-dessus, y a-t-il un moyen facile (nous utilisons BDE)?
+0

devez-vous synchroniser dans un sens (oracle -> accès) ou dans les deux sens (accès oracle <->)? –

+0

Cela ne semble pas impliquer Access, mais uniquement un magasin de données Jet. Le client Jet OLEDB est meilleur pour le multi-threading que DAO. –

Répondre

0

Issue # 1
Je considère la migration la partie MS Access à MS SQL (Oracle est possible aussi, mais je ne suis pas sûr des questions liées à cela). Cela permettrait de gérer un grand nombre des problèmes multi-threading/multi-utilisateurs que MS Access a.

J'ai rencontré quelques problèmes lors de la conversion d'autres applications MS Access en MS SQL (les serveurs frontaux restent dans MS Access et les tables sont liées à MS SQL DB via ODBC). Donc, c'est une faible douleur, et vous obtenez la vitesse/fiabilité aussi.

Numéro 2
S'il y a quelque chose technologique qui vous oblige à utiliser MS Access, la meilleure chose à faire serait de créer simplement un lien ODBC à la table Oracle via MS Access. De cette façon, vous ne faites que mettre à jour un endroit. Je remets également en cause la décision de déplacer la table d'Oracle vers MS Access. 1) Je fais plus confiance aux bases de données Oracle dès le départ et 2) MS Access/Jet n'est pas connu pour être très performant sur Oracle. Ajouter plus de mémoire au serveur Oracle; donnez-lui un processeur plus rapide;

Votre col de bouteille le plus serré ne sera pas la base de données de toute façon. Ça va être votre réseau. Vous déplacez donc le problème d'un serveur à un autre et vous augmentez la congestion du réseau en synchronisant la table MS Access avec la table Oracle.

Questions connexes