powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Как работают системы бронирования?
13 сообщений из 13, страница 1 из 1
Как работают системы бронирования?
    #39926330
swkx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Системы бронирования просто как пример упомянуты для наглядности,
хотя вопрос более общий: как предотвратить получение несколькими пользователями одинаковых результатов?

Именно с программной точки зрения.
В какой момент и какие куски данных нужно блокировать?
Есть ли какие-то общие подходы?

Возвращаясь к бронированию, возьмем к примеру один кинозал в одном городе.
Два человека примерно одновременно выбирают себе места на один сеанс.

Как их НЕ посадить на одно место?
...
Рейтинг: 0 / 0
Как работают системы бронирования?
    #39926339
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Купить/поставить нормальную СУБД ?
...
Рейтинг: 0 / 0
Как работают системы бронирования?
    #39926340
swkx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот меня и интересует, как решаются подобные задачи нормальными СУБД
...
Рейтинг: 0 / 0
Как работают системы бронирования?
    #39926344
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
swkx
Вот меня и интересует, как решаются подобные задачи нормальными СУБД

Почитайте про СУБД в формате версионник(Oracle,Postgres) и блокировочник(MS SQL,DB2 и т.д)
Темы эти перетирались в разделе Сравнение СУБД
...
Рейтинг: 0 / 0
Как работают системы бронирования?
    #39926449
s_ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
swkx
Вот меня и интересует, как решаются подобные задачи нормальными СУБД

ACID and Serializable
Гуглим эти два слова.
...
Рейтинг: 0 / 0
Как работают системы бронирования?
    #39926482
swkx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно, я некорректно вопрос сформулировал или ввел в заблуждение фразой "... с программной точки зрения".

Тогда попробую совсем конкретно: тот же кинозал, осталось 10 (или 5, или 100, не суть) свободных мест. Два человека в одно и то же время разглядывают на сайте кинотеатра оставшиеся места и думают, какое из них выбрать.

операция покупки - это промежуток времени от события "выбрал" до завершения оплаты.
реально это несколько минут. Или полчаса. Тоже не принципиально.

Напрашивается, что в момент выбора выбранное место должно быть каким-то образом закреплено за первым его выбравшим.

Это действительно так? Если да, то как это происходит?

Или процедура выбора обоими желающими (отметил одно, затем передумал, отметил другое и т.п.) никак системой не контролируется и если оба выбрали одно место, реально его получит первый завершивший оплату?
...
Рейтинг: 0 / 0
Как работают системы бронирования?
    #39926514
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
когда один выкупает место, другому JS (JavaScript) обновляет экран, после связи с сервером
как они там обрабатывают "передумал" это они сами решают
но вообще "бронь" это бронь.
...
Рейтинг: 0 / 0
Как работают системы бронирования?
    #39926555
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
swkx,

Оптимистическая блокировка
...
Рейтинг: 0 / 0
Как работают системы бронирования?
    #39926565
s_ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
swkx
Возможно, я некорректно вопрос сформулировал или ввел в заблуждение фразой "... с программной точки зрения".

Тогда попробую совсем конкретно: тот же кинозал, осталось 10 (или 5, или 100, не суть) свободных мест. Два человека в одно и то же время разглядывают на сайте кинотеатра оставшиеся места и думают, какое из них выбрать.

операция покупки - это промежуток времени от события "выбрал" до завершения оплаты.
реально это несколько минут. Или полчаса. Тоже не принципиально.

Напрашивается, что в момент выбора выбранное место должно быть каким-то образом закреплено за первым его выбравшим.

Это действительно так? Если да, то как это происходит?

Или процедура выбора обоими желающими (отметил одно, затем передумал, отметил другое и т.п.) никак системой не контролируется и если оба выбрали одно место, реально его получит первый завершивший оплату?


