Re[2]: Блокировки в бизнес-слое
От: IB Австрия http://rsdn.ru
Дата: 28.09.17 20:25
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Да, если это действительно оправдано. Примеры есть. Платформа 1С — там свой менеджер блокировок, в дополнение к блокировкам СУБД.

В 1С он не от хорошей жизни. Да и образцом правильной архитектуры 1С сложно назвать.

W> Он позволяет заблокировать прикладной объект и обойтись одной блокировкой вместо множества строк в нескольких таблицах. Таким образом уменьшается количество блокировок в базе. Кроме того, возможны такие полезные вещи, как блокировка множества строк по условию. Например (если взять один из твоих примеров), у нас в таблице хранятся статусы заказов. И мы можем одной блокировкой заблокировать все неподтвержденные заказы одного клиента. Или даже группы клиентов. Если все это блокировать в базе, это будет медленно и тяжело для базы.

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

W>Но за это приходится платить дорогую цену. Все изменения бизнес объектов должны идти через этот менеждер блокировок. Например, мы не можем выполнить сложный многострочный UPDATE или DELETE, так как наш менеджер блокировок не может проверить, не относятся ли затронутые им строки к заблокированным объектам. Из-за этого сильно страдает производительность на запись.

Отдельный плюс менеджера блокировок который встроен в БД состоит в том, что о нем знают транзакции БД.
Мы уже победили, просто это еще не так заметно...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.