ВВОДНАЯ ЛЕКЦИЯ ПО INFORMIX. КОНСПЕКТ. Для начала несколько определений, которые, впрочем, всем из- вестны и ничего не определяют. Понятие "Система Управления Базами Данных" (СУБД), она же DBMS (DataBase Managment System) может означать, по большому счету, все что угодно. В самом общем случае это собственно база данных, которая пред- полагает какой либо метод сохранения информации на диске и воз- можности доступа и манипуляции с нею, и набор программных про- дуктов, предоставляющий пользователю все допустимые в базе средства работы с данными. Набор программных средств манипуляции данными СУБД удовлетворя- ет свойствам полноты (консистентности). Полагаю, что коммерчес- кие варианты СУБД стремятся быть еще и замкнутыми, т.е. само- достаточными, не требующими и не поддающимися расширению. АРХИТЕКТУРА КЛИЕНТ-СЕРВЕР. Очень многие СУБД разделяют свою работу на два уровня по систе- ме "DКлиентE-DСерверE". Хитрость состоит в том, что не только поль- зователь, но и программист этого не замечает. Разделение функ- ций его задачи выполняется автоматически системой. Итак, двухуровневая система "Клиент-Сервер" это: 1. КЛИЕНТ - Программа обработки, она же DпользовательскаяE, она же прикладная DпрограммаE. Занимается обычно интерфейсом с поль- зователем, а всю фактическую работу с базой данных возлагает на плечи БД-сервера. 2. СЕРВЕР БАЗЫ ДАННЫХ - базис (Ddatabase engineE), он же ядро ба- зы данных. Отдельная программа, выполняемая как отдельный про- цесс. Передает выбранную из базы информацию по межпроцессному каналу клиенту. Именно он, и только он фактически работает с данными, занимается их размещением на диске. В первый момент может возникнуть вопрос, а зачем такие сложнос- ти? Вот несколько соображений в пользу такого подхода. Представьте, вы работаете в сети, ваша программа обработки идет на одном компьютере, а сама база данных хранится на другом. Тут разделение выглядит совершенно естественным: клиент - ваша программа (точнее та ее часть, которая отвечает за интерфейс с вами), гонит по сети запросы на обработку самих данных на дру- гой компьютер, а там БД-сервер их прочитывает, выполняет требу- емое, и по сети гонит ответы вам. При этом по сети передается только полезная информация. Другое соображение: постоянно идет работа по совершенствованию самого метода хранения и обработки информации, и если его реа- лизация (т.е. БД-сервер) сменилась, та вам не потребуется пере- лопачивать и перекомпилировать с новыми библиотеками все свои разработанные программы, а достаточно будет инсталлировать но- вый БД-сервер взамен старого и перевести свои базы данных в формат нового сервера (применив для этого прилагаемую к нему утилиту). Естественно, все это можно проделать, если новый сер- вер придерживается тех же правил обмена между ним и пользова- тельской программой, что и старый, что, впрочем, наверняка име- ет место. Всвязи с СУБД INFORMIX нас, естественно, интересует только одна модель данных - реляционная. Сетевых и иерархических моделей рассматривать здесь я не буду. Можно, конечно, дать строгое оп- ределение реляционной модели данных по Э.Ф. Кодду, но ведь ни одну из коммерческих СУБД нельзя назвать реляционной в строгом смысле этого слова. ОСНОВНЫЕ ОБЪЕКТЫ РЕЛЯЦИОННОЙ БАЗЫ ДАННЫХ. (DDATABASEE) DРеляционная База Данных:E это множество прямоугольных DтаблицE с данными. Никаких дополни- тельных сведений и ссылок не хранится. (DTABLEE) DТаблицаE прямоугольная таблица, состоящая из DстрокE и DстолбцовE. Задать таблицу - значит указать, из каких столбцов она состоит. Обра- щаю внимание поклонников DBase - то, что в DBase называлось ба- зой данных, в INFORMIX называется таблицей. (DROWE) DСтрокаE запись, состоящая из полей - столбцов. В каждом поле сидит его значение, либо значение NULL - "пусто". Строк в таблице может быть сколько угодно. Физический порядок их расположения друг относительно друга неопределен. (DCOLUMNE) DСтолбецE Каждый столбец в таблице имеет собственные имя и тип. В INFORMIX допустимы следующие типы столбцов: INTEGER SERIAL - автоматический счетчик SMALLINT CHAR(n) DATE FLOAT DECIMAL(m,n) DATETIME qualif1 TO qualif2 REAL MONEY(m,n) INTERVAL qualif1 TO qualif2 где qualif \in {YEAR,MONTH,DAY,HOUR,MINUTE,SECOND,FRACTION(n)} возможны и другие типы, в зависимости от реализаций. Реляционная модель идейно проста - основной ее принцип - "База Данных обеспечивает хранение и выдачу информации из своих пря- моугольных таблиц, и ничего не желает знать о логической струк- туре данных, которую на ней реализовывают." Все логические от- ношения и связи между разными таблицами вынесены наружу "Испол- нителя База Данных" и отданы на откуп программисту. Такой под- ход позволяет просто и эффективно реализовывать саму базу дан- ных, соответственно и быстродействие и мощность реляционных баз удается держать на весьма высоком урвне. Физическую целостность базы данных обычно поддерживает сам ме- тод доступа, сервер базы. Но логическая (внешняя) структура пользовательской базы может быть весьма сложной. Для поддержания целостности логической структуры базы данных в реляционной базе имеется механизм тран- закций. Транзакция, это объединение нескольких простых операто- ров манипулирования данными, которые должны быть выполнены только вместе, а если это не удается, то база вернется в состо- яние, предшествующее выполнению самого первого из них. ПОНЯТИЯ, СВЯЗАННЫЕ С РЕЛЯЦИОННОЙ БАЗОЙ ДАННЫХ. DРЕЛЯЦИОННЫЕ МЕТОДЫ МАНИПУЛИРОВАНИЯ ТАБЛИЦАМИ.E Запросы на поиск. Соединение таблиц. Внешнее соединение таблиц. Представьте, что вам нужно в таблице "КАДРЫ" хранить данные о личном составе предприятия. О каждом человеке желательно пом- нить его фамилию, зарплату, пол, и т.д., а так же название под- разделения, в котором он работает. Но название подразделения длинно, самих подразделений немного, зато строк в таблице "КАД- РЫ" много. Для экономии места применяется стандартный реляцион- ный метод: в таблице "КАДРЫ" хранится не само название, а толь- кое его короткий код, и создается еще одна таблица, с помощью которой мы будем определять название подразделения по его коду. Табличку эту мы, естественно, назовем "ПОДРАЗДЕЛЕНИЯ", и будет в ней всего два столбца: столбец "КОД" и второй "название под- разделения". И вот мы подошли к самому главному, что есть в ре- ляционной базе, к "СОЕДИНЕНИЮ ТАБЛИЦ" по значению столбца (оно же соединение по ключу, по коду). Когда нам потребуются данные о человеке по фамилии Иванов, мы захотим увидеть название под- разделения в котором он работает, а не малопонятный код. Значит поиск данных об Иванове нужно вести в двух таблицах. Сперва мы найдем в таблице "КАДРЫ" строчку, в которой в столбце ФАМИЛИЯ стоит значение "Иванов", мы возьмем в этой строчке значение ко- да подразделения, и будем искать в таблице "ПОДРАЗДЕЛЕНИЯ" строку, со значением в столбце КОД равным коду из строки с с Ивановым. А найдя мы соединим данные из строки с Ивановым и з первой таблицы и из строки с кодом из второй, получив одну, об- щую строку. DИНДЕКСАЦИЯE Индекс=поисковый массив. {(Значение столбца, физический адрес)} Отсортирован по значению в порядке возрастания или убывания. Если индекс создан, то система будет пользоваться им автомати- чески, самостоятельно при выполнении поиска в таблице. Ускорение соединения таблиц по столбцу. Индексировать нужно более длинный столбец. Обеспечение уникальности значений в столбце. Затраты машинного времени на поддержание индекса. Индекс совместный, для нескольких столбцов, не путать с нес- колькими индексами для различных столбцов. Индекс кластеризованный: Физическое упорядочивание данных на диске согласно индексу. Поскольку операционная система поддер- живает буферизацию дискового обмена, физически упорядоченные данные оказываются в буферном кэше вместе, можно сказать, "ав- томатически". Следовательно возрастает скорость запросов. DСИСТЕМНЫЙ ЖУРНАЛE (logfile), он же журнал транзакций. Запись всех изменений, происходящих в базе данных. Контрольные точки. Откатка. Транзакции. Оператор начала транзакции. Оператор нормального завершения транзакции. Оператор ненормального завершения транзакции - откатка к преды- дущей контрольной точке. Базы данных в режиме ANSI. Прогон базы данных по системному журналу из backup копии. МНОГОПОЛЬЗОВАТЕЛЬСКИЙ РЕЖИМ ОБРАБОТКИ БАЗЫ ДАННЫХ. DБЛОКИРОВАНИЕE (loking), оно же запирание. Сервер базы блокирует строки и таблицы во избежание коллизий при записи в одну и ту же строку. Строки блокируются автоматически (неявно). В блокированную строку нельзя писать, но можно смотреть. На время выполнения транзакции все измененные в ней строки бло- кируются. Можно заблокировать всю таблицу целиком явной командой блоки- ровки. Таблицы можно блокировать не только от записи, но и от просмотра. Программе можно задавать режим: ждать/ не ждать блокированных строк. SET LOCK MODE. DПРАВА ДОСТУПА В БАЗЕ ДАННЫХE, которые могут иметь пользователи. На уровне базы данных: - пользовательский, право на ресурсы, администратор базы данных На уровне таблиц: - читать, вставлять, изменять, уничтожать строки, переопреде- лять таблицу. SQL - СТРУКТУРНЫЙ ЯЗЫК ЗАПРОСОВ. ANSI (American National Standart Institute) разработал Структурный Язык Запросов (SQL) - Structured Query Language для определения, манипуляции и контролирования данных. Операторы описания данных: CREATE, DROP, ALTER Операторы манипуляции данными: INSERT, DELETE, SELECT, UPDATE Операторы задания прав доступа: GRANT / REVOKE , LOCK / UNLOCK , SET LOCK MODE Операторы защиты и восстановления данных: Transaction, Audit trail, Logfile ПОНЯТИЯ ЯЗЫКА ПРОГРАММИРОВАНИЯ БАЗ ДАННЫХ. Язык программирования базы данных: Средства стандартных языков программирования 3-го поколения. Программные переменные. Изготовление операторов по ходу программы. Операторы манипуляции базой данных. SQL. Переброска данных из базы данных в програмные переменные, и об- ратно. Курсоры. Печать результатов запросов. Отчеты. Экранный обмен с пользователем. Меню. Окна. Экранные формы, экранные поля, экранные массивы. Файл описания экранной формы. Файлы с исходными текстами. Описание состава программы. ПРОДУКТЫ INFORMIX ДЛЯ ОБРАБОТКИ БАЗ ДАННЫХ. Программное обеспечение Informix содержит следующие компоненты: I. БАЗИСЫ, ОНИ ЖЕ ЯДРА, ОНИ ЖЕ СЕРВЕРЫ БАЗЫ ДАННЫХ: DInformix-SE.E Сервер для многопользовательских баз данных INFORMIX, на нижнем уровне обеспечивающий работу всех программ, обращающихся к ба- зам данных INFORMIX. DInformix-NET.E Сетевое дополнение к INFORMIX-SE. Превращает его в сервер уда- ленных баз данных. Работает поверх сетевого протокола TCP/IP. DInformix-OnLine.E Современный OLTP (On-Line-Transaction-Processing) базис баз данных. В отличие от SE взял физическое хранение данных в свои руки, отнимает у операционной системы логический раздел(ы) дис- ка и самостоятельно работает с ними на низком уровне. В 2-4 ра- за быстрее SE, однако более сложен в настройке на конкретный компьютер, требует от администратора OnLine базы данных хороших познаний в операционной системе. Имеет много дополнительных возможностей по сравнению с SE, в том числе хранение таких ти- пов данных как Binary Large Objects, текстовых и байтовых, а так же символьных строк переменной длины как полей в базе дан- ных, разделяемую буферизацию данных, буферизацию транзакций, зеркальный диск, автоматическое восстановление после системных сбоев, автоматический backup. DInformix-STAR.E Сетевое дополнение к INFORMIX-OnLine. Превращает его в сервера распределенной базы данных. Разрешает одновременный доступ к данным нескольких INFORMIX-STAR систем. Работает поверх прото- кола TCP/IP. Естественно, в MS-DOSе отсутствует. II. ДИАЛОГОВАЯ СИСТЕМА ПОДДЕРЖКИ И АДМИНИСТРИРОВАНИЯ БАЗ ДАННЫХ ДЛЯ ПОДГОТОВЛЕННЫХ ПОЛЬЗОВАТЕЛЕЙ. DInformix-SQL.E Система управления и поддержки баз данных.Содержит 5 компонент: - интерпретатор языка SQL. - экранные формы для просмотра и изменения таблиц базы данных. - генератор отчетов. - организация пользовательких меню. - диалоговое описание структуры таблиц. III. ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА РАЗРАБОТКИ  ПОЛЬЗОВАТЕЛЬСКИХ ПРИЛОЖЕНИЙ. DInformix-4GL.E Основное инструментальное средство для программирования баз данных и создания пользовательских приложений на языке 4GL. Включает: - компилятор с 4GL на Си и далее, в машинный код. - генератор и компилятор экранных форм 4GL - описание и поддержка многомодульных программ (а ля make) Все это собранно в единую интегрированную среду-оболочку под- держки программирования, управляемую меню. Язык 4GL содержит в себе: а. Операторы SQL - для работы с данными. б. Программные операторы - IF, CASE, CALL, FUNCTION, FOR, WHILE, GOTO, DEFINE и т.д. в. Операторы экранного обмена - меню, окона, ввод-вывод через экранные формы и экранные массивы. г. Перехват и обработка исключительных ситуаций DInformix-4GL-RDS+ID.E Rapid Development Sistem and Interactive Debugger То же самое, только компилируются программы гораздо быстрее, но не до выполнимого кода, а до "псевдо"-кода, который выполняется runner'ом. Диалоговый Отладчик 4GL программ использует "псев- до"-код. DInformix-ESQL/C.E EmbeddedSQL/C (Вложенный в Си SQL) Система Программирования Баз Данных на языке Си к которому до- бавлены операторы языка SQL. - представляет собой компилятор-препроцессор, который превра- щает программный код, написанный на ESQL/C (Си с SQL), в чистый Си код, который дальше транслируется обычным Си ком- пилятором. Не имеет среды-оболочки. DC-ISAM.E Библиотека подпрограмм индексно-последовательного метода досту- па для языка Си, на котором реализован INFORMIX-SE. IV. ОБЕСПЕЧЕНИЕ ПОЛЬЗОВАТЕЛЬСКИХ ПРИЛОЖЕНИЙ INFORMIX  DInformix-RunTime.E Подмножество INFORMIX, которое необходимо поставить на машину, чтобы на нем смогли работать пользовательские программы, изго- товленные с использованием средств разработки INFORMIX. (SQL, ESQL, 4GL - для каждого из них требуется своя собственная вер- сия RunTime). Собственно, это несколько служебных файлов с сис- темными сообщениями, и программы выполнятели "псевдо"╜кода для 4GL-RDS, и выполнятели отчетов, меню и экранных форм INFORMIX╜ SQL. Дополнительно к RunTime необходимо иметь сам сервер базы SE или OnLine, поставляемые как отдельный продукт. V. СИСТЕМЫ АВТОМАТИЗАЦИИ КОНТОРСКОЙ ДЕЯТЕЛЬНОСТИ DWingz.E Электронная таблица с трехмерной графикой для обработки данных большого объема (32.768 строк и столько же столбцов, до биллио- на элементов). Таблица дополнена возможностями 140 встроенных функций на все случаи жизни и собственным языком HiperScript для написания прикладных программ. Может выполнять как стан- дартные операции над базами данных, так и строить объемные цветные иллюстрации достижений вашей деятельности. Возможно вращение и движение по графическому изображению, использование данных из баз данных INFORMIX. Позволяет в рабочей области, на одной странице разместить тексты, числа, графы и графические изображения. DSmartWareII.E Интегрированная система, объединяющая базу данных, электронную таблицу с деловой графикой, текстовый процессор и сетевые воз- можности. Имеется собственный язык для создания пользователь- ских программ. Используется язык QBE для доступа к базе данных. В создании отчетов могут участвовать до 100 файлов. Текстовый процессор имеет словарь синонимов и может выполнять орфографи- ческую проверку написания 140.000 слов, конвертирует файлы из других редакторов. Работает в операционных системах UNIX и DOS. Могут использоваться данные из баз данных INFORMIX-SQL. V. Прочее. DInformix-QuickStep.E Интерактивный генератор отчетов. Позволяет создавать отчет без программирования, используя систему выпадающих меню. На выходе получаетыся отчет, а так же генерится программа на 4GL, этот отчет производящая. DInformix-FORMS.E Генератор экранных форм и программного 4GL кода для работы с ними. Для Informix-4GL. DInformix-Menu.E Позволяет сгенерить систему меню, объединяющую прикладные прог- раммы на уровне вызова выполнимых модулей и Shell-процедур. DInformix-GX.E Графический runner-выполнятель 4GL-программ. Берет откомпилиро- ванный 4GL-RDS "псевдо"╜код, и отрабатывает его не в алфавитно╜ цифровом режиме, а в графическом окошке - клиенте MS╜Windows 3.0 или X-Window OSF/Motif. Позволяет понизить скорость перери- совки экрана прикладной программы на SPARC станции до уровня алфавитно-цифрового терминала. Для Informix-4GL Compiler пос- тавляется в виде библиотеки замещающей стандартные функции ри- сования на АЦТ через curses. DInformix-Optical.E Пакет обеспечивает пользователю работу с информационно поиско- выми системами использующими Informix╜Online(и его возможности по хранению изображений, звуков, и т.п. BLOBов) в качестве средства хранения, индексирования и доступа к данным "зашитым" на отическом CD╜ROMе. В последнее время Informix предлагает большое количество справочных систем и комплектов документации, использующих технологию Optical. DInformix-HiperScript.E Система, не имеющая ничего общего с линией SQL продуктов фирмы Informix. Это система для организации доступа к разнообразным данным (графическим, текстовым, мультимедиа) в виде гипертекс- та. Имеет собственный язык для описания/программирования прило- жений. Есть версии для Unix/X-Windows, и для МС/Windows. DInformix-4GL for Windows.E Старый знакомый 4GL версии 4.12, только в среде MS Windows. Включает компилятор 4GL и среду-оболочку для программиста со стандартным для MS Windows мышино╜оконным интерфейсом. DInformix-View.E Нечто вроде ISQL для MS Windows. Экранные (пардон, графические) формы для работы с базой данных Informix. С естественными для графических приложений прибамбасами (шрифты, картинки, мышка.) Генератор отчетов. Средство гля генерации-разработки этих самых форм.