Ok, voyons si vous pouvez m'aider avec ce problème, je me bats la tête.Synchroniser efficacement les informations de l'entrepôt
Le scénario est une configuration assez standard avec un point de vente (c'est où je suis) et un backoffice gardant la trace des informations d'entrepôt. Le problème est que j'ai besoin de synchroniser la base de données au point de vente avec les informations de stock actuelles du backoffice. En ce moment, cela se fait en récupérant un catalogue à partir du backoffice via le Web. Le catalogue contient des informations telles que les unités actuellement disponibles, le prix actuel et les identifiants uniques pour chaque type. Dans ma base de données j'ai exactement la même information et je la mets à jour après avoir récupéré le catalogue. Il est important pour moi d'insérer de nouveaux types d'unités telles qu'elles apparaissent, de mettre à jour les types déjà existants avec les informations de disponibilité et de prix, et enfin de supprimer les types (ou de les marquer indisponibles).
L'implémentation actuelle marque simplement tous les éléments comme indisponibles au cas où ils ont été retranchés du catalogue, puis pour chaque élément dans le catalogue émet une requête comme ceci:
INSERT INTO store (id, quantity, price)VALUES(x, y, z)
ON DUPLICATE KEY quantity=y, price=z;
L'id est défini comme unique pour éviter dupliquer les données obsolètes dans la base de données et provoquer une collision qui déclenche la mise à jour à la place. Le problème principal est que cela génère une requête pour chaque type dans le catalogue, qui peut se développer rapidement.
Y at-il une solution plus rapide à ce problème?
Le serveur frontal se connecte-t-il directement à la base de données du backoffice ou à un service Web de type XML? – MindStalker
Cela passe par une interface Web simple, avec une syntaxe de sortie vraiment stupide, mais je peux l'analyser correctement. – cdecker