Обычно включается таймер - оплатить в течении 10 минут или похожее.
На это время место блокируется и пропадает из свободных. Если оплатил - остаётся тебе. Не успел оплатить - снова становится свободным.
...
Рейтинг: 0 / 0
Как работают системы бронирования?
    #39926567
МодальноеОкно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
swkx
Возможно, я некорректно вопрос сформулировал или ввел в заблуждение фразой "... с программной точки зрения".

Тогда попробую совсем конкретно: тот же кинозал, осталось 10 (или 5, или 100, не суть) свободных мест. Два человека в одно и то же время разглядывают на сайте кинотеатра оставшиеся места и думают, какое из них выбрать.

операция покупки - это промежуток времени от события "выбрал" до завершения оплаты.
реально это несколько минут. Или полчаса. Тоже не принципиально.

Напрашивается, что в момент выбора выбранное место должно быть каким-то образом закреплено за первым его выбравшим.

Это действительно так? Если да, то как это происходит?

Или процедура выбора обоими желающими (отметил одно, затем передумал, отметил другое и т.п.) никак системой не контролируется и если оба выбрали одно место, реально его получит первый завершивший оплату?


выдается один и тот же guid объекта (места) двум юзерам. при записи - которая возможна если гуид текущий места и тот с которым пришел клиент обратно в субд одинаков. версия объекта после записи обновляется - соответственно второй клиент получает неравенство текущей версии гуида объекта (места) и того гуида который он получал. ему сообщается, что "поезд ушел" и надо обновлять данные по свободным местам заново.

вам же написали про версионники и блокировочники - смотрите в вики
...
Рейтинг: 0 / 0
Как работают системы бронирования?
    #39926583
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Свободные объекты доступны для одновременного выбора.
В момент, когда пользователь нажимает «Забронировать», объект резервируется за данным пользователем на определенный период.
Если он за этот период подтвердит броню (оплатит заказ), то он за ним и остается. Если не подтвердит, то резерв снимается.
Если другие пользователи попытаются забронировать резервированный или использованный объект, то получат сообщение о том, что он уже занят, нужно выбрать другой объект.
Бэкэнд должен иметь метод «Забронировать», при вызове которого он либо осуществляет резервирование, либо возвращает ошибку.
...
Рейтинг: 0 / 0
Как работают системы бронирования?
    #39926752
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну вопрос бронирования это ни в коем случае не вопрос СУБД, а вопрос приложение. Допустимо бронирование билета или нет.
то есть когда пользователь1 и пользователь2 загрузили посмотреть себе список билетов одновременно, пользователь1 забронировал билет с местом 10 , у него поставили флаг БРОНЬ. когда пользователь2 стал бронировать билет 10, то попытка брони должна завершиться с отказом, так как билет 10 уже в брони.
тут возникает вопрос, когда обе операции пойдут одновременно - тут уже блокировками СУБД можно воспользоваться - надо обеспечить, чтобы запрос билета на смену флага мог выполнить только один пользователь.
вот конкретно эту операцию разумно СУБД поручить.

во всяком случае примерно так наша билетная площадка работает
...
Рейтинг: 0 / 0
Как работают системы бронирования?
    #39926757
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
swkx

Или процедура выбора обоими желающими (отметил одно, затем передумал, отметил другое и т.п.) никак системой не контролируется и если оба выбрали одно место, реально его получит первый завершивший оплату?


IMHO Зависит от дизайнера/заказчика системы. Можно сделать и так и этак

Например в Ulmart, Ozon я вполне могу забронировать товар и его не забрать (не купить). Не только в базе запись будет заблокирована, но возможно даже пара грузовиков туда-сюда сьездят. Ulmart / Ozon ничего особо плохого в этом не видят.

Если интресует, как сделано на конкретном сайте - ну сделайте опыт. Купити пару авиабилетов и посмотрите, как поведет себя система. Делов-то на пару тысячь(десятков тысячь, если весь остаток на рейс покупать) $ )))
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Как работают системы бронирования?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]