Sergey Oboguev (oboguev) wrote,
Sergey Oboguev
oboguev

с чего начинается Оракл (в России)


Саша Соколов рассказывает:
В 90-х я сдавал в московском представительстве Oracle на право преподавания трех курсов: DBAI, DBAII и Tuning преподавателю их УЦ (тогда он у них еще был).

Кстати, это была сказка и песня:
- Напишите формулу вычисления коэффициента попадания в кеш.
- Почему вы пишите по-русски?
- Привык, что у многих слушателей плохо с анлийским.
- Таких АБД нужно выгонять с работы.
- У меня такого права нет…
- …
- Почему вы написали правильную формулу вычисления коэффициента попадания в кеш? В тексте курса она написана с ошибкой…
- Я привык исправлять замеченные в тексте ошибки…

Резюме:
- СУБД Oracle вы знаете, а текстом курса не владеете. В виде исключения экзамены я принимаю.

Как это характерно для Саши!
И какая горькая ирония заключена в том, что какой-то хлыщ ему что-то выговаривает!

В порядке сохранения oral history для узких интересующихся кругов, решил, что стоит записать воспоминания.

Весь Oracle в России/CCCР начинался с группы из трёх человек, одим из которых и потому волей-неволей свидетелем всем событиям был я, а главным -- Саша Соколов.

Было это зимой то ли 1984-85, то ли 1985-1986 г.

Дима Безруков из ВНИИСИ привёз нам (Саше Соколову и, видимо, Стасу Клименко [*]) в Протвино ленточку с дистрибутивом Oracle 4.x для VAX/VMS, которую они во ВНИИСИ получили по своим каналам, но заставить работать по-русски не могли, т.е. практического толку от неё не было.
[*] Сам я встречал Безрукова только один раз, и было это не в тот его приезд, а позднее, во время одной из сессий ГКНТ-эшной рабочей группы по высокопроизводительным мини-компьютерам, читай VAX-ам и подобным, которую Клименко и Co. вели в Протвино. Сессии самой группы всегда (насколько мне известно) проводились в Протвино, куда люди люди съезжались из Москвы и московской области и других мест, вроде Новосибирска. Сама наша организация, Институт физики высоких энергий (ИФВЭ) в Протвино, под Москвой/Серпуховым, которая реально предоставляла место для встреч (номера в гостинице, конференционные залы и т.д.), ведмоственно принадлежала к Средмашу (формально -- ГКАЭ, который был главком Средмаша, что тогда не афишировалось, но было секретом полишинеля, как и то, что все дела поднимавшиеся выше главка шли к одному из зам. министра, обычно Тычкову и позднее, в конце 80-х одним из имён на слуху был кажется В. Михайлов), но группа по высокопроизводительным мини-ЭВМ, как я понимаю, намеренно была организована под крышей ГКНТ, чтобы избежать ведмоственной секретности и замыкания и обеспечить максимально широкий и свободный межведомственный обмен между специалистами. Я не скажу наверняка, кто были начальными учредителями, но подозреваю, что это были Станислав Владимирович Клименко (которого за глаза более молодые люди обычно называли "Стас", что подразумевало "свойственность", свободную контактность с С.В., но ни капли неуважения) и ещё один человек из ЦАГИ, "источенное" лицо и худощавую невысокую фигуру которого я живо помню поныне, но имя к сожалению забыл -- во всяком случае на моей памяти они были основными организаторами.

Во время одной из встреч группы по высокопроизводительным мини-ЭВМ, году наверное в 1987-88, Юра Павлов и привёл меня в номер к Диме, где мы застали его отдыхающим без смокинга, но это было наше единственное с ним пересечение.

Никакой поддержки для national character sets в Oracle тогда не существовало, там был только 8-битный ASCII, с побайтной сортировкой в порядке численных значений байтов и использованием си-шного ctype для классификации значений символов.

К счастью, дистрибутив, по причинам которые я сейчас помню смутно, содержал не только исполняемые файлы, но также объектные. Кажется, исполняемые файлы собирались из объектных в процессе установки. Это было счастливым обстоятельством, поскольку образуемый map file содержал все глобальные символы и места обращений к примитивам и таблицам ctype, т.е. функций/макро вроде isalpha, islower, tolower, toupper и т.д.

