- Аналитические и
технологические обзоры - Возможности и преимущества
- Демонстрации
- Документация и техническое описание
- Лицензии и сертификаты
- Примеры внедрения
- Технологический справочник
- Уголок разработчика
- Caché Newsgroup
- Free Caché e-Learning
- Скачать Caché
Технологический справочник
Часть 1:
Моделирование данных: реляционный или объектный доступ
Приступая к проектированию приложения, разработчики должны выбрать методологию моделирования данных. По большей части, выбор производится между традиционным способом моделирования с помощью реляционных таблиц и современным подходом - моделированию в форме объектов. Многие разработчики утверждают, что объектное моделирование более эффективно для сложных информационных структур, с которыми сегодня приходится иметь дело.
Для переноса существующих приложений на Caché первым шагом бывает перенос существующей модели данных. В Caché поддерживается разные способы импорта модели данных из различных реляционных или объектных представлений в стандартное для Caché описание данных. Импортированное в Caché описание данных становится доступным как объекты, реляционные таблицы и многомерные массивы данных.
Caché
поддерживает как SQL, так и объектный доступ и каждый из них предпочтительней в зависимости от ситуации. Каковы преимущества использования
того или иного подхода? Почему нынешние разработчики предпочитают моделировать
данные в форме объектов? Для ответа на эти вопросы нужно углубиться
в историю и рассмотреть обстоятельства создания обеих систем моделирования.
РЕЛЯЦИОННАЯ ТЕХНОЛОГИЯ
На заре компьютерной эры обработка данных производилась на огромных вычислительных системах, соответственно, работа с информацией была доступна только узкому кругу профессионалов в области информационных технологий. Базы данных создавались, что называется, под себя, поэтому для поиска и изменения данных требовалось хорошее знание структур таких баз. Пользователям приходилось обращаться за каким-нибудь специальным отчетом к, как правило, перегруженным работой профессионалам, обслуживающим центральную вычислительную систему, которые не успевали подготовить отчет к моменту принятия решений.
Тогда как реляционные технологии появились на мэйнфреймах в семидесятых, в значительной степени они использовались в исследовательских проектах до появления в восьмидесятых миникомпьютеров. Появление персональных компьютеров означало, что мир вступил в эпоху информационных технологий, ориентированных на пользователя. С этого момента реляционные базы данных обслуживали тех, кто мог писать нужные отчеты, используя SQL - язык запросов, пришедший с реляционной технологией, и выполнять запросы по базе данных, обеспечивая рост популярности реляционных технологий.
SQL представлял язык запросов для поиска довольно широкого спектра данных. Принцип работы SQL - это представление данных в очень простом, стандартизованном формате, в виде двумерных таблиц, состоящих из колонок и строк. С использованием такой простой модели данных стало возможным создать элегантный язык запросов, однако простота и изящество доставались дорогой ценой. Дело в том, что реальные данные и их взаимосвязи крайне сложны, и их отображение на реляционные таблицы во многих случаях приводит к разбиению данных на большое количество таблиц, для которых должны выполняться соединения (Join) даже при выполнении даже самых простых операций. Все это порождает две проблемы: 1) существенно усложняется написание запросов в силу необходимости соединения многих таблиц; 2) становится непомерно большим объем дополнительной обработки, которую вынуждены проводить реляционные системы при работе с данными сложной структуры.
SQL стал стандартным средством взаимодействия баз данных и формирования отчетов. Однако важно понимать, что, хотя своим появлением SQL и обязан реляционным базам данных, использование SQL не должно ограничиваться только реляционными СУБД. В постреляционной СУБД Caché язык SQL используется для запросов и обновлений базы данных, но его применение основано на гораздо более совершенной технологии многомерных баз данных и расширено объектными возможностями.
ОБЪЕКТНАЯ ТЕХНОЛОГИЯ И ОБЪЕКТНЫЕ БАЗЫ ДАННЫХ
Объектная технология и объектные базы данных являются практическим результатом работы по моделированию деятельности мозга. Было замечено, что мозг может, с одной стороны, хранить очень сложную и разнородную информацию, а с другой стороны - манипулировать ею, используя единый подход. Точно так же, очень сложное поведение объектов реального мира должно быть реализовано в программных продуктах таким образом, чтобы скрыть эту сложность. Несомненно, что обе указанные особенности все больше и больше находят отражение в современных приложениях.
СРАВНЕНИЕ ОБЪЕКТНОГО И РЕЛЯЦИОННОГО ДОСТУПА
В объектной технологии все сложности структур данных скрываются внутри объектов, а доступ к информации осуществляется через простой унифицированный интерфейс. Реляционная технология также предлагает простой унифицированный интерфейс, однако формат хранения данных упрощен настолько, насколько это возможно, поэтому все проблемы, связанные с обработкой сложной информации, ложатся на плечи пользователей и программистов.
Так как объекты позволяют моделировать комплексные данные очень просто, объектное программирование лучше всего подходит для разработки сложных приложений. Точно так же пополнение и изменение базы данных (например, при обработке транзакций) наиболее эффективно осуществляется посредством объектного доступа.
Объектный доступ в Caché дополнен языком запросов SQL, расширенным рядом конструкций для работы с объектами. SQL является весьма мощным инструментом для поиска информации в базах данных, он также широко используется как основа инструментария для подготовки отчетов. Тем не менее, думается, что SQL наилучшим образом приспособлен для этих и только для этих целей - запросов и отчетов, а не для обработки транзакций (в последнем случае SQL громоздок и часто неэффективен). Объектные расширения Cache SQL устраняет громоздкость при описании соединений, делая SQL проще в использовании.
CACHÉ: ОБЪЕКТНАЯ МОДЕЛЬ ДАННЫХ И ОБЪЕКТНОЕ ПРОГРАММИРОВАНИЕ
Объектная модель данных Caché разработана на основе стандарта ODMG (Object Database Management Group - Группа по объектному управлению базами данных). В нее включены многие дополнительные возможности, в том числе множественное наследование.
Объектная технология - это опыт отражения того, как в действительности человек думает об информации и использует ее. Теоретически, сущности реального мира трактуются как объекты, имеющие состояние (что представляется текущими значениями данных объектов) и поведение (которое можно наблюдать и на которое можно влиять через программный код объектов). Примером мог бы служить объект "счет-фактура", который имеет такие данные, как "номер счета", "итоговая сумма" и программный код "печатать" - команда Print().
Объекты, в отличие от реляционных таблиц, тесно увязывают данные и программный код. Концептуально, а часто и практически, объект представляет собой пакет, включающий значения всех данных (т.е. свойства) этого объекта и копию всех его кодов (т.е. методы). Методы объекта направляют сообщения для взаимодействия с другими методами этого же или других объектов. Часто, для сокращения потребностей в памяти, объектам одного и того же класса соотносится единая копия кода (ситуация, когда каждый объект "счет-фактура" имеет свою собственную копию кода, представляется нереалистичной). Точно так же выполнение "методов" в Caché приводит к вызовам функций, а не к действительным передачам сообщений, влекущим за собой дополнительные накладные расходы. Поскольку все эти детали скрыты от программиста, всегда можно считать, что объекты передают сообщения.
В чем состоит разница между объектом и классом? Класс - это структура данных и программный код, определяемые программистом. Класс состоит из описания характера данных, способа их хранения и кода, но не содержит никакой реальной информации. Объект - это реальная сущность, т.е. индивидуальный "экземпляр" класса. Например, счет №123456 является объектом класса "счет-фактура".
В объектной технологии данные сохраняют свой естественный вид, т.к. свойства данных не сводятся к простым "компьютерным" типам данных. Объекты могут содержать внутри себя другие объекты или ссылки на них, что облегчает построение точных и удобных моделей данных. Ниже см. пример объекта "Клиент" (Customer):
Несмотря на то, что "Клиент" несет в себе большой объем информации, приложение может оперировать им, как единой сущностью объектом.
Name (Имя): Данные хранятся с использованием имени типа данных "Имя".
SSN (Номер социального страхования): Данные могут быть представлены в простом формате, например, целого числа, или в более сложном виде, определяемом программистом, как, например, девятизначное число в формате: NNN-NN-NNNN.
Address (Адрес): Здесь показано, как одни объекты могут встраиваться в другие. Объект "Адрес" содержит объекты-свойства "Улица" и "Город".
AccountRep: "AccountRep" это свойство, соединяющее объект "Клиент" с объектом "Менеджер продаж" отношением "многие-к-одному" (много "Клиентов" у одного "Менеджера продаж"). В отличие от встроенного объекта объект, на который есть ссылка, имеет свой собственный идентификатор в базе данных, что позволяет хранить этот объект отдельно. Идентификатор используется для прямого доступа к объекту "Менеджер продаж", минуя объект "Клиент". В Caché синтаксис доступа как к встроенному, так и к объекту со ссылкой одинаков (например, "Клиент.Адрес.Город" и "Клиент.AccountRep.Имя" используют один и тот же "точечный" синтаксис).
Invoices (Счета): У клиента может быть несколько счетов. Каждый "Счет" является сложным объектом, хранимым со своим идентификатором ID. В этом примере существует отношение "один-ко-многим" между "Клиентами" и "Счетами" (один "Клиент" ко многим "Счетам") с использованием связи parent-child. Например, "Счета" без "Клиента" не существуют, но "Клиент" может быть без "Счетов". Допускается также применение коллекции встроенных объектов "Счет".
ОСНОВНЫЕ КОНЦЕПЦИИ ОБЪЕКТНОЙ ТЕХНОЛОГИИ
Наследование - это способность порождать один класс объектов из другого. Новый класс (подкласс) сохраняет все свойства и методы своего "родителя"; кроме того, он может иметь дополнительные свойства и методы, характерные только для него. В основе взаимоотношений между исходными и производными классами лежит принцип принадлежности. Скажем, Собака принадлежит Семейству млекопитающих, что означает, что Собака наследует все свойства и методы Семейства млекопитающих. У подкласса, в свою очередь, могут иметься дополнительные характеристики (например, у Собаки может быть свойство НомерОшейникаСобаки, которого нет у Семейства млекопитающих). Допускается также изменение какого-нибудь унаследованного признака в подклассе, например, метод Print() в подклассе, производном от класса "Счет", может отличаться от метода Print() самого класса "Счет". Наследование позволяет повторно использовать существующий код и упрощает доработку такого кода.
Множественное наследование подразумевает, что подкласс может иметь более одного "родителя". Например, собака является млекопитающим и, кроме того, домашним животным, следовательно, объект класса "Собака" наследует свойства обоих классов: "Млекопитающие" и "Домашние животные".
Инкапсуляция дает возможность трактовать объект в приложении как своеобразный "черный ящик". Независимо от уровня сложности, определенный класс того или иного объекта имеет определенное число общедоступных свойств и методов. Они определяются изначально, и в дальнейшем приложению не обязательно знать, как объект устроен и действует изнутри. Приложение взаимодействует только со свойствами и методами объекта. Для вызова общедоступных свойств и методов можно воспользоваться любым методом, тогда как доступ к частным свойствам и методам осуществляется только через метод, принадлежащий к этому же классу. Преимущество инкапсуляции в том, что внутренняя реализация класса может быть доработана без влияния на другие классы приложения.
Полиморфизм означает, что методы, принадлежащие различным классам, могут использовать один и тот же интерфейс вне зависимости от конкретной реализации этих методов. Например, предположим, что приложение работает с несколькими разными классами объектов - Письмо, Почтовая метка и Идентификационная карточка, каждый из которых связан с одним и тем же методом "ПечатьАдреса". В подобном случае в приложении не требуется специальных команд форматирования адреса для каждого отдельного объекта, оно просто вызывает метод "ПечатьАдреса" нужного объекта. Принцип полиморфизма означает, что каждый объект исполняет команду так, как это определено для данного класса объектов.
Преимущества CachéОбъекты Caché позволяют использовать объектные технологии при создании высокопроизводительных приложений для обработки транзакций. Интуитивное моделирование данных Быстрая разработка приложений |
ПОЧЕМУ СТОИТ ВЫБРАТЬ ОБЪЕКТЫ ДЛЯ ВАШЕЙ МОДЕЛИ ДАННЫХ?
Для разработки новых приложений баз данных многие разработчики все чаще выбирают объектные технологии, потому что с их помощью разработка комплексных приложений идет гораздо быстрее, и дальнейшие модификации происходят существенно легче. Объектная технология обладает рядом преимуществ:
- Структура данных объекта более емкая, за счет чего можно естественным образом описывать данные реального мира.
- Программирование упрощается, т.к. легче следить за самим процессом разработки и за спецификациями программ.
- Версии классов, настроенные под определенного клиента, могут легко заменить стандартные версии. Это облегчает индивидуальную настройку приложения и гарантирует ее сохранение в следующих версиях. Последнее особенно важно для партнеров-разработчиков, т.к. им приходится работать с целым набором индивидуальных версий.
- Принцип "черного ящика" (или инкапсуляция) позволяет программистам совершенствовать внутреннее устройство объекта, не нарушая работу других частей приложения.
- Объекты упрощают взаимодействие с различными технологиями и приложениями.
- Объектная технология прекрасно сочетается с графическими пользовательскими интерфейсами (GUI).
- На объектной технологи основано множество современных инструментальных средств проектирования и разработки приложений.
- Объекты позволяют хорошо изолировать пользовательский интерфейс от остального приложения. Поэтому переход на новую технологию пользовательского интерфейса (например, на иной, пока что неизвестный тип интерфейса) не влечет за собой полную замену кода; большая часть кода может оставаться без изменений.
ОБЪЕКТНОЕ ХРАНЕНИЕ ДАННЫХ...
Однако, несмотря на то, что многие приложения сейчас создаются на языках объектного программирования, данные объектов часто "втискивают" в плоские реляционные таблицы. Это, безусловно, ослабляет преимущества объектной технологии.
Caché использует многомерные структуры данных, в которых разнородные объектные данные сохраняются естественным образом. Поэтому и доступ к данным становится быстрее, и разработка идет динамичнее.
...ПЛЮС РЕЛЯЦИОННЫЙ ДОСТУП
Многие инструменты (например, генераторы отчетов) используют для доступа к данным не объектные технологии, а SQL, что не исключает их из разряда часто применяемых инструментов.
Уникальность технологии Caché заключается в том, что система
автоматически обеспечивает полный доступ к данным через SQL, как только
определяется класс объекта базы данных. Таким образом, без каких-либо
дополнительных затрат можно немедленно подключить для работы с данными
Caché инструменты на основе SQL, при этом производительность
их работы даже увеличится за счет Многомерного сервера данных Caché
(Caché Multidimensional Data Server).
Возможен также и обратный вариант. При импорте описания DDL реляционной
базы данных Caché автоматически генерирует интегрированное реляционное/объектное
описание данных и немедленно предоставляет доступ к ним как к объектам
или через SQL.
Единая архитектура данных Caché (Caché Unified Data Architecture) синхронизирует оба типа доступа. Изменения вносятся только в одно описание данных.
Технологический справочник
