Опыт разработки в среде Сасhе'


Дмитрий Носов, Андрей Чернышев
2000 г.

Представляя СУБД Cache', редакция "“Открытых систем” решила обратиться непосредственно к разработчикам из компании “Информ Икс”. Фирма со столь остроумным названием имеет многолетние партнерские отношения и значительный опыт работы и с современными продуктами компании InterSystems, и их предшественниками. Подробную информацию о Сасhе' можно найти на англоязычном и русскоязычном сайтах компании. Для более глубокого изучения можно рекомендовать книгу В. Кирстен, М. Ирингер и П. Шульте “Объектно-ориентированная разработка приложений в среде постреляционной СУБД Сасhе'”, переведенную и изданную в 2000 году сотрудниками еще одного из российских партнеров InterSystems, компании “СП.АРМ”. Несомненный интерес представляет методологическая статья А. Полякова и И. Семенова “Представление знаний и объектно-ориентированная СУБД Сасhе'” (www.semenov.webservis.ru/it/articles/ar5.html).

В апреле 1995 года генеральный директор и начальник АСУ сыктывкарского предприятия КОМИТЕКС посетили нашу фирму и заказали нам интегрированную информационную систему, позволяющую навести порядок в учете деятельности КОМИТЕКС и предоставляющую руководителям разного уровня информацию для принятия управленческих решений. Нас, разработчиков, было всего пятеро, но заказ был принят несмотря на очень жесткие сроки. Однако к январю 1996 года система была внедрена. С тех пор и по сей день она обеспечивает учет всех операций предприятия.

Система работает на двухпроцессорном Intel-сервере под управлением ОС Unix. На нем регистрируются около 40 пользователей, входящих через локальную сеть по протоколу telnet, а также пользователи другого выделенного терминального сервера, где установлено терминальное оборудование для подсоединения 64 линий. Работу основного сервера в оперативном режиме дублирует теневой сервер, меньшей мощности, но достаточной для поддержания работы всех пользователей при аварийной остановке главного сервера. Количество пользователей системы - около 250 человек, количество рабочих мест - чуть больше 100. Система работает в режиме 24 часа в сутки 365 дней в году.

На наш взгляд, короткий срок разработки и надежная эксплуатация в последующем в многом предопределены тем, что обеспечение работы информационной системы КОМИТЕКС возложено на продукты компании InterSystems и построенную на их базе СУБД “Информ Икс” нашей собственной разработки.

НЕСКОЛЬКО СЛОВ 0 САСНЕ'

СУБД Сасhе', которая производится с 1997 года, сегодня стала основой производственной программы компании InterSystems. У Сасhе' богатая предыстория, восходящая к таким продуктам управления данными, как МSМ, DТМ, DSM, ISМ, известным под общим названием ОреnМ. Вместе с этим сохраняет совместимость с предшественниками. Например, наша СУБД “Информ Икс”, которая изначально создавалась в среде МSМ, в 1999 году была перенесена в Сасhе' в течение одного дня практически без изменений исходного кода.

СУБД Сасhе' имеет архитектуру, называемую постреляционной. Она объединяет в себе два основных компонента: сервер многомерных данных и сервер приложений. Сасhе' позволяет обращаться к данным в терминах объектов, реляционных таблиц и многомерных структур.

Ядро системы - сервер многомерных данных (Multidimensional Data Server - MDS), реализованный с использованием концепции многомерных разреженных массивов. Эти массивы позволяют естественным образом хранить в Сасhе' и обрабатывать данные произвольной сложности.

К данным, хранящимся в MDS, одновременно возможно отнести три способа доступа:

Объектный. Сасhе' является полноценной объектной СУБД и полностью реализует все необходимые атрибуты объектных систем, такие как полиморфизм, наследование (включая множественное), инкапсуляция.

Реляционный (SQL-запросы). В Сасhе' к данным можно обращаться и через традиционный для классических СУБД язык запросов SQL. Поддерживается синтаксис SQL-92, а также “джентльменский набор” современных “тяжелых” реляционных СУБД - триггеры, хранимые процедуры, вычисляемые поля и другие особенности SQL, не вошедшие в стандарт версии 1992 года.

Многомерный (или прямой) доступ к данным непосредственно как к узлам многомерных массивов. Этот способ доступа является наиболее гибким и позволяет реализовать в Сасhе' произвольную модель данных.

