В России Oracle появилась 20 лет назад. Те представители советского программистского сообщества, которым посчастливилось в 1983-1984 годах начать работать с первыми экземплярами Oracle, попадавшими в нашу страну не вполне легальными путями, остались верны этой системе на всю жизнь. Им и предоставим слово.

Юрий Сайгин, генеральный директор компании «РДТех»:

В 1976 году, после окончания Физтеха, я попал в Институт физики высоких энергий в Протвино, в те годы бывший самым крупным компьютерным центром в Советском Союзе, где использовалась современная вычислительная техника — ICL, затем VAX, вторая в мире машина DEC-10. Вычислительные задачи требовали большой и квалифицированной команды программистов, которые разрабатывали операционные системы, трансляторы, другие системные и прикладные программы.

В Протвино находился самый большой ускоритель в мире. Шесть раз в год проводились эксперименты, в ходе которых накапливались огромные объемы информации. Ее необходимо было обрабатывать и хранить. Встал вопрос о выборе СУБД. В ИФВЭ в то время уже использовались IMS, Adabas и другие системы. В 1984 году у нас появилась Oracle4 для VAX/VMS. На Oracle были переведены все приложения, от бухгалтерских систем до систем управления ускорителем. В институте число пользователей Oracle достигало 100 человек. Кроме нас, сильная команда «ораклистов» сформировалась в Москве во ВНИИСИ — позднее она составила ядро компании ФОРС.

Юрий Сайгин: «Так получилось, что IBM в физических лабораториях проиграла в свое время DEC. Все физические лаборатории в мире работают в кооперации и поэтому стараются стандартизовать свои решения, чтобы облегчить обмен информацией и программами. А коль скоро наши коллеги на Западе выбрали VAX, то эту технику использовали и мы. У них появилась СУБД Oracle, и вслед за ними ее взяли на вооружение и в Протвино»

В Oracle все построено на привычном для математиков аппарате реляционной алгебры; этим, собственно, СУБД и привлекла тогдашних программистов всех стран. Хотя с точки зрения производительности и надежности она уступала традиционным сетевым и иерархическим СУБД, в то время у нас мало кто думал о производительности. Даже жаль, что следующие поколения программистов в таком «инкубаторе» жить не смогут — когда можно писать на тех языках, которые тебе нравятся, заниматься тем, что тебе интересно.

Oracle была простой и естественной системой. Безусловно, были ошибки, с которыми мы пытались бороться, но тем не менее она работала так, как было написано в документации. Нас никто не заставлял внедрять именно ее; в ИФВЭ продолжали работать и другие системы. Но так получилось, что Oracle естественным образом вытеснила все остальные.

Выбор обусловило и еще одно обстоятельство. Так получилось, что IBM в физических лабораториях проиграла в свое время DEC. Все физические лаборатории в мире работают в кооперации и поэтому стараются стандартизовать свои решения, чтобы облегчить обмен информацией и программами. А коль скоро наши коллеги на Западе выбрали VAX, то эту технику использовали и мы. У них появилась СУБД Oracle, и вслед за ними ее взяли на вооружение и в Протвино.

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

Модификации системы появлялись у нас с частотой перемещения сотрудников ИФВЭ между Протвино и ЦЕРНом, который до сих пор остается одним из самых больших заказчиков Oracle. А наш институт был флагманом отечественного программистского сообщества, в те годы очень дружного. К нам приезжали, переписывали Oracle, брали нашу документацию, и таким образом СУБД распространялась по стране. Поначалу пользователями Oracle в основном были научные организации, поскольку VAX (на первых порах — основная платформа для Oracle) была во всех отношениях дорогой — и по цене, и по уровню специалистов, которые должны ее обслуживать. В середине 80-х появилась группа пользователей Oracle, главной задачей которой стала информационная поддержка. Ее работа была очень важна, ведь официально корпорация Oracle у нас в стране тогда не была представлена, а Internet не существовало. Сейчас группа потеряла актуальность и практически прекратила свое существование; все ее функции реализует сама корпорация и ее партнеры.

Алексей Голосов, генеральный директор холдинга ФОРС:

Мой учитель Михаил Самсонович Цаленко, известный специалист в области теории баз данных, руководил постоянно действовавшим в Москве семинаром «Теория и методология проектирования информационных систем», тридцатилетие которого будет отмечаться этой осенью. Я начал участвовать в семинаре Цаленко в 1976 году, еще будучи студентом, а затем привлек туда своих коллег по ВНИИ системных исследований, куда пришел работать в начале 80-х.

