Джим Мелтон известен большинству как автор ряда популярных монографий по языку SQL; к тому же он работая в корпорации Oracle, является председателем Подкомитета 32 (SC32) Совместного технического комитета 1 (JTC1) Международной организации по стандартизации (ISO) и Международной электротехнической комиссии (IEC), ответственного, в частности, за поддержку и развитие стандарта языка запросов SQL, входит в состав рабочей группы консорциума W3C по разработке языка запросов Xquery, а также ведет колонку по стандартам в ежеквартальном бюллетене ACM SIGMOD Record.

Назвать Джима Мелтона просто гостем журнала «Открытые Системы», как это мы делаем обычно, было бы не совсем корректно — Джим побывал в России по приглашению московской секции ACM SIGMOD и компании Oracle. Во встрече приняли участие председатель секции ACM SIGMOD Леонид Калиниченко (Институт проблем информатики РАН) и его заместитель Сергей Кузнецов (Институт системного программирования РАН). Ученый секретарь секции Михаил Когаловский (Институт проблем рынка РАН) оказал большую помощь в подготовке нескольких вопросов. (Недавно изданная книга М.Р. Когаловского «Энциклопедии технологий баз данных» окажется полезной тем, кого заинтересует деятельность JTC1, история и состояние стандарта SQL, а также узнать о языке XQuery.) При личной встрече Мелтон оказался скромным интеллигентом в полном смысле этого слова, лишенным какой-либо фанаберии, присущей многим зарубежным и особенно отечественным представителям академического сообщества. К тому же, посвятив много лет SQL, он не стал заложником идеи. Если перефразировать библейскую поговорку, то он исповедует убеждение «Не человек ради SQL, а SQL ради человека», чем явно вызывает раздражение у борцов за чистоту этого языка.

Леонид Черняк: Известно, что принятие новой версии стандарта языка SQL, рабочее название которой SQL:200n, планировалось на 2003 год. Состоится ли это событие? Все ли планировавшиеся новые компоненты языка (SQL/Temporary, SQL/XML и др.) войдут в эту версию? Завершится ли полностью с принятием этой версии проект SQL3?

Джим Мелтон: В 1992 году мы опубликовали первую существенно измененную редакцию SQL. Это случилось три года спустя после предыдущей ревизии, которая была весьма скромной. Затем мы решили готовить следующую редакцию, которая известна как SQL:1999. Она задумывалась как более заметный пересмотр существующего, прежде всего включением объектной технологии. Семь лет могут показаться со стороны очень большим временем для подобной работы, но это не совсем верно, и хотя мы работали очень интенсивно, но все же допустили ряд известных нам ошибок. Редакция SQL:2003 имеет не слишком много новых возможностей, например, введено несколько новых типов данных, но изменения в основной части очень, очень незначительны. Однако за эти годы мы разработали три новые составные части языка SQL. Прежде всего, дополнение для программ и типов Java под названием «Картриджи и методы Java», затем средства для оперативной аналитической обработки OLAP, и, наконец, связка SQL-XML. Разработка этих частей велась параллельно с исправлением замеченных ошибок, но мы, конечно же, прекрасно понимаем, что исправлены не все ошибки в SQL:1999. Надеюсь, необнаруженные ошибки будут исправлены в новой версии стандарта, которая запланирована на 2007 год.

Смею предположить, что исправления не потребуют существенной переработки и нам удастся в большей степени продвинуться в направлении XML. Но не следует забывать о сюрпризах, которые может преподнести рынок, к примеру, пять лет назад никто и не думал про XML, а десять лет назад не было Java. До 2007 года еще остается целых четыре года, кто даст гарантию, что за это время не произойдет ничего существенного? При этом я верю, что развитие SQL не завершено, что у SQL-продуктов большое будущее. Моя компания, а также IBM и Microsoft инвестируют в них значительные средства, часть улучшений преследует цель расширение функциональных возможностей, другие направлены на то, чтобы повысить скорость работы, упростить разработку и управление приложениями. Что же касается SQL:2003, то работа над ним практически завершена, мы закончили содержательную часть и теперь лично передо мной лежит задача оформления ее в виде текста, подготовки документа в формате pdf. Хочется верить, что мои коллеги не внесут заметных изменений, и стандарт будет опубликован до конца этого года.

Леонид Черняк: Кого имеете в виду, когда говорите «мы»?

