-2 votes

Conception pour un magasin de données qui peut être mis à jour et interrogé en même temps

Nous concevons un système d'inventaire en temps réel pour un site de commerce électronique qui agrège son inventaire auprès de plusieurs fournisseurs.

  • Nos visiteurs peuvent rechercher et acheter des articles sur notre site
  • Nous recevons des mises à jour d'inventaire de plusieurs fournisseurs selon des horaires différents tout au long de l'heure. Les mises à jour se présentent sous la forme d'un instantané de leur système d'inventaire en cours. En d'autres termes, nous n'obtenons pas une liste des articles vendus ou ajoutés, seulement un instantané de leur inventaire au moment de la mise à jour.

Quel est le meilleur design pour ce système afin de mettre à jour notre inventaire sans perturber l'expérience de commerce électronique?

Exigences:

  1. Assurer que notre magasin d'inventaire ne fluctue pas. Lorsque nous rafraîchissons notre inventaire avec les mises à jour de nos fournisseurs, nous ne pouvons pas simplement supprimer les anciens enregistrements, puis insérer les nouveaux enregistrements. Cela causerait momentanément un état inexact dans notre magasin d'inventaire.
  2. Assurer qu'il n'y a jamais de doublons dans le magasin d'inventaire.

La solution ne doit pas être limitée à la conception de base de données. Nous sommes ouverts à des solutions impliquant la base de données, un cache distribué en mémoire, ou tout autre moyen.

UPDATE (@Andrew Keith) : Ma question porte sur la façon de maintenir un magasin d'inventaire (qu'il s'agisse d'une base de données ou d'un cache en mémoire) afin que les mises à jour d'inventaire puissent être appliquées au magasin tout en le laissant ouvert pour les opérations de commerce électronique (par exemple, recherche, paiement, etc.).

2voto

Andrew Keith Points 5627

Votre question est trop vague. Un système de commerce électronique est un terme informatique générique utilisé pour faire référence à de nombreux systèmes. Ce que vous devez faire est de découper votre question en sous-questions plus gérables afin d'obtenir des réponses significatives.

Les exigences que vous avez mentionnées sont toutes des exigences simples qui peuvent être facilement prises en charge par n'importe quelle conception.

Êtes-vous intéressé par le développement du système à partir de zéro, ou par l'achat et l'intégration d'un système de commerce électronique existant ?

1voto

Kenny Evitt Points 1876

Vous avez souligné votre désir d'Atomicité pour les changements d'inventaire - utilisez l'un des systèmes de base de données populaires et concevez vos mises à jour comme des transactions pour le système que vous choisissez.

En ce qui concerne vos exigences :

  1. C'est ce que garantit l'atomicité. Bien qu'une requête client particulière puisse devoir attendre la fin d'une mise à jour d'inventaire ou elle pourrait devenir obsolète en un laps de temps (presque) arbitrairement petit. Vous devriez réexaminer l'inventaire lorsque le client passe à l'étape suivante de votre processus de commande (de toute façon).
  2. Ce n'est pas si difficile si vous utilisez des déclarations 'update' dans le langage de requête du système de base de données que vous choisissez. Je ne connais pas de modèle d'ajout de nouveau enregistrement, de suppression d'ancien enregistrement pour maintenir l'état (encore moins les quantités d'inventaire).
  3. C'est impossible en général. Vous pouvez vendre x unités d'un article et la prochaine mise à jour d'inventaire que vous recevez de votre(s) fournisseur(s) peut réduire la quantité disponible de cet article à une valeur inférieure à x. Votre seule (générale) réponse est de présenter des excuses à un certain nombre de clients, bien que dans la pratique, cela soit probablement un problème insignifiant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X