23-01-2010, 01:01 AM
erf pas sur de comprendre ni d etre compris
alors je vais prendre un cas exemple d'achat de magasin
supposons que le processus d'achat soit :
1) SELECT pour savoir si l'objet est disponible, si non échec
2) SELECT pour savoir si l'individu peut acheter l'objet, si non échec
3) UPDATE du stock du magasin ( -1)
4) UPDATE de l'inventaire de la personne ( +1)
5) UPDATE des finances du magasin (+prix)
6) UPDATE des finances de la personne (-prix)
(peu importe si trop de requete, etc.. l'idée c'est d'en avoir plusieurs)
maintenant comment gérer le cas où six personnes lancent en même temps le processus d'achat alors qu'il n'y a en magasin que 3 articles.
si on ne contrôle que le côté unitaire, sans se préoccuper du multi accès
on va avoir 6 fois le contrôle du stock positif (les 6 se connectent, il y a 3 articles pour chacun d'eux)
donc au final, on se retrouve avec stock magasin = -3 et inventaire = +1 pour les six personnes
ma question c'est donc comment gérer ce cas
ce que je comprends du flag de sephi, c'est que 1 et 1 seule des personnes connectés achètera l'objet, les autres étant renvoyés (ie flag pris, merci au revoir, rollback) et que du coup
stock magasin = 2, inventaire personne 1 = 1, inventaire personne 2 3 4 5 6 = 0
voyez ce que je veux dire ?
comment faire pour que personne 1 récupère l'article, que les contrôles du processus de personne 2 constatent qu'il reste des articles et donc que personne 2 récupère l'article, idem personne 3, et que personne 4, pas de chance voit son processus contrôler qu'il n'y a plus de stock ?
alors je vais prendre un cas exemple d'achat de magasin
supposons que le processus d'achat soit :
1) SELECT pour savoir si l'objet est disponible, si non échec
2) SELECT pour savoir si l'individu peut acheter l'objet, si non échec
3) UPDATE du stock du magasin ( -1)
4) UPDATE de l'inventaire de la personne ( +1)
5) UPDATE des finances du magasin (+prix)
6) UPDATE des finances de la personne (-prix)
(peu importe si trop de requete, etc.. l'idée c'est d'en avoir plusieurs)
maintenant comment gérer le cas où six personnes lancent en même temps le processus d'achat alors qu'il n'y a en magasin que 3 articles.
si on ne contrôle que le côté unitaire, sans se préoccuper du multi accès
on va avoir 6 fois le contrôle du stock positif (les 6 se connectent, il y a 3 articles pour chacun d'eux)
donc au final, on se retrouve avec stock magasin = -3 et inventaire = +1 pour les six personnes
ma question c'est donc comment gérer ce cas
ce que je comprends du flag de sephi, c'est que 1 et 1 seule des personnes connectés achètera l'objet, les autres étant renvoyés (ie flag pris, merci au revoir, rollback) et que du coup
stock magasin = 2, inventaire personne 1 = 1, inventaire personne 2 3 4 5 6 = 0
voyez ce que je veux dire ?
comment faire pour que personne 1 récupère l'article, que les contrôles du processus de personne 2 constatent qu'il reste des articles et donc que personne 2 récupère l'article, idem personne 3, et que personne 4, pas de chance voit son processus contrôler qu'il n'y a plus de stock ?