Нас, разработчиков, было всего пятеро, но заказ был принят несмотря на очень жесткие сроки. Однако к январю 1996 года система была внедрена. С тех пор и по сей день она обеспечивает учет всех операций предприятия.
Система работает на двухпроцессорном Intel-сервере под управлением ОС Unix. На нем регистрируются около 40 пользователей, входящих через локальную сеть по протоколу telnet, а также пользователи другого выделенного терминального сервера, где установлено терминальное оборудование для подсоединения 64 линий. Работу основного сервера в оперативном режиме дублирует теневой сервер, меньшей мощности, но достаточной для поддержания работы всех пользователей при аварийной остановке главного сервера. Количество пользователей системы - около 250 человек, количество рабочих мест - чуть больше 100. Система работает в режиме 24 часа в сутки 365 дней в году.
На наш взгляд, короткий срок разработки и надежная эксплуатация в последующем в многом предопределены тем, что обеспечение работы информационной системы КОМИТЕКС возложено на продукты компании InterSystems и построенную на их базе СУБД «Информ Икс» нашей собственной разработки.
Несколько слов о Cache?
СУБД Cache?, которая производится с 1997 года, сегодня стала основой производственной программы компании InterSystems. У Cache? богатая предыстория, восходящая к таким продуктам управления данными, как MSM, DTM, DSM, ISM, известным под общим названием OpenM. Вместе с этим сохраняет совместимость с предшественниками. Например, наша СУБД ИКС, которая изначально создавалась в среде MSM, в 1999 году была перенесена в Cache в течение одного дня практически без изменений исходного кода.
Рис. 1. Архитектура системы Cache? |
СУБД Cache? имеет архитектуру, называемую постреляционной. Она объединяет в себе два основных компонента: сервер многомерных данных и сервер приложений. Cache?позволяет обращаться к данным в терминах объектов, реляционных таблиц и многомерных структур.
Ядро системы — сервер многомерных данных (Multidimentional Data Server - MDS), реализованный с использованием концепции многомерных разреженных массивов. Эти массивы позволяют естественным образом хранить в Cache? и обрабатывать данные произвольной сложности.
К данным, хранящимся в MDS, одновременно возможно отнести три способа доступа.
? Объектный. Cache? является полноценной объектной СУБД и полностью реализует все необходимые атрибуты объектных систем, такие как полиморфизм, наследование (включая множественное), инкапсуляция.
? Реляционный (SQL-запросы). В Cache? к данным можно обращаться и через традиционный для классических СУБД язык запросов SQL. Поддерживается синтаксис SQL-92, а также «джентльменский набор» современных «тяжелых» реляционных СУБД - триггеры, хранимые процедуры, вычислимые поля и другие особенности SQL, не вошедшие в стандарт версии 1992 года.
? Многомерный (или прямой) доступ к данным непосредственно как к узлам многомерных массивов. Этот способ доступа является наиболее гибким и позволяет реализовать в Cache? произвольную модель данных.
В отличие от так называемых «объектно-реляционных» СУБД, где объектный слой выполнен в виде надстройки над реляционным, в Cache? объектное и реляционное представление данных синхронизированы и взаимодействуют непосредственно с многомерными структурами MDS. Существенно то, что к этим структурам можно обращаться и непосредственно через прямой способ доступа.
Так, например, создав таблицу в реляционном представлении при помощи выражения DDL, вы одновременно с реляционной таблицей получаете и класс в объектном представлении. При этом вы получаете возможность доступа к данным и как к многомерным структурам, в обход реляционного и объектного словарей данных, что позволяет при необходимости значительно повысить производительность критических участков приложения.
Бизнес-логика приложений описывается на языке Cache? Object Script, полнофункциональном языке, поддерживающем все три способа доступа к данным. Примечательно, что все три способа доступа можно комбинировать в рамках одного приложения.
Рис. 2. Основные группы интерфейсов Cache? |
Говоря об архитектуре системы, нельзя не упомянуть об интерфейсах, предоставляемых Cache?. Основные группы интерфейсов представлены на рис. 2.
Кроме показанных интерфейсов в Cache? реализованы еще интерфейсы к средствам CASE, словарю данных и программ, внешним реляционным и объектным СУБД, основным протоколам Internet и даже напрямую к стеку TCP/IP.
С практической точки зрения Cache? является универсальной средой для решения информационно-логических задач. Крупнейшие проекты с применением Cache? можно найти в медицине, в системах обработки транзакций по кредитным картам, в юстиции, в банковской и промышленных сферах, в торговых предприятиях и т.д.; в России уже создан и сайт с применением WAP технологий. Число пользователей варьируется от нескольких десятков до нескольких десятков тысяч.
Подобное разнообразие объясняется тем, что Cache? оставляет возможности для поиска оптимальных решений при создании информационной системы, предлагая альтернативные подходы и позволяя разработчику остановить свой выбор на том, что предпочтительнее в конкретном приложении.
Объекты или таблицы?
Какая модель данных наилучшим образом подойдет для решения очередной задачи в будущем? Cache? избавляет от выбора «или — или», поддерживая и многомерную модель данных, и объектную модель стандарта ODMG (Object DataBase Management Group), и реляционное представление данных с помощью Cache?SQL. Объектная и реляционная парадигмы поддерживаются совместно и автоматически с помощью единой архитектуры данных. В рамках этой архитектуры делается единое описание объектов и таблиц, отображаемое в многомерные структуры ядра базы данных Cache?. Разработчикам предоставляются наиболее популярные интерфейсы, посредством которых и унаследованные реляционные, и новые, объектно-ориентированные приложения получают равноправный доступ к данным.
Если разработчика не устраивают ни базовая многомерная модель данных Cache?, ни объектная модель Cache?, ни реляционное представление данных с помощью Cache? SQL, он может использовать свою собственную модель данных. К такому выводу мы пришли сами: СУБД «Информ Икс» — пример собственной модели данных. Практика показала, что создание высокоуровневой надстройки в Cache? занимает при наличии у разработчиков необходимого опыта два-три человеко-месяца.
Навигация или SQL-доступ?
В Cache? элегантно решена проблема доступа к данным. Что лучше: «ручная» навигация, как считают сторонники объектно-ориентированных СУБД, или «автоматическая» навигация посредством SQL, которую предпочитают сторонники реляционных систем? Думаем, лучше и то, и другое. Лучше иметь оба механизма в единой среде, как это сделано в Cache?. Прямой доступ к данным с помощью Cache? ObjectScript обеспечивает максимальную производительность, но, самое удивительное, что и Cache? SQL, обычно значительно увеличивает скорость работы SQL-приложений, перенесенных из чисто реляционных систем.
Как разработчики, мы числим себя сторонниками навигационного подхода; о его целесообразности, как нам кажется, свидетельствует успешное существование наших проектов. Однако при этом благодаря Cache? в созданных нами системах обеспечивается и SQL-доступ к накапливаемым данным, хотя процессом управляет вовсе не SQL-приложение. Согласитесь, редкий случай!
Обработка транзакций или анализ данных?
Обычно считается, что в рамках единой системы не эффективно поддерживать и OLTP, и OLAP, поскольку, во-первых, приложения OLAP будут существенно «тормозить» приложения OLTP, а во-вторых, эти приложения предполагают использование разных моделей данных. Однако в Cache? оперативные транзакции и сложная аналитическая обработка данных вполне сосуществуют. Все просто — обычно оперативная обработка транзакций реализуется в объектной или реляционной среде Cache?, а аналитические приложения используют многомерные структуры Cache?.
ERP-приложения или системы электронного бизнеса?
Приложения электронного бизнеса стали самыми актуальными приложениями последней пары лет. Практически все производители приложений класса ERP (Enterprise Resource Planning) дополняют свои базовые системы продуктами с приставкой «e». Эти продукты реализуют функции работы в Web и ориентированы на более современную по сравнению с ERP концепцию CSRP (Customer Synchronized Resource Planning).
Обычно приложения электронного бизнеса предъявляют высокие требования к оперативной обработке транзакций и манипулированию мультимедийными объектами. Компонент Cache? WebLink обеспечивает прямой высокоскоростной обмен между Web-сервером производства
Microsoft или Netscape и сервером Cache?. Важным элементом WebLink является WebLink Developer. Используя специализированные инструменты третьих фирм, разработчики создают Web-страницы. Затем с помощью WebLink Developer эти страницы компилируются в ObjectScript и формируется Web-приложение. Важно, что логика приложения и детали пользовательского интерфейса разделены и могут определяться независимо друг от друга. При необходимости можно встраивать код Cache? ObjectScript, соответствующий логике приложения, непосредственно в Web-страницы.
Как обеспечить простоту разработки и сопровождения
Cache? ObjectScript - встроенный в Cache? язык программирования, по легкости сравнимый с Basic. Система, даже очень большой сложности, состоит из набора маленьких кусочков кода (8-30 Кбайт), которые независимо компилируются и не требуют сборки в единый исполняемый модуль. Благодаря такому построению достигается немаловажное свойство- возможность вносить изменения в работающую систему без ее останова, причем даже удаленно. Мы, например, сопровождаем своих клиентов, где установлена система ИКС, по достаточно простой технологии: после создания очередной версии на Internet-сайт выкладывается как полная версия системы, так и «дельта» по отношению к предыдущей версии, которая всегда гораздо меньше по объему. Соответственно и все сопровождение заключается в оповещении пользователей, что версия вышла и ее можно забирать с сайта. Дальнейшие действия выполняются на стороне клиента автоматически; все, что от него требуется - это указать IP-адрес системы, которую необходимо обновить. Многие обновления могут происходить, как уже говорилось, и без останова работы пользователей.
Для эксплуатации важно то, что курс обучения администраторов Cache? занимает всего 30 академических часов. После прохождения такого курса администратор сможет выполнять все необходимые действия по обеспечению надежной эксплуатации системы, установленной в Cache?.
Базу данных в Cache? можно сохранять полностью или инкрементно, не останавливая работу пользователей. Сохранение можно выполнять автоматически по заранее написанному сценарию.
Просто и эффективно поддерживается в Cache? технология теневого (дублирующего) сервера (Shadow Server). Дублирующий сервер постоянно читает журнал основного сервера и обновляет дубликат базы данных в реальном времени. Такая технология позволяет: немедленно переключить пользователей на дублирующий сервер в случае отказа основного; выполнять отчеты и аналитическую обработку на дублирующем сервере, «разгружая» основной сервер.
CУБД «Информ Икс»
Выше уже упоминалось о том, что мы реализовали собственную модель данных и СУБД на платформе Cache?. Она представляет собой высокоуровневую надстройку в Cache?, поддерживающую объектную модель данных (ОМД) в сочетании с традиционными для Cache? средствами, что обеспечивает высокую скорость создания прикладных систем и их высокое качество.
ОМД реализует как явные связи между объектами, так и связи по ссылкам. И тем и другим связям приписывается определенная семантика в обоих направлениях. Явные связи обеспечивают естественную поддержку отношения «многие-ко-многим» между объектами (в реляционной модели для организации связи «многие-ко-многим» необходимо создавать дополнительную таблицу, что нарушает естественные отношения предметной области). Между двумя объектами можно объявить несколько связей. Поддерживается связь объекта самого с собой.
Семантика связей явно отражается в объектных Навигаторе и Генераторе отчетов, которые входят в состав «Информ Икс».
Комбинация явных связей и связей по ссылкам придает ОМД необыкновенную мощность, что обеспечивает гибкое и надежное проектирование прикладных систем. Заметим, что расширенная реляционная модель, поддерживающая только связь по ссылкам, является ограниченным частным случаем ОМД.
Технология моментального снимка дает возможность пользователям получать правильные (в смысле целостности данных) отчеты несмотря на то, что другие пользователи в это же время изменяют данные, необходимые отчетам. Скорость выполнения отчетов в режиме моментального снимка в «Информ Икс» и в обычном режиме практически не различается и остается действительно высокой.
Разграничение доступа к данным в больших информационных системах — непростая задача. В нашей СУБД применяется развитая система организации доступа, имеющая две составных части:
- индивидуальный доступ к элементам баз данных;
- коллегиальный доступ.
Индивидуальный доступ пользователя к элементам баз данных устанавливается администратором баз данных (под элементами понимаются объекты, характеристики, связи объектов и характеристики связи, а также прикладные задачи).
Коллегиальный доступ так же устанавливается администратором баз данных для каждого пользователя по каждому объекту и каждой связи. При этом указываются пользователи, которым разрешается читать, изменять или удалять элементы БД, созданные пользователем-коллегой.
Внимательный читатель не мог не заметить некоторой двусмысленности фразы о СУБД Cache? компании InterSystems и СУБД «Информ Икс» собственной разработки, употребленной нами в начале статьи. Что это - две независимые СУБД в рамках одной системы? СУБД построенная поверх другой СУБД?
Для разрешения этого вопроса обратимся к классическому определению СУБД, данному Дейтом в его книге «Введение в системы баз данных»: «Система Базы Данных это компьютеризированная система хранения записей, основная цель которой - содержать информацию и предоставлять ее по требованию. Программное обеспечение этой системы и является Системой Управления Базами Данных или СУБД».
Такое определение оставляет возможность достаточно широко трактовать само понятие «СУБД» и использовать его для обозначения достаточно широкого спектра систем. Важно одно: любая СУБД должна предоставлять возможность пользователю работать с записями - абстрактными единицами информации, отличными от физического представления соответствующих данных в памяти или на диске.
В рамках этого определения «Информ Икс», несомненно, является СУБД. Она позволяет работать с данными на уровне абстрактных понятий - объектов и связей между ними. В тоже время, скрывая от пользователя внутренние механизмы хранения данных в многомерном ядре СУБД Cache?.
Объектная модель, предлагаемая «Информ Икс», имеет ряд принципиальных отличий от классических объектных моделей, предлагаемых, например консорциумом ODMG и воплощенной в объектной модели Cache? или декларируемой в стандарте SQL3 и используемой во многих объектно-реляционных системах. В то же время, данная модель имеет ряд несомненных достоинств и имеет полное право на существование.
Теперь, если рассмотреть совокупную систему «Информ Икс» и СУБД Cache?, то фактически мы получаем картину, в которой объектная модель «Информ Икс» является ничем иным, как четвертым (наряду с прямым, «родным» для Cache? объектным и SQL) способом доступа к данным, хранящимся в MDS.
Фактически, СУБД «Информ Икс» являет собой пример удачной реализации собственного словаря данных в Cache?, демонстрирующий гибкость подобного подхода к построению промышленных информационных систем. Если в какой-то момент и вы решите, что вам стали тесны рамки реляционной и классической объектной модели данных, или захотите воплотить в жизнь свои разработки в области структур данных, многомерное хранилище данных Cache? и Cache? Object Script, использующий прямой доступ к многомерным массивам - идеальный инструмент для воплощения самых смелых идей.
Об авторах
Дмитрий Носов и Андрей Чернышев — сотрудники компании «Информ Икс». С ними можно связаться по электронной почте по адресу informx@komitex.ru.
Представляя СУБД Cache?, редакция «Открытых систем» решила обратиться непосредственно к разработчикам из компании «Информ ИКС». Фирма со столь остроумным названием имеет многолетние партнерские отношения и значительный опыт работы и с современными продуктами компании InterSystems, и их предшественниками. Подробную информацию о Cache? можно найти на англоязычном и русскоязычном сайтах компании. Для более глубокого изучения можно рекомендовать книгу В. Киртстен, М. Иингер и П. Шультке «Объектно-ориентированная разработка приложений в среде постреляционной СУБД Cache?», переведенную и изданную в 2000 году сотрудниками еще одного из российских партнеров InterSystems, компании «СП.АРМ». Несомненный интерес представляет методологическая статья А. Полякова и И. Семенова «Представление знаний и объектно-ориентированная СУБД Cache??» (www.semenov.webservis.ru/it/articles/ar5.html).