Вьетнам компьютерной науки
Тед Ньюард
Пересказ: Сергей Кузнецов
Оригинал: Ted Neward, The Vietnam of Computer Science, June 26, 2006
Мне не доводилось профессионально заниматься вопросами объектно-реляционного отображения, и я всегда довольно скептически относился к попыткам наладить «бесшовные» переходники между программами на объектно-ориентированных языках и SQL-ориентированными СУБД. По сути дела, решением проблемы «потери соответствия» (impedance mismatch) сообщество баз данных занимается больше 20 лет. На этом пути возникли объектно-ориентированные базы данных, появились объектные расширения SQL, возник «Третий манифест» Дейта и Дарвена. В каждом из этих подходов предлагается свое решение проблемы, но, как видно, ни одно из решений не удовлетворяет разработчиков приложений с использованием объектно-ориентированных языков программирования. Мне трудно судить, с чем это связано. Может быть, причиной является историческое взаимное непонимание разработчиков технологии баз данных и разработчиков приложений: первые считают, что они делают все возможное для вторых, а вторые полагают, что первые работают для собственного удовольствия. Возможно, причина состоит в отсутствии единой для всех объектно-ориентированных языков объектной модели.
Во всяком случае, в этой краткой вводной заметке я не берусь провести какой-либо содержательный анализ этих причин. Тем не менее, технология объектно-ориентированного отображения жива и развивается. И в этом отношении статья Теда Ньюворда, пересказ которой вам предлагается, кажется мне очень полезной. Я согласен с автором, что при применении объектно-реляционного отображения нельзя рассчитывать на наличие единого чудотворного решения. Автор приводит примеры проблем, которые трудно решаются по одиночке и, скорее всего, в принципе не поддаются совместному решению.
Хочу также отметить, что этот материал не является законченной научной или технической статьей. Автор написал его для своего блога и сам называет это эссе.
Поэтому прошу снисходительно отнестись к некоторой нестрогости материала, неточностям в терминологии и т.д. Я не стремился к переработке авторского материала, а лишь изложил его по-русски. Надеюсь, что это принесет пользу.
Сергей Кузнецов
(Два года тому назад на конференции TechEd компании Microsoft в Сан-Диего на мероприятии, посвященном закрытию конференции, я втянулся в беседу с Гарри Паерсоном (Harry Pierson) и Клеменсом Вастерсом (Clemens Vasters). Как обычно, когда мы собираемся втроем, обсуждались, прежде всего, архитектурные темы. Вокруг нас собралась толпа, и беседа превратилась в импровизированную сессию «люди одного полета» (birds-of-a-feather). Разговор зашел об объектно-реляционном отображении, и именно там и тогда я впервые произнес фразу «Объектно-ориентированное отображение – это Вьетнам компьютерной науки». Впоследствии ко мне поступили многочисленные просьбы расширить обсуждение этого утверждения. Недавнее объявление компании Microsoft относительно «поддержки сущностей» и появление Java Persistence API как замены и EJB Entity Beans, и JDO убедили меня в том, что действительно пришло время сделать это.)
Ни один из вооруженных конфликтов не мучил американских военных так, как Вьетнам. В создании наиболее решающей поворотной точки в современной американской истории объединилось так много разнородных элементов, что непрофессионалу просто невозможно во всех них разобраться. И все же история Вьетнамской войны, по существу, характеризуется следующим: Соединенные Штаты начали военный проект при наличии неясных и противоречивых целей и быстро увязли в трясине, которая не только погубила два правительства (одно законным образом, другое – под давлением армии), но также оставила глубокий след в американской военной доктрине на следующие два десятилетия (как минимум).
Хотя это звучит банально, но объектно-реляционное отображение является Вьетнамом компьютерной науки. Это болото, в которое легко войти, но чем дальше, тем труднее продвигаться, и вскоре путники бредут, не видя никаких вешек, не зная своих шансов на успех и не имея никакой стратегии для выхода из болота.