+7 499 990-10-21

Транзакции. Почему бы не?

Транзакции. Почему бы не?

Сообщение BigAndy » 05 сен 2011, 21:59

Странным образом совпало. Совпало с темой viewtopic.php?f=16&t=451&p=3401#p3396
Да совпало таким образом, что аж ночью проснулся и начал всякие схемы рисовать. И, хотя в приведённом выше топике случай не совсем наш, но отчасти наш.

Задумали мы тут организовать торговлю стройматериалами.
Специфика такова,что продажи осуществляются в магазинах (торговых точках), где выставлены образцы, а отгрузка - со складских площадок. Спецификой торговли является долгий выбор покупателем и долгое время формирования чека. Иногда десятки минут и часы.
Если бы чек (записи чека) формировался бы путем OLTP, а не одной транзакцией, проблем бы не возникло. При каждой записи, соответствующей внесению/сторнированию позиции в чеке очень легко проходят синхронизирующие транзакции при помощи slony, pgpool, Проведённые эксперименты в субботу-воскресение показали, что через даже GPRS модем, загрубленный до 1200 бод удается достигнуть приемлемых скоростей транзакций.

Проблема же формирования чека однойтранзакцией "вылазит" тогда, когда с двух рабочих мест продаётся один и тот же товар. Из-за продолжительного процесса формирования чека возможна следующая ситуация:
Товара А осталось, скажем 10 ед.
Касса 1 набрала товар 1 в количестве 7 единиц. Чек не закрыт, покупатель продолжает капризничать и выбирать. В таблице ware остается 10 ед. товара
Через некоторый промежуток времени,пока не закрыт чек в кассе 1 в кассе 2 вносят позицию товара 1 в количестве 5-и единиц. таблице ware продолжает оставаться 10 единиц товара.
Касса 2 закрывает чек и из таблbцы ware списывается 5 единиц и для покупателя, отобравшего товар первым не остается товара.
Скандал.
Придётся объясняться с покупателем.

Если бы транзакции формировались бы OLTP,то можно было бы привязываться к событиям в таблице transaction.

Программисты, поковыряв код RMK 1.2.5 p7, сказали, что такое реализовать просто, но произойдёт рассинхронизация с основной веткой RMK и последующие бновления будут пыткой.

Можно ли реализовать формирование записей внесения/сторнирования позиций чека OLTP-методом?

p.s. Я понимаю, что программно можно реализовть списание из ware в момент внесения позиции чека в RMK до внсения в transactions, но гораздо проще привязать списание из ware триггером к событиям в trаnsactions.
BigAndy
 
Постов: 461
Зарегистрирован: 29 ноя 2009, 17:11

Вернуться в Ваши предложения

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4



Кто сейчас на конференции

Сейчас посетителей на конференции: 4, из них зарегистрированных: 0, скрытых: 0 и гостей: 4 (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (170) здесь было 16 май 2020, 01:50

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4