В отличие от так называемых “объектно-реляционных” СУБД, где объектный слой выполнен в виде надстройки над реляционным, в Сасhе' объектное и реляционное представление данных синхронизированы и взаимодействуют непосредственно с многомерными структурами MDS. Существенно то, что к этим структурам можно обращаться и непосредственно через прямой способ доступа.

Так, например, создав таблицу в реляционном представлении при помощи выражения DDL, вы одновременно с реляционной таблицей получаете и класс в объектном представлении. При этом вы получаете возможность доступа к данным и как к многомерным структурам, в обход реляционного и объектного словарей данных, что позволяет при необходимости значительно повысить производительность критических участков приложения.

Бизнес-логика приложений описывается на языке Сасhе' ОbjесtSсriрt, полнофункциональном языке, поддерживающем все три способа доступа к данным. Примечательно, что все три способа доступа можно комбинировать в рамках одного приложения.

Говоря об архитектуре системы, нельзя не упомянуть об интерфейсах, предоставляемых Сасhе'. Основные группы интерфейсов представлены на рис.2.

Кроме показанных интерфейсов в Сасhе' реализованы еще интерфейсы к средствам САSЕ, словарю данных и программ, внешним реляционным и объектным СУБД, основным протоколам Internet и даже напрямую к стеку ТСР/IР.

С практической точки зрения Сасhе' является универсальной средой для решения информационно-логических задач. Крупнейшие проекты с применением Сасhе' можно найти в медицине, в системах обработки транзакций по кредитным картам, в юстиции, в банковской и промышленных сферах, в торговых предприятиях и т.д.; в России уже создан и сайт с применением WАР технологий. Число пользователей варьируется от нескольких десятков до нескольких десятков тысяч.

Подобное разнообразие объясняется тем, что Сасhе' оставляет возможности для поиска оптимальных решений при создании информационной системы, предлагая альтернативные подходы и позволяя разработчику остановить свой выбор на том, что предпочтительнее в конкретном приложении.

Direct

Object

SQL

Web

Cache ObjectScript

MD

Objects

SQL

MDS

Платформы

Рис. 1. Архитектура системы Cache'.

ОБЪЕКТЫ ИЛИ ТАБЛИЦЫ?

Какая модель данных наилучшим образом подойдет для решения очередной задачи в будущем? Сасhе' избавляет от выбора “или - или”, поддерживая и многомерную модель данных, и объектную модель стандарта ОDМG (Оbject DataBase Маnаgеment Gгоuр), и реляционное представление данных с помощью Сасhе' SQL. Объектная и реляционная парадигмы поддерживаются совместно и автоматически с помощью единой архитектуры данных. В рамках этой архитектуры делается единое описание объектов и таблиц, отображаемое в многомерные структуры ядра базы данных Сасhе'. Разработчикам предоставляются наиболее популярные интерфейсы, посредством которых и унаследованные реляционные, и новые, объектно-ориентированные приложения получают равноправный доступ к данным.

Если разработчика не устраивают ни базовая многомерная модель данных Сасhе', ни объектная модель Сасhе', ни реляционное представление данных с помощью Сасhе' SQL, он может использовать свою собственную модель данных. К такому выводу мы пришли сами: СУБД “Информ Икс” - пример собственной модели данных. Практика показала, что создание высокоуровневой надстройки в Сасhе' занимает при наличии у разработчиков необходимого опыта два-три человеко-месяца.

НАВИГАЦИЯ ИЛИ SQL-ДОСТУП?

В Сасhе' элегантно решена проблема доступа к данным. Что лучше: “ручная” навигация, как считают сторонники объектно-ориентированных СУБД, или “автоматическая” навигация посредством SQL, которую предпочитают сторонники реляционных систем? Думаем, лучше и то, и другое. Лучше иметь оба механизма в единой среде, как это сделано в Сасhе'. Прямой доступ к данным с помощью Сасhе' ObjectScript обеспечивает максимальную производительность, но, самое удивительное, что и Сасhе' SQL, обычно значительно увеличивает скорость работы SQL-приложений, перенесенных из чисто реляционных систем.

Как разработчики, мы числим себя сторонниками навигационного подхода; о его целесообразности, как нам кажется, свидетельствует успешное существование наших проектов. Однако при этом благодаря Сасhе' в созданных нами системах обеспечивается и SQL-доступ к накапливаемым данным, хотя процессом управляет вовсе не SQL-приложение. Согласитесь, редкий случай!

ОБРАБОТКА ТРАНЗАКЦИЙ ИЛИ АНАЛИЗ ДАННЫХ?

