Для начала несколько определений, которые, впрочем, всем известны и ничего не определяют. Понятие "Система Управления Базами Данных" (СУБД), она же DBMS
(DataBase Managment System) может означать, по большому счету, все что угодно.
В самом общем случае это собственно база данных, которая предполагает какой либо метод сохранения информации на диске и возможности доступа и манипуляции с нею, и набор программных продуктов, предоставляющий пользователю все допустимые в базе
средства работы с данными.
Набор программных средств манипуляции данными СУБД удовлетворяет свойствам полноты (консистентности). Полагаю, что коммерческие варианты СУБД стремятся быть еще и замкнутыми, т.е. самодостаточными, не требующими и не поддающимися расширению.
Очень многие СУБД разделяют свою работу на два уровня по системе "Клиент-Сервер". Хитрость состоит в том, что не только пользователь, но и программист этого не замечает. Разделение функций его задачи выполняется автоматически системой.
Итак, двухуровневая система "Клиент-Сервер" это:
(DATABASE) Реляционная База Данных: это множество прямоугольных таблиц с данными. Никаких дополнительных сведений и ссылок не хранится.
(TABLE) Таблица - прямоугольная таблица, состоящая из СТРОК и СТОЛБЦОВ. Задать таблицу - значит указать, из каких столбцов она состоит. Обращаю внимание поклонников DBase - то, что в DBase называлось базой данных, в INFORMIX называется таблицей.
(ROW) Строка - запись, состоящая из полей - столбцов. В каждом поле сидит его значение, либо значение NULL - "пусто". Строк в таблице может быть сколько угодно. Физический порядок их расположения друг относительно друга не определен.
(COLUMN) Столбец - Каждый столбец в таблице имеет собственные имя и тип.
В INFORMIX допустимы следующие типы столбцов:
INTEGER SERIAL - автоматический счетчик SMALLINT CHAR(n) DATE FLOAT DECIMAL(m,n) DATETIME qualif1 TO qualif2 REAL MONEY(m,n) INTERVAL qualif1 TO qualif2
Представьте, что вам нужно в таблице "КАДРЫ" хранить данные о личном составе предприятия. О каждом человеке желательно помнить его фамилию, зарплату, пол, и т.д., а также название подразделения, в котором он работает. Но название подразделения длинно, самих подразделений немного, зато строк в таблице "КАДРЫ" много. Для экономии места применяется стандартный реляционный метод: в таблице "КАДРЫ" хранится не само название, а только его короткий код, и создается еще одна таблица, с помощью которой мы будем определять название подразделения по его коду. Табличку эту мы, естественно, назовем "ПОДРАЗДЕЛЕНИЯ", и будет в ней всего два столбца: столбец "КОД" и второй "название подразделения". И вот мы подошли к самому главному, что есть в реляционной базе, к "СОЕДИНЕНИЮ ТАБЛИЦ" по значению столбца (оно же соединение по ключу, по коду). Когда нам потребуются данные о человеке по фамилии Иванов, мы захотим увидеть название подразделения в котором он работает, а не малопонятный код. Значит поиск данных об Иванове нужно вести в двух таблицах. Сперва мы найдем в таблице "КАДРЫ" строчку, в которой в столбце ФАМИЛИЯ стоит значение "Иванов", мы возьмем в этой строчке значение кода подразделения, и будем искать в таблице "ПОДРАЗДЕЛЕНИЯ" строку, со значением в столбце КОД равным коду из строки с Ивановым. А найдя мы соединим данные из строки с Ивановым из первой таблицы и из строки с кодом из второй, получив одну, общую строку.
Индексация
Индекс таблицы - это вспомогательный файл, который создается для того, чтобы ускорить выполнение реляционных операций с участием этой таблицы. Индекс строится для определенного столбца (или совокупности столбцов) таблицы. Он состоит из пар вида
{Значение столбца, физический адрес соответствующей строки на диске} и отсортирован по значению столбца в порядке возрастания или убывания. Для одной и той же таблицы может существовать несколько индексов. Не следует путать индекс, построенный для совокупности нескольких столбцов таблицы, и несколько различных индексов, построенных для отдельных столбцов.
Если индекс создан, то при выполнении операций с таблицей система будет пользоваться им автоматически.
Перечислим коротко ряд рекомендаций по индексации таблиц.
Системный Журнал (logfile), он же журнал транзакций.
Запись всех изменений, происходящих в базе данных.
Контрольные точки.
Откатка.
Транзакции.
Оператор начала транзакции.
Оператор нормального завершения транзакции.
Оператор ненормального завершения транзакции - откатка к предыдущей контрольной точке.
Базы данных в режиме ANSI.
Прогон базы данных по системному журналу из backup копии.
Блокирование (locking), оно же запирание.
Сервер базы блокирует строки и таблицы во избежание коллизий при записи в одну и ту же строку. Строки блокируются автоматически (неявно). В блокированную строку нельзя писать, но можно смотреть. На время выполнения транзакции все измененные в ней строки блокируются. Можно заблокировать всю таблицу целиком явной командой блокировки. Таблицы можно блокировать не только от записи, но и от просмотра. Программе можно задавать режим:
ждать/ не ждать блокированных строк оператором SET LOCK MODE.
Права Доступа в Базе Данных, которые могут иметь пользователи. На уровне базы данных определены следующие уровни прав:
ANSI (American National Standart Institute) разработал Структурный Язык Запросов (SQL) - Structured Query Language для определения, манипуляции и контролирования данных. Содержит 4 группы операторов.
В SQL выделяются следующие группы операторов:
Включает следующие возможности:
Программное обеспечение INFORMIX содержит следующие компоненты:
INFORMIX-SE.
Сервер для многопользовательских баз данных INFORMIX, на нижнем уровне обеспечивающий работу всех программ, обращающихся к базам данных INFORMIX.
INFORMIX-NET.
Сетевое дополнение к INFORMIX-SE. Превращает его в сервер удаленных баз данных. Работает поверх сетевого протокола TCP/IP.
INFORMIX-OnLine.
Современный OLTP (On-Line-Transaction-Processing) базис баз данных. В отличие от SE взял физическое хранение данных в свои руки, отнимает у операционной системы логический раздел(ы) диска и самостоятельно работает с ними на низком уровне. В 2-4 раза быстрее SE, однако более сложен в настройке на конкретный компьютер, требует от администратора OnLine базы данных хороших познаний в операционной системе. Имеет много дополнительных возможностей по сравнению с SE, в том числе хранение таких типов данных как Binary Large Objects, текстовых и байтовых, а также символьных строк переменной длины как полей в базе данных, разделяемую буферизацию данных, буферизацию транзакций,
зеркальный диск, автоматическое восстановление после системных сбоев, автоматический backup.
INFORMIX-STAR.
Сетевое дополнение к INFORMIX-OnLine. Превращает его в сервер распределенной базы данных. Разрешает одновременный доступ к данным нескольких INFORMIX-STAR систем. Работает поверх протокола TCP/IP. Естественно, в MS-DOSе отсутствует.
INFORMIX-SQL.
Система управления и поддержки баз данных. Содержит 5 компонент:
INFORMIX-4GL.
Основное инструментальное средство для программирования баз данных и создания пользовательских приложений на языке 4GL. Включает:
INFORMIX-4GL-RDS+ID.
Rapid Development Sistem and Interactive Debugger
То же самое, только компилируются программы гораздо быстрее, но не до выполнимого кода, а до "псевдо"-кода, который выполняется runner'ом. Диалоговый Отладчик 4GL программ использует "псевдо"-код.
INFORMIX-ESQL/C.
EmbeddedSQL/C (Вложенный в Си SQL)
Система Программирования Баз Данных на языке Си, к которому добавлены операторы языка SQL.
C-ISAM.
Библиотека подпрограмм индексно-последовательного метода доступа для языка Си, на котором реализован INFORMIX-SE.
INFORMIX-RunTime.
Компонента INFORMIX, которую необходимо установить на машину, чтобы на ней могли работать пользовательские программы, изготовленные с использованием средств разработки INFORMIX. (SQL,ESQL, 4GL - для каждого из них требуется своя собственная версия RunTime). Представляет собой совокупность служебных файлов с системными сообщениями, программ, интерпретирующих псевдокод для 4GL-RDS, и программ выполнения отчетов, меню и экранных форм INFORMIX-SQL. Дополнительно к INFORMIX-RunTime необходимо иметь один из серверов базы данных SE или OnLine, поставляемых как отдельные продукты.
Wingz.
Электронная таблица с трехмерной графикой для обработки данных большого объема (32.768 строк и столько же столбцов, до биллиона элементов). Таблица дополнена возможностями 140 встроенных функций на все случаи жизни и собственным языком HiperScript для написания прикладных программ. Может выполнять как стандартные операции над базами данных, так и строить объемные цветные иллюстрации достижений вашей деятельности. Возможно вращение и движение по графическому изображению, использование
данных из баз данных INFORMIX. Позволяет в рабочей области, на одной странице разместить тексты, числа, графы и графические изображения.
SmartWareII.
Интегрированная система, объединяющая базу данных, электронную таблицу с деловой графикой, текстовый процессор и сетевые возможности. Имеется собственный язык для создания пользовательских программ. Используется язык QBE для доступа к базе данных.
В создании отчетов могут участвовать до 100 файлов. Текстовый процессор имеет словарь синонимов и может выполнять орфографическую проверку написания 140.000 слов, конвертирует файлы из других редакторов. Работает в операционных системах UNIX и DOS.
Могут использоваться данные из баз данных INFORMIX-SQL.
INFORMIX-QuickStep.
Интерактивный генератор отчетов. Позволяет создавать отчет без программирования, используя систему выпадающих меню. На выходе получается отчет, а также генерится программа на 4GL, этот отчет производящая.
INFORMIX-FORMS.
Генератор экранных форм и программного 4GL кода для работы с ними. Для INFORMIX-4GL.
INFORMIX-Menu.
Позволяет сгенерить систему меню, объединяющую прикладные программы на уровне вызова выполнимых модулей и Shell-процедур.
INFORMIX-Optical.
Пакет обеспечивает создание и работу с информационно поисковыми системами, использующими INFORMIX-Online (и его возможности по хранению изображений, звуков, и т.п. BLOBов) в качестве средства хранения, индексирования и доступа к данным,
"зашиваемым" на перезаписываемых оптических WORM дисках (Write Once Read Many).
INFORMIX-GX.
Графический интерпретатор псевдокода, получаемого в результате быстрой компиляции 4GL-программ. Выполняет псевдо-код не в алфавитно-цифровом режиме, а в графическом окошке - клиенте MS-Windows 3.1 или X-Window OSF/Motif. Позволяет понизить скорость
перерисовки экрана прикладной программы на SPARC-станции до уровня алфавитно-цифрового терминала. Для INFORMIX-4GL Compiler поставляется в виде библиотеки, замещающей стандартные функции библиотеки curses для рисования на АЦТ.
INFORMIX-4GL for Windows.
Старый знакомый 4GL версии 4.12, только в среде MS Windows. Включает компилятор 4GL и среду-оболочку для программиста со стандартным для MS-Windows мышино-оконным интерфейсом.
INFORMIX-NET/PC.
Позволяет клиентским приложениям на PC обращаться к удаленным базам данных, расположенных на Unix серверах: умеет обращаться как к SE+NET, так и к OnLine+Star. В пакеты INFORMIX for MS Windows (Hyperscript, 4GL, NewEra) включается по умолчанию.
INFORMIX-HyperScript.
Система, не имеющая ничего общего с линией SQL продуктов фирмы INFORMIX. Это система для организации доступа к разнообразным данным (графическим, текстовым, мультимедиа) в виде гипертекста. Имеет собственный язык для описания/программирования приложений. Имеет графический генератор диалогов (наподобие Visual Basic). Есть версии для Unix/X-Windows, NeXT, MS/Windows, Macintosh. Является естественным развитием-продолжением пакета Wingz. Wingz включен как подмножество HyperScript
INFORMIX-ViewPoint/DBA.
Нечто вроде ISQL для MS Windows. Экранные (пардон, графические) формы для работы с базой данных INFORMIX. С естественными для графических приложений прибамбасами (шрифты, картинки, мышка.) Генератор отчетов. Средство гля генерации-разработки этих самых
форм. DBA - дополнительный пакет администратора базы данных, необходимый для работы ViewPoint, DBA используется, чтобы создать так называемое SuperView - этакая единая квази-таблица -структура, описывающая логику и взаимоотношения таблиц и полей базы данных. ViewPoint нужно по одному на каждого пользователя, а DBA необходимо и достаточно одного на всю локальную сеть.
INFORMIX-NewEra.
Условное название - INFORMIX-4GL++. Объектно-ориентированный язык программирования. Позволяет программировать графические прикладные интерфейсы для баз данных INFORMIX. Частично совместим с 4GL (кроме операторов экранного обмена).
Наконец-то INFORMIX сделал шаг в сторону разработчиков графических приложений. Имеются версии для Motif X-Windows и для MS-Windows.