|
Сложная система логических блокировок
|
|||
---|---|---|---|
#18+
Хотел спросить о такой вот задаче. Есть куча объектов(собственно под классом - таблица), находящихся в иерархии зависимости определённой. То есть фактически - дерево. Далее есть куча разнообразных форм, на которых объекты могут группироватся. Теперь собственно задача: нужно настроить блокировку объектов таким образом, чтобы юзеры не могли одновременно редактировать объекты. Также чтобы нельзя было бы редактировать объекты которые другой юзер может удалить. Как лучше организовать блокировку такую, кто-то сталкивался с такой ситуацией? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2005, 17:58 |
|
Сложная система логических блокировок
|
|||
---|---|---|---|
#18+
Не очень понял сути вопроса. Если хотим поредактировать узел дерева A, то смотрим, не юзается ли он или его любой предок другим юзером. Как это реализовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2005, 18:07 |
|
Сложная система логических блокировок
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2005, 18:12 |
|
Сложная система логических блокировок
|
|||
---|---|---|---|
#18+
CalmНе очень понял сути вопроса. Если хотим поредактировать узел дерева A, то смотрим, не юзается ли он или его любой предок другим юзером. Как это реализовать? На каждой форме может быть много объектов, причём не обязательно одного типа. Пример: Есть форумы, у каждого форума - подразбиение на темы. У каджой темы - на подтемы(и т.д. по подтемам), у каждой подтемы - много дискуссий. В каждой дискуссии - много постов. Автором поста - тоже объект (человек). Количества: форумов - 100. В каждом форуме - 100 тем, уровень подтем к примеру - 10, на каждом уровне - 10 подтем. Итого всего тем в сумме - 100*100*10*10 == 1.000.000 В каждой теме - 100 дискуссий. В каждой дискуссии 100 постов Теперь делаем форму, на которой юзер видит все свои посты скажем за последнюю неделю. Их к примеру 50штук. Таких юзеров 100. Если ставить на каждый пост лок, то получится слишком много взаимодействий с базой данных - итог ужасная производительность. Вот и хотел узнать, может кто знает схему блокировки без кучи инсертов в базу, а оптимизированную.. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2005, 20:28 |
|
Сложная система логических блокировок
|
|||
---|---|---|---|
#18+
Александр ГoлдунА что тут сложного? Тема блокировок уже дважды поднималась в этом форуме, здесь и здесь К сожалению тут ситуация более специфична, потому и создал новую тему ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2005, 20:29 |
|
Сложная система логических блокировок
|
|||
---|---|---|---|
#18+
Как вариант решения было бы хорошо найти возможность 1-й записью (и 1-м инсертом) однозначно определять большое кол-во записей по таблице. Тогда можно было бы ставить лок на несколько записей таблицы, но вот хорошо бы узнать как это возможно (без развернутых возможностей баз данных, учёт на MySQL 3-й) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2005, 21:31 |
|
Сложная система логических блокировок
|
|||
---|---|---|---|
#18+
coldshadow К сожалению тут ситуация более специфична, потому и создал новую тему Ничего там специфичного нет. Невнимательно читал или плохо вдумывался. coldshadowКак вариант решения было бы хорошо найти возможность 1-й записью (и 1-м инсертом) однозначно определять большое кол-во записей по таблице. Тогда можно было бы ставить лок на несколько записей таблицы, Блокировать надо не записи в таблице, а объекты логики. Объектом может быть, например, пост, дискуссия, форум. У объектов может быть иерархия. Определись с этим. А так же нужно определиться с состояниями объектов и с тем, в каком состоянии приемлемо блокирование. Например, непонятно, зачем блокировать объект в состоянии просмотра. Но этой уже детали специфики. coldshadow но вот хорошо бы узнать как это возможно (без развернутых возможностей баз данных, учёт на MySQL 3-й) Про MySQL лучше в соответствующий раздел. Хотя форумы, гостевые книги и прочее и можно отнести к информационным системам предприятий, но все-таки тут больше обсуждаются задачи других классов, в рамках которых MySQL значительно менее популярен. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2005, 21:47 |
|
Сложная система логических блокировок
|
|||
---|---|---|---|
#18+
В MySQL есть такая конструкция for update в селекте, именно для твоего случая. Но нужно обязательно установить меньше времени для сброса блокировок убитых сессий. Вообще полезно начинать с мануала сервера БД в котором работаешь... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2005, 10:50 |
|
Сложная система логических блокировок
|
|||
---|---|---|---|
#18+
coldshadowХотел спросить о такой вот задаче. Есть куча объектов(собственно под классом - таблица), находящихся в иерархии зависимости определённой. То есть фактически - дерево. Далее есть куча разнообразных форм, на которых объекты могут группироватся. Теперь собственно задача: нужно настроить блокировку объектов таким образом, чтобы юзеры не могли одновременно редактировать объекты. Также чтобы нельзя было бы редактировать объекты которые другой юзер может удалить. Как лучше организовать блокировку такую, кто-то сталкивался с такой ситуацией? Есть такой подход - optimistic locking ( http://www.ajlopez.net/ArticuloVe.php?Id=284 ). Идея его в том, что коллизии (накладывающиеся операции нескольких пользователей, подобные описанным выше) не исключаются перманентно путем блокировок, а выявляются при обновлениях в общей БД. Подход исходит из того, что подобные коллизии - не правило, а исключение. Это правильно, потому что в нормальной системе несколько пользователей НЕ ДОЛЖНЫ одновременно обновлять один и тот же объект (иначе это не система, а бардак). При этом подходе снимается всякая головная боль с блокировками. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2005, 13:57 |
|
Сложная система логических блокировок
|
|||
---|---|---|---|
#18+
To Александр Голдун: Как всегда народ ничего не прочитал/не читал,на Оракловом форуме недавно такая же тема поднималась, я даже исходники кинул свои: Главное выбрать правильный алгоритм хэширования для формирования кода блокировки: Логические блокировки ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2005, 14:32 |
|
|
start [/forum/search_topic.php?author=%D0%9E%D0%9E%D0%9E+%D0%A4%D0%B0%D1%83%D0%BD%D1%82&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
70ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 480ms |
total: | 665ms |
0 / 0 |