Обычно считается, что в рамках единой системы не эффективно поддерживать и OLТР, и OLАР, поскольку, во-первых, приложения OLАР будут существенно “тормозить” приложения OLТР, а во-вторых, эти приложения предполагают использование разных моделей данных. Однако в Сасhе' оперативные транзакции и сложная аналитическая обработка данных вполне сосуществуют. Все просто - обычно оперативная обработка транзакций реализуется в объектной или реляционной среде Сасhе', а аналитические приложения используют многомерные структуры Сасhе'.

ЕRP-ПРИЛОЖЕНИЯ ИЛИ СИСТЕМЫ ЭЛЕКТРОННОГО БИЗНЕСА?

Приложения электронного бизнеса стали самыми актуальными приложениями последней пары лет. Практически все производители приложений класса ЕRР (Enterprise ) дополняют свои базовые системы продуктами с приставкой “е”. Эти продукты реализуют функции работы в Web и ориентированы на более современную по сравнению с ЕRР концепцию СSRР (Customer Synchronized Resource Planning).

Обычно приложения электронного бизнеса предъявляют высокие требования к оперативной обработке транзакций и манипулированию мультимедийными объектами. Компонент Сасhе' WebLink обеспечивает прямой высокоскоростной обмен между Web-сервером производства Microsoft или Nеtsсаре и сервером Сасhе'. Важным элементом WebLink является WebLink Develорег. Используя специализированные инструменты третьих фирм, разработчики создают Web-страницы. Затем с помощью WebLink Develорег эти страницы компилируются в ObjectScript и формируется Wеb-приложение. Важно, что логика приложения и детали пользовательского интерфейса разделены и могут определяться независимо друг от друга. При необходимости можно встраивать код Сасhе' ОbjectScript, соответствующий логике приложения, непосредственно в Wеb-страницы.

   

WEB

 

Java

ODBC

SQL

Cache'

Object

ActiveX

OCI

C++

JDBC

CORBA

   

Direct

 

XML

Рис. 2. Основные группы интерфейсов Cache'.

КАК ОБЕСПЕЧИТЬ ПРОСТОТУ РАЗРАБОТКИ И СОПРОВОЖДЕНИЯ

Сасhе' ObjectScript - встроенный в Сасhе' язык программирования, по легкости сравнимый с Ваsiс. Система, даже очень большой сложности, состоит из набора маленьких кусочков кода (8-30 Кбайт), которые независимо компилируются и не требуют сборки в единый исполняемый модуль. Благодаря такому построению достигается немаловажное свойство - возможность вносить изменения в работающую систему без ее останова, причем даже удаленно. Мы, например, сопровождаем своих клиентов, где установлена система ИКС, по достаточно простой технологии: после создания очередной версии на Internet-сайт выкладывается как полная версия системы, так и “дельта” по отношению к предыдущей версии, которая всегда гораздо меньше по объему. Соответственно и все сопровождение заключается в оповещении пользователей, что версия вышла и ее можно забирать с сайта. Дальнейшие действия выполняются на стороне клиента автоматически; все, что от него требуется - это указать IР-адрес системы, которую необходимо обновить. Многие обновления могут происходить, как уже говорилось, и без останова работы пользователей.

Для эксплуатации важно то, что курс обучения администраторов Сасhе' занимает всего 30 академических часов. После прохождения такого курса администратор сможет выполнять все необходимые действия по обеспечению надежной эксплуатации системы, установленной в Сасhе'.

Базу данных в Сасhе' можно сохранять полностью или инкрементно, не останавливая работу пользователей. Сохранение можно выполнять автоматически по заранее написанному сценарию.

Просто и эффективно поддерживается в Сасhе' технология теневого (дублирующего) сервера (Shadow Server). Дублирующий сервер постоянно читает журнал основного сервера и обновляет дубликат базы данных в реальном времени. Такая технология позволяет: немедленно переключить пользователей на дублирующий сервер в случае отказа основного; выполнять отчеты и аналитическую обработку на дублирующем сервере, “разгружая” основной сервер.

СУБД “ИНФОРМ ИКС”

Выше уже упоминалось о том, что мы реализовали собственную модель данных и СУБД на платформе Сасhе'. Она представляет собой высокоуровневую надстройку в Сасhе', поддерживающую объектную модель данных (ОМД) в сочетании с традиционными для Сасhе' средствами, что обеспечивает высокую скорость создания прикладных систем и их высокое качество.

