metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2009-04-28 12:15 pm

Опять же на тему "готовых" решений

В последних постах [livejournal.com profile] yakov_sirotkin про очередь асинхронной обработки задач упоминается, почему они отказались от "готового" решения в виде Oracle AQ: это дело есть только в определенных Edition оракла и при тестировании у них возникли какие-то баги в очередях.

А у меня в двух проектах есть такие задачи, с обработкой очередей. И вот я сразу себе представляю - приезжаем ставить софт, клиент сказал, что у него "есть Оракл", а по приезде оказывается что это Express Edition, а DBA, которые в случае глюков будут разбираться в них, вообще нет. "Сушите весла."

То же самое касается практически всех "готовых" решений для сложных задач, входящих в состав СУБД, ОС или там еще чего-нибудь инфраструктурного. Как только принято решение использовать что-то более сложное, чем базовые функции - с этой системы ты уже никуда не уйдешь и нужно изучать ее "вглубь" и надеятся, что в следующих релизах этот функционал не выкинут, не изменят условия лицензирования, и что он будет работать как надо в других окружениях, и что будет достаточное количество людей, его использующих, чтобы было с кем посоветоваться.

[identity profile] alexshubert.livejournal.com 2009-04-30 05:48 am (UTC)(link)
пока процесс не завершился другие не могут делать что-то пересекающееся
меж тем на дворе шел 2009 год, версионность и рота красногвардейцев.

[identity profile] alexshubert.livejournal.com 2009-04-30 05:50 am (UTC)(link)
блокировка этой сущности по которой остаток на время операции будет.
Не будет. Допустим,я не планирую вообще что-либо блокировать. Я пускаю снэпшот, читаю и правлю. На дедлоке вызванном конкурирующим изменением, просто перечитываю. При огромной необходимости, могу запулить запрет версий и добиться именно сводобного доступа. или запустить транзакцию с таймаутом в минуту. Не успел - роллбэк и освобождение.

[identity profile] alexshubert.livejournal.com 2009-04-30 05:51 am (UTC)(link)
Read commited здесь недостаточен.
да ну. no rec version + timeout

[identity profile] alexshubert.livejournal.com 2009-04-30 05:57 am (UTC)(link)
Во-первых, рекомендую почитать про версионные СУБД, чтобы не путать термины.
об чем вы хотели перетереть за верисонные субд?

Попросите их рассказать, как они еб.. мучились с этими висящими блокировками, если одно из приложений падало.
я думаю, не стоит. Сейчас, как минимум, не 1990 и никто в продакшн систему такой архитектуры не пустит.

то значит блокировка имеет место быть.
Вы уверены, что вы девелопер? Чем надо руководствоваться, чтобы пустить транзакцию с wait, мне понять затруднительно.

В6четвертых, почитайте матчасть по уровням изоляции и попытайтесь понять, чем логическая изоляция отличается от физических блокировок.
Простите, но таки чем? Таки где вы видели "физическую" блокировку. Select with lock / prot.edit?

[identity profile] alexclear.livejournal.com 2009-04-30 07:35 am (UTC)(link)
Ну да, Hibernate/NHibernate ровно так и делает.

[identity profile] metaclass.livejournal.com 2009-05-01 07:26 am (UTC)(link)
Вот, кстати, я такую задачу в именно таком виде и не решил. Если заблокироваться на одной записи еще куда ни шло, то заблокироваться по принципу "все записи подпадающие под условие на аналитику" - что-то ничего хорошего из этого не вышло.

[identity profile] metaclass.livejournal.com 2009-05-01 07:29 am (UTC)(link)
Если мы кэшируем остатки на начало рабочих периодов (и текущий) для ускорения расчетов(фактически мемоизация результатов агрегационных запросов) - то можно как раз на этих остатках и хранить версию/таймштамп.
У меня как раз висит подобная задача, нужно будет ради интереса спроектировать ее с таким механизмом.

[identity profile] metaclass.livejournal.com 2009-05-01 07:37 am (UTC)(link)
Что-то меня по ссылке таблицы некоторые смущают, а именно колонки типа u1-u13.
Раскладывание аналитики заранее в столбцы конечно упрощает и ускоряет работу, но плохо совместимо с реляционной моделью данных.

[identity profile] vp.livejournal.com 2009-05-01 12:03 pm (UTC)(link)
Вот, очень грамотно сформулированная отмазка :) Я тоже так говорю :)

[identity profile] metaclass.livejournal.com 2009-05-01 02:36 pm (UTC)(link)
А, точно, нежелательно ж нарушить инвариант на любой момент учетного периода.

Page 3 of 3