Джим Мелтон: Мы — это Комитет по стандарту SQL.

Леонид Черняк: Первоначальный стандарт языка SQL определял реляционный язык запросов. Стандарт SQL:1999 воплощает объектно-реляционную модель данных в соответствии с назревшими потребностями практики. Предполагается ли развивать объектные возможности языка в дальнейшем?

Джим Мелтон: Ваш второй вопрос я понимаю так: «Что собственно стандартизуется языком SQL?» Прежде всего, ранние версии языка стандартизировали все то, что может быть представлено реляционной моделью или что может рассматриваться как реляционная модель. Есть небольшие отклонения от чистой реляционной модели, но в целом это именно реляционная модель и мы намереваемся ее завершить. Дело в том, что с тех пор как был опубликован стандарт SQL:1992 произошло много событий, и мы смогли убедиться, что мир сложнее, чем реляционная модель. Мир, повторяю, сложнее любой модели, в том числе и реляционной. Появилось множество типов данных, которые не укладываются в реляционную модель; мы вынуждены адаптировать ее к ним. И я должен сказать, что это движение не стимулируется членами Комитета, которые обсуждают академические проблемы, сидя за столами заседаний. Нас подвигают к этому те компании, где мы работаем. Компании хотят оставаться на плаву, а их деятельность стимулирована, в свою очередь, требованиями потребителей. Те же говорят прямо: «Нам нужна вот такая функциональность, если ее не можете обеспечить вы, то найдутся другие, которые смогут».

Действительно, наша работа подчинена требованиям заказчиков. Например, пользователи говорят, что устали писать на JDBC для доступа к SQL-базам данных. Код поучается слишком длинным, допускается слишком много ошибок. Они хотят иметь встроенный SQL в Java — примерно в том виде, как это было сделано в Коболе. Мы создали стандарт, который реализует эту возможность. Пользователи хотят, чтобы язык Java был реализован в базе данных; мы были вынуждены включить и это. Теперь стандарт позволяет включить классы и методы Java в базу данных и использовать их внутри программ, написанных на Java. Но, увы, это значит, что SQL перестал быть полностью реляционным. Мы добавили объектную функциональность и тем самым привлекли дополнительную аудиторию, ориентированную на объектные технологии.

С добавлением перечисленного казалось, что SQL стал в большей степени приспособленным к современным требованиям окружающего мира. Но тут, как черт из табакерки выскочил язык XML. Он сразу же привлек к себе всеобщее внимание ИТ-специалистов и в очередной раз разрушил сложившуюся стройную картину мира — скорее, даже не разрушил, а создал альтернативную. XML — не изобретение, а отражение объективной реальности, которая ставит специалистов перед проблемой выбора, какую из двух вселенных выбрать «вселенную SQL» или «вселенную XML»? Любой из выборов чреват риском, эти две вселенные SQL и XML связаны не дизъюнкцией, а конъюнкцией, их следует интегрировать. Но эта задача на порядок сложнее, чем интеграция Java в мир SQL. Но я уверен, что наши усилия найти пути к новой интеграции, вполне успешны, хотя миры SQL и XML радикально отличаются. Мы нашли способы для обмена данными между мирами и для управления этим процессом.

Итак, SQL стал уже не столь реляционен, каким он был десять лет назад. Есть ли у него в таком случае будущее? Однозначно — «да», хотя ни я, ни кто другой не может предсказать технологическое будущее даже на ближайшие пять лет. На наших глазах Java и XML не просто перевернули мир, они открыли нам глаза на более сложное устройство мира. Нам нужно научиться отражать эти сложности имеющими в нашем распоряжении средствами. Компьютерные языки, в конечном счете, служат для описания каких-то аспектов реальной жизни. SQL, чтобы сохраниться (точнее, чтобы сохранить бизнес компаний, которые используют его) вынужден обогащаться новыми выразительными возможностями. Моя личная задача — способствовать тому, чтобы мир SQL оставался в соответствии с реальным окружающим миром.

Леонид Черняк: К концу 80-х годов реляционный подход стал доминирующим в разработках систем баз данных. SQL стал наиболее распространенным языком систем баз данных. Однако в настоящее время довольно активно используются объектные СУБД, основанные на языках стандарта ODMG, все более интенсивно разрабатываются и используются XML-ориентированные СУБД. Каково место языка SQL и его роль в этой ситуации?

