Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
Представим себе вокзал. Несколько окошек, где продают билеты. Каждая транзакция - продажа партии билетов. Как проходит этот процесс мы все знаем. Подходим к окошку и говорим - мне 2 билета до Москвы. И начинается... транзакция. Заканчивается она лишь тогда, когда внесены все паспортные данные и деньги за билеты получены. а теперь, предположим что вы - отправляете в Москву группу туристов. Скажем так - человек 30...Т.е. я хочу сказать что транзакция может получиться очень длинной. А билеты - ресурс ограниченный. Может не хватить. Слеловательно билеты для группы должны быть заблокированы в начале транзакции. Подобные задачи возникают довольно часто. Например при продаже акций или в процессе набивки накладной Задача: 1) Продажа проходит одной транзакцией 2) Продажа (транзакция) растянута во времени (до получаса) 3) продавать билеты на один и тот же рейс могут одновременно из нескольких окошек. Для блокировочника - все понятно, решить задачу очень легко. А как будет выглядеть решение для версионника? т.е. я имею в виду Оракл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 11:47 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
Организуйте топик для ОРАКЛА, так быстрее будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 12:01 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
gardenmanА как будет выглядеть решение для версионника? т.е. я имею в виду Оракл? На Оракле это сделать невозможно!!! Написал бы структуру БД. Билеты ведь не только по количеству учитываются, но и по местам. Например можно быстро "застолбить" нужные места в нужном количестве признаком "зарезервировано". После ввода всей инфы - поменять статус на "продано". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 12:07 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
select for update..? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 12:08 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
2 Серега Разве Оракл не лучшая СУБД для ОЛТП задач? День длинный, может кто-нить, чё-нить и предложит, а мы посмотрим ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 12:14 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
gardenmanДень длинный, может кто-нить, чё-нить и предложит, а мы посмотрим ... Я тебе через 20 минут предложил, чем не ндравится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 12:29 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
СерегаЯ тебе через 20 минут предложил, чем не ндравится? Это не решение а отмазка.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 12:30 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
Слишком сильно усложнять задачу не будем начнем с этого: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 12:36 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
gardenmanСлишком сильно усложнять задачу не будем начнем с этого: ИМХО, твоя таблица больше смахивает на отмазку, чем мое предложение. Продай мне по твоей структуре 5 общих, 3 плацкартных, 2 купейных и 1 СВ билет. Тут и Оракл сдохнет наверное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 12:47 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
2 gardenman Тебе если для диплома - тогда за бабло надо бы, за так голову ломать над красивыми решениями неохота никому. А если для того, чтобы работало - то Серега тебе уже предложил единественное правильное решение. Причем и для MS SQL и для Оракла. И еще подсказка - транзакции тут ни при чем. Если конечно нужно самое уродское решение - тогда используй транзакции, вешай всю систему. -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 12:48 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
Серега gardenmanСлишком сильно усложнять задачу не будем начнем с этого: ИМХО, твоя таблица больше смахивает на отмазку, чем мое предложение. Продай мне по твоей структуре 5 общих, 3 плацкартных, 2 купейных и 1 СВ билет. Тут и Оракл сдохнет наверное. Нет, это не отмазка...поверь, решение есть. Не хочешь торговать билетами?... Давай тогда торговать акциями. Обыкновенными неименными привелигированными. Можно поработать на складе. Предположим у нас есть 100 ящиков какого-то товара. И в разных филиалах его продают. сначала - оформление документов (выписка фсяких накладных и пр...). И чтоб пока документы оформляются - наши ящики не ушли кому-нить другому. Все - одной транзакцией. В общем - условия - те же... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 12:55 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
tygra2 gardenman Тебе если для диплома - тогда за бабло надо бы, за так голову ломать над красивыми решениями неохота никому. А если для того, чтобы работало - то Серега тебе уже предложил единественное правильное решение. Причем и для MS SQL и для Оракла. И еще подсказка - транзакции тут ни при чем. Если конечно нужно самое уродское решение - тогда используй транзакции, вешай всю систему. -- Tygra's -- Я свой диплом получил в 1988 году....((( Вообще-то тогда еще этому не учили. А сейчас столько много умных, после интститутов.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 12:56 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
авторЯ свой диплом получил в 1988 году....((( Вообще-то тогда еще этому не учили. А сейчас столько много умных, после интститутов.... Там и сейчас этому не учат :) Так что не переживайте - все в одинаковой ситуации, хоть сейчас, хоть тогда, хоть с дипломом, хоть без. А с терминами все-же не заморачивайтесь - делайте так, как удобно, как лучше. Главное чтобы работало. И не важно, как оно там называется и кем кому приходится :) -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 13:02 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
gardenmanНет, это не отмазка...поверь, решение есть. Не хочешь торговать билетами?... Давай тогда торговать акциями.В общем - условия - те же... Фиг тебе - те-же? Отсюда и проблема у тебя растет. 8-) Даже в торговле ящиками товара есть варианты. gardenmanПредположим у нас есть 100 ящиков какого-то товара. И в разных филиалах его продают. сначала - оформление документов (выписка фсяких накладных и пр...). И чтоб пока документы оформляются - наши ящики не ушли кому-нить другому. Все - одной транзакцией. Исходи из того, что если ящики кончаются - это плохо (недоработка снабженцев), и скорее всего будет встречаться не очень часто. Далее. С чего ты решил что твое общение с БД заканчивается с концом транзакции? Отнють. Если транзакция прошла, то да. А если произошла искл.ситуация (поставь например ограничение на количество>=0 и ты ее получишь) и произошел откат, то никто не запрещает тебе в программе выяснить причину отката (опросить "свежее" количество), дать исправить документ юзеру и попытаться сохранить снова. Или, на худой конец, вывести юзеру месадж - "Извини, братан, кто первый встал того и тапки". И тут кстати вообще по барабану, ИМХО, версионник или блокировочник. Нюансы могут быть, но общая схема та-же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 13:14 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
Дорогой Tygra! Смысл того, что здесь написано совсем другой. И я имел в виду совсем не то, о чем ты подумал. Я хочу сказать что существует класс задач, для которых Оракл не катит . Вот как ты думаешь, почему кластерные реализации от Оракла и от IBM такие разные? Ведь совсем не потому, что Оракл круче и совсем не потому, что IBM не могут как Оракл. А потому, что в силу своих архитектурных особенностей JОракл по-другому просто не может ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 13:14 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
2 Серега Вот-вот.... если мы не можем это запрограммировать, то давайте изменим процесс так, чтобы это можно было сделать... Хороший способ решать вопросы...делать вид, какбудто их нет...(С) Макаревич ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 13:17 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
gardenmanСмысл того, что здесь написано совсем другой. И я имел в виду совсем не то, о чем ты подумал. Я хочу сказать что существует класс задач, для которых Оракл не катит . Конечно!!! Но практически все задачи связанные с БД, не входят в этот перечень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 13:18 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
gardenmanВот-вот.... если мы не можем это запрограммировать, то давайте изменим процесс так, чтобы это можно было сделать... Переведи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 13:20 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
Эта задача как раз из тех, для которой катят все СУБД, у которых есть транзакции. Можно и совсем без транзакций, но это несерьезно будет :) Так что вас так смутило то в задаче? Вам предложено решение. Вы толи его не принимаете, толи еще что- напишите, в чем проблемы. Вами пока не предложено ни одного решения. Кстати, с ящиками та же беда - не надо тут никаких транзакций, транзакции с клиента - это зло! -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 14:13 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
имеется запись insert into routes (route_num,departure_dt,tickets_cnt,tickets_sold) values ('C100','31.12.2004',1000,950) видно, что было 1000 билетов, 950 из которых - продано.=> осталось 50 билетов. Иммется два окошка. К первому подходит гражданин, и пытается 2 купить билета. Кассарша начинает транзакцию, говорит: select ... for update. Запись - блокирована. К другому окошку подходит другой мэн...и просит 2 билета на тот же рейс. Ну и другая кассирша тоже делает select ... for update на ту же запись... ну и как им быть? Ждать пока кассирша в первом окошке не расчитается с клиентом и не сделает commit? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 14:25 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
авторвидно, что было 1000 билетов, 950 из которых - продано.=> осталось 50 билетов. Иммется два окошка. К первому подходит гражданин, и пытается 2 купить билета. Кассарша начинает транзакцию, говорит: select ... for update. Запись - блокирована. К другому окошку подходит другой мэн...и просит 2 билета на тот же рейс. Ну и другая кассирша тоже делает select ... for update на ту же запись... ну и как им быть? Ждать пока кассирша в первом окошке не расчитается с клиентом и не сделает commit? Вам уже сказали решение без транзакций - именно то, которое нужно. Что вы к транзакциям прицепились? -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 14:29 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
Если у вас уже есть та структура, которую вы приводите, и менять ничего нельзя - тогда решения нет, пусть все пассажиры ждут, пока первый кассир в тувалет сходит и освободит таблицу :)) -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 14:30 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
2 tygra Пожалуйста, не заходи в этот топик, кругом столько других интересных... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 14:32 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
gardenman Ждать пока кассирша в первом окошке не расчитается с клиентом и не сделает commit? А, при такой схеме , зачем блокировать вообще, если у нас еще 50 билетов, а берут обычно не более 5? А если бы было 950 свободных и очередища? Наверное поезд уедет прежде, чем один вагон обилетят. gardenmanНет, это не отмазка...поверь, решение есть. Ну не томи уже, опубликуй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 14:39 |
|
||
|
Задача для версионника
|
|||
|---|---|---|---|
|
#18+
Продолжаем.... Усложним задачу... пусть все будет без транзакций... К первому окошку подходит руководитель тургруппы - и заказывает 30 билетов... Ну и естественно начинает оформлять их по очереди... Пока они то да се...по одному билету оформляли, на других вокзалах и в других окошках скупили 25 билетов.. ну и 5 билетов руководителю тургруппы не хватило... Обидно...А нужно туристов скопом везти.... Придется сдавать купленные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 14:40 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=32826335&tid=1546074]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 357ms |

| 0 / 0 |
