?

Log in

No account? Create an account

Пн, 15 окт, 2012, 01:11
История SQL. 9. System R, Phase Two

Начало: 1. Необходимая предыстория, назад: История SQL. 8. System R, Phase One (RDS).

Несмотря на то, что System R была исследовательским проектом, она использовалась и в реальной работе. Этот период эксплуатации системы — Фаза 2 — продолжался с 1978 по примерно 1979 год.

Первая установка системы произошла в Pratt & Whitney Aircraft. Для производства реактивных двигателей компании требовалась система учета деталей и поставок. Затем систему установили в Upjoin Pharmaceuticals для хранения результатов клинических испытаний медикаментов. Несколько позже система стала применяться в Boeing Aircraft. Кроме внешних заказчиков, System R весьма активно использовалась и внутри IBM для самых разных нужд.

По воспоминаниям участников, основная польза таких внедрений была не столько в отзывах пользователей (к завершению проекта накопилось 160 пожеланий, практически ни одно из которых не было реализовано), сколько в демонстрации IBM важности исследований в области реляционных баз данных. Здесь необходимо кое-что пояснить. Деятельность в IBM разделялась на промышленную (приносящую прибыль) и исследовательскую. Исследовательским проектам всегда было тяжело обратить на себя внимание и пробиться в промышленное производство. В то время, о котором мы говорим, флагманским продуктом IBM была иерархическая СУБД IMS, а основные силы разработки были брошены на очередной грандиозный проект, который должен был стать преемником IMS (имена его часто менялись: сначала VSS, потом DS/1, затем Eagle и, наконец, Ampersand). Попытки System R обратить на себя внимание привели лишь к тому, что поддержку реляционных баз данных добавили в спецификацию новой системы.

Помимо трудностей выхода на рынок, исследовательским проектам часто приходилось конкурировать и друг с другом. В этой связи интересно вспомнить эпизод, известный как «перестрелка в O.K. Corral». Одновременно с System R в IBM была другая команда, которая под руководством Мойше Злуфа также занималась реляционными базами. Они разработали визуальный язык запросов Query-by-Example, в котором пользователь показывал пример того, что он хочет получить, а система производила выборку данных по аналогии (те, кто знаком с Oracle Forms, имеют об этом некоторое представление, хотя QBE был существенно богаче). Периодически возникал вопрос, зачем нужны две группы, и в итоге было решено провести сравнение двух систем на производительность. На одной машине установили и System R, и QBE, затем одновременно запустили один и тот же запрос. Через некоторое время System R выдала результат, а QBE упала с ошибкой; это и решило исход перестрелки. А на дверь терминального зала повесили табличку «The O.K. Corral» в честь популярного в то время вестерна. Конечно, состязание было не вполне честным: System R изначально проектировалась для производительной многопользовательской работы, в то время как QBE был силен не этим, а своим графическим интерфейсом. Кроме того, на QBE было легко написать простой запрос, но сформулировать сложный запрос было практически невозможно.

Однако реляционная база данных была востребована заказчиками IBM. Причем многие были не готовы покупать самое передовое (и дорогое) оборудование, и были не готовы ждать появления новой реинкарнации IMS. Их вполне устроила бы «небольшая» реляционная СУБД, работающая на мейнфремах средней ценовой категории. Дальше события развивались так. В подразделении IBM в Эндикотте образовалась свободная группа разработчиков, которая не была знакома с базами данных, но — надо же чем-то заниматься — взялась реализовать СУБД. После некоторых колебаний было решено не начинать с нуля, а взять код System R и довести его до промышленного уровня. Вот, например, что вспоминает Брюс Линдсей: Они переписали RDS на PL/S и переименовали модули в соответствии со своими правилами... Помнится, я работал над кодом авторизации на PL/1 и PL/S. C PL/S приходилось тяжеловато, потому что они использовали мнемонические имена — как минимум три символа на мнемонику — и решили, что подходящими будут 01, 02, 03, 04. Хоть они и не добрались до 10, но... В те времена правила именования в IBM были те еще.