Джим Мелтон: По существу, вы спрашиваете о связи прошлого с будущим. Примерно с начала 60-х годов использовали либо плоские файлы, либо иерархические базы данных. В середине 80-х обнаружилось несоответствие этих моделей окружающему миру, уложиться в них становилось слишком сложно и трудоемко. Я знаю это неплохо, потому что до перехода на рельсы SQL моя профессиональная задача состояла именно в поиске выхода из того затруднительного положения, в которое попадали пользователи иерархических СУБД. Поверьте, проблем была масса. Работы хватало, ошибки оказывались бесчисленными. Но появился язык SQL, имеющий математическую основу; более того, появилась возможность математически доказать корректность операций. Это понравилось очень многим, и с тех пор и поныне SQL доминирует в области управления данными. У феноменального успеха SQL, как минимум, три основные причины. Во-первых, серьезная математическая платформа, во-вторых, он описывает мир лучше, чем предшествующие технологии, поэтому он стал привлекателен для вложения в него средств, бизнесу SQL больше пришелся по душе, чем ранние технологии работы с данными. И третья причина: SQL удачно соответствует сложившейся образовательной системе, очень быстро сформировались необходимые кадровые ресурсы.

Леонид Черняк: Основы языка SQL были разработаны еще в середине 70-х годов прошлого века корпорацией IBM. Сегодняшний SQL обеспечивает существенно более богатые и развитые возможности моделирования данных и управления данными. Тем не менее, он несет на себе груз прошлого, сдерживающий его развитие. Каковы в связи с этим дальние перспективы языка, какова его дальнейшая судьба?

Джим Мелтон: Безусловно перспективно все, что связано с XML, однако в этом мире нет той математической строгости, которая присуща миру SQL. Более того, можно говорить о неоднозначности: разные люди понимают, казалось бы, одни и те же вещи совершенно по-разному. Такое впечатление, что произошел возврат на пару десятков лет назад, в эпоху сетевых и иерархических баз данных, когда нет возможности строго доказать корректность операций. Строгость SQL была достигнута усилиями нескольких десятков блестяще образованных академических ученых и, надо признать, что табличная модель данных относительно проста. Хотя с XML дело обстоит намного сложнее, решение будет найдено, таковы требования пользователей, интеграция миров тоже не пожелание группы академически настроенных умов, а требование со стороны пользователей, которым нужны надежные механизмы для плавной, но неизбежной миграции в сторону XML. Но будущее туманно, мне проще говорить о прошлом, чем о будущем. Мир существенно изменяется под воздействием «разрушительных» (disruptive) новаций, к их числу относится реляционная модель Кодда. Она позволила заменить базис управления данными с описательного на вычисляемый, позволяющий находить если не оптимальные, то, во всяком случае, наилучшие решения. Это существо SQL, и в этом красота и привлекательность реляционной модели. В своем современном виде язык SQL гораздо богаче, чем в первоначальном состоянии, но на нынешней стадии в нем обнаруживаются универсальные признаки, характерные для любого процесса развития. Когда появляется нечто радикально новое, оно обладает всеми преимуществами и недостатками простоты. Когда новое решение побеждает, начинается его эволюционное развитие со всеми особенностями, вытекающими из этого типа развития. Язык стал более простым в использовании, более управляемым, но при этом обнаружились ошибки, неизбежные для революционных преобразований. Некоторые из них не исправлены до сих пор, например, ошибки связанные с типами «null string» и «no value» (понятно, что строка может не иметь значения, но не быть нулевой). Компании стали вводить собственные типы, не вполне соответствующие стандарту. Как видите, у нас еще много работы по стандартизации, непосредственно связанной с первоосновами языка.

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

Сергей Кузнецов: Недавно Джим Грей из Microsoft сделал заявление о том, что объектно-реляционные технологии появились на свет слишком рано, и пользователи пока не готовы к их восприятию. Пройдет еще лет пять, пока наступит их время. Ваше мнение по этому поводу.

