Подобно "самому скучному банку в мире", Informix медленно, но неуклонно идет вверх, что весьма странно для фирмы с таким ненахрапистым, можно сказать, нежным маркетингом. Главные причины здесь - это, видимо, последовательно гуманная политика компании в отношении партнеров и, конечно, качество продукции. О последней, точнее о вполне конкретных продуктах, и пойдет разговор.
Не будет большим преувеличением утверждать, что магистральным направлением развития операционных систем в настоящее время является переход к 64-разрядной архитектуре. Некоторые производители уже удвоили разрядность - вспомним Digital Unix и IBM OS/400. Те же, кто не успел, ведут работы в этом направлении, одновременно пытаясь оправдать свою неуспеваемость тем, что 64-разрядная архитектура нужна, мол, "только в такой узкой области", как базы данных. Оставим в стороне иронию и задумаемся: а нужна ли такая уйма разрядов даже и в упомянутой области? Ведь два в шестьдесят четвертой степени - это более 16 млн. терабайт. Такое адресное пространство способно вместить все существующие ныне базы данных: ведь даже самые большие в мире информационные хранилища только-только перешагнули порог в 5 терабайт. Так не являются ли все эти разговоры о 64-разрядных операционных системах и СУБД, способных обрабатывать, страшно вымолвить, петабайтные базы данных, не более чем рекламным шумом, поднятым, чтобы заставить заказчиков переходить на новые версии СУБД, платя все новые и новые деньги? Есть ли на свете хоть кто-нибудь, кому нужны все эти петабайты?
Оказывается, есть. NASA занимается сейчас проектом, запуск которого намечен на конец 1997 - начало 1998 г. и который был назван в журнале Datamation "матерью всех баз данных". Так вот, NASA планирует не только выйти на петабайт, но и сделать это стремительно - суточный (да-да!) прирост данных будет составлять около терабайта. Работа ведется, как обычно, тихо и благообразно, под аккомпанемент канонады одного конкурента, подымающего шумиху вокруг не выпущенного еще продукта. Фундаментом проекта служит сервер данных под названием Illustra - собственность компании Informix.
Объектно-ориентированный сервер баз данных Illustra - это коммерческий продукт, разработанный Майклом Стоунбрейкером, - создателем известной в университетской среде свободно распространяемой СУБД Postgress - и приобретенный компанией Informix за немалые деньги. Впрочем, чтобы у читателей не возникало ассоциаций с объектно-ориентированными СУБД типа Objectivity или Poet, вся прелесть которых состоит в том, что для разработки и клиентских, и серверных компонентов применяется один и тот же язык (Си++), зато возможности создания сложных запросов могут быть охарактеризованы как "лучше, чем ничего", уточним, что Illustra - объектно-реляционный сервер. Illustra реализует расширенный SQL, и весьма похвально, что, обеспечивая новые возможности, создатели обошлись только необходимым минимумом средств (просто диву даешься, чего можно достичь с помощью всего лишь перегрузки имен функций и приведения типов). Поэтому тем, кто владеет языком SQL, не потребуется ни серьезно доучиваться, ни тем более переучиваться. В дополнение к этому - многоверсионность, вложенные структуры, массивы, множества, наследование и полиморфизм. В отличие от ряда других объектно-ориентированных СУБД, которые являются статическими, Illustra - динамическая система: создание новых типов и функций производится средствами SQL, и не требуется никакой перекомпиляции схемы базы, тем более - прекращения работы пользователей. В то же самое время функции можно создавать и на Си - в этом случае они лишь регистрируются сервером.
Хотя Illustra - не единственный и даже не первый объектно-ориентированный сервер, он становится своего рода точкой отсчета. Повторяется история пяти-семилетней давности, когда каждый производитель ПО для рабочих групп считал своим долгом объяснить, чем его продукт лучше Lotus Notes. Серверу Illustra грозит опасность стать "самым плохим объектно-ориентированным сервером данных", так как именно в его сторону направлены все орудия.
Причина такого положения кроется, видимо, в том, что компания Informix - первая в "большой пятерке"1. И не будет особым преувеличением сказать, что появление Illustra в обойме продуктов Informix определило на ближайшее время доминирующее направление в развитии серверов баз данных. Направление это можно охарактеризовать совсем коротко: "Реляционные серверы становятся универсальными".
Происходящее вполне закономерно. Тут и перешедшее в хроническую форму противоречие между объектными или объектно-ориентированными средствами разработки (Смолток, Си++, PowerBuilder, Visual Basic), с одной стороны, и СУБД, обрабатывающими лишь простые типы данных, - с другой, и непрерывно нарастающий интерес к обработке полнотекстовых данных, и чума XXI века - Web-технологии. Все эти вопросы требуют членораздельных ответов. Справедливости ради надо заметить, что частные решения проблем предлагались и по-прежнему предлагаются. Чтобы разместить видеоролики или "живые" данные из базы на Web-страницах, совершенно не обязательно прибегать к помощи дорогостоящего объектно-ориентированного сервера - хватит CGI-шлюза и пары сотен строк на Perl. Некоторые специализированные системы обработки электронных документов обеспечивают гладкий стык, с одной стороны, с офисными продуктами Microsoft, Lotus и WordPerfect (или как там его теперь), а с другой - с реляционными СУБД. Имеются также возможности стыковки САПР- и ГИС-пакетов с СУБД. А в качестве совсем уж универсального решения в течение долгого времени предлагалось использовать поддерживаемые в большинстве современных реляционных СУБД "безразмерные" двоичные и текстовые поля (BLOB). Так что возможных выходов не менее трех: во-первых - BLOB реляционной СУБД, во-вторых - специализированные системы и, наконец, в-третьих - новая, объектно-ориентированная СУБД.
"Специалист подобен флюсу, - говаривал Козьма Прутков, - полнота его одностороння". В точном соответствии с утверждением классика специализированные системы в большинстве своем ориентированы на решение определенной задачи. Выражается это обычно в том, что система работает замечательно, но только с одним-двумя типами данных. Даже если система обеспечивает стыковку с реляционной СУБД, она навязывает пользователю достаточно жестко заданные структуры данных и т. п. Использование же BLOB реляционных СУБД отсекает вас от богатых возможностей формулирования сложных запросов, которые дает SQL. В большинстве реализаций применение SQL при работе с BLOB (причем только текстового типа) ограничивается поиском по приблизительному совпадению, LIKE. Такой поиск, во-первых, производится крайне медленно (ведь BLOB-столбцы не индексируются), а во-вторых, дает результат, содержащий много "шума", особенно для русскоязычных текстов. Функции, определяемые пользователем (User-Defined Functions, UDF), если их поддерживает сервер баз данных, способны помочь более полному использованию выразительных средств SQL. Однако (за редкими, прямо-таки уникальными, исключениями) их недостаточно для того, чтобы при работе с BLOB обеспечивать быстрый поиск с преобразованием типов, а при работе с внешними файлами - секретность и восстановление данных после сбоев.
Здесь мы и подходим к принципиальному вопросу. В объектно-ориентированных базах данных, особенно больших, важна не только сама возможность создания новых типов (классов), но и эффективность поиска.
В Illustra не просто реализована объектно-ориентированная парадигма, но и сделан следующий шаг. Речь идет о так называемых DataBlade - специализированных модулях, расширяющих базовые возможности сервера. Технология DataBlade позволяет стороннему разработчику так глубоко проникнуть в "сердце" СУБД, как до сих пор его еще не допускали. Высшая степень доверия - интерфейс прямого доступа (Direct Access API), дающий доступ к данным в обход оптимизатора и процессора запросов, а также интерфейс виртуальных таблиц (Virtual Table Interface), позволяющий разработчику реализовать в Illustra свои собственные методы доступа. По понятным причинам эти интерфейсы открыты не для всех: не веря в то, что "любая кухарка" сможет корректно их использовать, компания Informix требует обязательного обучения на соответствующих курсах, что, впрочем, не может быть классифицировано как ущемление прав разработчиков. Для пользователя сервера Illustra подключение того или иного модуля DataBlade выглядит просто как появление новых типов данных и соответствующих функций (методов).
Что же в результате? "Нет - использованию BLOB!", "Нет - узкоспециализированным системам!", "Да здравствует Illustra!"? Увы, не все так гладко. Переход на новую СУБД, сколь бы хороша она ни была, - всегда переход. А как быть с имеющейся наработкой? Когда говорят об унаследованных (legacy) системах, то на иллюстрации обычно изображают большую ЭВМ с алфавитно-цифровыми терминалами. Это не совсем так. Внимательно посмотрите на наисовременнейшую технику, которая вас сейчас окружает (если окружает). Через пять лет все это будет выглядеть такой же диковинкой, как сегодня компьютеры Digital на процессоре MIPS. Требование плавного перехода придумано отнюдь не врагами прогресса. Уж если после десяти с лишним лет восторженных разговоров о том, какие выгоды сулит архитектура клиент-сервер, выясняется, что 60-80% (по разным оценкам) корпоративных данных по-прежнему хранятся на больших ЭВМ2, то не иначе как чудо поможет в одночасье перенести все наработки с Informix On-Line на Illustra. Ведь это серверы разные, хоть и одного производителя.
Материализацией идеи коня и трепетной лани в одной упряжке является Informix Universal Server. Данный продукт должен выйти в текущем полугодии (хотя избранные клиенты уже получили возможность приникнуть к источнику вечного наслаждения), и он позволяет пользователям Infromix On-Line Dynamic Server плавно врастать в новые технологии. Несмотря на то что Informix обещает по-прежнему поддерживать пользователей Illustra, понятно, что в обозримом будущем новая СУБД вытеснит Illustra, а в существенно более отдаленном - возможно, и Informix ODS. Новый сервер, взявший от Illustra идеи и отчасти их реализацию, а от Informix ODS - высокую степень параллелизма и, как следствие, масштабируемость, совместим и с тем и с другим. С Universal Server смогут работать как прикладные программы, разработанные с применением интерфейсов ESQL/C & CLI/ODBC (Informix ODS) и LIBMI (Illustra), так и административные средства Schema Knowledge (Illustra) и Infromix On-Line Distributed Manager.
Модули DataBlade, разработанные для Illustra, также работают с Universal Server. Эти модули, равно как и процедуры, делятся в Universal Server на "послушные" (well-behaved) и "непослушные" (non-well behaved). "Послушные", т. е. проверенные и не приводящие к сбоям, могут выполняться в одном адресном пространстве с самим сервером данных. "Непослушные" же требуется запускать изолированно, что, конечно, снижает скорость обращения к ним, однако способствует большей надежности.
Совместимость с Illustra по DataBlade - важная черта Universal Server. Дело в том, что DataBlade - не только красивая идея и не только API. Существует ряд готовых DataBlade, созданных специалистами Informix. Кроме того, компания сумела убедить в перспективности сотрудничества ряд сторонних разработчиков и привлекла к созданию новых модулей фирмы, являющиеся признанными авторитетами в своей области. Таким образом, уже сейчас конечному пользователю приходится иметь дело не с набором "сделай сам", а с промышленным продуктом, предоставляющим разнообразные возможности. Назовем некоторые готовые модули.
- Web DataBlade (куда же без него!). Обеспечивает интеграцию с Web-сервером.
- 2D Spatial DataBlade. Реализует работу с двумерной графической информацией. Первое, что здесь приходит в голову, - это САПР и картография. Однако Informix предлагает и достаточно неожиданное решение: использовать данный модуль в задачах поддержки принятия решений - при обработке коммерческих, статистических и иных данных по регионам. И действительно, совершенно необязательно (хотя и, безусловно, красиво) рисовать карты на экране - поскольку 2D Spatial позволяет определять расстояния между точками или точкой и фигурой, строить объединения и пересечения двумерных областей, то с его помощью можно, например, выявить закономерности распределения по регионам частных лиц - покупателей сомнительных ценных бумаг, дабы в следующий раз начинать строить пирамиды именно там (или не там - в зависимости от выбранной стратегии).
- 3D Spatial DataBlade. Для трехмерной графики, пожалуй, трудно найти иное применение, нежели инженерные задачи или тренажеры. Хотя весьма вероятно, что какой-нибудь будущий Спилберг станет хранить заготовки своих динозавров в базе данных.
- TimeSeries DataBlade. В принципе может быть использован везде, где требуется анализ временн?ых последовательностей. Противопоказаний к применению в научной и инженерной сфере практически никаких, поскольку TimeSeries базируется на механизме ведения временн?ых отметок (timestamps), а они квантуются с точностью до десяти наносекунд (восьмого знака после запятой). В наибольшей степени TimeSeries DataBlade ориентирован все же на аналитические, коммерческие и статистические задачи, о чем говорит, например, возможность ведения календаря, простого получения выборок по дням, неделям, финансовым годам и т. д. Как ни странно, этот продукт разработан прямо-таки специально для России. Попробуйте объяснить простодушному реляционному серверу, что в рабочей неделе может быть тринадцать дней, так как вследствие вхождения Марса в квадратуру Сатурна правительство решило сгруппировать выходные за три недели, а неумеренно продолжительный отдых скомпенсировать ударным трудом. Календари предназначены именно для этого - задавая правила и исключения из них, вы определяете границы кварталов, рабочих дней (они, как известно, бывают короткими) и т. д.
- Text DataBlade. Позволяет производить индексирование и поиск полнотекстовых документов. Поддерживаются версии, обрабатываются стоп-слова и т. д.
- Image DataBlade. Предоставляет базовый набор средств для хранения и обработки изображений.
- Verity Text DataBlade. Здесь мы плавно переходим к "чужим", т. е. разработанным вне Informix, модулям. Компания Verity известна своими разработками в области полнотекстового поиска. Ее технологии лицензированы компаниями Lotus (для Notes), PC DOCS (производитель системы хранения электронных документов Docs Open, лидирующей по числу инсталляций на Западе и хорошо известной у нас), Sybase. Сама компания Verity поставляет, например, модули расширения для MS Exchange. Модуль Verity Text DataBlade - пример сотрудничества Verity с Informix.
- Visual Information Retrivial. Обладает существенно более мощными, нежели Image DataBlade, средствами обработки изображений, включая уже не только статические, но и видеоизображения. Поддерживает поиск по образцу, а также разнообразные преобразования. Сфера применения данного модуля также разнообразна. Здесь и обработка динамической информации, получаемой со спутника (метеорологического, конечно, - а разве бывают какие-то еще?), и полицейская задача (поиск участников массовых беспорядков по видеодокументам), и сугубо мирная область, называемая чисто русским выражением "шоу-бизнес". Антрепренер найдет ту фотомодель, которая ему требуется (запрос может выглядеть примерно так: "смесь Джины Лоллобриджиды с Мадонной и Синди Кроуфорд" - ах, женщина мечты!), режиссер - пейзажик для натурных съемок и т. д.
- Features DataBlade. Позволяет ассоциировать с любым типом данных так называемые свойства, являющиеся на деле битовыми векторами. Это что-то вроде битовой индексации - даже для реляционных, не говоря уж о видео- или аудиоданных, использование битовых массивов часто позволяет увеличить скорость поиска. Если поле таблицы, насчитывающей миллион строк, принимает на деле только 256 различных значений, то для отображения этих значений хватит одного-единственного байта, хотя само поле может представлять собой строку из 40 позиций. Благодаря сжатию данных на низкоселективных запросах (т. е. запросах, возвращающих большое количество строк) удается сократить число дисковых операций ввода-вывода. Конечно, Features DataBlade - это не битовый индекс, но похож.
- Excalibur Text & Image Datablade. Пример сотрудничества Informix с еще одной авторитетной фирмой. Базирующиеся на технологии нейронных сетей продукты Excalibur известны многим в России. Некоторые их возможности не имеют аналогов в продуктах других фирм. Благодаря технологии DataBlade эти возможности интегрированы теперь в серверы баз данных Informix.
На момент написания данной статьи существовал ряд других модулей - для задач геодезии, картографии (здесь стоит назвать известную российским пользователям компанию Mapinfo), работы с SGML-документами, шифрования, взаимодействия с видеосерверами - всего 19, не считая рассмотренных выше. Мало того, Informix вербует все новых и новых волонтеров, так что в состоянии почти полной готовности пребывают еще 45 DataBlade-модулей. Команда "друзей Informix" пополнится за счет таких фирм, как IBM, Sun, Adobe, DataGeneral.
Надеюсь, приведенные выше примеры применения DataBlade смогут опровергнуть распространенное заблуждение, что объектно-ориентированные серверы предназначены исключительно для машиностроения или картографии. Возможно, многие вещи не нужны нам лишь потому, что их нам пока никто не предложил. Еще раз - я имею в виду не звуковую базу данных шумов американских подводных лодок, а достаточно мирные применения. И может быть, примеру одного крупного российского банка последуют другие.
А еще я втайне надеюсь на то, что не перевелись у нас люди, коим есть что сказать в специфических прикладных областях. Модули DataBlade достаточно компактны, так что их написание и отладка под силу не слишком большому коллективу программистов. А попав в список создателей DataBlade, можно надеяться на кусок хлеба (каталоги распространяются по всему миру), заработанный, что самое приятное, не торговлей с лотка, а тем, на что потратил половину жизни и был бы рад потратить оставшуюся часть. Так, в связи с повышением спроса на системы обработки полнотекстовых документов неожиданно доходной может стать, скажем, профессия лингвиста, которая до сих пор иначе как чудачество не воспринималась. А есть и DataBlade для анализа высокомолекулярных соединений... В общем, было бы что реализовывать.
Подведем итоги. Отработанная в Illustra и воспроизведенная в Informix Universal Server технология позволяет не только использовать дополненный объектно-ориентированными возможностями SQL, но и создавать компоненты, встраиваемые непосредственно в сервер, полностью с ним и друг с другом интегрированные. Готовые модули DataBlade, созданные известными фирмами, предоставляют богатые возможности, преодолевая в то же время ограничения узкоспециализированных систем. Не обращайте внимания на досужие вымыслы об опасности подхода DataBlade - аргументы не идут дальше объяснений "на пальцах", а практических подтверждений ненадежности пока не было. Просто советую обратить внимание на сам подход - как конечным пользователям, так и разработчикам прикладного и инструментального программного обеспечения.
Вадим Индриков - глава московского представительства Санкт-Петербургской фирмы "Поликом-Про".