ВНИИСИ в силу ряда причин был привилегированным заведением и всегда обладал очень хорошей технической базой. В институте работало много талантливых ученых. Многие молодые люди, пришедшие в институт в конце 70-х, сегодня стали известными бизнесменами, общественными деятелями. В те годы в институте развивались два направления, связанные с разработками в области баз данных. Отдел Владимира Львовича Арлазарова занимался созданием известной в то время системы ИНЭС, а отдел системного моделирования (его возглавлял Виктор Арчилович Геловани) одним из первых в стране стал работать с машинами DEC, которые использовались для задач системного моделирования, требовавших обработки очень больших массивов данных. Одним из основных проектов было создание системы моделирования процессов глобального развития.

В 1983 году встал вопрос о переходе со старой СУБД DBMS 11, основанной на CODASYL. Для нас тогда уже было очевидно, что будущее за реляционными базами данных. Команда Арлазарова очень критиковала нас за приверженность этому подходу, однако мы твердо решили выбрать реляционную СУБД и благодаря усилиям Геловани сумели этот выбор осуществить. В значительной степени на наше решение повлияла статья в журнале Datamation, где проводилось сравнение появившихся тогда на рынке систем. Все они носили экспериментальный характер. Основное влияние на эту область оказал проект System R. На его основе в IBM были разработаны две СУБД — SQL/DS и DB2. По описанию этого проекта Ларри Эллисон со своими друзьями создал Oracle. Кроме того, существовала университетская система Ingres.

Надо было выбирать. Известны две версии того, как произошел этот выбор. Одна — красивая, свидетельствующая о нашем глубоком уме и дальновидности. Вторая, более правдивая, состоит в том, что у нас был только компьютер VAX. Поэтому вариант IBM автоматически отпадал. По ряду причин вариант Ingres нас тоже не устроил, оставалась СУБД Oracle.

Расскажу и «красивую» версию. На тот момент велась серьезная борьба между языками SQL и Quel. Первый шел от IBM, а второй — от Ingres, тоже очень хорошей системы. Но вопрос состоял в том, что индустрия возьмет в качестве стандарта. Влияние IBM было очень велико. Это означало, что SQL станет стандартом на долгие годы. Так и произошло. В результате Ingres, несмотря на целый ряд интересных решений, оказалась на обочине. Но, по правде сказать, тогда мы мало руководствовались подобными соображениями. Мы были академическими людьми и не очень задумывались о проблемах бизнеса, нам нужно было решать свои задачи.

Итак, мы выбрали Oracle. В 1983 году у нас появилась эта система. Конечно, поставка была неофициальная. Надо признаться, что на момент появления у нас система (в это время она переходила со второй на третью версию) была еще достаточно «сырой», но благодаря таким умельцам, как Дмитрий Безруков, удавалось решить многие проблемы. Он занимался локализацией, технической поддержкой и обслуживанием Oracle. Мы внедрили систему в ряде проектов, сумев соединить в них хорошую теоретическую подготовку в области баз данных с солидным практическим опытом работы.

Круг решавшихся на Oracle задач был широк — от простых, наподобие кадровой системы для ВНИИСИ, до весьма масштабных, таких как моделирование процессов глобального развития. При решении последней задачи не было известно заранее, с какими объектами надо работать. Данные поступали с информационных лент, для которых можно было выделить типы запросов, но нельзя было предсказать, с какими объектами они будут работать. Поскольку нельзя было каждый день менять схему базы данных, пришлось подняться на уровень выше — создать метабазу. Так возникла довольно сложная конструкция, что могло отрицательно сказаться на производительности. Приходилось искать компромисс. Была придумана специальная технология, которая позволила реализовать этот проект на Oracle. Примерно в это же время СУБД Oracle появилась в Институте физики высоких энергий в Протвино, с которым нас связывали дружеские отношения. Тем или иным способом доступ к Oracle получили и ряд других организаций. Кроме того, как это было принято в советские времена, появился отечественный вариант системы под названием КАРС. Примерно с 1985 года начала функционировать группа пользователей Oracle. Такого доступа к информации, как сейчас, тогда не было, и группа поддерживала среду общения специалистов в области разработки информационных систем. В основном шел обмен информацией о самом продукте, его свойствах и о прикладных системах, которые делались на Oracle. В отечественном сообществе Oracle шел постоянный свободный обмен, никакой конкуренции. Если у нас что-то новое появлялось быстрее, мы могли поделиться с Протвино. А они с нами.

Думаю, в Oracle недооценивают важности распространения нелегальных версий в 80-е годы в нашей стране. Компания совершенно справедливо считает это пиратством. Но одновременно это были и «непрямые инвестиции» в отечественный рынок. И когда корпорация Oracle официально пришла в Россию, здесь уже было много квалифицированных специалистов. И то, что Oracle удалось моментально завоевать наш рынок, в значительной степени связано с тем, что происходило в предыдущее десятилетие. Компания недополучила денег на лицензиях, но зато вышла на подготовленный рынок. В области систем управления базами данных Oracle в России стала почти монокультурой.