Джим Мелтон: Мы с Джимом давние друзья и знакомы, бог знает, сколько лет. По многим вопросам у нас есть общность во взглядах, а в чем-то мы принципиально расходимся. К тому же не стоит забывать, что Microsoft пока не жалует объектные технологии. Возможно, сейчас они ошибаются, и возможно, они включат в свои продукты объектные возможности когда-то в будущем. Поэтому также возможно, что, говоря о преждевременности и о том, что случится через пять лет, он тоже, возможно, прав. Но это правота, основанная на корпоративной политике. Я занимаю иную позицию, потому что в данном случае стою на стороне пользователей. И на стороне своей компании. Если бы объектно-реляционный подход обнародовали раньше, то, я думаю, мы продали бы больше подобных систем. Пока эти новые подходы используются не так массово, как хотелось бы, скажем, тысячами, а не миллионами пользователей. Я считаю, что постановка вопроса должна быть противоположной: не слишком рано, а слишком поздно. Oracle и IBM мигрируют примерно в одном направлении, Microsoft — несколько в ином. Жизнь покажет, которое из них окажется более верным. Но можете быть уверены, что как только обнаружится подлинное преимущество того или иного направления, пути развития сольются.

Сергей Кузнецов: Крис Дэйт, известный автор книг, посвященных SQL за прошедшие годы, заметно эволюционировал. Раньше он выступал в роли проповедника, а сейчас его взгляды отличаются определенной иронией по отношению к современному SQL. Что думаете об этой трансформации отношения к предмету?

Джим Мелтон: Должен сказать, что мы и с Крисом тоже давние друзья. В области общей технической политики мы с ним абсолютно солидарны, но в отдельных вопросах наши взгляды порой перпендикулярны; наибольшее расхождение именно во взглядах на SQL. Мы отличаемся степенью ортодоксальности, приверженностью реляционной модели, Крис строже в своей вере, чем я. Признаюсь, я в большей степени прагматик. Я считаю, что следует смотреть на то, что хотят люди сегодня, что им потребуется в будущем и давать именно это. Я считаю, что нужна и абсолютно чистая реляционная модель, и ее усовершенствования на объектной основе, и усовершенствования на основе XML. Чистая реляционная модель не может удовлетворить требованиям пользователей, я предпочту испорченную модель, но соответствующую им. Наши дебаты с Крисом были публичными, и аудитория, в основном, принимала мою сторону. Ортодоксам присущи крайности, у них от «любви до ненависти» один шаг. Я же, как представитель компании Oracle не могу позволить себе лично — а компания себе в целом — радикальности во взглядах. Мы не можем сказать нашим пользователям: «С такого-то времени мы ,больше не поддерживаем SQL». Возможные последствия такого гипотетического объявления в комментариях не нуждаются. Крису проще, он не несет на себе груза обязательств. Еще пять лет назад он сказал, что есть венчурный капитал, который будет финансировать его разработку — язык D. С тех пор он менял название языка, но суть не менялась. Потом он сказал, что в Италии есть ученый, который написал программу синтаксического разбора — парсер. Но это только парсер, а не система управления базой данных. Говорилось, что есть еще капитал, готовый развивать СУБД, которая вышибет из бизнеса всех конкурентов, но это было пять лет назад, и с тех пор ничего заметного не произошло. Экономический императив на стороне прагматиков, пуризм стоит слишком дорого.

Леонид Черняк: В последнее время мы стали свидетелями заметных успехов на стороне производителей постреляционных СУБД, в России успешно продвигается Cache от Intersystems, появляются синтаксически-ориентированные СУБД, существует огромное количество университетских разработок в области XML-СУБД. Что вы можете сказать об альтернативных моделях?

Джим Мелтон: Мир систем хранения разнообразен. До появления реляционных баз данных были популярны иерархические СУБД, например, IMS, производимая IBM. Хорошее будущее гарантировано СУБД, построенным на XML и объектно-ориентированным СУБД. Но надо учитывать специфику. Когда говорят, что IMS умерла, то это надо понимать примерно так же, как утверждение, что Кобол мертв, но приложения то работают до сих пор. Да, будущее за XML, многие делают «чистые» XML-СУБД, но, по моему мнению, их ожидает разочарование: рынок не откажется от SQL, ему нужна интеграция XML и SQL. Такого же мнения придерживается и моя компания, но кто знает, возможно, правы окажутся оппоненты. Вопрос не в том, кто «правее», сейчас важнее научиться тому, как обеспечить взаимодействие между двумя мирами XML и SQL. Может быть, через двадцать лет SQL умрет, но он умрет только внешне, как Кобол, продолжая внутреннюю жизнь еще многие годы. Что касается объектных баз данных, но даже 10-15 лет назад нам говорили о преимуществах объектной модели перед реляционной. Однако жизнь все же показала подлинную расстановку сил. Суммарный рынок объектных СУБД не превышает нескольких сотен миллионов долларов, на рынке осталось всего две компании. Причина в удобстве SQL и в том, что SQL вобрал в себя объектные средства. Вообще говоря, следует разделять разработки, направленные на удовлетворение академических интересов от тех, которые делаются для массового пользователя. Среди первых я пока не вижу альтернатив SQL или чего-то такого, что следовало бы немедленно импортировать в SQL.

