Классика баз данных - статьи



         

Проблема механизма выборки данных - часть 3


Кроме этого, имеется более тонкая проблема: в надежде на дисциплину разработчиков как имя таблицы (PERSON), так и имя столбца в критерии (PERSON.LAST_NAME) представляются в виде стандартных строк символов, принимаемых в том виде, как они задаются разработчиком. Это приводит к тому, что до времени выполнения объектной системы не может быть произведена какая-либо проверка правильности запросов. Это является классической проблемой программирования, ошибкой «толстых пальцев», которая выражается в том, что запрос направляется не к желаемой таблице PERSON, а к какой-то другой таблице PRESON. Хотя эта ошибка будет быстро обнаружена при тестировании соответствующего компонента совместно с реальным экземпляром базы данных, это предполагает наличие двух обстоятельств – то, что разработчики добросовестно относятся к тестированию компонентов, и то, что тестирование компонентов производится с использованием реальной базы данных. Хотя первая ситуация становится более или менее гарантированной по мере того, как все больше разработчиков становится «тест-инфицированными» (следуя терминологии Гаммы и Бека, Erich Gamma, Kent Beck), возможность наличия второго обстоятельства все еще является предметом обсуждений, поскольку налаживание и разборка экземпляра базы данных, пригодного для тестирования компонентов, остается трудным делом. (Хотя имеется несколько способов преодоления этой проблемы, как кажется, на практике они используются незначительно.)

Также имеется та проблема, что от разработчиков требуется большее понимание логического (или физического) представления данных. Вместо того чтобы просто сосредоточиться на том, как объекты связаны между собой (через простые ассоциации, такие как массивы или коллекции экземпляров), разработчику теперь требуется больше знать о том, как объекты хранятся, что делает систему более уязвимой к изменениям схемы базы данных. Эту проблему иногда можно обойти за счет применения гибридного подхода, при котором система берет на себя ответственность за интерпретацию ассоциаций, и разработчик может писать примерно следующее:




Содержание  Назад  Вперед