В VAX/VMS была полезная утилита PATCH (для тех, кто не застал времена VMS, это не только побайтовый патч, но позволяющий также модифицировать, вставлять и удалять команды и т.д.), и Саша засел за неё. Он сделал командные файлы для PATCH, которые патчировали собираемое оракловское ядро и утилиты. Некотрые из этих патчей были straighforward, вроде изменений в таблицах классификации типов символов, которые использовались примитивами ctype и трансляции toupper/tolower. Но этого было недостаточно, и другие требуемые изменения были более хитрыми. Всего, сколько могу припомнить, потребовалось около сотни патчей.

Программисты и программирующие физики в ИФВЭ были в те времена люди по преимуществу ночные, потому что днём на институтских компьютерах, включая VAX-ы, было не протолкнуться, они были перегружены. Ночью скорость работы и интерактивность ответа была гораздо лучше. Кто-то, как Саша, регулярно оставался до часу-двух ночи, кто-то до утра. [*]
[*] Ночная кампания регулярно собиравшаяся по ночам в ОМВТ включала Сашу Соколова и Юру Павлова; физика Витю Перевозчикова; приземистого, бородатого и очень неформального, контактного начальника физ.-информационной лаборатории Владимира Владимировича Ежелу ("гнома", как его метко звали в его физ.-мат. школе); демонического Славу Луговского (известный биореактором Виталик Луговский -- сын Славы, которому тогда было лет 12 и который по словам родителей Славы и Вики постоянно дрался с младшим братом Кириллом); расчётчиков сверхпроводящих магнитов Мишу Горлового (бывшего потом, кажется, одно время зам. мэра Протвино) и Серёжу Ершова, работавших на Дайковского [**], в кабинете которого мы обычно и пили по ночам чай; иногда физика Женю, к сожалению забыл его фамилию, который в ~ 1985 снабдил меня первым томом Толкина в лучшем поныне переводе Кистяковского, а позднее остальными томами Lord of the Rings и Silmarion, привезёнными из ЦЕРН-овской командировки; физика Юру Фисяка, иногда Сашу Самарина (который вместе с Валей Кочиным занимался компьютерной графикой, затем инициировал в России TeX и LaTeX, потом долго работал в ISO в Женеве, а ныне главный начальник по программным системам в Банке Африканского Развития в Тунисе -- куда только судьба не бросает людей), часто Серёжу Грудцина и других. Иногда на 2 AM o'clock tea заходил Коля Ткачено, костеривший чем свет стоит Мызникова, у которого он работал, как нового Лысенко, и другие люди.

[**] "Моё личное знакомство" с Дайковским, котрый возглавлял расчёты сверхпроводящих магнитов в ИФВЭ для УНК, было ограниченным и состояло, кажется, едва ли не из одной-единственной встречи, если её можно так назвать -- возможно позднее мы и перескались ещё, но в моей памяти остался только этот забавный случай. Одной ночью я был настолько утомлён, что не имел сил тащиться из института через лес домой, и заснул на нелепом "прокрустовом" диванчике размером в половину человеческого роста стоявшем в комнате Дайковского-Горлового-Ершова; Миша и Серёжа будить меня не стали, оставили отдыхать и ушли под утро домой. Рано утром я был разбужен пришедшим на работу в свой офис солидным и серьёзным доктором Дайковским, который пришёл на работу, открыл ключом дверь и вперился в юношу мирно посапывавшего на красной кожи диванчике слева от входа в его комнату. "Ты кто такой? Ты кто такой?" -- шокированно и испуганно, вытаращив на меня глаза, и то ли обступая меня, то ли подступая ко мне, вопрошал меня Дайковский. "Я так, я ничего", -- ответил я, накинул ботинки и ретировался. Как потом объясняли мне развеселённые событием Горловой и Ершов, вероятная причина гипер-шокированной реакции Дайковского была в том, что незадолго перед тем Дайковский обнаружил за диванчиком смесь из неизвестно кем оставленных использованных носков и презервативов, так что когда Дайковский обнаружил меня посапывающим на диванчике, его возмущенное подозрение пало на меня как на неизвестного ему незнакомца по ночам творящего оргии в его кабинете.

Ближе к концу 1990 г., ещё задолго до августа 1991, Дайковский, главный специалист в СССР по расчёту ускорительных магнитов и структур, сказал "всё кончено", ушёл из ИФВЭ и науки вообще и купил в Москве таможенный склад.

Я живо помню Сашу Соколова сидящего по ночам в нашей комнате за терминалом возле стенки и делающего эти патчи. Периодически он от них сатанел и говорил мне: "я больше не могу, пойду покурить, поделай пока ты", вставал из-за стола, доставал сигарету и выходил из комнаты в курилку на лестнице, а я занимал его место за терминалом. Примерно 90-95% патчей к этой первой русской версии Оракла были Сашины, около 5-10% -- мои.