Александр Соколов, пенсионер, в прошлом сотрудник ИФВЭ, а затем компании «РДТех»:

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

В середине 80-х я был членом рабочей группы по программному обеспечению мини-ЭВМ при ГКНТ, активно участвовал в организации ежегодной школы по автоматизации научных исследований, проводившейся в Протвино, позднее стал членом рабочей группы по программному обеспечению банков данных. Когда мне в частной беседе предложили дистрибутив Oracle, я с удовольствием принял его, поскольку видел большие перспективы реляционных систем. Локализацией СУБД Oracle я занялся исключительно по личной инициативе. В процессе локализации необходимо было выбрать соответствующую кодировку, адаптировать СУБД для работы с ней, а также подготовить комплект русскоязычной документации.

Александр Соколов: «Ни одна из существовавших на момент начала локализации Oracle кодировок для русского языка этим требованиям не удовлетворяла; пришлось разработать новую. Однако создатели других кодировок не хотели уступать, шли бесконечные дискуссии. Это продолжалось до тех пор, пока в 1988 году предложенную мною кодировку не утвердили в качестве стандарта ISO-8859-5»

Какой должна была быть надлежащая кодировка? Прежде всего такой, чтобы вносить минимум изменений в код локализуемой программы. Из этого вытекали другие требования: не трогать задействованную в системе 7-битовую ANSI-кодировку, а перейти к 8-битовой кодировке алфавитно-цифровой информации; упорядочить русские буквы в соответствии с русским алфавитом, тогда двоичные сортировки не потребуют изменения кода; не использовать в кодировке «лишних» символов, поскольку их попадание в базы данных чревато большими последствиями; наконец, расположить в кодовой таблице русский алфавит так, чтобы он не перекрывал часто используемые управляющие символы и символы псевдографики.

Ни одна из существовавших тогда кодировок для русского языка этим требованиям не удовлетворяла; пришлось разработать новую.

Локализация англоязычных программ, исходный текст которых был недоступен, осуществлялась разными организациями, поэтому на свет появилось несколько похожих кодировок, но не все они полностью отвечали перечисленным требованиям. Скажем, в одну кодировку входила буква «ё», очень опасная в базах данных; в другой кодировке русский алфавит был смещен в конец кодовой таблицы, поэтому код буквы «я» при работе с байтами был равен -1, а это значение, как оказалось, использовалось Oracle Forms в качестве управляющего символа. Однако никто не хотел уступать, шли бесконечные дискуссии.

Это продолжалось до тех пор, пока в 1988 году предложенную мною кодировку не утвердили в качестве стандарта ISO-8859-5. Надо сказать, я кодировку в ISO не направлял. Это сделал ИНЭУМ, в то время официально представлявший СССР в ISO, притом без моего ведома.

После выбора кодировки необходимо было адаптировать программные модули для работы с ней. Эта работа облегчалась тем, что «отцы-основатели» Oracle использовали исключительно язык Си. Кроме того, система поставлялась не в виде двоичных модулей, а в виде объектных файлов и библиотек, которые в процессе инсталляции СУБД компоновались для получения выполнимого кода. Последняя особенность оказалась очень полезной. Компоновщик VAX/VMS позволял создавать map-файлы с информацией о собираемых компонуемых модулях, подпрограммах и внешних символах. Это, наряду с использованием удобного отладчика VAX/VMS, делало работу по адаптации достаточно простой технически, хотя и довольно трудоемкой из-за размеров системы.

При переводе документации обнаружилось, что устоявшаяся русская терминология в области реляционных баз данных отсутствует. Вариантов перевода некоторых терминов или не было вовсе, или они не совсем устраивали. Пришлось «изобретать» новые термины. Так, вместо вариантов перевода термина view — «вид» и «взгляд», которые меня не устроили из-за их «нетехничности», я предложил термин «представление». Перевод термина tablespace словом «раздел» совпадал с устоявшимся переводом английского partition, поэтому был предложен термин «табличное пространство». Эти термины, как и ряд других, в настоящее время широко используются. Не обошлось и без ошибок. Например, термин commit был переведен мной как «завершение транзакции», в то время как завершение транзакции может быть и аварийным. Правильный перевод — «фиксация транзакции». СУБД Oracle, как и другие продукты, непрерывно развивается, в каждой версии появляются новые термины, поэтому терминологическая работа продолжается.

Дмитрий Безруков, директор лаборатории решений, ФОРС:

В 1977 году я начал работать во ВНИИСИ. С техникой у нас было очень хорошо: директор института Джермен Михайлович Гвишиани одновременно являлся заместителем председателя ГКНТ. Я занимался базами данных; на PDP 11/70 у нас работала сетевая СУБД DBMS 11 на основе CODASYL. Я отвечал за приложения для ученых, которые занимались моделированием процессов глобального развития. В 1980 году в институт пришел сверхсовременный по тем временам компьютер — VAX 11/780: диски по 300 Мбайт, лентопротяжные устройства, память около мегабайта. На этой машине прекрасно работали в режиме разделения времени около 100 человек. И поскольку мы были такие передовые, и машина передовая, то нам нужна была самая передовая система управления базами данных. Мне принесли информацию по трем реляционным СУБД — Ingres, SQL/DS и Oracle. Посвященный Ingres рекламный буклет на несколько страничек впечатления не произвел. SQL/DS отпадала, так как работала только на мэйнфреймах IBM. А вот Oracle мне понравилась. По Oracle была большая брошюра, написанная Эллисоном, меня она поразила (тогда я еще не знал, что такое «агрессивный маркетинг» или «жесткий PR»). Там описывалось примерно то, что появилось в Oracle9. Сомнений в том, что надо брать Oracle, не было.

Ленты с Oracle пришли в институт в 1983 году. Это были третья версия для РDP-11 и четвертая для VAX/VMS. В это время институт переехал в новое большое здание, а вычислительные машины оставались в старом помещении, и нам предстояло обеспечить удаленную работу пользовательских терминалов. Первым делом я перенес на Oracle сделанное мной приложение, после чего оно стало работать раз в пять медленнее, чем аналогичная система на PDP-11, из-за бедных по сравнению с сетевыми СУБД возможностей навигации. И ничего с производительностью нельзя было сделать — «черный ящик». Это сегодня Oracle можно оптимизировать, появилось много разных «ручек» и «кнопочек». Правда, некоторые из них и тогда были, но почему-то не работали. Но зато она была очень надежная. Восстанавливать данные с резервной копии довелось один раз лет за шесть. В мою задачу входило обслуживание СУБД, но, по существу, обслуживать было нечего, система работала без перебоев.

Естественно, встал вопрос о русификации интерфейсов Oracle. Наши приложения, написанные «по-русски», работали, а вот инструментарии Oracle для разработки приложений, прообразы теперешних Oracle Forms и Reports, — нет. Попутно я занимался системами обработки текстов и русификацией компонентов VAX/VMS. Для систем, написанных под VAX/VMS, можно было купить исходники, поэтому легко было переделать редактор, почтовую систему. А для Oracle исходных текстов не было и, как выяснилось впоследствии, быть не могло. Я был молод, и мне было интересно покопаться в системе. Приходилось искать отладчиком в кодах Oracle модули, работающие с текстами, реассемблировать, модифицировать и помещать обратно в библиотеку. Мы начали русифицировать с третьей версии, и в результате помимо ядра все продукты Oracle (тогда была небольшая линейка продуктов, не то что сейчас) более или менее работали по-русски.

Несколько позже Oracle появился в Протвино и в ИНЭУМе (для машин СМ), мы стали сотрудничать — делиться опытом русификации, создания приложений и т.д.

О технической поддержке из-за рубежа не могло быть и речи из-за эмбарго. Источником новых версий Oracle поначалу был наш институт. Коммерции не было никакой, все держалось на энтузиазме.

В Белоруссии и Болгарии реализовали Oracle для ЕС ЭВМ и персоналок, но мы с ними контактировали мало.

В 1988 году я прочитал в Datamation реплику Эллисона, что в Россию он будет поставлять Oracle только в составе ядерной боеголовки. Мол, с империей зла так и надо. Тем не менее в конце 80-х — начале 90-х к нам стали приезжать эмиссары из Oracle, в основном наши бывшие сограждане, которые пытались убедить свое начальство в перспективности советского рынка. При первых продажах Oracle поддержка русского языка отсутствовала. Инициировали процесс русификации официальные представители компании, Андреас Харт, а затем Йован Марьянович. И только к седьмой версии Oracle с поддержкой русского языка все наладилось.

Конечно, сейчас работа в сфере ИТ ничего общего не имеет с тем, что было 10-20 лет назад. Чтобы решить ту или иную проблему, в большинстве случаев достаточно заглянуть на соответствующую Internet-конференцию. Это, конечно, удобно, но ничего общего не имеет с очаровательной атмосферой творчества, которую формировали титанические интеллектуальные усилия, необходимые для решения подобных проблем в прошлом.