ОМД реализует как явные связи между объектами, так и связи по ссылкам. И тем и другим связям приписывается определенная семантика в обоих направлениях. Явные связи обеспечивают естественную поддержку отношения “многие-ко-многим” между объектами (в реляционной модели для организации связи “многие-ко-многим” необходимо создавать дополнительную таблицу, что нарушает естественные отношения предметной области). Между двумя объектами можно объявить несколько связей. Поддерживается связь объекта самого с собой.

Семантика связей явно отражается в объектных Навигаторе и Генераторе отчетов, которые входят в состав “Информ Икс”.

Комбинация явных связей и связей по ссылкам придает ОМД необыкновенную мощность, что обеспечивает гибкое и надежное проектирование прикладных систем. Заметим, что расширенная реляционная модель, поддерживающая только связь по ссылкам, является ограниченным частным случаем ОМД.

Технология моментального снимка дает возможность пользователям получать правильные (в смысле целостности данных) отчеты несмотря на то, что другие пользователи в это же время изменяют данные, необходимые отчетам. Скорость выполнения отчетов в режиме моментального снимка в “Информ Икс” и в обычном режиме практически не различается и остается действительно высокой.

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

1) индивидуальный доступ к элементам баз данных;
2) коллегиальный доступ.

Индивидуальный доступ пользователя к элементам баз данных устанавливается администратором баз данных (под элементами понимаются объекты, характеристики, связи объектов и характеристики связи, а также прикладные задачи).

Коллегиальный доступ также устанавливается администратором баз данных для каждого пользователя по каждому объекту и каждой связи. При этом указываются пользователи, которым разрешается читать, изменять или удалять элементы БД, созданные пользователем-коллегой.

Внимательный читатель не мог не заметить некоторой двусмысленности фразы о СУБД Сасhе' компании InterSystems и СУБД “Информ Икс” собственной разработки, употребленной нами в начале статьи. Что это - две независимые СУБД в рамках одной системы? СУБД построенная поверх другой СУБД?

Для разрешения этого вопроса обратимся к классическому определению СУБД, данному Дейтом в его книге “Введение в системы баз данных”: “Система Базы Данных это компьютеризированная система хранения записей, основная цель которой - содержать информацию и предоставлять ее по требованию. Программное обеспечение этой системы и является Системой Управления Базами Данных или СУБД”.

Такое определение оставляет возможность достаточно широко трактовать само понятие “СУБД” и использовать его для обозначения достаточно широкого спектра систем. Важно одно: любая СУБД должна предоставлять возможность пользователю работать с записями - абстрактными единицами информации, отличными от физического представления соответствующих данных в памяти или на диске.

В рамках этого определения “Информ Икс”, несомненно, является СУБД. Она позволяет работать с данными на уровне абстрактных понятий - объектов и связей между ними. В тоже время, скрывая от пользователя внутренние механизмы хранения данных в многомерном ядре СУБД Сасhe'.

Многие разработчики, не знакомые с Сасhе', с которыми мы имели честь общаться, часто находятся в постоянном поиске среды для создания приложений. У нас же за 15 лет ни разу не возникало мысли сменить платформу.

Объектная модель, предлагаемая “Информ Икс”, имеет ряд принципиальных отличий от классических объектных моделей, предлагаемых, например консорциумом ОDМG и воплощенной в объектной модели Сасhе' или декларируемой в стандарте SQLЗ и используемой во многих объектно-реляционных системах. В то же время, данная модель имеет ряд несомненных достоинств и имеет полное право на существование.

Теперь, если рассмотреть совокупную систему “Информ Икс” и СУБД Сасhе', то фактически мы получаем картину, в которой объектная модель “Информ Икс” является ничем иным, как четвертым (наряду с прямым, “родным” для Сасhе' объектным и SQL) способом доступа к данным, хранящимся в МDS.

Фактически, СУБД “Информ Икс” являет собой пример удачной реализации собственного словаря данных в Сасhе', демонстрирующий гибкость подобного подхода к построению промышленных информационных систем. Если в какой-то момент и вы решите, что вам стали тесны рамки реляционной и классической объектной модели данных, или захотите воплотить в жизнь свои разработки в области структур данных, многомерное хранилище данных Сасhе' и Сасhе' ObjectScript, использующий прямой доступ к многомерным массивам - идеальный инструмент для воплощения самых смелых идей.


Новости    О компании   Продукты   Технологии   Партнеры   Проекты   Обучение   Пресса   Контакты    Цены   Содержание

© Copyright 2021-2022
ЗАО
Информ Икс  Москва