Была также проблема с определением упорядоченной киррилической кодировки, поскольку это был единственный способ заставить Оракл сортировать текстовые поля на русском. Кодировку вместе с Соколовым разработал третий человек из нашей группы, Юра Павлов. С небольшими изменениями для неосновных (небуквенных) символов Юрина и Сашина кодировка была позднее стандартизована как ISO-кодировка для упорядоченных кириллических символов (ISO-8859-5), ныне каждый может найти её в списке кодировок в своём браузере.

Моя главная роль во всём этом деле выпала не на патчи, а на обеспечение возможности работы терминалов с Ораклом. У нас был зоопарк разных типов терминалов, но они не работали с упорядоченными кодировками, и тем более не могли посылать упорядоченные русские символы с клавиатуры. К примеру, один из основных типов терминалов, которые мы имели изначально ("General"), представлял домашне-модифицированный для русского языка клон VT52 и работал с 7-битным потоком символов (в обе стороны), а переключения контекста между латинским и русским регистрами производились экзотической escape-последовательностью, вроде ESC-*-R или что-то в этом роде. В ИФВЭ был текстовый редактор (созданный для ИФВЭ-шной системы PROTEX -- одной из первой, если не первой вообще системы форматирования русских текстов, в частности для препринтов, это было ещё задолго до того, как Саша Самарин русифицировал TeX и LaTeX), который работал на имевшейся у нас DECSystem 10 (KL-10/TOPS 10) и на VAX/VMS, но никакая другая программа не могла понимать эти последовательности.

Позднее мы также купили терминалы совместимые с VT220 (клоны VT220 сделанные Wyse) и небольшое количество натуральных VT320. Юра Павлов сделал версию загружаемых фонтов для Wyse-овского клона VT220 и для DEC VT320 [*], но это не решало проблемы с руссификацией клавиатуры.
[*] Эксплуатируя, кажется, хотя тут я могу ошибаться, грузинскую студентку Нану Глонти, которая правила и hint-ила для Саши Самарина кириллические фонты. Между делом Нана как-то показала мне делаемый ею грузинский фонт для LaTeX-а, который, как я подозреваю, стал первым в истории грузинским компьютерным шрифтом.

Проблему с клавиатурой и также с преобразованием символов в выводном канале до того, как мы приобрели VT220/VT320, пришлось решить мне. Первая версия решения состояла в написанной мной программе RTY, которая использовала DECnet-овский протокол удалённого терминала (тот протокол, который в VMS вызывается командой SET HOST, т.е. RTPAD). Самой возможностью того, что оказалось возможным реализовать такое решение, я обязан вальяжному Александру Сергеевичу Баринову, который работал тогда в ФИАНе, и который раздобыл для меня VAX/VMS source kit. Now, мальчики и девочки, это не был source listings kit (который я позднее тоже видел, и который в те времена продавался на микрофишах с белым текстом на тёмно-синем фоне, а не на несуществовавших ещё CD), это именно был полный source kit, полные тексты системы, включая тексты ядра и всех основных утилит, входящих в дистрибутив операционной системы. Откуда Баринов его достал, я не знаю, поскольку текстов VMS за пределами DEC имелись штучные копии, но предполагаю, что от разработчиков "красного VAX-а". Тексты были для VMS 3.x.

Несколько раньше Саша Соколов снабдил меня ксерокопией "VAX/VMS Internals and Data Strucutures", насколько припоминаю для VMS 2.x.

Сам RTPAD был на BLISS-е, и возиться с его переделыванием я не стал, а просто вычислил по текстам протокол и написал на C примерный функциональный эквивалент, который дополнительно транслировал входные и выходные потоки.

Программа RTY была работающим решением, позволившим нам продвинуться, но не идеальным, т.к. все операциии с терминалом выполнялись через сеть, пусть даже и локальными сетевыми вызовами. Это работало, но замедляло ответ. Следующей инкарнацией, реализованной уже позднее, после того как мы обрели собственные VAX-ы, стал написанный мною модуль, который загружал себя в ядро, вклинивался между векторами port driver and class driver терминала и обрабатывал escape-последовательности поступающие с клавиатуры, устанавливая необходимый клавиатурный регистр, отображая его в status line терминала и транслируя поток клавиатурного ввода сообразно текущему регистру клавиатуры. Это влекло гораздо меньший overhead и меньшую latency, чем обработка через RTY. Но это было уже потом, после того как мы обрели собственные VAX-ы. О том, чтобы делать нечто подобное в рамках ОМВТ, где как мы, так и вообще всё что-либо живое и движущееся (включая Сашу Самарина или Валю Кочина, ключевых людей в СССР по компьютерной графике) встречали полное противодействие со стороны людей державших административную власть, и чей статус опирался на обладание административной властью, речи быть не могло.

