|
|
|
WEB интерфейс
|
|||
|---|---|---|---|
|
#18+
Blazkowicz TimmТ.е. ты такую весчь не применял, но советуешь? Да, я уже давно нормальных проектов не кодирую. Но это мне никак не мешает разбиратся в теории. Жаль. я бы посмотрел не "в теории". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2007, 15:59:14 |
|
||
|
WEB интерфейс
|
|||
|---|---|---|---|
|
#18+
expp BlazkowiczЯ нигде не говорил про полный вынос локов в приложение. Я говорил что, вынося локи из базы, можно получать прирост производительности. позволю себе небольшой пук .... нужно просто разделять транзакции и локи уровня базы и уровня приложения. это совершенно разные понятия. разумеется можно реализовывать длинную транзакцию уровня приложения с помощью пессимистической блокировки FOR UPDATE.. но какой это сакс не мне вам рассказывать. гораздо эффективнее использовать оптимистическую "блокировку" с помощью колонок версий UPDATE ... WHERE verson=223 . но нужно понимать что работает это только потому что база обеспечивает READCOMMITED посредством своих лочек. т.е. когда мы флашим хибер сессию в кучу таких оптимистичных апдейтов. проапдейченные строчки блокируются - селекты других транзакций на них просто повисают. если один из апдейтов не проходит - версия поменялась т.е. имеем ноль проапдейченных строчек, получаем эксепшн и откатываем всё к чертям. тем самым имеем атомарный и целостный накат длинющей транзакции приложения очень дёшево и эффективно. это мне кажется более точная формулировка "выноса локов..." ну а организация таблички блокировок ("пессимизм своими руками") приводит к ботлнеку и куче висящих селектов. но имхо лучше for updateа Как реагирует хибер когда мы закрыли сессиюь и открыли новою. но песемизм хотим реализовать на старой сесии(соответственно старой версии). P.S. Оптимизм своими ручками реализовать сложно. Напрактитике кто то так делал были ли траблы. Скажем есть поле update_lock_time. Если оно null то устанавлеваем текущую дату. В ином случае оно залочено и ждем. Пока не разлочат. Также проверка на timeout может залочили час назат и упал. P.S.2 Терпеть не могу timeout-ы они гробят стабильность и производительность сетей IMHO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2007, 19:55:00 |
|
||
|
WEB интерфейс
|
|||
|---|---|---|---|
|
#18+
pamirСамый прикол в том, что все бизнес-операции можно оборачивать в хранимые процедуры. И тогда для клиентского приложения, будь он хоть свинг, хоть си-шарп, будет существовать только вызов одной или нескольких хранимок CRUID, так и сделано, тока вот в делфи конект держится и все селекты for update будут до тех пор пока в сессии я не скажу коммит. Открылась формачка редактирования в еёшних полях сселктились данный с for update и до тех пор пока пока я не нажму кнопочку сохранить они будут залочены. С вебом не получается так, хтмлька сгенерилась и сессия закрылась. Есть среда разработки Jdeveloper, я две недели потратил на то чтобы разобраться с еёшними BC (ViewObject, EntityObject). Тас всё нормально сделано, гдето внутрях эти сессии держутся но вот тока слепить более менее приличный интерфейс с этими компонентами не получается. А если появились какие либо изменения в структуре таблиц то это вообще писец. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 08:13:57 |
|
||
|
WEB интерфейс
|
|||
|---|---|---|---|
|
#18+
Чендлер pamirСамый прикол в том, что все бизнес-операции можно оборачивать в хранимые процедуры. И тогда для клиентского приложения, будь он хоть свинг, хоть си-шарп, будет существовать только вызов одной или нескольких хранимок CRUID, так и сделано, тока вот в делфи конект держится и все селекты for update будут до тех пор пока в сессии я не скажу коммит. Открылась формачка редактирования в еёшних полях сселктились данный с for update и до тех пор пока пока я не нажму кнопочку сохранить они будут залочены. С вебом не получается так, хтмлька сгенерилась и сессия закрылась. Есть среда разработки Jdeveloper, я две недели потратил на то чтобы разобраться с еёшними BC (ViewObject, EntityObject). Тас всё нормально сделано, гдето внутрях эти сессии держутся но вот тока слепить более менее приличный интерфейс с этими компонентами не получается. А если появились какие либо изменения в структуре таблиц то это вообще писец.Естественно, в вебе нужно организовывать оптимистические блокировки. Позволил юзеру редактировать, а при сохранении проверил - не изменил ли кто-то данные. Если изменил - извини, ты слишком долго думал. Тебя опередили. Но это никак не мешает организовать то, что я описал - оборачивание БО в процедуры, что позволяет уйти от привязанности к структуре БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 13:10:29 |
|
||
|
WEB интерфейс
|
|||
|---|---|---|---|
|
#18+
Stub Как реагирует хибер когда мы закрыли сессиюь и открыли новою. но песемизм хотим реализовать на старой сесии(соответственно старой версии). желательно попроще мысли излагать... Хибер не реагирует ни как. это не его собачье дело, при пессимистичном локе он выдаёт SELECT .. FOR UPDATE. дальше всё определяется поведением бд. (лочка висит до конца транзакции) Stub P.S. Оптимизм своими ручками реализовать сложно. Напрактитике кто то так делал были ли траблы. Скажем есть поле update_lock_time. Если оно null то устанавлеваем текущую дату. В ином случае оно залочено и ждем. Пока не разлочат. хибер реализует оптимизм с помощью колонок версий (можно и таймстэмпами) вроде работает. в этом наборе слов, кажется описан принцип реализации пессимистической блокировки своими руками StubТакже проверка на timeout может залочили час назат и упал. P.S.2 Терпеть не могу timeout-ы они гробят стабильность и производительность сетей IMHO. но бывает как-то сказать что подумал, не стало мне ясно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 15:08:48 |
|
||
|
WEB интерфейс
|
|||
|---|---|---|---|
|
#18+
Тьфу оптимизи. Когда использует версию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 16:42:47 |
|
||
|
WEB интерфейс
|
|||
|---|---|---|---|
|
#18+
expp Stub Как реагирует хибер когда мы закрыли сессиюь и открыли новою. но песемизм хотим реализовать на старой сесии(соответственно старой версии). желательно попроще мысли излагать... Хибер не реагирует ни как. это не его собачье дело, при пессимистичном локе он выдаёт SELECT .. FOR UPDATE. дальше всё определяется поведением бд. (лочка висит до конца транзакции) Stub P.S. Оптимизм своими ручками реализовать сложно. Напрактитике кто то так делал были ли траблы. Скажем есть поле update_lock_time. Если оно null то устанавлеваем текущую дату. В ином случае оно залочено и ждем. Пока не разлочат. хибер реализует оптимизм с помощью колонок версий (можно и таймстэмпами) вроде работает. в этом наборе слов, кажется описан принцип реализации пессимистической блокировки своими руками StubТакже проверка на timeout может залочили час назат и упал. P.S.2 Терпеть не могу timeout-ы они гробят стабильность и производительность сетей IMHO. но бывает как-то сказать что подумал, не стало мне ясно Да иммено так. Сорри перепутал термины :-( . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 16:43:25 |
|
||
|
WEB интерфейс
|
|||
|---|---|---|---|
|
#18+
Как хибер будет реагировать на версию(оптимизм) при закрытии сессии. Если сессия закрыветься то и теряються персистентные обьекты с ихними версиями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 16:46:36 |
|
||
|
WEB интерфейс
|
|||
|---|---|---|---|
|
#18+
StubКак хибер будет реагировать на версию(оптимизм) при закрытии сессии. Если сессия закрыветься то и теряються персистентные обьекты с ихними версиями. в этом случае ты держишь вроде как в "detached state" т.е. кладёшь их например в http сессию после закрытия хиберской (лучше конечно использовать хиберсессию в нескольких транзакциях) по сабмиту ты присоединяешь update()ом объедки к новой сессии со старыми значениями версии. т.е. проблемы я не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 16:54:46 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34854659&tid=2144411]: |
0ms |
get settings: |
12ms |
get forum list: |
18ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
47ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 323ms |
| total: | 486ms |

| 0 / 0 |
