Языки реляционных баз данных
7.9 Языки, используемые для создания информационных систем
Обилие языков, используемых для создания информационных систем (ИС), объясняется, прежде всего, сложностью этих систем. Приходится создавать несколько типов моделей так, чтобы каждая из них отражала только некоторые особенности систем. Это делает модели доступными человеку, когнитивными. На рисунке 7.7 обозначено семь штук моделей баз данных. При желании к ним можно добавить еще полуструктурированную и другие модели. Интерфейсы пользователя и данные, хранящиеся в памяти, для представления нуждаются в своих моделях данных. В распределенных системах необходимо моделировать интерфейсы обмена данными. В больших, особенно неоднородных системах, появились онтологии. Они позволяют сохранить и повторно использовать часть знаний, описывающих предметную область, в том числе систему использованных терминов (терминосистему). Но для представления онтологий необходимы свои модели, например, фреймовая, RDF, OWL. Мы не будем ограничиваться только моделями базы данных, хотя все остальные модели подробно рассматриваться не будут. Это позволит нам рассматривать базы данных как открытые системы, более реалистично представить их роль и место. (Как известно, открытая система не может быть понята до конца, если не учитывается ее взаимодействие с окружающим миром)
Нетрудно догадаться, что между используемыми моделями должны быть реализованы все необходимые преобразования. Иначе вы не будете уверены, скажем, в том, что сумма $1000, введенная в интерфейсе пользователя, не превратится во что-нибудь другое, если ее записать на диск.
Учтите, что на рисунке 7.5 представлены далеко не все модели, используемые для описания информационных систем. Нет моделей бизнеса, с которых и начинается проектирование системы.
Давайте на примере СУБД Oracle представим, сколько языков программирования нужно знать для работы с ИС сейчас и лет 15 назад (таблица 7.4). PL/SQL — это обычное для больших СУБД процедурное расширение языка SQL, a SQL*Plus — небольшой язык терминала, специфичный для Oracle. К скромному списку о шести пунктах, характерному для 90-х годов, в настоящее время добавляются Java, XML и океан связанных с ними языков и технологий. Так, для XML это язык стилей XSL, язык путей XPath, язык схем Schema, RELAX NG, позволяющий посмотреть на одни данные с точки зрения различных грамматик, язык запросов Xquery, язык обмена XMI. В последние годы приходится осваивать еще Ruby и технологии Rails.
Поскольку Oracle 11 g — это семантическая база данных, добавляются языки представления семантики RDF, OWL и другие. В последнее десятилетие активно разрабатываются и уже начали использоваться языки специфичные для предметной области. Правда, для нас это совсем не новость. При желании можно любые языки для работы с базами данных считать предметно ориентированными.
Зачем так много языков и технологий? Прежде всего, из-за того, что, используя единственный язык, не удобно решать все проблемы, даже если они, в принципе, с его помощью решаются.
1995 год | Сейчас |
|
|
|
|
|
Сократить список используемых языков можно, переходя на языки сверхвысокого уровня (по сравнению с сегодняшним уровнем языков четвертого поколения). Есть обоснованное предположение о том, что языки более высокого уровня потребуют использования систем с высоким встроенным интеллектом и развитой семантикой.
Можно спросить, а зачем мы выходим за рамки языков баз данных, в которых и без того есть что изучать? Причин несколько. Во-первых, языки баз данных могут встраиваться в языки общего назначения. Во-вторых, современные базы чаще всего работают в рамках трехзвенной архитектуры приложений, и некоторые операции могут проводиться на серверах баз данных, другие —на серверах приложений, а какие-то —на клиентской части. Языка, одинаково пригодного для всех этих звеньев, не существует. В-третьих, распределенная база может быть гетерогенной, то есть содержать локальные базы, написанные на разных языках. Необходимо как-то организовать обмен между ними и согласование данных.
Практически всегда модели данных, используемые в базе, в интерфейсе пользователя и интерфейсах обмена между ИС не совпадают. Поэтому необходимо наладить отображение данных (mapping) между ними.