http://besm6.livejournal.com/ ([identity profile] besm6.livejournal.com) wrote in [personal profile] andrzejn 2009-09-13 01:00 pm (UTC)

Да кто бы спорил, что жизнь сложна. Но. Непредвиденная каскадная зависимость обычно вскрывает противоречие в описании желаемого поведения. В то время как общая проверка имеет тенденцию к заметанию его под ковер и выдаче неправильного результата. Как рассказывал в байке проф. Кобельков, читавший нам вычметоды, "существуют методы, которые сходятся даже если задача не имеет решения"...

Хотя, конечно, отловить тот момент, когда зависимости перестают быть локальными, надо. Скажем, задача "поддерживать в синхронизации значения в рублях, долларах и евро сообразно изменениям, внесенным человеком где угодно" - она еще локальна, но уже с трудом берется триггером базы данных (информации в него передается маловато) и уж точно не берется триггерами бездумно. Впрочем, глобальной проверкой она и подавно бездумно не берется.

Кстати, подумалось еще и про блокировки. Да, с виду кажется, что правильный вариант - б). Но на практике, конечно, выяснится, что реальная толстая база данных таки блокируется на время, недопустимо большое для блокировки интерфейса - и вот тут начнется... И чтобы тут не началось, надо продумывать раздельные блокировки заранее. Благо алгоритм предотвращения дедлоков - он тупой, только дисциплины требует. А так даже автоматизировать можно...

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

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
No Subject Icon Selected
More info about formatting