Леонид Черняк: Джим, что вы можете сказать о другой альтернативе, более радикальной? Я имею в виду такие направления, как вычисления, управляемые данными, и маршрутизацию данных.

Джим Мелтон: Я оцениваю перспективность этих направлений очень высоко. Полагаю, архитекторы Oracle держат их в зоне своего внимания, но не рассматривают как нечто, что должно быть реализовано завтра. Судя по всему, есть какие-то компоненты, которые должны быть инкорпорированы раньше других. Архитектура, управляемая данными, нуждается в более строгом описании, чтобы стало возможным вписать ее в традиционный мир вычисления. Если это удастся, могу вас уверить, такие компании, как Oracle и Microsoft, не останутся в стороне.

Леонид Калиниченко: Идя по пути снизу вверх, стандарт SQL достиг состояния серьезной зрелости. Сейчас вы продолжаете ту же линию развития снизу вверх, обогащая стандарт дополнительными средствами, например, тем же XML. Не стоит ли использовать достигнутый уровень зрелости и продолжить развитие в направлении сверху вниз, построить более элегантную модель, которая включала бы в себя все эти новации?

Джим Мелтон: Построение такого рода модели есть вопрос ресурсов. Нужно признать, что мир движется в направлении XML, и у нас нет иного выхода, как идти снизу вверх, если мы хотим оставаться реалистами. Интеграцию XML и SQL делают инженеры. Вот если бы собрались исследователи и занялись моделью сверху вниз, то тогда, может быть, что-нибудь и получилось. Но это абстракция, мы знаем, что исследователи работают слишком медленно. Пока они ищут полное решение, рынок уходит вперед. Да, решения, принимаемые инженерами, могут оказаться верными или не верными. В этом риск, но это риск развития. Никто не даст нам времени на ожидание универсального решения в виде «суперреляционной» модели. Поставленные лично передо мной задачи предполагают поиск решений и включение их в стандарты сегодня, а не в неопределенном будущем. Есть такая поговорка в английском языке: «Если вы рисуете ни кошку, ни собаку, ни корову, то вы рисуете монстра». Лучше делать хоть что-то, но конкретное, тогда не выйдет монстр.

Логичный вывод

Прелесть личного общения в том, что оно вытесняет мифологию и все расставляет по своим естественным местам. Оказывается, отношение к вопросам стандартизации инвариантно по времени, месту и даже социальной системе. Когда-то во времена развитого социализма на том «почтовом ящике», где мне пришлось работать, был мудрый начальник отдела норм и стандартов. Однажды, мы, несколько инженеров, готовые к отказу, пришли к нему с желанием объяснить, что по объективным причинам не можем уложиться в требования ГОСТа. Он посмотрел на нас внимательно и произнес актуальную по тем временам фразу: «Молодые люди, как вы думаете, если в колбасе количество белка не соответствует стандарту, то добавляют мясо или меняют стандарт?» Если пользователям нужны Java и XML, они войдут в стандарт SQL, а если понадобится что-то еще, то и оно тоже.


Мы отлично понимали несовершенство результатов, но рынок требовал появление нового стандарта. В итоге появился SQL:1999. Из-за вынужденной поспешности количество ошибок оказалось слишком велико, и это побудило нас к созданию новой версии, известной как SQL:2003.

***

Теперь стандарт позволяет включить классы и методы Java в базу данных и использовать их внутри программ, написанных на Java. Но, увы, это значит, что SQL перестал быть полностью реляционным. Мы добавили объектную функциональность и тем самым привлекли дополнительную аудиторию, ориентированную на объектные технологии.

***

Безусловно перспективно все, что связано с XML, однако в этом мире нет той математической строгости, которая присуща миру SQL. Более того, можно говорить о неоднозначности: разные люди понимают, казалось бы, одни и те же вещи совершенно по-разному. Такое впечатление, что произошел возврат на пару десятков лет назад, в эпоху сетевых и иерархических баз данных, когда нет возможности строго доказать корректность операций.