|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
Привет всем! Поясните чайнику пожалуйста как устроена система резервирования/покупки билетов? Например Lastminute.com, Expedia.com etc Конкретно интересует как сообственно реализована синхронизация доступа нескольких клиентов. Например есть web доступ в систему резервирования авиа билетов. В какой то момент Оператор1 видит что доступно 5 билетов на определенный рейс. Далее Оператор1 пытается зарезервировать 3 билета. В это же самое время Оператор2 пытается зарезервировать тоже три билета. Предположим используются след технологии: ASP.Net, ADO.Net, без какой либо ORM. Если они оба одновременно заполнили все необходимые поля и послали запрос на резервирование то как запрос будет обработан? На уровне SQL запроса я должен указать конкретное условие что хочу зарезервировать билет с номером 123 и Status == 'available'? Код: plaintext
Должен я делать что какие то дополнительные действия связанные с Optimistic/Pessimistic Concurrency control? Пожалуйста не шпыняйте сильно. Хотелось бы получить ответ по существу. спасибо большое. Модератор: Тема перенесена из форума "Microsoft SQL Server". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 15:45 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
чайник01, все немного сложнее. операторы не имеют прямой доступ к одной общей базе, а каждый использует свою,с разными стратегиями синхронизации погуглите термин overbooking ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 16:38 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
чайник01, если же вас интересует в пределах одной базы (заменим,два оператора на два пользователя), то все примерно так: в одной транзакция сначала будет проверка, свободно ли еще место (этот же селект наложит блокировку на соответствующую запись), потом будет апдейт, который запись изменит. Соответственно, кто первый успеет,тот и проапдейтит, а второй получит отлуп. как то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 16:50 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
awhilerчайник01, если же вас интересует в пределах одной базы (заменим,два оператора на два пользователя), то все примерно так: в одной транзакция сначала будет проверка, свободно ли еще место (этот же селект наложит блокировку на соответствующую запись), потом будет апдейт, который запись изменит. Соответственно, кто первый успеет,тот и проапдейтит, а второй получит отлуп. как то так. Вот тут поподробнее пожалуйста. Как раз этот момент и интересует. В первой транзакции мы выбираем все свободные места. Надо ли использовать SET TRANSACTION ISOLATION LEVEL? Что надо сделать чтобы селект наложил блокировку на соответствующую запись? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 17:14 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
awhilerчайник01, все немного сложнее. операторы не имеют прямой доступ к одной общей базе, а каждый использует свою,с разными стратегиями синхронизации погуглите термин overbooking Посмотрел про Overbooking и не нашел что это как то связано со стратегиями синхронизации. Говорят что делают это специально чтобы компенсировать тех кто не явился на рейс... WikipediaThis allows them to have a (nearly) full vehicle on most runs, even if some customers miss the trip or don't show up ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 17:20 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
Коллега изначально система продажи билетов зависела от монополистов - государств и их пособников департаментов Транспорта. Так появились глобальные дистрибутивные системы GDS . Потом началась де-монополизация. От основных GDS (Sabre, Amadeus, Galileo, worldSpan) начали отпочковывавться он-лайн агенства - афилиеты. Так появились Expedia.com, Travelosity.com, Orbitz.com и так далее. Поймите правильно. Процесс загрузки самолёта - очень сложен и многопланов. Существуют скидки, категории билетов целые системы обеспечения заполнения. Наиболее дешёвые билеты - это те которые невозможно поменять или отказаться от полёта. Наиболее дорогие - билеты первого класса. И каждый вылет - а их 40000 ежедневно только в Америке - надо заполнить. Никакой синхронизации доступа в систему нет. У каждого "агенства" своё окошечко в систему. На каждый вылет покупатель видет только те билеты которые продаёт это "окошечко" И по такой цене - сколько определено в категории билета имеющихся в наличие. Например Вы ищите полёт Бостон Лос Анжелес на 1 мая 2009. Сначала Вы заказываете дату вылета и Число билетов (по числу участников) и Travelosity.com (sabre) имеет 25 билетов на этот рейс категории Y - самые дешёвые. Expedia.com уже продала свои и остались только 2 из пяти Вам нужных категории Y - значит выдаст Вам категорию К - 20% дороже. Из своего фонда. И так далее. Нужны подробности - дайте знать. каждой системе провайдер (авиакомпания) выделяет часть билетов до 60-75% от общего их числа. Оставшиеся оставяет за собой И если они не проданы к такому то числу - тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 17:51 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
Mr Marmelad... Спасибо, интересная информация. Понял что с авиабилетами не все так просто. Тогда меня интересует как реализована простая система резервирования какого-нибудь ресурса в случае когда к системе имеет доступ одновременно несколько пользователей. Вопросы к awhiler остаются в силе. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 18:13 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
Mr Marmelad Никакой синхронизации доступа в систему нет. У каждого "агенства" своё окошечко в систему. На каждый вылет покупатель видет только те билеты которые продаёт это "окошечко" И по такой цене - сколько определено в категории билета имеющихся в наличие... Я правильно понял что каждое агенство получает доступ не ко всем доступным билетам на рейс а скажем N билетов в эконом, M билетов в бизнес класс? И так для каждого агенства распределено? Должен тогда быть наверное какой то агрегатор который распределяет кому и сколько? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 18:18 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
чайник01, На самом деле во всех билетных системах более менее одна и та же логика. Это высокоактивная OLTP со всеми аттрибутами таковой. Существует целый ряд публикаций и это мой самый любимый на эту тему . . Каков Ваш интерес в этом вопросе Коллега? реферат или реальный проект? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 18:22 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
чайник01 Я правильно понял ... Совершенно верно. Он распределяет категории билетов и сроки их реализации в (к примеру) 5 дней с момента "утверждения расписания" по всем "агенствам" - GDS. Если агенство А продали свои билеты на момент вылет минус 30 дней, а агенство Б - нет, билеты перераспределяются от Б к А. Имейте ввиду там очень маленький навар с билета и число проданых билетов имеет решающее значение. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 18:27 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
Там ещё и политика имеет место. Существует целый ряд так называемых малобюджетных авиакомпаний которые сами продают свои билеты. Без посредников. GDS так сказать отключены. Их рынок - это как раз то что Вы ищите. Например jetblue.com сообщает сразу сколько билетов осталось на данный рейс. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 18:31 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
Mr MarmeladКаков Ваш интерес в этом вопросе Коллега? реферат или реальный проект? Спасибо за ссылку. Ни то ни другое на самом деле! Просто интересно что и как происходит после того как система отобразила список доступных ресурсов(aka номера в гостинице, автомобили на прокат, билеты в театр и т.д.), пользователь заполнил необходимые данные для резерирования и кликнул кнопку "Зарезервировать/Купить"... Интересует именно на уровне взаимодействия с БД. Как разруливается конфликт резервирования несколькими пользователями одного и того же ресурса. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 18:32 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
И каждое место можно селектнуть в сессии во время покупки. Что в общем очень невыгодно компании. Ведь надо загрузить все места. а ктото не хочет сидеть между потной тётей и пьяным дядей... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 18:33 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
Mr MarmeladТам ещё и политика имеет место. Существует целый ряд так называемых малобюджетных авиакомпаний которые сами продают свои билеты. Без посредников. GDS так сказать отключены. Их рынок - это как раз то что Вы ищите. Например jetblue.com сообщает сразу сколько билетов осталось на данный рейс. Ага! Вон оно как. Так все эти компании GDS (Sabre, Amadeus, Galileo, worldSpan) они не продают ПО, а предоставляют свой сервис по продаже билетов авиакомпаниям? И дают возможность всяким посредникам типа Expedia and Lastminute тоже перепродавать билеты пользуясь их системами. То есть ни Expedia ни Lastminute и им подобные не работают напрямую с авиакомпаниями? Они работают с GDS (Sabre, Amadeus, Galileo, worldSpan). Так? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 18:39 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
чайник01Просто интересно что и как происходит после того как система отобразила ... Ааа интерес... Очень карашо. На самом деле Коллега - смотрите - рынок этот огромен. Вы совершенно правы - любые средтсва путешествий - это целый мир. И он стал совершенно другим за последние 10 лет. Раньше это был мир особых услуг консультантов по путешествиям. Он и сейчас имеет место. Раньше за него платили большие деньги - 10-15% от общей суммы за пакет (Авиабилет + гостинница + рент машины + развлечения разные). Сейчас платят 5-7% и то под давлением Очень много бизнеса ушло на интернет. Зато образовались новые виды продуктов - например Круизы. В 1995 году только 3% американцев знали о Круизах. в 2005 уже 15% стали постоянными клиентами круизных компаний. И всё равно рынок увеличился в 5 раз но не охвачен даже до 1/4 части. Загрузка в 80% - обычно считается успешной. Существует ещё и разделение на коммерческие (деловые) и туристические путешествия. Так то вот. Я Вас не утомил? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 18:44 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
чайник01Просто интересно что и как происходит после того как система отобразила список доступных ресурсов(aka номера в гостинице, автомобили на прокат, билеты в театр и т.д.), пользователь заполнил необходимые данные для резерирования и кликнул кнопку "Зарезервировать/Купить"... Интересует именно на уровне взаимодействия с БД. Как разруливается конфликт резервирования несколькими пользователями одного и того же ресурса.Это вопрос не работы СУБД. Это вопрос бизнес-логики. Каждый продавец определяет правила резервирования - кто-то разрешает резервировать, кто-то нет, все, то разрешает, делают это на разных условиях, по разным правилам. А разработчики БД уже эти правила реализуют. Разумеется, транзакциями в СУБД резервирование никто не делает. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 18:45 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
Mr Marmelad...Существует ещё и разделение на коммерческие (деловые) и туристические путешествия. Так то вот. Я Вас не утомил? нет не утомили. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 18:49 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
чайник01ПО, а предоставляют свой сервис по продаже билетов авиакомпаниям? И дают возможность всяким посредникам типа Expedia and Lastminute тоже перепродавать билеты пользуясь их системами. То есть ни Expedia ни Lastminute и им подобные не работают напрямую с авиакомпаниями? Они работают с GDS (Sabre, Amadeus, Galileo, worldSpan). Так? Всё именно так. Например самый новый Orbitz.com - порождение консорциума авиакомпаний . И если Вы внимательно приглядитесь - все gds - это в конце концов IT ДОТ (департамент транспорта - диспетчерская) Просто функций там много - не только продаже билетов. Там и стоянки самолётов, и дозаправки, и багаж, и безопасность, и инспектирование и так далее - Так что продажа - просто отдел в большой (огромной) машине. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 18:51 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
alexeyvgчайник01Просто интересно что и как происходит после того как система отобразила список доступных ресурсов(aka номера в гостинице, автомобили на прокат, билеты в театр и т.д.), пользователь заполнил необходимые данные для резерирования и кликнул кнопку "Зарезервировать/Купить"... Интересует именно на уровне взаимодействия с БД. Как разруливается конфликт резервирования несколькими пользователями одного и того же ресурса. Это вопрос не работы СУБД. Это вопрос бизнес-логики. Каждый продавец определяет правила резервирования - кто-то разрешает резервировать, кто-то нет, все, то разрешает, делают это на разных условиях, по разным правилам. А разработчики БД уже эти правила реализуют. Разумеется, транзакциями в СУБД резервирование никто не делает. ну хорошо а как тогда поступают на уровне БД, если бизнес-логика запрещает overbooking ресурса? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 18:53 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
чайник01 ну хорошо а как тогда поступают на уровне БД, если бизнес-логика запрещает overbooking ресурса? update Resources set Status = 'reserved' where ResourceID == 123 and Status == 'available' и если RowsAffected = 0 значит уже занято?! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 18:59 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
чайник01 если бизнес-логика запрещает overbooking ресурса? Overbooking - праздник для компании. Они все мечтают о таком результате. Обычно решается он оперативно. Конечно существуют и отлично просчитаны все цены - места для каждого конкретного рейса. И тот или иной рейс будет ориентирован или на бизнес или на туристический рынок. Например Понедельник 6 утра из Бостона в Нью Йорк цены будут $300 - и продаваться через Amex Travel - бизнес агентство. Большинство. А вот на субботу 1 час дня из того же Бостона в тот же НЙ - $40 через Expedia.com - группам студентов для посещения статуи свободы. Понятно? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 19:06 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
:Overbooking - праздник для компании. Они все мечтают о таком результате. Обычно решается он оперативно. Кстати Самолёты под тот или иной рейс очень легко заменить. Так что проблема не в овербукинге а как раз наоборот. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 19:10 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
чайник01чайник01 ну хорошо а как тогда поступают на уровне БД, если бизнес-логика запрещает overbooking ресурса? update Resources set Status = 'reserved' where ResourceID == 123 and Status == 'available' и если RowsAffected = 0 значит уже занято?!Да, например, так. Этого достаточно даже без внешней транзакции. Только у реального бизнеса бизнес-логика сложнее. Нужно зарезервировать билет на те минуты, пока пользователь не заполнил форму продажи, потом на те часы, пока не пришла оплата, и потом только продать окончательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 19:12 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
alexeyvgчайник01чайник01 ну хорошо а как тогда поступают на уровне БД, если бизнес-логика запрещает overbooking ресурса? update Resources set Status = 'reserved' where ResourceID == 123 and Status == 'available' и если RowsAffected = 0 значит уже занято?!Да, например, так. Этого достаточно даже без внешней транзакции. Только у реального бизнеса бизнес-логика сложнее. Нужно зарезервировать билет на те минуты, пока пользователь не заполнил форму продажи, потом на те часы, пока не пришла оплата, и потом только продать окончательно. ну то есть стадий между available и sold out гораздо больше. Типа awaiting user data, payment pending etc? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 19:17 |
|
Как работает система резервирования билета?
|
|||
---|---|---|---|
#18+
alexeyvgчайник01чайник01 ну хорошо а как тогда поступают на уровне БД, если бизнес-логика запрещает overbooking ресурса? update Resources set Status = 'reserved' where ResourceID == 123 and Status == 'available' и если RowsAffected = 0 значит уже занято?!Да, например, так. Этого достаточно даже без внешней транзакции. Только у реального бизнеса бизнес-логика сложнее. Нужно зарезервировать билет на те минуты, пока пользователь не заполнил форму продажи, потом на те часы, пока не пришла оплата, и потом только продать окончательно. это кто так делает? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 19:17 |
|
|
start [/forum/topic.php?fid=33&fpage=40&tid=1548596]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
80ms |
get tp. blocked users: |
2ms |
others: | 320ms |
total: | 486ms |
0 / 0 |