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

       

Проблема двойной схемы


К проблеме владения схемой примыкает еще одна родственная проблема, состоящая в том, что в решении ОР-отображения метаданные системы, по сути, сохраняются в двух разных местах: в схеме базы данных и в объектной модели (если угодно, другой схеме, выраженной средствами Jave или C#, а не DDL). При обновлении или рефакторинге одной схемы, вероятно, требуются аналогичные действия над другой схемой. Рефакторинг кода для приведения его в соответствие изменениям схемы базы данных принято считать более простым способом – при рефакторинге базы данных часто требуется какая-либо миграция и/или адаптация данных, уже присутствующих в базе данных, в то время как для кода такое требование отсутствует. (Здесь полагается, что объекты являются недолговечными, исчезающими при завершении процесса, в котором они были порождены. Если бы объекты сохранялись в некоторой форме, позволяющей им продолжать существовать вне выполняемого процесса, например, в сериализованной форме, записанной на диск, то рефакторинг объектов был бы настолько же проблематичным.)

Более важно то, что, в то время как код нередко разрабатывается для использования в единственном приложении, экземпляры баз данных часто используются в более чем одном приложении, и для компаний часто неприемлемо инициировать масштабный рефакторинг кода, поскольку при рефакторинге одного приложения потребуется аналогичный рефакторинг других приложений, вызываемый изменениями схемы базы данных. В результате по мере роста системы с течением времени на разработчиков оказывается все возрастающее давление, вынуждающее их «отключить» объектную модель от схемы базы данных, чтобы при изменении схемы не требовался аналогичный рефакторинг объектной модели и наоборот. В некоторых случаях, в которых ОР-отображение не допускает такого отключения, для приложения может потребоваться полностью индивидуальный экземпляр базы данных с точной схемой, в расчете на которую было создано решение ОР-отображения. Это приводит к созданию еще одного бункера данных в IT-среде, которой свойственно стремление к сокращению числа таких бункеров.



Содержание раздела