Сделаю небольшое отступление о PL/1. В шестидесятых годах число доступных языков программирования уже подбиралось к сотне, причем обычно они были приспособлены для решения задач в какой-то конкретной области. Многим тогда верилось в то, что можно придумать всеобъемлющий универсальный язык, на котором будет удобно решать любые задачи. И вот в 1964 году — угадайте где? конечно же, в IBM! — был придуман и стал активно продвигаться язык PL/1, сплав Фортрана, Кобола и Алгола. Он включал в себя препроцессор, обработчики исключений (например, перед чтением из файла можно сказать ON ENDFILE GO TO ...), множество умолчаний. Неудивительно, что PL/1 получился не только громоздким, но и сложным для понимания, так что со временем универсальный по задумке язык распался на отдельные предметно-ориентированные подмножества. PL/S как раз одно из них, предназначенное для системного программирования.

В программном отношении, при всех ее богатых возможностях, System R не была большой. Компонент RSS был написан на PL/1 и имел размер порядка 35000 строк; RDS состоял из 38000 строк кода на PL/1 и 9000 строк ассемблера. Замечу, что и команда разработчиков состояла в среднем всего из 15 человек, а о качестве их работы говорит хотя бы то, что за все время в системе была обнаружена только 251 ошибка. System R могла работать на IBM System/370 Model 145 с одним мегабайтом оперативной памяти (одна из средних моделей линейки 370).

Итак, компоненты RSS и RDS были взяты командой в Эндикотте практически без функциональных изменений. Получившийся продукт получил имя SQL/DS и был выпущен IBM в 1981 году. Он работал на операционных системах DOS/VSE и VM/CMS и обеспечивал поддержку базы данных размером примерно до гигабайта.

А что же преемник IMS? Как и практически все грандиозные начинания, его ждала неудача. Слово Джону Науману, одному из менеджеров проекта: Мы работали в Санта-Терезе примерно год и регулярно собирались для обсуждения спецификации. На самом деле мы работали над ней еще в Пало-Альто, так что прошло даже больше года. И собрания обычно проходили в обсуждении висячих строк. Вот была тема для разговоров: «На этой странице осталась висячая строка, надо бы поправить». Тут я и подумал, что так дело не пойдет, что проект обречен.

Стоит заметить, что в 1978 году System R заинтересовался Ларри Эллисон, благо все исследовательские материалы свободно публиковались и были доступны, а в следующем году уже был выпущен Оракл — первая коммерческая реализация реляционной СУБД. Майкл Блазген увидел Оракл на какой-то конференции и Ларри устроил для него небольшую демонстрацию: Оно работало быстро. Он загрузил базу данных, выполнил запрос, затем обновление, все за несколько секунд. Там было строк пятьсот, и база загружалась мгновенно... Больше всего меня поразило, что это работало на маленькой PDP-11 размером с картонную коробку. System R в то время работала на IBM 168. Сейчас-то 486DX2 сравнится с ней по мощности, а тогда это была огромная машина, занимавшая большую комнату... И я подумал: «Просто, быстро, дешево. Люди будут это покупать».

Такой интерес к реляционным технологиям подтолкнул IBM к действиям. Было принято решение выбросить все иерархическое наследие и заняться исключительно реляционной базой данных, но крупного масштаба, в отличие от среднеуровневой SQL/DS. На этот раз код был переписан с нуля, но вдохновение разработчики из Санта-Терезы черпали снова в System R. Если бы мы не имели код System R, я думаю, мы бы не выпустили DB2 Release 1 — вспоминает Жозефина Ченг. Первые заказчики увидели DB2 в 1982 году, а официальный релиз был объявлен в 1983. SQL/DS некоторое время существовал параллельно с DB2, а в 90-х годах был переименован в DB2 для платформ VSE и VM.

Таким образом, только код System R превратился в один продукт и оказал огромное влияние на другой, а уж на сколько СУБД оказали влияние идеи System R, наверное, никто не скажет.

Продолжение следует: 10. Oracle.

Почитать и посмотреть:

Пн, 15 окт, 2012 08:05 (UTC)
laskavy

Рассказ получает твёрдую оценку „отлично!“ в категории „живо о мёртвом“, или „мокро о сухом“.