Question

Je construis une application Web intranet avec un back-end Oracle. La base de données Oracle sera répliquée sur un autre serveur pour des raisons qui ne sont pas importantes pour cette discussion. Je suis pratiquement certain que nous utiliserons Oracle Basic Replication, et non Advanced.

Quelqu'un peut-il m'expliquer pourquoi la plupart des discussions autour des touches principales vont comme suit:

  • L'utilisation d'ints auto-incrémentés pour les PK correspond à 99% du temps
  • SAUF si vous effectuez une réplication. Ensuite, utilisez des GUID pour vos PC.

Personne ne semble jamais expliquer pourquoi l'exception de réplication, et je ne comprends pas pourquoi.

Était-ce utile?

La solution

Je pense que l'argument GUID pour réplication ne s'applique que si les deux serveurs recevront de nouvelles données. Ensuite, vous ne voulez pas que les nouvelles lignes entrent en conflit, utilisez donc des GUID, car la réplication de clé publique peut aller dans les deux sens.

Nous répliquons constamment des tables d'auto-incrémentation, mais il s'agit d'une réplication stricte maître / esclave dans laquelle les données sont uniquement écrites sur le maître.

Autres conseils

Un mot: MERGE

La réplication par fusion ne peut fonctionner que si tous les & "maîtres &"; Les boîtes peuvent créer une nouvelle clé sans entrer en conflit avec les autres.

Si vous considérez ce qui se passe lorsque deux serveurs sont répliqués l'un avec l'autre et que des données leur sont ajoutées entre la synchronisation, le problème devient évident:

Time  Server  NewID
001   A       1
002   A       2
003 <sync of server A and B>
004   A       3
005   B       3
006 <sync of server A and B>

< --- Deux enregistrements différents ont maintenant le même identifiant, il y a donc un conflit!

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