Гость
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Как работают системы бронирования? / 13 сообщений из 13, страница 1 из 1
13.02.2020, 16:32
    #39926330
swkx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работают системы бронирования?
Привет.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

во всяком случае примерно так наша билетная площадка работает
...
Рейтинг: 0 / 0
14.02.2020, 15:37
    #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]