Да кто бы спорил, что жизнь сложна. Но. Непредвиденная каскадная зависимость обычно вскрывает противоречие в описании желаемого поведения. В то время как общая проверка имеет тенденцию к заметанию его под ковер и выдаче неправильного результата. Как рассказывал в байке проф. Кобельков, читавший нам вычметоды, "существуют методы, которые сходятся даже если задача не имеет решения"...
Хотя, конечно, отловить тот момент, когда зависимости перестают быть локальными, надо. Скажем, задача "поддерживать в синхронизации значения в рублях, долларах и евро сообразно изменениям, внесенным человеком где угодно" - она еще локальна, но уже с трудом берется триггером базы данных (информации в него передается маловато) и уж точно не берется триггерами бездумно. Впрочем, глобальной проверкой она и подавно бездумно не берется.
Кстати, подумалось еще и про блокировки. Да, с виду кажется, что правильный вариант - б). Но на практике, конечно, выяснится, что реальная толстая база данных таки блокируется на время, недопустимо большое для блокировки интерфейса - и вот тут начнется... И чтобы тут не началось, надо продумывать раздельные блокировки заранее. Благо алгоритм предотвращения дедлоков - он тупой, только дисциплины требует. А так даже автоматизировать можно...
И кстати, аналогия из реальной жизни тут реально хороша, если вдуматься. Совмещенный санузел, наша прелесссть... Попробуйте пописать, когда надо бежать на работу, а теща принимает душ...
no subject
Date: Sunday, 13 September 2009 13:00 (UTC)Хотя, конечно, отловить тот момент, когда зависимости перестают быть локальными, надо. Скажем, задача "поддерживать в синхронизации значения в рублях, долларах и евро сообразно изменениям, внесенным человеком где угодно" - она еще локальна, но уже с трудом берется триггером базы данных (информации в него передается маловато) и уж точно не берется триггерами бездумно. Впрочем, глобальной проверкой она и подавно бездумно не берется.
Кстати, подумалось еще и про блокировки. Да, с виду кажется, что правильный вариант - б). Но на практике, конечно, выяснится, что реальная толстая база данных таки блокируется на время, недопустимо большое для блокировки интерфейса - и вот тут начнется... И чтобы тут не началось, надо продумывать раздельные блокировки заранее. Благо алгоритм предотвращения дедлоков - он тупой, только дисциплины требует. А так даже автоматизировать можно...
И кстати, аналогия из реальной жизни тут реально хороша, если вдуматься. Совмещенный санузел, наша прелесссть... Попробуйте пописать, когда надо бежать на работу, а теща принимает душ...