Совсем запретить нас было нельзя, но всё представимое противодействие мы испытывали в полной мере и ситуация описывалась традиционной формулой "борьбы энтузиастов с советской системой".

Существовало также и предубеждение против баз данных в более высоком начальстве, выражавшееся в формуле "компьютеры предназначены вычислять, а не для того, чтобы перекладывать данные с места на место". Автора фразы я сейчас, за давностью лет, боюсь идентифицировать, и кажется основными адресатами фразы были не мы, а группа Ежелы, которая занималась базами данных частиц и физических экспериментов.

Так или иначе, примерно к весне то ли 1985, то ли 1986 года мы сделали первую инсталляцию Оракла работающую по-русски и первый русский дистрибутив Оракла.

После того как база стала доступной для прикладного использования, к делу подключились А.В. Авилов и Юра Сайгин. Это были первые разработчики приложений для Оракла в России.

Сайгин, насколько я знаю, позднее стал ген. директором RdTex-а, который исторически возник из нашего предприятия.

На ранней стадии существования базы, покуда она ещё существовала в ОМВТ ИФВЭ, её администраторами были Саша Соколов, Юра Павлов и я, сменяясь по-очерёдно. Я, собственно, был скорее fallback администратором, поскольку это не была 100% моя чашка чая -- мои личные интересы лежали в направлении "системного программирования", программирования в ядре и т.д., и администрацией базы я занимался постольку-поскольку это кому-то нужно было делать, и другого человека в этот момент не оказывалось. Тем не менее, так случилось, что я стал не только одним из трёх участников проекта "русского Оракла", но и затем волей-неволей одим из трёх первых Oracle DBA в СССР/России, после Саши Соколова и Юры Павлова.

Достижение нашим Оракловским проектом состояния используемости совпало по времени с правительственным решением одобрить строительство колладйдера (УНК) в Протвино. Для строительства коллайдера потребовалась производственная база по производству пластин и иных деталей для сверхпроводящих магнитов, и другого обрудования, для чего требовались не только швейцарские станки и лазерные резаки, но также инженерные компьютерные системы, т.е. CAD/CAM, а также системы организации производства, and the rest is history. Мы ушли из админстративного морока ОМВТ в созданную Сашей Соколовым под крышей отдела экспериментального производства (ОЭП) лабораторию интегрированных производственных систем, с нежным наименованием ЛИПС, на которое нам не пропускали случая иронично указывать наши друзья, вроде Саши Самарина или Жени Черняева. Проект промышленной базы для УНК был зарегистрирован как состоящий под контролем военно-промышленной комиссии при Совмине [*], что сильно облегчало cutting red tape формальностей при закупке оборудования, включая в нашем случае VAX-ы и PC.
[*] В качестве забавного сопутствующего воспоминания: начальник моего начальника, т.е. Саши Соколова, Олег Михайлов руководивший ОЭП, имел подписанный тогдашним премьер-министром Рыжковым пропуск позволявший беспрепятственный доступ в любые организации Советского Союза. В первый раз мы узнали об этом когда приехали однажды во Внешторг, Михайлов махнул своим пропуском и прошёл вовнутрь, охранник ему только козырнул, а мы, с раскрытыми ртами, остались ждать, пока нам вынесут пропуска. "Что это такое?" -- спросили мы охранника. "А это вот что такое..." -- ответил охранник. Позднее я проверил, что такая категория пропусков действительно существовала. В середине 1990-х Михайлов разбился насмерть на машине возвращаясь с несколькими друзьями с рыбалки; за рулём был другой человек.

