2017-05-16 3 views
0

Notre modèle de données contient des utilisateurs. Nous utilisons une API externe (je l'appellerai Z) pour gérer les paiements. Nous créons des utilisateurs dans Z et avons une table de mappage qui relie nos ID internes aux identifiants Z. Cela fonctionne bien lorsqu'il existe une association 1-à-1 entre "environnements".Traitement des tables de mappage vers une API externe

Le problème est que Z nous fournit un environnement de test appelé "staging". Mais nous avons plusieurs environnements, "sandbox", "staging", local de chaque dev, etc. Idéalement, nous pourrions diriger les différents environnements vers la mise en scène de Z, mais alors les tables de mapping seront fausses dans chaque environnement. Chaque environnement a une base d'utilisateurs différente et les e-mails peuvent entrer en conflit et pointer vers les mauvais identifiants Z. Z ne fournit aucune fonctionnalité de suppression (ou archive) non plus. Comment pouvons-nous gérer ces tables de mappage dans cette situation?

+0

Pouvez-vous mapper en tant que propriétés d'application/d'environnement différentes d'un environnement à l'autre? –

Répondre

1

Ceci est un problème courant. Cela se produit non seulement lorsqu'il s'agit de systèmes externes, mais aussi très souvent de systèmes internes.

Vous n'avez vraiment que deux choix. Interdire le contact avec le système externe, sauf depuis votre environnement de transfert, ou autoriser un contact avec le système externe depuis plusieurs environnements. Puisque vous voulez faire ce dernier, vous devez accepter que vos tables de mappage dans chacun de vos environnements ne correspondent pas ID pour l'ID avec l'environnement de transfert externe. Retour au début | Cela ne devrait pas poser de problème à moins que vous ayez besoin d'avoir exactement le même nombre d'ID dans votre table de mappage que dans l'environnement externe. Si c'est votre cas, alors vous êtes bloqué avec l'option 1.

Plus probablement, il n'y a aucun besoin réel que chaque ID dans l'environnement externe ait une entrée correspondante dans la même table de mappage. Dans ce cas, vous n'êtes vraiment concerné que si chaque ID d'une table de mappage possède un ID correspondant dans l'environnement de transfert externe.

Vous pouvez empêcher les collisions en créant l'ID dans le système externe avant de le créer dans votre table de mappage. Si l'ID est déjà pris, demandez à l'utilisateur d'en choisir un autre.