Это уже совершенно отдельная история, но помню, что я тогда put my neck on line, предложив покупать VAXstation 3200 вместо MicroVAX-ов, гарантировав, что я смогу запустить на них многопользовательскую VMS (исполнение которой на VAXstation не предусматривалось, они поставлялись с однопользовательской MicroVMS), с необходимым патчированием системы, если потребуется. Несколько первых минут после восстановления standalone backup полной VAX/VMS (а не однопользовательской MicroVMS) и первой загрузки системы были напряжёнными -- к счастью, оказалось, что многопользовательская VAX/VMS может исполняться на VAXstation 3200 без каких-либо дополнительных усилий. Таким образом мы не только сэкономили около 30-40% средств, но и впридачу получили в качестве бонуса графические модули GPX, на которых можно было исполнять некоторые программы CAD/CAM, включая важный для нас Euclid-IS, т.е. два дополнительных конструкторских рабочих места для Euclid.

Если наша установка Oracle на машинах в ОМВТ была первой инсталляцией русского Оракла в России/СССР, то наш кластер в ЛИПС стал первой промышленной системой Оракла в России.

Точнее, машин в кластере было три: DBS, CSA, CSB (это я помню очень хорошо даже сейчас, 20 с лишним лет спустя, как человек поднимавший кластер и настраивавший его с разными дополнительными необходимыми средствами, в т.ч. "домотканными", и до начала 1993 года бывший заодно его системным администратром), но поскольку Оракл был в тот момент некластеризован, то исполнялся он только на узле DBS. Остальные два узла использовались для систем CAD/CAM.

Году в 1988-89 Юра Павлов начал также играться c появившейся версией Оракла для PC/286, которая использовала 80286 protected mode.
Тогда же в ЛИПС появился Игорь Куницкий, который ныне ген. директор RdTex-а.

В период около 1986-1988 Сашей Соколовым, Юрой Павловым и кажется некоторыми другими сотрудниками (об этом я в точности сказать не могу, т.к. за переводами не следил) была также создана первая русская документация для Oracle. Первоначально документацию переводил Саша Соколов, а правила её (что я сам не видел, но почти наверняка уверен) Вита Павлова, профессиональный лингвист.

В ранних 1990-х из этого всего возник RdTex и появились лицензионные соглашения с Ораклом, но это уже происходило вне моего поля зрения или на периферии.
В это же время наступил развал ИФВЭ и усиленный отток людей из него во внешние организации, включая RdTex. Сам исход был естественным явлением; печальным было то, как именно он происходил. Я уже писал однажды ранее о том админстративном духе, который царил как в ОМВТ, так и в ИФВЭ на высшем уровне руководства, заповедниками от которого были низовые организации, вроде группы Саши Соколова, прикрывавшейся Стасом Клименко. Закономерным результатом стало то, что если в других "наукоградах" (Пущино и т.д.) градообразующие институты смогли в той или иной степени капитализировать имевшийся у них человеческий капитал, помочь создать отпочковывающие коммерческие hi-tech организации связанные с "материнским" институтом, поддержать их и сохранить с ними продуктивные двухсторонние связи, то в Протвино дело закончилось агрессивным и злобным изгнанием из института самых толковых специалистов, их преследованием и враждованием со стороны ИФВЭ к отпочковавшимся организациям, которые при ином отношении администрации могли бы стать ассоциированными, "дочерними".

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

Моё пожалуй главное визуальное воспоминание от тех начальных событий "истории Оракла в России", кроме конечно смутных воспоминаний о многочисленных сборках-пересборках-патчированиях ядра и утилит, подсказках UFI на экране терминала, сообщениях при инициализации базы и т.п -- это Саша Соколов сидящий за "Генералом" (марка терминала) около стенки в нашей комнате, debugg-ящий Оракл и делающий к нему патчи.

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

Ключевым enabler-ом Оракла (и, таким образом, реляционных баз данных вообще) в России стал Александр Петрович Соколов.

Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 5 comments
интересно. помню как, в начале 90-х Oracle, единственная из крупнейших мировых софтверных компаний, предоставила бесплатный набор для обучения программированию в наш провинциальный технический вуз по запросу зав.кафедры. Правда он так в и остался лежать в сейфе института, из-за страха пиратского копирования редкого в наших краях по.
Сергей, спасибо за пост!
Поражен фотографической четкостью описания событий четверьтвековой давности

А я ведь работал с вашей БД.
Читая вспомнил молодость.
С.В. Клименко прислал комментарий с напоминанием:
К вопросу о Начале Оракл в России, см "Ускоритель" 20 летней давности. Решая в Институте порядка 55 задач проекта УНК с использованием Оракл, мы передавали опыт не только нашей атомной отрасли, но и всему Союзу, который тогда еще существовал.

Надо также помнить и проект создания интерфейса между Оракл и Эвклид, который мы тогда делали для ЦЕРНа.