О системных таблицах interbase


Содержание

Утилиты для Local InterBase

Содержание

InterBase — это система управления реляционными базами данных, поставляемая корпорацией BORLAND для построения приложений с архитектурой клиент-сервер произвольного масштаба: от сетевой среды небольшой рабочей группы с сервером под управлением Novell NetWare или Windows NT на базе IBM PC до информационных систем крупного предприятия на базе серверов IBM, Hewlett-Packard, SUN и т.п.

В пакет Delphi версии 1.0 входит однопользовательская версия InterBase для Windows — Local InterBase. Используя Local InterBase можно создавать и отлаживать приложения, работающие с данными по схеме клиент-сервер, без подключения к настоящему серверу. В дальнейшем потребуется только перенастроить используемый псевдоним базы данных и программа будет работать с реальной базой без перекомпиляции. Кроме того, Local InterBase можно использовать в приложениях для работы с данными вместо таблиц Paradox.

В данном уроке рассматриваются утилиты, поставляемые в пакете Delphi 2.0, которые служат для администрирования баз данных (как локальных, так и на сервере) и для доступа к этим данным посредством SQL запросов.

  • Некоторые технические характеристики InterBase
  • Отличия Local InterBase от InterBase для других платформ, в частности, от InterBase для Windows NT:

    Local InterBase не поддерживает:

    • функции, определяемые пользователем (UDF).
    • BLOB фильтры
    • сигнализатор событий (event alerters)
    • запись через журнал (Write Ahead Log (WAL))
    • «отключение» и «включение» базы данных (database shutdown or restart)
    • ведение теневой базы данных (database shadowing)

    Все остальные функции полностью поддерживаются, совпадает даже структура хранения базы на диске.

    Максимальный размер базы данных

    Реально ограничение на размер накладывается временем обработки запросов, временем резервного копирования, восстановления базы и т.д. Рекомендуется не более 10 GB.

    Максимальное количество физических файлов, из которых может состоять база

    В системных таблицах InterBase поле, описывающее из каких файлов состоит база данных, включая все shadow, имеет тип SHORT. Соответственно не более 65,536.

    Максимальное количество таблиц в базе данных

    65,536. Таблицы нумеруются с использованием типа данных SHORT.

    Максимальное количество записей в таблице и полей в записи

    В записи может быть не более 1000 полей. Количество записей в таблице не ограничено.

    Максимальный размер записи и поля

    Запись не может быть больше 64К байт (не считая размера BLOB). Поле не может быть больше 32К байт, размер поля типа BLOB не ограничен.

    Максимальное количество индексов в таблице и базе

    В базе может быть 64K индексов. В одной таблице — 64 индекса.

    Максимальное количество уровней вложенности SQL запроса

    16 уровней вложенности.

    Максимальное количество полей в составном индексе

    Составной индекс может включать в себя не более 16 полей.

    Максимальный размер stored procedure или trigger

    Stored procedure или trigger может иметь размер кода не более 48K байт.

    Количество UDF, определенных в одной базе

    Длина имени UDF не более 31 символа. Соответственно максимальное количество UDF в базе ограниченно количеством уникальных имен в пределах этой длины.

    В поставке Delphi есть две утилиты для доступа к базам данных и администрации сервера InterBase. Утилита Windows ISQL позволяет интерактивно выполнять SQL запросы к базе данных и получать результат. Это требуется в двух случаях: для отладки SQL выражения и для управления данными и их структурой.

    Кроме того, создать базу данных, хранимые процедуры, триггеры, и т.п. также удобнее с помощью ISQL. ISQL позволяет обращаться как к данным на удаленном сервере, так и к локальным (к Local InterBase).

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

    После запуска ISQL выберите пункт меню “File|Connect to Database…”, появится диалог (см. рис.1), в котором нужно выбрать сервер (удаленный или локальный, в данном случае мы обращаемся к Local InterBase), файл базы данных, указать имя пользователя (SYSDBA — имя системного администратора) и пароль (masterkey — пароль по умолчанию). Если все указано правильно, то по нажатию клавиши “OK” установится соединение с базой данных и можно приступать к дальнейшей работе.

    Рис. A : Диалог соединения с базой данных.

    Создание новой базы данных

    Эту операцию можно выполнить в пункте меню “File|Create Database” (см. рис.2). В диалоге нужно указать имя файла (c:\bases\new_base.gdb), имя и пароль системного администратора (SYSDBA и masterkey), и, при необходимости, дополнительные параметры. В данном случае создается база данных, поддерживающая русскую кодовую страницу WIN1251. Если Вы собираетесь работать из ISQL с базой данных в русской кодировке, то перед установкой соединения нужно в пункте меню “Session|Advanced Settings” установить “Character set on connect” в WIN1251.

    Рис. B : Диалог создания новой базы данных

    Получение информации о структуре базы данных

    В ISQL можно получить полную информацию о структуре базы данных: список таблиц и их структуры, списки и текст триггеров, хранимых процедур и т.п. Эту операцию можно выполнить в пункте меню View или Extract. Например, для базы данных из поставки Delphi (лежит в \IBLOCAL\EXAMPLES\EMPLOYEE.GDB), попробуем выбрать “Extract|SQL Metadata for Table” для таблицы COUNTRY. В окошке ISQL Output появится текст SQL запроса, который создавал данную таблицу:

    /* Extract Table COUNTRY */

    CREATE DOMAIN COUNTRYNAME AS VARCHAR(15);

    /* Table: COUNTRY, Owner: SYSDBA */

    CREATE TABLE COUNTRY (COUNTRY COUNTRYNAME NOT NULL,

    CURRENCY VARCHAR(10) NOT NULL,

    PRIMARY KEY (COUNTRY));

    Выполнение SQL запросов

    Текст SQL запроса вводится в окошке “SQL Statement”. Для запуска его на выполнение, нажмите кнопку “Run”. На рис.3 приведен результат работы примерного запроса.

    Рис. C : Окно ISQL с текстом и результатом выполнения SQL запроса.

  • InterBase Server Manager
  • Утилита предназначена для администрирования InterBase. С ее помощью можно выполнить следующие операции:

      • определить пользователей и их пароли
      • произвести резервное копирование
      • удалить “мусор” из базы
      • завершить/откатить зависшие транзакции
      • произвести проверку базы на наличие ошибок

    Рис. D : Утилита для администрирования InterBase

    Соответствующий диалог показан на рис. 5

    Рис. E : Диалог резервного копирования базы данных.

    Обычно, операционные системы сами предоставляют возможности по сохранению баз данных в архивах. Однако, при резервном копировании, проведенном с помощью Server Manager, выполняются дополнительные операции. При этом:

    • Увеличивается быстродействие базы. В процессе копирования/восстановления происходит “сбор мусора” — в базе данных освобождается место, занятое удаленными записями. Тем самым уменьшается физический размер базы. При восстановлении можно изменить размер страницы и разбить базу на несколько файлов.
    • Резервное копирование может выполняться на работающей базе, для этого не надо отключать пользователей от нее. При этом, изменения, вносимые в базу данных после начала процесса копирования, не записываются в резервный файл.
    • Данные можно перенести на другую операционную систему. Различные компьютеры имеют собственные форматы файлов баз данных и эти файлы нельзя просто перенести на другую операционную систему. Для выполнения этой операции нужно создать резервную копию базы в транспортном формате.

    Связь двух таблиц, созданных в InterBase

    Здравствуйте!
    Помогите пожалуйста!
    Я создала две таблицы в InterBase связала их.

    Мне нужно, чтобы при выводе на форму в Delphi главная таблица была целиком, а подчиненная только одной строкой(та которой соответствует запись главной таблицы,которая в данный момент выбрана).

    Подскажите пожалуйста как это осуществить?? И вообще возможно ли это при работе с InterBase.

    25.04.2010, 01:18

    Создание нескольких таблиц InterBase 6.5
    Здравствуйте! Помогите пожалуйста, если не трудно! При компиляции данного кода выскакивает.

    Можно ли из делфи-приложения получить список таблиц базы данных Interbase?
    Здравствуйте ! В некоторых СУБД есть удобный запрос (или команда) SHOW TABLES. Смотрел в.

    Связь таблиц в FireBird
    Как можно связать таблицы в ФБ по первичным ключам без запроса? Ну визуально, как связывали.

    База данных, связь таблиц
    Помогите связать правильно таблицы.

    Связь таблиц в InterBase
    ранее не сталкивался с этим софтом, интересует как организовать связь таблиц в IBExpert посредством.

    О системных таблицах interbase

    База данных состоит из различных объектов, таких как таблицы, виды, домены, сохраненные процедуры, триггеры. Объекты базы данных содержат всю информацию о ее структуре и данных. Объекты базы данных так же упоминаются, как метаданные.

    Следующие разделы содержат краткую информацию об объектах и концепциях базы данных InterBase :

    Таблицы (Tables) Столбцы (Columns) Типы данных (Data types) Домены (Domains) Справочные ограничения целостности (Referential integrity constraints) Индексы (Indexes) Виды (Views) Сохраненные процедуры (Stored procedures) Триггеры (Triggers) Генераторы (Generators) Защита (Security)

    Реляционные базы данных хранят все данные в таблицах. Таблица это структура, состоящая из множества неупорядоченных горизонтальных строк (rows), каждая из которых содержит одинаковое количество вертикальных столбцов (colums). Пересечение отдельной строки и столбца называеися полем (field), которое содержит специфическую информацию. Многие принципы работы реляционной базы данных взяты из определений отношений (relations) между таблицами.

    InterBase хранит информацию о метаданных в специальных таблицах, которые называются системными таблицами (system tables). Системные таблицы имеют специальные столбцы, которые содержат информацию о типе метаданных в этой таблице. Имена всех системных таблиц начинаются с «RDB$». Пример системной таблицы — RDB$RELATIONS, которая содержит информацию о каждой таблице в базе данных.

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

    Системные таблицы могут быть изменены подобно любой другой таблице базы данных. Если вы не понимаете всех взаимосвязей между системными таблицами, то непосредственное изменение их может иметь негативный эффект на другие системные таблицы и разрушить вашу базу данных.

    Создание таблицы главным образом подразумевает определение столбцов таблицы. Главные атрибуты столбца включают:

    Данные сохранены в определенном формате, который называется типом данных (data type). Типы данных могут быть классифицированы по четырем категориям: числовые (numeric), символьные (character), даты (date) и BLOB. Числовые данные включают в себя все числа, начиная с целых вплоть до чисел двойной точности с плавающей точкой. Символьные данные содержат строки текста. Даты используются для хранения дат и времени.

    В то время как числовые, символьные и даты являются стандартными типами данных, BLOB-тип заслуживает специального внимания.

    Тип данных BLOB

    InterBase поддерживает такой тип данных, как большие бинарные объекты (binary large object — BLOB), которые могут хранить данные неограниченного размера. Тип BLOB это расширение стандартной реляционной модели, которая обычно обеспечивает только типы данных фиксированной длины.

    Тип данных BLOB аналогичен последовательному файлу (flat file), BLOB данные могут быть сохранены в любом формате (к примеру, бинарном или ASCII). BLOB, однако, это не отдельный файл. BLOB данные хранятся в базе данных наряду со всеми другими данными. Так как BLOB столбцы часто содержат большие и переменные объемы данных, BLOB столбцы хранятся в отдельных сегментах.

    InterBase не поддерживает непосредственно преобразование BLOB данных в другие форматы, но на некоторых платформах, BLOB фильтры могут транслировать BLOB данные из одного формата в другой.

    В добавление к явному определению типа данных столбцов, InterBase обеспечивает глобальные определения столбцов или домены (domains), на которых могут базироваться определения столбцов. Домен содержит информацию о тип данных, устанавливает атрибуты и ограничения целостности столбцов. В последующем при создании таблиц возможно использовать домены для определения столбцов.

    InterBase позволяет вам определять правила обеспечивающие целостность информации хранящейся в столбцах, эти првавила названы справочными ограничениями целостности (referential integrity constraints). Ограничения целостности управляют связями типа столбец-таблица (column-to-table) и таблица-таблица (table-to-table) а также проверкой ввода данных. Они выпонены через первичные ключи (primary keys), внешние ключи (foreign keys) и проверочные ограничения (check constraints). Обычно первичный ключ это столбец (или группа столбцов), которые используются, чтобы уникально идентифицировать строку таблицы. Внешний ключ это столбец, чьи значения должны соответствовать значениям столбца в другой таблице. Проверочные ограничения — ограничивают ввод данных определенным диапазоном или набором значений.

    Например, таблица EMPLOYEE могла бы быть определена имеющей внешний ключ столбец DEPT_NO. Который определен в соответствии со столбцом номера отдела в таблице DEPARTMENT. Это гарантировало бы, что каждый служащий из таблицы EMPLOYEE связан с существующим отделом в таблице DEPARTMENT.

    Индексы это механизм для улучшения быстродействия поиска данных. Индекс определяет столбцы которые могут быть использованы для эффективного поиска и сортировки в таблице.

    InterBase автоматически определят уникальные индексы для первичных и внешних ключей таблицы.

    Вид (view) это виртуальная таблица, которая не сохранена физически в базе данных, но ведет себя точно также как «реальная» таблица. Вид может содержать данные из одной или более таблиц или других видов и используется для хранения часто используемых запросов (queries) или множества запросов в базе данных.

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

    Сохраненные процедуры (stored procedure) это отдельные программы, написанные на языке процедур и триггеров InterBase , который является расширением SQL. Сохраненные процедуры являются частью метаданных базы данных. Сохраненные процедуры могут получать входные параметры, возвращать значения приложению и могут быть вызваны явно из приложения или подстановкой вместо имени таблицы в инструкции SELECT.

    Сохраненные процедуры обеспечивают следующие возможности:

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

    Триггеры могут обеспечивать следующие возможности:

    • Автоматическое ограничение ввода данных, что бы гарантировать, что пользователь ввел только допустимые значения в поля столбцов.
    • Упрощение сопровождения приложений, так как изменение в триггере автоматически отражается во всех приложения, которые используют таблицы со связанными с ними триггерами.
    • Автоматическое документирование изменений таблицы. Приложение может упровлять логом изменений с помощью триггиров, которые выполняются всякий раз, когда происходит изменение таблицы.

    Когда триггер вызван, он имеет непосредвенный доступ к добавлению, изменению или уничтожению данных. Триггеру могут быть так же доступны данные из других таблиц. Вы можете разрабатывать триггеры для:

    Генератор (generator) это механизм который создает последовательный уникальный номер, который автоматически вставляется в столбец базой данных, когда выполняются операции INSERT или UPDATE. Генератор обычно применяется для создания уникальных значений, вставляемых в столбец, который используется как PRIMARY KEY. Для базы данных может быть определено любое число генераторов, каждый генератор должен имеет уникальное имя.

    SQL защита (securite) управляется на уровне таблицы привилегий доступа — списка операций, которые разрешены пользователю над данной таблицей или видом. Инструкция GRANT назначает привилегии доступа к таблице или виду конкретным пользователям или процедурам. Инструкция REVOKE удаляет предварительно предоставленные привилегии доступа.

    Типы данных InterBase

    Понятие типов данных в реляционной модели данных соответствует понятию типа данных в языках программирования. В современных реляционных БД допускается хранение символьных, числовых данных, специальных числовых данных таких как «деньги», а также дат и времени.

    В таблице 2.1 приведены основные типы данных, используемые в InterBase для полей таблиц, при описании доменов, для переменных внутри хранимых процедур и триггеров и для параметров в процедурах и функциях пользователя.

    Домен – это описание множества допустимых значений поля таблицы. Описание домена показывает тип данных (например, число или строка), дли-ну данных и другие ограничения (например, требование, чтобы первый сим-вол был буквой или чтобы значение не превышало заданного числа). В InterBase домены используются только в операторах создания и изменения структуры таблиц.

    Таблица 2.1 – Типы данных InterBase

    Название Размер Диапазон/точность Описание
    SQL диалект 1
    INTEGER 32 бита от –2 147 483 648 до 2 147 483 647 Длинное целое.
    SMALLINT 16 бит от –32 768 до 32 767 Короткое целое.
    FLOAT 32 бита от 3,4х10P–38P до 3,4х10P38P Число с одинарной точностью (точность 7 значащих цифр).
    DOUBLE PRECISION 64 бита от 1,7х10P-308P до 1,7х10P308P Число с двойной точностью (точность 15 значащих цифр)
    DATE 64 бита от 1 января 100 года н.э. до 29 февраля 32768 года Дата. Включает информацию о времени.
    CHAR(n) n сим-волов n = 1÷32767 Строка символов фиксиро-ванной длины.
    VARCHAR(n) n сим-волов n = 1÷32767 Строка символов переменной длины.
    BLOB пере-менный нет Двоичные большие объекты, такие как графика, текст, циф-ровой звук. Содержание опре-деляется подтипом.
    SQL диалект 3
    BIGINT 64 бита от -2P63P до 2P63P-1 Большое целое.
    DATE 32 бита от 1 января 100 года н.э. до 29 февраля 32768 года Только дата без информации о времени.
    TIME 32 бита от 00:00 до 23:59:9999 Данные о времени с точно-стью до десятитысячной доли секунды.
    TIMESTAMP 64 бита Комбинация типов DATE и TIME.

    Для создания доменов используется команда CREATE DOMAIN, для изменения – ALTER DOMAIN, а для удаления – DROP DOMAIN.

    Ниже приведен упрощенный синтаксис оператора создания домена.

    CREATE DOMAIN Имя_Домена [AS] [DEFAULT <Literal | NULL | USER>] [NOT NULL] [CHECK (Проверяемое_Условие)];

    При описании синтаксиса операторов квадратные скобки обозначают необязательный элемент, фигурные скобки объединяют группу элементов оператора в один, |означает выбор одной из нескольких альтернатив. Элемент, расположенный в угловых скобках должен поясняться отдельно.

    В приведенном примере необязательный элемент

    позволяет задать значение столбца по умолчанию с использованием одной из трех возможностей. Первая возможность, обозначенная как Literal, позволяет задавать значения по умолчанию в виде текстовых констант, чисел и дат. Вторая возможность – указать в определении столбца DEFAULT NULL, что приведет к тому, что во вновь создаваемых записях значение этого столбца будет NULL. Третий способ – указать при определении столбца DEFAULT USER. Если в этом случае в таблицу будет вставлена строка без указания значения этого поля, то в него будет занесено имя текущего пользователя.

    Если необходимо, чтобы поле имело какое-то непустое значение, в описание домена вносят NOT NULL.

    Последний необязательный элемент в описании домена позволяет заставить сервер проверять заносимые в базу данных значения на выполнение заданного условия.

    Вместо элемента должно быть использовано название одного из типов данных InterBase (таблица 2.1).

    Фрагмент сценария создания доменов:

    CREATE DOMAIN ID INTEGER NOT NULL; — идентификатор

    CREATE DOMAIN Name VARCHAR(30) NOT NULL; — имя

    CREATE DOMAIN CurrentDate DATE DEFAULT ‘TODAY‘ NOT NULL;

    CREATE DOMAIN Percent INTEGER— процент CHECK (VALUE >= 0 AND VALUE

    CREATE DOMAIN MEMO BLOB SUB_TYPETEXT SEGMENT SIZE 128;

    Синтаксис оператора удаления домена:

    DROP DOMAIN Имя_Домена;

    Оператор изменения домена ALTER DOMAINпозволяет изменить тип данных, имя домена, а также добавить или удалить условие контроля данных. Чтобы изменить домен можно также внести изменения в системные таблицы.

    Не нашли то, что искали? Воспользуйтесь поиском:

    Лучшие изречения: Сдача сессии и защита диплома — страшная бессонница, которая потом кажется страшным сном. 8774 — | 7145 — или читать все.

    188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

    Отключите adBlock!
    и обновите страницу (F5)

    очень нужно

    Модификация системных таблиц

    Похожие главы из других книг

    Модификация порта OpenOffice 1.1.4

    5.10.5 Модификация описания проекта системы

    13.1.1 Модификация ранее разработанного ПО

    Модификация справочников

    Модификация справочников Этот этап важен для настройки и работы в «3D Suite Мебельный салон».При входе в программу в раскрывающемся списке Раздел выберите пункт Модификация справочников. После нажатия кнопки ОК откроется окно Модификация справочников (рис. 7.19). Рис. 7.19.

    6. Модификация базовых отношений

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

    Взаимодействие с CIL: модификация файла *.il

    Взаимодействие с CIL: модификация файла *.il Теперь, когда вы понимаете, как компонуется базовый файл CIL, давайте завершим наш эксперимент с челночной технологией разработки программ. С помощью изменения CIL-кода в файле *.il мы должны выполнить следующее.• Добавить ссылку на

    Модификация структуры таблицы с помощью предложения ALTER

    Модификация структуры таблицы с помощью предложения ALTER С помощью предложения ALTER можно изменить определения полей в таблице. Например, чтобы добавить поле CustomerType в tblCustomer, используйте приведенную ниже команду SQL.ALTER TABLE tblCustomer ADD CustomerType intДля того чтобы удалить поле из базы

    3.5. Удаление и модификация учетных записей

    3.5. Удаление и модификация учетных записей Для удаления пользователя можно воспользоваться командой userdel. Удалять учетные записи умеет и linuxconf. При удалении пользователя программа linuxconf спросит у вас, что делать с домашним каталогом удаляемого пользователя: удалить,

    Модификация класса CMemFile

    Модификация класса CMemFile Вы можете наследовать от класса CMemFile собственные классы. При этом вы можете реализовать свой механизм выделения памяти для файла, чтения и записи данных. Для этого в состав CMemFile входят виртуальные методы Alloc, Free, Realloc, Memcpy и GrowFile.Методы Alloc, Realloc и Free

    Модификация программ

    Модификация программ СборкиБольшую часть программ мы с вами получаем в готовом виде. Впрочем, существуют как минимум две категории программ, где пересборка и модификация всячески приветствуются, если не авторами, то благодарными пользователями. Программы,

    4.14.1. Расщепление и модификация модели

    4.14.1. Расщепление и модификация модели 1.Измените свойства модели «Деятельность компании»:Model Name: Предлагаемая модель компании;» Time Frame: TO-BE;Purpose: Документировать предлагаемые изменения бизнес-процессов компании.Переименуйте работу «Сборка и тестирование компьютеров»в

    11.5.2. Модификация флага «закрыть при выполнении»

    11.5.2. Модификация флага «закрыть при выполнении» Во время системного вызова exec() дескрипторы файлов обычно остаются открытыми для использования в новых программах. В некоторых случаях может потребоваться, чтобы файлы закрывались, когда вызывается exec(). Вместо закрытия их

    25.4. Модификация базы данных

    25.4. Модификация базы данных Предусмотрены две операции, которые модифицируют базу данных qdbm: добавление записей и удаление записей. Обновление записей производится с помощью той же функции, что и добавления

    Модификация стандартной модели памяти

    Модификация стандартной модели памяти Работая в некоторой стандартной модели памяти, программист может в той или иной мере модифицировать ее, применяя в объявлениях модификаторы near, far и huge. Правила интерпретации объявлений с модификаторами рассмотрены в разделе 3.3.3.4


    Повседневный дизайн: модификация интерьера в самолетах Николай Маслухин

    Повседневный дизайн: модификация интерьера в самолетах Николай Маслухин Опубликовано 05 мая 2014 Многие элементы интерьера самолетов не меняются десятилетиями, однако это не значит, что дизайнеры не работают в данном направлении. Вот небольшой

    2. Модификация и создание пользовательских классов

    2. Модификация и создание пользовательских классов Ruby является объектно-ориентированным языком программирования. Давайте рассмотрим особенности представления классов.Объекты и классыВ реальной жизни все объекты обладают индивидуальными свойствами. Но, введя

    Национальная библиотека им. Н. Э. Баумана
    Bauman National Library

    Персональные инструменты

    InterBase

    Разработчики: Embarcadero Technologies Операционная система: Windows, OS X, Linux и Solaris [1] Платформа: x32, x64 Локализация: Английский Тип ПО: РСУБД Лицензия: Проприетарное ПО Веб-сайт Official website

    InterBase — это кросс-платформенная система управления базами данных, первоначально разработанная компанией Borland, которая поддерживает большинство известных платформ: Windows, Linux, Unix, Solaris, Mac OS и т.д. Теперь разработчик InterBase — Embarcadero Company. [2]

    Содержание

    Обзор

    Версионная архитектура

    База данных InterBase построена на версионной архитектуре хранения данных. [3] Этот подход обладает рядом преимуществ перед блокировочными СУБД:

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

    Преимущества

    InterBase обладает целым рядом преимуществ, выгодно отличающих его от остальных СУБД:

    • Обновляемые представления (Views);
    • Двухфазное подтверждение транзакций;
    • Эффективный механизм триггеров;
    • Серверная обработка BLOB-полей (BLOB-filters);
    • События (Уведомления);
    • Шифрование сетевого трафика, базы данных, файлов бекапа и отдельных столбцов БД.

    Язык SQL

    Язык InterBase SQL совместим со стандартом SQL-92. Кроме того, InterBase server поддерживает расширения стандартного подмножества языка SQL за счет пользовательских функций UDF (User Definded Functions). InterBase SQL предоставляет расширенные возможности SQL для хранимых процедур и триггеров — PSQL.

    Подробнее об инструкциях и функциях можно прочитать в справочнике.

    Производительность

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

    • Поддержка симметричной многопроцессорной обработки InterBase SMP (symmetric multiprocessing) позволяет задействовать возможности многопроцессорной архитектуры при единственном серверном процессе InterBase SuperServer.
    • Поддержка технологии Hyperthreading.
    • Пакетное выполнение SQL запросов позволяет уменьшить сетевой трафик и повысить производительность.

    Текущие версии InterBase

    В настоящее время существует несколько клонов серверов InterBase. Есть коммерческая версия, принадлежащая компании Borland — СУБД InterBase версии 5.6. [4] Есть целое семейство серверов InterBase 6.x — Borland InterBase 6.0, 6.5, 7.0, XE, Firebird 3.x и Yaffil (разработка команды программистов из Санкт-Петербурга). Все эти версии основаны на исходном коде Borland InterBase 6.0 и являются практически полностью совместимыми между собой. Системы Borland InterBase 6.0, FireBird 1.x и Yaffil являются Open Source- продуктами, которые можно использовать бесплатно без ограничений на количество пользователей в рамках условий InterBase Public License. Версии Borland 5.6, 6.5 и 7.0, Embarcadero InterBase XE являются коммерческими продуктами и требуют покупки соответствующих лицензий. Опыт множества внедрений подтверждает, что информационные системы работают быстро и устойчиво на любой из версий InterBase.

    InterBase против Firebird

    Хотя в основе версий InterBase 2009 и Firebird 2.5 лежит общий исходный код InterBase 6.0, эти СУБД на современном этапе развития значительно отличаются друг от друга.

    В InterBase 2009 реализованы следующие возможности, которые не поддерживаются в последней версии Firebird 2.5:

    • Шифрование базы данных, а также отдельных столбцов.
    • Шифрование сетевого трафика (Over-the-Wire (OTW) Encryption).
    • Протоколирование операций на базе журналов.
    • Возможность аутентификации на уровне базы данных.
    • Функция экспорта содержимого файлов базы данных (Dump) в режиме онлайн.
    • Функция восстановления состояния из архивов на определенный момент времени (Point-in-Time Recovery).
    • Логический тип данных Boolean.

    Клиент-серверная версия Firebird SQL Server существует в двух вариантах: Firebird Super Server и Firebird Classic. В InterBase реализована архитектура, совмещающая в себе достоинства Classic и SuperServer — InterBase SuperServer + SMP.

    Архитектура Super Server — все клиентские подключения обслуживаются одним серверным процессом, имеется общий клиентский кеш. За счет этого достигается меньший расход ресурсов на обслуживание клиентов. Недостатком Super Server является отсутствие возможности задействовать несколько процессоров для работы сервера.

    Архитектура Classic Server — на каждое клиентское подключение создает отдельный серверный процесс. Архитектура Classic Server более надежна, т.к. сбой одного серверного процесса не вызывает отказ в обслуживании всех клиентов. Кроме того, Classic Server позволяет распределить клиентские подключения на несколько процессоров. Недостатком архитектуры являются дополнительные накладные расходы на обслуживание и синхронизацию процессов, а также отсутствие общего клиентского кеша.

    InterBase Super Server + SMP (symmetric multiprocessing) объединяет в себе преимущества двух архитектур Classic и Superserver. Один серверный процесс InterBase Super Server позволяет сократить накладные расходы и использовать общий клиентский Кеш, а технология симметричной обработки SMP задействует возможности многопроцессорной архитектуры, которые раньше были недоступны для Classic Server.

    Безопасность InterBase Server

    InterBase SQL Server поддерживает несколько методов аутентификации пользователей:

    • Classic Authentication Scheme — пользователи и пароли являются едиными для всех баз и хранятся в системной базе данных InterBase — admin.ib (isc4.gdb).
    • Embedded User Authentication — пользователи и пароли хранятся в клиентской базе данных. Такая схема защищает базы данных от прямого копирования или замены на сервере admin.ib.

    Чтобы включить Embedded User Authentication, необходимо при создании базы данных через SQL указать опцию WITH ADMIN OPTION. В IBConsole можно просто указать соответствующий параметр в настройках БД. [5]

    Следующие инструкции позволяют управлять механизмом Embedded User Authentication:

    После включения возможности хранения пользователей в БД можно управлять пользователями через SQL операторы:

    Обе схемы аутентификации Classic и EUA могут быть использованы на сервере InterBase совместно.

    Пользователь SYSDBA. Смена пароля по умолчанию

    SYSDBA — это административный пользователь InterBase с исключительными правами. Пароль по умолчанию: masterkey. Для того чтобы сменить пароль, используйте утилиту gsec из состава InterBase:

    При помощи утилиты gsec можно создавать, удалять, модифицировать и просматривать пользователей. Полный список команд можно получить, набрав help.

    Описание процесса установки Interbase

    Запуск инсталлятора

    Запустите инсталлятор (install_windows.exe, запускается автоматически при вставке компакт-диска с InterBase 7.5. Описание установки Java-инсталлятором, который запускался по умолчанию для InterBase 7.1 и InterBase 7.5 Trial, изложено в документе).

    Выберите Install Borland InterBase 7.5. Server.

    Появится окно с предложением закрыть все активные приложения и с комментариями по MultiInstance. Это окно выдается новым windows-инсталлятором. Предыдущий инсталлятор был написан на Java, который слегка отличается от Windows-инсталлятора.

    Следующее окно – текст лицензии. Прочитайте его и нажмите Yes если согласны, или No если не согласны.

    Далее появится окно с выбором Multi-Instance установки. Multi-Instance позволяет установить несколько экземпляров InterBase на один компьютер, которые будут работать на разных портах (3050 gds_db по умолчанию). Для каждого экземпляра требуется отдельная серверная лицензия (как минимум).

    Как правило, выбор Multi-Instance делается, если устанавливается вторая копия сервера. При первой установке или обновлении сервера выберите No (или не меняйте No на Yes), и нажмите Next.

    Если выбрано Register, то в конце установки будет предложено зарегистрировать серверную или unlimited лицензию. Если Register убрано, то для последующей регистрации нужно будет запустить инсталлятор повторно, и убрать все пункты в этом диалоге, кроме Register.

    Выбор каталога для установки

    Если вы производите переустановку сервера, убедитесь, что в каталоге, куда вы устанавливаете сервер, не осталось никаких файлов от предыдущих установок InterBase. Если вы устанавливаете 7.5.1 поверх 7.1 или 7.5, скопируйте заранее файлы borland.lic, ib_license.dat, admin.ib и ваши udf (если таковые есть).

    При нажатии Next начнется установка сервера, клиента или регистрация (в зависимости от выбранных ранее пунктов).

    Регистрация

    Введите серийный номер и ключ серверной лицензии или unlimited-лицензии. В случае регистрации unlimited-лицензии регистрировать серверную лицензию не нужно (если вы попытаетесь зарегистрировать unlimited поверх серверной или наоборот, то borland.lic будет испорчен, и сервер не будет работать) .

    Если в серийном номере или ключе есть вопросительные знаки «?», то их именно так и нужно вводить с клавиатуры. Например, «AB?C-?K8. «

    После ввода ключа еще раз появится лицензионное соглашение.

    Следующее окно – выбор метода регистрации.

    Регистрация через интернет. Производится напрямую в Borland, используя ssl (порт 443). Возможна в том случае, если на данном компьютере есть соединение с интернет и не закрыт порт 443. Такой метод подходит только при регистрации лицензии на компьютере разработчика, т. к. серверы обычно не имеют доступа в интернет как извне так и изнутри сети.

    Регистрация по телефону или через web. Позволяет зарегистрировать лицензию по телефону или через web (reg.borland.com), если на данном компьютере нет доступа в интернет.

    Для регистрации на reg.borland.com у вас должен быть логин и пароль на bdn.borland.com, причем до регистрации нужно «залогиниться» на сервер, иначе регистрация ключа невозможна. После успешного логина как на bdn.borland.com так и на reg.borland.com будет показываться приветствие Welcome FirstName LastName, где FirstName и LastName – ваши имя и фамилия, указанные при регистрации.

    Файл активации вам будет выслан на email, указанный при регистрации логина bdn.borland.com . Не ошибитесь при указании email – регистрационная система не проверяет ошибки доставки, поэтому каждая регистрация через web будет расцениваться как успешная, а число перерегистраций может быть не более 3 (после чего нужно обратиться в Borland за увеличением числа регистраций).

    Зайдите на [reg.borland.com] с этого или любого другого компьютера. Проверьте, что система вас узнает (пишет Welcome Имя Фамилия). Если нет – залогиньтесь на [bdn.borland.com], указав при логине чтобы система «помнила» вас (для этого в браузере должны быть включены cookies).

    Введите в браузере тот же серийный номер, и регистрационный ключ, который вам выдал диалог регистрации (он будет отличаться от приведенного на картинке). Регистрационный ключ будет по крайней мере в одном сеансе Windows одним и тем же, если вы запускаете инсталлятор на одном и том же компьютере, вводя ту же самую комбинацию серийного номера и активационного ключа. При переустановке операционной системы или при установке сервера на другой компьютер регистрационный ключ будет другим. Получаемый файл активации всегда должен соответствовать регистрационному ключу, иначе он не будет принят инсталлятором.

    Нажмите Register в браузере. Через некоторое время на ваш email, который указан в регистрационной информации для bdn.borland.com, будет прислано письмо с файлом регистрации. Сохраните этот файл (regNNN.txt, где NNN – номер, в зависимости от типа лицензии – триал, серверная, unlimited и т. п.) в какой-нибудь каталог.

    Наличие файла регистрации, полученного от Borland, позволяет вам переустановить InterBase на этом же компьютере с той же самой операционной системой (см. выше о регистрационном ключе) без необходимости регистрации напрямую или через reg.borland.com.

    Если вы не закрывали инсталлятор (не нажимали Finish в предыдущем диалоге. Если нажали – запустите инсталлятор еще раз, выберите Register убрав все эти пункты, и дойдите до диалога с выбором вариантов регистрации – напрямую, через web или по телефону и т. п.

    Выберите пункт Import Software Activation Information from a file or email.

    Нажмите Next. Появится диалог, где можно выбрать файл regNNN.txt, полученный по email и сохраненный заранее.

    Если файл корректный, то появится диалог с подтверждением регистрации серийного номера, ключа активации и ключа регистрации . Если файл некорректный – об этом будет выдано сообщение. В этом случае проверьте, что:

    • вы указали правильный Serial Number как в инсталляторе так и на reg.borland.com
    • вы правильно ввели Activation Key в инсталляторе
    • вы правильно ввели на reg.borland.com регистрационный ключ, выданный вам инсталлятором.

    Проверка регистрации

    По умолчанию сервер InterBase устанавливается как сервис. В этом режиме невозможно понять, какие лицензии успешно зарегистрированы. Для этого на Windows откройте Панель Управления, Администрирование, Сервисы.

    Если сервисы InterBase 7.5 Guardian и Server запущены, остановите сервис Guardian (сервис InterBase 7.5 Server должен остановиться автоматически через 1-2 секунды).

    Откройте окно cmd (пуск, выполнить, cmd). Перейдите в каталог установки InterBase 7.5 выдав команды (по необходимости):

    Если лицензии не зарегистрированы или зарегистрированы неуспешно, при запуске InterBase в режиме приложения он выдаст сообщение «InterBase licensing error, Please check the interbase.log file for details» или «License file is missing or corrupt».

    Если лицензии (серверная или unlimited) зарегистрированы успешно, вы увидите в панели задач (справа, где системные иконки) иконку InterBase. Нажмите на ней правую кнопку мыши, и выберите Properties.

    В пункте License вы увидите установленные лицензии.

    Нажмите правую кнопку мыши на иконке InterBase, выберите Shutdown. Вернитесь в панель управления сервисами, запустите сервис InterBase 7.5 Guardian. Сервер в этом случае запустится автоматически.

    Создание базы данных

    Для того, чтобы создать базу [6] данных, необходимо на компьютере, на котором установлен Interbase/Firebird, запустить утилиту IBConsole(ярлык находится в группе Interbase), войти на сервер(Server | Login, по умолчанию после установки пользователь: SYSDBA, пароль: masterkey), далее запустить утилиту Interactive SQL: пункт меню Tools | Interactive SQL .

    Если это первый запуск IBConsole после установки Interbase/Firebird, то сервер необходимо сначала зарегистрировать в IBConsole. Выберите пункт меню Server | Register, в появившимся окне выберите Local Server и нажмите ОК. После чего нужно выполнить процедуру входа на сервер, описанную выше.

    После установки ProxyInspector SQL скрипт для создания БД на сервере Interbase/Firebird находится в каталоге

    — каталог в который установлен ProxyInspector. Нажно открыть этот скрипт в ISQL командой Query | Load Script:

    вместо строки enter database filename here ввести желаемое полное имя и путь к файлу БД(с расширением .gdb), также заменить, если нужно имя пользователя и пароль(сохранять не рекомендуется), после чего выполнить команду Query | Execute. База данных будет создана.

    Теперь нужно указать путь к ней в ProxyInspector. Запустите ProxyInspector, выберите пункт меню База | Настройки программы, страница База данных | Сервер Interbase:

    при доступе по протоколу TCP/IP путь к БД будет состоять из имени или IP-адреса сервера БД и полного имени файла БД (это же имя указывалось в SQL скрипте при создании БД), разделенных двоеточием. Например: db-server:c:\db-data\interbase\pi_ent.gdb или 10.0.0.5:d:\data\pi_ent.gdb и.т.д.

    Если нужно, измените имя пользователя и пароль для доступа к серверу Interbase. Опцию Выключать индексы во время импорта следует оставить включенной на время первоначального импорта большого объема лог файлов и выключить после него.

    После этого на странице База данных настроек также нужно выбрать Сервер Interbase, нажать OK и перезапустить PI. После чего выбрать База данных | Соединить для подключения к БД.

    Для доступа к БД Interbase с других компьютеров необходимо наличие библиотеки gds32.dll в каталоге \system32 . Эта библиотека находится в каталоге \system32 компьютера с сервером Interbase и также устанавливается при установке Interbase

    Подключение к InterBase из клиентского приложения

    Для начала скачайте и установите пакет IBProvider Professional Edition.

    IBProvider Professional Edition — это набор COM-компонент, которые позволяют работать с любыми версиями InterBase и Firebird. Компоненты поддерживаются большинством средств разработки: Delphi, C++ Builder, Visual C++, .Net Framework, C#, Visual Basic, VBScript, VBA и др.

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

    Запустите скрипт на выполнение в режиме командной строки, и вы увидите список активных подключений к БД.

    InterBase и VBScript, Visual Basic, VBA

    Для доступа к InterBase и Firebird из VBScript, VBA, Visual Basic используется библиотека ADO (ActiveX Data Objects). Множество примеров работы с этой библиотекой вы найдете в документации: примеры InterBase VBScript, VBA, Visual Basic.

    InterBase и Delphi

    IBProvider предлагает несколько способов работы с InterBase из Delphi:

    • dbGo (ADO Express) компоненты, работающие через библиотеку ADO.
    • прямой доступ к COM-интерфейсам ADO, минуя компоненты dbGo.
    • прямой доступ к COM-интерфейсам OLE DB при помощи сторонних VCL-компонент (OLE DB Direct/OLE DB Express).

    InterBase и .Net

    Для доступа к InterBase из .Net используется библиотека ADO .Net. На сайте IBProvider опубликовано большое пошаговое руководство, посвященноеработе с InterBase в Visual Studio .Net (ADO .Net).

    InterBase и C++

    IBProvider Professional Edition includes C++ library for working with OLE DB providers. It is the fastest means of working with OLE DB providers from Visual C++ 2005-2008 and from C++ Builder.

    Редактирование базы InterBase — создание таблиц, связей, ключей

    В пустой базе данных необходимо создать таблицы, связи между таблицами, первичные ключи, индексы, хранимые процедуры, генераторы и другие объекты. Для редактирования баз данных вы можете использовать встроенные средства InterBase — IBConsole или утилиту isql.exe.

    Создание таблицы InterBase при помощи IBConsole

    1. В диалоговом окне Interactive SQL, загрузите скрипт tables.sql, чтобы ввести остальные определения таблицы в базе данных TUTORIAL, выбрав Query> Load Script. [7]
    2. Нажмите на Таблицы в левой панели IBConsole, чтобы проверить, что теперь у вас есть десять новых таблиц в базе данных TUTORIAL.

    Создание таблицы InterBase при помощи утилиты isql.exe

    Вставляем одну запись и делаем выборку из таблицы:

    Помимо isql существуют различные графические утилиты администрирования InterBase.

    Утилиты администрирования InterBase

    IBExpert

    IBExpert — Поддерживает InterBase, Firebird, Yaffil. Редакторы DDL и DML. Визуальный построитель запросов. Автозавершение кода, Metadata Extractor, а также множество других возможностей.

    IB/FB Development Studio

    IB/FB Development Studio — визуальный дизайнер баз данных, встроенный MERGE, scheduler, Code auto completion, анализатор запросов, монитор производительности.

    Blaze Top

    Blaze Top — инструмент разработчика и администратора баз данных. Поддерживает Firebird и InterBase.

    Database Workbench

    Database Workbench — поддерживает несколько серверов баз данных, среди которых есть Firebird и InterBase. Отладка хранимых процедур, анализ планов, встроенные средства переноса данных и метаданных.

    Создание базы данных в InterBase

    Если ты решил почитать эту статью, то у тебя есть желание научиться разрабатывать серверные базы данных. Это сейчас очень актуальное направление в мире программного обеспечения. Потому что, все больше и больше коммерческих организаций хотят автоматизировать свои внутренние и внешние процессы.

    Мы разработаем базу данных в InterBase!

    Реляционная база данных – это система таблиц, связанных между собой. Вот такое простое определение :)

    Сотрудник компании IBM Эдгар Кодд в 1970 году предложил реляционную модель баз данных. За базовую структуру данных в реляционной модели принято отношение (relation).

    Но Питер Чен был крайне не согласен с Эдгаром и поэтому в 1976 году предложил интерпретировать реляционные структуры данных (отношения), как набор сущностей и связей между ними.

    А еще во времена СССР и даже раньше писали учебники для школьников и решили, что отношения и сущности проще будет называть таблицами, а на связи между ними забили :)

    Вот что получилось в результате длинного пути развития человечества, помни: все эти слова синонимы!

    В теории баз данных есть несколько непонятных слов, которые я сейчас тебе объясню.

    Первичный ключ таблицы – это такое уникальное поле (или уникальная группа полей), используемое для идентификации каждой строки. Я рекомендую для первичного ключа выделять специальное поле (числовое!) и не использовать группу полей.

    Вообще наличие у каждой таблицы ключа необязательно, но его отсутствие – дурной тон, поэтому в каждой таблице определяй первичный ключ! Первичный ключ таблицы — важный элемент в структуре базы данных. Они — основа твоей системы, когда ты захочешь найти определённую строку в таблице, ты будешь ссылаться на этот первичный ключ.

    Вторичный ключ – это поле, необходимое для связи с другими таблицами.

    Если что-то не понятно, сильно не беспокойся – на практике все достаточно просто!

    Представь, что к тебе пришел умный дядька и просит тебя написать ему программу, которая организует прозрачность работы автомойки (на самом деле компания не имеет принципиального значение, ну у нас пусть будет автомойка :). А что такое прозрачность? Прозрачность в данном контексте означает то, что есть система, которая хранит все операции автомойки и позволяет следить за бизнесом.

    Ты не торопясь подумал над этой затеей и решил, что в твоей базе данных будут следующие таблицы:

    • Таблица (справочник) ПЕРСОНАЛ (PERSONAL)

    PERSONALID Поле – счетчик Число FIO Фамилия Имя Отчество сотрудника Текст (40) DATA_BD Дата рождения сотрудника Дата TEL Номер телефона Текст (20), текст лучше массива цифр, сам поймешь на практике

    • Таблица ГРАФИК РАБОТЫ (GRAFWORK)

    WORKID Поле – счетчик Число PERSONALKOD Вторичный ключ, для связи с таблицей «ПЕРСОНАЛ» Число NOTE Описание графика работы Текст (150) DATA Дата занесения записи в таблицу Дата

    • Таблица КЛИЕНТЫ (CLIENT)

    CLIENTID Поле – счетчик Число FIO Фамилия Имя Отчество клиента Текст (40) DATA_BD Дата рождения клиента Дата TEL Номер телефона Текст (20)

    • Таблица АВТОМОБИЛИ (CAR)

    CARID Поле – счетчик Число CLIENTKOD Вторичный ключ, для связи с таблицей «КЛИЕНТЫ» Число MARK Марка автомобиля Текст (30) NUMCAR Номер автомобиля Текст (10) NOTE Примечание Текст (150)

    • Таблица ОПЕРАЦИИ (OPERATION)

    OPERID Поле – счетчик Число PERSONALKOD Вторичный ключ, для связи с таблицей «ПЕРСОНАЛ» Число CLIENTKOD Вторичный ключ, для связи с таблицей «КЛИЕНТЫ» Число DATA Дата совершения операции Дата NOTE Примечание Текст (150)

    • Таблица СЕРВИСЫ (TSERVICE)

    TSERVICEID Поле – счетчик Число OPERKOD Вторичный ключ, для связи с таблицей «ОПЕРАЦИИ» Число SERVICEKOD Вторичный ключ, для связи со справочником «УСЛУГИ» Число

    • Таблица (справочник) УСЛУГИ (SERVICE)

    SERVICEID Поле – счетчик Число NAME Название услуги Текст (30) COST Цена услуги Число (4 цифры для целой части, 2 цифры – дробной)

    По поводу двух последних таблиц: в SERVICE мы заносим все услуги предоставляемые автомойкой, а TSERVICE необходима для связи справочника УСЛУГИ (SERVICE) с таблицей ОПЕРАЦИИ (OPERATION). Дело в том, что клиент может заказать несколько услуг, и чтобы они все принадлежали одной операции нужна таблица TSERVICE.

    Если что-то не понятно, перечитай выше изложенный текст. Если ты уже это сделал и не раз, тогда читай дальше – скоро все встанет на свои места!

    Чтобы вообще все стало понятно, посмотри диаграмму (рис. 1), на которой изображены все семь таблиц и показаны связи между ними.

    Рис. 1. ER-диаграмма.


    Приведенная диаграмма выполнена в нотации IDEF1X (Integration Definition for Function Modeling), разработанной Т.Рэмей.

    В этой нотации:

    — поля, определяющие первичный ключ, размещаются наверху списка и отделяются от других полей горизонтальной чертой;

    — связи таблиц типа «один-ко-многим» изображают линиями, которые на одном конце заканчиваются кружком. Связь «один-ко-многим» на примере таблиц «CLIENT» и «CAR» означает, что у одного клиента может быть несколько автомобилей, т.е. запись о данном клиенте в «CLIENT» одна, а в «CAR» может быть несколько записей, относящихся к данному клиенту!

    — связи таблиц типа «один-к-одному» изображают линиями. Это жесткие связи таблиц, то есть любой одной записи из первой таблице соответствует одна определенная запись из второй. Как ты уже заметил, в нашей диаграмме таких связей нет, они могли быть, если б мы разбили таблицу «PERSONAL» на две, выделив в отдельную таблицу список дат рождения, но это крайне дурацкая затея :) а потому она отметается!
    Наша диаграмма еще с 1976 года стала называться ER-диаграммой (Entity-Relationship, сущность-связь) – стандартный способ детализации хранилищ данных.

    С постановкой задачи разобрались! Теперь за практику!

    Установка InterBase 7.5

    Я решил использовать InterBase 7.5. Именно 7.5! Потому что люблю использовать последние версии программных продуктов, так как в новых версиях появляется много интересных фишек и исправлена добрая куча ошибок, замеченных в предыдущих версиях ПО. Но о том, что в свежей версии всегда есть куча новых багов лучше не думать :)

    Рис.2 Установка IB 7.5.

    Кликай на кнопку ‘Next’, выбирай тип установки ‘Server and Client’ и еще несколько раз жми на ‘Next’.
    Вот и вся установка!

    Теперь в Пуске появился новый пункт меню:

    Пуск – Программы – InterBase 7.5 Developer Edition.

    Все, теперь можно приступать к запуску InterBase, для этого запусти IBConsole:

    Пуск – Программы – InterBase 7.5 Developer Edition – IBConsole.

    После запуска появится окно, изображенное на рис.3.

    Нам нужно зарегистрировать сервер InterBase, для этого лезь в меню “Server” и выбирай “Register …”, появится окошко, заполни его так чтобы получилось что-то вроде этого (рис.4):

    Мы будем создавать базу на своем компе, поэтому выбирай Local Server. В поле Description введи описание нашего сервера. В поле Login Information – вводим логин и пароль админа базы данных, по умолчанию он будет (не знаю почему, но введи именно эти данные, потом можно будет добавлять и удалять пользователей):

    User Name: SYSDBA
    Password: masterkey

    Жми «Ok» – сервер зарегистрирован!

    Обязательно создай папку, где ты хочешь сохранить свою базу данных (вся твоя база будет состоять из одного GDB-файла!).
    Теперь создадим базу данных – выбираем пункт меню “Database” – “Create Database …”
    Появится следующее окно (рис.5.):

    Указываем название файла базы данных и его месторасположение, в одной из строк списка Files.

    Список Default Character Set не трогай! Если на твоем компе используется русский язык (то есть в настройках винды указано что ты в России), то русские буквы будут поддерживаться твоей базой.

    В поле Alias вводим произвольный псевдоним.

    Жмем ОК, база создана, окно IBConsole стала такой (рис.6.):

    Теперь все готово, можно переходить непосредственно к реализации того, что мы разобрали в Постановке задачи.

    InterBase версии 7.5 позволяет манипулировать данными с помощью гуя, но мы все будем делать через утилиту Interactive SQL, так как с интерфейсом я думаю ты и так разберешься, а вот основные команды SQL тебе пригодятся.

    Запускай утилиту Interactive SQL, выбрав в меню Tools – Interactive SQL, появится окошко (рис.7):

    Определение типов данных таблиц

    Назначая типы данных полям таблиц, можно использовать свои типы – домены. Это удобно, если имеются одинаковые поля в нескольких таблицах. Кроме того, использование доменов гарантирует реализацию соединения таблиц, а значит, поддержку ссылочной целостности.

    Введи в окне Interactive SQL следующий SQL-скрипт:

    CREATE DOMAIN dnDB AS DATE
    CHECK (Value 0)
    NOT NULL;
    commit;

    CREATE DOMAIN dnNOTE AS CHAR(150);
    commit;

    CREATE DOMAIN dnNAME AS CHAR(30);
    commit;

    CREATE DOMAIN dnNumCar AS CHAR(10);
    commit;

    CREATE DOMAIN dnCost AS NUMERIC(4, 2)
    CHECK (VALUE > 0)
    NOT NULL;
    commit;

    Жми CTRL+E, у тебя должны создаться 9 доменов (рис.9)

    Введи в окне Interactive SQL следующий код:

    CREATE TABLE Personal (
    PersonalID dnNum,
    FIO dnFIO,
    DATA_BD dnDB,
    TEL dnTEL,

    PRIMARY KEY (PersonalID)
    );
    commit;

    Create table – команда создания таблицы, после команды указывается название таблицы, дальше в скобках указываются параметры таблицы, потом скобка закрывается и обязательно ставится точка с запятой.

    В скобках у нас указаны четыре поля. После имени поля указывается его тип, то есть домен.

    Командой PRIMARY KEY определяем первичный ключ.
    Не знаешь что такое первичный ключ? Бегом в начало статьи я об этом подробно писал!

    Жми кнопку «Высокого напряжения» — третья справа, вуаля, таблица создана.

    Не останавливаемся на достигнутом, создаем еще 6 таблиц:

    CREATE TABLE Client (
    ClientID dnNum,
    FIO dnFIO,
    DATA_BD dnDB,
    TEL dnTEL,

    PRIMARY KEY (ClientID)
    );
    commit;

    CREATE TABLE GrafWork (
    WorkID dnNum,
    PersonalKod dnNum,
    Note dnNOTE,
    Data dnDATA,

    PRIMARY KEY (WorkID),
    FOREIGN KEY (PersonalKod) REFERENCES Personal (PersonalID)
    );
    commit;

    CREATE TABLE Car (
    CarID dnNum,
    ClientKod dnNum,
    Mark dnNAME,
    NumCar dnNUMCAR,
    Note dnNOTE,

    PRIMARY KEY (CarID),
    FOREIGN KEY (ClientKod) REFERENCES Client (ClientID)
    );
    commit;

    CREATE TABLE Service (
    ServiceID dnNum,
    Name dnNAME,
    Cost dnCOST,

    PRIMARY KEY (ServiceID)
    );
    commit;

    CREATE TABLE Operation (
    OperID dnNum,
    PersonalKod dnNum,
    ClientKod dnNum,
    Data dnDATA,
    Note dnNOTE,

    PRIMARY KEY (OperID),
    FOREIGN KEY (PersonalKod) REFERENCES Personal (PersonalID),
    FOREIGN KEY (ClientKod) REFERENCES Client (ClientID)
    );
    commit;

    CREATE TABLE TService (
    TServiceID dnNum,
    OperKod dnNum,
    ServiceKod dnNum,

    PRIMARY KEY (TServiceID),
    FOREIGN KEY (OperKod) REFERENCES Operation (OperID),
    FOREIGN KEY (ServiceKod) REFERENCES Service (ServiceID)
    );
    commit;

    Команда «FOREIGN KEY (PersonalKod) REFERENCES Personal (PersonalID)» связывает таблицу GRAFWORK и PERSONAL.

    Чтобы разобраться со всеми связями обратись к ER-диаграмме, на самом деле, здесь все просто.

    Жми CTRL+E, у тебя должны создаться 7 таблиц (рис.10):

    В Interbase нет такого типа как счетчик или autoincrement, выход из этой ситуации обеспечивается созданием, так называемого генератора!

    Генератор – это хранящаяся в базе данных программа, выдающая при каждом обращении к ней уникальное число. Для каждого автоинкрементного поля в базе данных создается свой генератор.

    Вызываем Interactive SQL, пятая кнопка справа. Пишем запрос:

    CREATE GENERATOR GEN_CAR;

    Нажимаем выполнить.
    Мы создали генератор GEN_CAR. Теперь нам надо установить начальное значение генератора, делается это следующим образом:

    SET GENERATOR GEN_CAR TO 0;

    Нажимаем выполнить.
    При этом запрос выполнится, и окно запросов очиститься.

    Остальные генераторы создаются аналогично:

    CREATE GENERATOR GEN_CLIENT;
    commit;

    SET GENERATOR GEN_CLIENT TO 0;
    commit;

    CREATE GENERATOR GEN_GRAFWORK;
    commit;

    SET GENERATOR GEN_GRAFWORK TO 0;
    commit;

    CREATE GENERATOR GEN_OPERATION;
    commit;

    SET GENERATOR GEN_OPERATION TO 0;
    commit;

    CREATE GENERATOR GEN_PERSONAL;
    commit;

    SET GENERATOR GEN_PERSONAL TO 0;
    commit;

    CREATE GENERATOR GEN_SERVICE;
    commit;

    SET GENERATOR GEN_SERVICE TO 0;
    commit;

    CREATE GENERATOR GEN_TSERVICE;
    commit;

    SET GENERATOR GEN_TSERVICE TO 0;
    commit;

    Теперь жми CTRL+E, у тебя должно получится вот так (рис. 11):

    У нас есть генераторы, с заданным начальным значением. Осталось только привязать каждый генератор к конкретной таблице и конкретному полю.

    SET TERM !!;
    CREATE TRIGGER «BEF_INS_CAR» FOR «CAR»
    ACTIVE BEFORE INSERT
    AS
    BEGIN
    NEW.CAR > END!!
    SET TERM ;!!
    commit;

    Выполняем запрос! Опаньки, наш генератор теперь введен в работу :)

    Конструкция SET TERM задает новый разделитель операторов. Если ее не использовать, то получится, что у тебя и после NEW.CAR >
    Также хочу обратить твое внимание на то, что в строках:

    SET TERM !!;
    SET TERM ;!!

    после TERM необходимо поставить пробел, а между «!!» и «;» ставить пробел необязательно! С этой проблемой я столкнулся при переходе на версию 7.5, в IB6 скрипты работали без разделения пробелом «TERM» и «!!;».

    Рассмотрим поподробней, что же мы накодили:

    Create Trigger – говорит, что мы хотим создать триггер (правило), далее указываем название триггера и для какой таблицы он будет предназначен (FOR «CAR»).
    Предложение ACTIVE BEFORE INSERT – указывает, когда триггер должен выполняться, в данном случае, каждый раз перед созданием новой записи. Слово AS – зарезервированное, открывает тело триггера. Тело триггера всегда (даже если триггер содержит единственный оператор – как в нашем случае) должно ограничиваться парой ключевых слов BEGIN – END. В шестой строке расположен оператор, в котором новому значению (слово NEW) поля CARID присваивается значение, полученное от встроенной функции GEN_ID. Двумя параметрами обращения к этой функции указывается имя генератора и то значение, на которое должно увеличиться текущее значение генератора («шаг» генератора).

    Создаем остальные триггеры:

    SET TERM !!;
    CREATE TRIGGER «BEF_INS_CLIENT» FOR «CLIENT»
    ACTIVE BEFORE INSERT
    AS
    BEGIN
    NEW.CLIENT > END!!
    SET TERM ;!!
    commit;

    SET TERM !!;
    CREATE TRIGGER «BEF_INS_GRAFWORK» FOR «GRAFWORK»
    ACTIVE BEFORE INSERT
    AS
    BEGIN
    NEW.WORK > NEW.DATA = ‘TODAY’;
    END!!
    SET TERM ;!!
    commit;

    SET TERM !!;
    CREATE TRIGGER «BEF_INS_OPERATION» FOR «OPERATION»
    ACTIVE BEFORE INSERT
    AS
    BEGIN
    NEW.OPER > NEW.DATA = ‘TODAY’;
    END!!
    SET TERM ;!!
    commit;

    SET TERM !!;
    CREATE TRIGGER «BEF_INS_PERSONAL» FOR «PERSONAL»
    ACTIVE BEFORE INSERT
    AS
    BEGIN
    NEW.PERSONAL > END!!
    SET TERM ;!!
    commit;

    SET TERM !!;
    CREATE TRIGGER «BEF_INS_SERVICE» FOR «SERVICE»
    ACTIVE BEFORE INSERT
    AS
    BEGIN
    NEW.SERVICE > END!!
    SET TERM ;!!
    commit;

    SET TERM !!;
    CREATE TRIGGER «BEF_INS_TSERVICE» FOR «TSERVICE»
    ACTIVE BEFORE INSERT
    AS
    BEGIN
    NEW.TSERVICE > END!!
    SET TERM ;!!
    commit;

    Выполняй запрос. Теперь все генераторы связаны со своими таблицами.

    В теории баз данных есть такая фишка: каскадное удаление данных, то есть при удалении строки из родительской таблицы происходит автоматическое удаление данных из дочерних таблиц. В нашем случае, например, тебе захочется удалить какого-нибудь сотрудника из таблицы «PERSONAL», но в «GRAFWORK» есть информация о графике работы этого сотрудника и в «OPERATION» находятся все операции совершенные им. То есть если сотрудник исчезнет, в связанных таблицах данные «повиснут», и твоя база будет засорена.

    Можно написать триггер, в котором описать все необходимые действия для организации каскадного удаления.

    Заходи в Interactive SQL и пиши:

    SET TERM !!;
    CREATE TRIGGER «BEF_DEL_PERSONAL» FOR «PERSONAL»
    ACTIVE BEFORE DELETE
    AS
    BEGIN
    DELETE FROM «GRAFWORK» WHERE GRAFWORK.PERSONALKOD=PERSONAL.PERSONALID;
    DELETE FROM «OPERATION» WHERE OPERATION.PERSONALKOD=PERSONAL.PERSONALID;
    END!!
    SET TERM ;!!
    commit;

    Жми CTRL+E, получишь триггер.

    Мы создали триггер «BEF_DEL_PERSONAL» для таблицы «PERSONAL», который будет срабатывать перед удаление строки (ACTIVE BEFORE DELETE), выполняя удаление из таблицы «GRAFWORK» и «OPERATION» (DELETE FROM . ).

    Теперь сделай еще два триггера с помощью скрипта:

    SET TERM !!;
    CREATE TRIGGER «BEF_DEL_OPERATION» FOR «OPERATION»
    ACTIVE BEFORE DELETE
    AS
    BEGIN
    DELETE FROM «TSERVICE» WHERE TSERVICE.OPERKOD=OPERATION.OPERID;
    END!!
    SET TERM ;!!
    commit;

    SET TERM !!;
    CREATE TRIGGER «BEF_DEL_CLIENT» FOR «CLIENT»
    ACTIVE BEFORE DELETE
    AS
    BEGIN
    DELETE FROM «CAR» WHERE CAR.CLIENTKOD=CLIENT.CLIENTID;
    DELETE FROM «OPERATION» WHERE OPERATION.CLIENTKOD=CLIENT.CLIENTID;
    END!!
    SET TERM ;!!
    commit;

    Выполни скрип, у тебя получатся вот такие триггеры (рис.12):

    Всё готово.
    Можешь кричать: «Ура!» и радостно бегать по комнате :)

    Использование базы данных

    Чтобы от нашей базы была хоть какая-то польза необходимо внести в нее информацию.

    Можно, конечно, это сделать с помощью интерфейса IBConsole, но я опять-таки рекомендую юзать Interactive SQL. Запускай его, выбирай меню Querty – Load Script, находи в моих исходниках папку ‘sql’ и выбирай файл ‘insert.sql’ жми Ok.

    Скрипт загрузится из файла в твое окошко, выполняй запрос и начинай изучать свою базу!

    Можешь вносить свои данные и изменять старые. Удалять строки из таблиц, проверяя, как действует каскадное удаление.

    Если ты заметил, в папке ‘sql’ есть еще несколько файлов, так вот в них содержатся все скрипты по созданию БД описанные выше! Теперь ты понял фишку использования SQL-скриптов? Сейчас ты в любой момент можешь заново создать свою базу буквально за 30 секунд :) Тебе достаточно в нужном порядке выполнять скрипты, а именно:

    1. domain.sql
    2. table.sql
    3. generator.sql
    4. trigger.sql
    5. insert.sql

    Ну, вот и все! Что знал – написал!

    Помни: в этой статье изложены лишь основы БД (на примере InterBase), так сказать, чтоб ты был в курсе. Настоятельно рекомендую продолжить изучать СУБД, так как дело прибыльное и интересное ;)

    Madin, 02.01.2006

    О системных таблицах interbase

    Некоторые технические характеристики InterBase

    InterBase Interactive SQL

    Создание новой базы данных

    Получение информации о структуре базы данных

    Выполнение SQL запросов

    InterBase Server Manager

      1. Обзор
      2. InterBase — это система управления реляционными базами данных, поставляемая корпорацией BORLAND для построения приложений с архитектурой клиент-сервер произвольного масштаба: от сетевой среды небольшой рабочей группы с сервером под управлением Novell NetWare или Windows NT на базе IBM PC до информационных систем крупного предприятия на базе серверов IBM, Hewlett-Packard, SUN и т.п.

      В пакет Delphi версии входит однопользовательская версия InterBase для Windows — Local InterBase. Используя Local InterBase можно создавать и отлаживать приложения, работающие с данными по схеме клиент-сервер, без подключения к настоящему серверу. В дальнейшем потребуется только перенастроить используемый псевдоним базы данных и программа будет работать с реальной базой без перекомпиляции. Кроме того, Local InterBase можно использовать в приложениях для работы с данными вместо таблиц Paradox.

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

    1. Некоторые технические характеристики InterBase

    Отличия Local InterBase от InterBase для других платформ, в частности, от InterBase для Windows NT:

    Local InterBase не поддерживает:

    • функции, определяемые пользователем (UDF).
    • BLOB фильтры
    • сигнализатор событий (event alerters)
    • запись через журнал (Write Ahead Log (WAL))
    • «отключение» и «включение» базы данных (database shutdown or restart)
    • ведение теневой базы данных (database shadowing)

    Все остальные функции полностью поддерживаются, совпадает даже структура хранения базы на диске.

    Максимальный размер базы данных

    Реально ограничение на размер накладывается временем обработки запросов, временем резервного копирования, восстановления базы и т.д. Рекомендуется не более 10 GB.

    Максимальное количество физических файлов, из которых может состоять база

    В системных таблицах InterBase поле, описывающее из каких файлов состоит база данных, включая все shadow, имеет тип SHORT. Соответственно не более 65,536.

    Максимальное количество таблиц в базе данных

    65,536. Таблицы нумеруются с использованием типа данных SHORT.

    Максимальное количество записей в таблице и полей в записи

    В записи может быть не более 1000 полей. Количество записей в таблице не ограничено.

    Максимальный размер записи и поля

    Запись не может быть больше 64К байт (не считая размера BLOB). Поле не может быть больше 32К байт, размер поля типа BLOB не ограничен.

    Максимальное количество индексов в таблице и базе

    В базе может быть 64K индексов. В одной таблице — 64 индекса.

    Максимальное количество уровней вложенности SQL запроса

    16 уровней вложенности.

    Максимальное количество полей в составном индексе

    Составной индекс может включать в себя не более 16 полей.

    Максимальный размер stored procedure или trigger

    Stored procedure или trigger может иметь размер кода не более 48K байт.

    Количество UDF, определенных в одной базе

    Длина имени UDF не более 31 символа. Соответственно максимальное количество UDF в базе ограниченно количеством уникальных имен в пределах этой длины.

        1. InterBase Interactive SQL
        2. В поставке Delphi есть две утилиты для доступа к базам данных и администрации сервера InterBase. Утилита Windows ISQL позволяет интерактивно выполнять SQL запросы к базе данных и получать результат. Это требуется в двух случаях: для отладки SQL выражения и для управления данными и их структурой.

        Кроме того, создать базу данных, хранимые процедуры, триггеры, и т.п. также удобнее с помощью ISQL. ISQL позволяет обращаться как к данным на удаленном сервере, так и к локальным (к Local InterBase).

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

        После запуска ISQL выберите пункт меню “File|Connect to Database…”, появится диалог (см. рис.1), в котором нужно выбрать сервер (удаленный или локальный, в данном случае мы обращаемся к Local InterBase), файл базы данных, указать имя пользователя (SYSDBA — имя системного администратора) и пароль (masterkey — пароль по умолчанию). Если все указано правильно, то по нажатию клавиши “OK” установится соединение с базой данных и можно приступать к дальнейшей работе.

        Рис. A : Диалог соединения с базой данных.

        Создание новой базы данных

        Эту операцию можно выполнить в пункте меню “File|Create Database” (см. рис.2). В диалоге нужно указать имя файла (c:\bases\new_base.gdb), имя и пароль системного администратора (SYSDBA и masterkey), и, при необходимости, дополнительные параметры. В данном случае создается база данных, поддерживающая русскую кодовую страницу WIN1251. Если Вы собираетесь работать из ISQL с базой данных в русской кодировке, то перед установкой соединения нужно в пункте меню “Session|Advanced Settings” установить “Character set on connect” в WIN1251.


        Рис. B : Диалог создания новой базы данных

        Получение информации о структуре базы данных

        В ISQL можно получить полную информацию о структуре базы данных: список таблиц и их структуры, списки и текст триггеров, хранимых процедур и т.п. Эту операцию можно выполнить в пункте меню View или Extract. Например, для базы данных из поставки Delphi (лежит в \IBLOCAL\EXAMPLES\EMPLOYEE.GDB), попробуем выбрать “Extract|SQL Metadata for Table” для таблицы COUNTRY. В окошке ISQL Output появится текст SQL запроса, который создавал данную таблицу:

        /* Extract Table COUNTRY */

        CREATE DOMAIN COUNTRYNAME AS VARCHAR(15);

        /* Table: COUNTRY, Owner: SYSDBA */

        CREATE TABLE COUNTRY (COUNTRY COUNTRYNAME NOT NULL,

        CURRENCY VARCHAR(10) NOT NULL,

        PRIMARY KEY (COUNTRY));

        Выполнение SQL запросов

        Текст SQL запроса вводится в окошке “SQL Statement”. Для запуска его на выполнение, нажмите кнопку “Run”. На рис.3 приведен результат работы примерного запроса.

        Рис. C : Окно ISQL с текстом и результатом выполнения SQL запроса.

        Утилита предназначена для администрирования InterBase. С ее помощью можно выполнить следующие операции:

          • определить пользователей и их пароли
          • произвести резервное копирование
          • удалить “мусор” из базы
          • завершить/откатить зависшие транзакции
          • произвести проверку базы на наличие ошибок

        Рис. D : Утилита для администрирования InterBase

        Соответствующий диалог показан на рис. 5

        Рис. E : Диалог резервного копирования базы данных.

        Обычно, операционные системы сами предоставляют возможности по сохранению баз данных в архивах. Однако, при резервном копировании, проведенном с помощью Server Manager, выполняются дополнительные операции. При этом:

        InterBase. Создание доменов и таблиц

        Цель работы: формирование навыков и умений настройки и обслуживания БД с помощью диспетчера серверов, а также настройки BDE и закрепление знаний, умений и навыков создания объектов БД.

        Краткие теоретические сведения

        Настройка и обслуживание БД с помощью

        Диспетчера серверов

        Настройка БД и ее обслуживание, включая резервное копирование и восстановление, осуществляется утилитой – диспетчером серверов: IBConsole (рис. 11.1).

        Прежде чем создавать БД, необходимо зарегистрировать сервер, а для этого – выполнить команду Server ® Register Server and Connect.

        В диалоговом окне ввести имя пользователя и пароль (рис. 11.2).

        Рис. 11.1. Главное окно IBConsole

        Рис. 11.2. Окно для регистрации сервера

        Имя пользователя: SYSDBA и пароль: masterkey являются системными и изменять их не рекомендуется.

        Создание БД

        БД в InterBase физически представляет собой единственный файл с расширением *.gdb, в котором хранится все содержимое БД.

        Создание БД удобнее всего произвести, используя утилиту IBConsole с переходом в ней в Interactive SQL.

        Новая база данных создается командой CREATE DATABASE.

        CREATE DATABASE “C:/MYDIR/MYDATABASE.GDB”

        USER “SYSDBA” PASSWORD “masterkey”;

        После того, как БД создана, ее необходимо зарегистрировать на сервере.

        Для регистрации БД надо выполнить команду DataBase ® Register DataBase and Connect (рис. 11.3).

        Рис. 11.3. Окно регистрации БД

        Настройка BDE

        Проблемы настройки BDE при работе с InterBase возникают прежде всего в системах, работающих с C++ Builder и Delphi.

        Существуют несколько способов организации интерфейса с БД:

        1) работа средствами API соответствующей СУБД. При этом способе обеспечивается максимальное быстродействие приложения. Недостатком является жесткая привязка системы к конкретной СУБД и, как следствие, непереносимость системы. Для перехода на работу с другой СУБД требуется переработка программного обеспечения приложения;

        2) работа с использованием средств пакета, обеспечивающего настройку на работу с конкретной СУБД. При этом способе доступ к базе осуществляется в несколько этапов, что приводит в определенной степени к снижению эффективности работы приложения. Компенсацией за это является независимость приложения от конкретной СУБД. Это обеспечивает возможность простоты перехода от одной СУБД к другой. Кроме того, появляется возможность использовать в работе большой набор стандартных компонент для работы с базами данных, что ускоряет разработку приложений.

        Рассмотрим подробнее реализацию разработки на основе использования средств BDE.

        Поскольку приложение связано только с BDE, то оно явно не зависит от конкретной СУБД, однако BDE должно знать, с чем именно оно должно связываться. Следовательно, для BDE необходимо указать идентификатор конкретной базы.

        Рассмотрим задачу настройки описаний БД для BDE. Для идентификации базы данных используется ее символьный идентификатор – алиас базы данных. Алиас известен приложению и с ним связано описание, используемое BDE.

        С каждым алиасом необходимо связать:

        — тип базы данных;

        — фактическое имя и путь доступа к базе;

        — дополнительные характеристики базы, необходимые для настройки на работу с ней.

        Наиболее удобным и естественным способом настройки BDE для работы с конкретным приложением является использование утилиты BDE Administrator.

        Настройка BDE для работы с базой InterBase следующая (рис. 11.4):

        1) запустить утилиту BDE Administrator;

        2) выполнить команду Object ® New;

        3) в открывшемся окне выбрать драйвер для InterBase – INTRBASE;

        4) в окне настройки баз данных ввести имя для алиаса.

        В окне справа в поле SERVER NAME вводится фактический путь доступа к БД.

        В поле USER NAME указать имя пользователя SYSDBA;

        5) после того, как описание БД завершено, нажать кнопку Apply, чтобы зафиксировать изменения в BDE;

        6) чтобы открыть БД, необходимо нажать на кнопку «+» перед именем алиаса. В диалоговом окне указать имя пользователя и пароль. Соединение с БД выполнено;

        7) перейти к работе с БД.

        Рис. 11.4. Окно BDE администратора

        Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ — конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой.

        Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим.

        Borland InterBase 7 для построения масштабируемых систем

        Наибольшее распространение сервер баз данных InterBase получил в 1995 г., когда разработчики приложений начали работать с Delphi 1. InterBase размещался на одном компакт-диске с Delphi, по объему занимал четыре дискеты и устанавливался за несколько секунд, после чего был полностью готов к работе. Отсутствие необходимости в настройке, надежность, совместимость со стандартом ANSI SQL, хорошая производительность и высокая функциональность сделали InterBase весьма популярным в нашей стране.

        Технологии

        При разработке InterBase в код был встроен мощный функциональный и алгоритмический потенциал. Наиболее известны первые коммерческие реализации BLOB и two phase commit. Не претендуя на полноту, приведем перечень технологий InterBase, которые используются практически во всех типах прикладных задач.

        Многоверсионность

        В InterBase имеет место одна из наиболее удачных коммерческих реализаций безблокировочной работы с записями. В общепринятом смысле в InterBase блокировки отсутствуют целиком. Это позволяет разработчику сосредоточиться на решении прикладной части задачи, облегчая обработку конфликтов при многопользовательском доступе к данным. Например, модификация данных не мешает их чтению в конкурирующих транзакциях. Соответственно, нет простоев, которые неизбежны в блокировочных серверах при использовании аналогичных уровней изолированности транзакций.

        Транзакции

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

        В InterBase существует два основных типа транзакций, Read Committed и Repeatable Read. Причем второй уровень изолированности — более «жесткий», чем аналогичный в ANSI SQL92, и не допускает «фантомных записей». Оба типа транзакций имеют ряд параметров, в том числе параметр wait, который позволяет или получать сообщения о конфликтах блокировок немедленно (no wait), или ждать разрешения конфликтов блокировок (wait).

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

        События

        Клиентское приложение может подписаться на уведомления о событиях, которые могут возникнуть в процедуре или триггере при их выполнении. При этом допускается как синхронное, так и асинхронное ожидание событий. Приложению не требуется периодически опрашивать сервер — он сам сообщит конкретному «клиенту» о том, что интересующее событие произошло.

        Триггеры

        Триггеры срабатывают при операциях insert/update/delete немедленно (пессимистическая стратегия), причем могут выполняться как до операции, так и после нее (before/after). На одно и то же действие допустимо создавать несколько триггеров, которые могут быть включены и выключены, а также содержать отдельные части бизнес-логики (разделение кода по триггерам). При этом допускается рекурсивный вызов триггеров, т. е. триггеры могут обновлять таблицы, на которых они срабатывают.

        На рис. 1 приведен пример распределения обработки операций над записями при помощи нескольких триггеров и последовательность выполнения таких триггеров.

        Рис. 1. Распределение обработки операций с записями при помощи триггеров.

        Сервисное API

        В клиентской части сервера содержится ряд функций, при помощи которых можно одновременно и полноценно управлять любым количеством серверов — изменять конфигурацию сервера, управлять пользователями, резервным копированием, получать статистику, проверять базы данных на целостность. Функции имеют удобный интерфейс, и их можно «обернуть» в классы любым объектно-ориентированным языком программирования, как это сделано в Delphi и C++Builder (закладка InterBase Admin в палитре компонентов, рис. 2).

        Рис. 2. Закладка InterBase Admin в палитре компонентов.

        Большинство инструментов третьих фирм для InterBase (см. врезку) используют этот набор компонентов, предоставляя полноценное управление любым количеством серверов с одного рабочего места.

        Пользовательские функции

        Сейчас этим мало кого удивишь, но в InterBase UDF поддерживаются уже давно. Их можно писать на любом компилирующем языке программирования, который может создавать dll- или so-модули. В настоящий момент можно назвать пять наиболее обширных библиотек UDF, в состав которых входит от 50 до 200 функций обработки строк, дат и времени, вычисления выражений, обработки blob и т. п. Есть и отдельные наборы для перекодировки строк, работы со случайными значениями, перевода чисел в текст и т. д.

        Необходимо отметить, что с выпуском Borland Kylix стало можно использовать все богатство сторонних UDF, написанных на Delphi, и под Linux.

        Платформы

        Вопреки самому популярному мифу об InterBase (а их несколько), исходный код изначально был написан для Unix, и версия 3.3 выпускалась для 15 вариантов Unix, включая различные аппаратные платформы (DEC, IBM/RS, Solaris SPARC и т. д.). В 1994 г. была выпущена версия для Microsoft Windows, причем последующие версии для этой платформы могли работать со всеми ее вариантами, включая Windows 95, 98 и NT. К настоящему моменту список поддерживаемых платформ сократился до трех наиболее распространенных — Windows, Linux, Solaris/SPARC (сертифицировано пять самых популярных вариантов Linux, включая Red Hat и SuSE). Между версиями для различных платформ нет никаких различий, т. е. сервер работает совершенно одинаково, независимо от платформы. Это гарантирует прозрачность смены серверной операционной системы и аппаратного обеспечения для пользовательских приложений.

        Резервное копирование

        Поскольку InterBase поддерживает многоверсионность записей, выполнение резервного копирования при работающих пользователях — это штатная операция.

        Смену платформы или просто перенос базы данных с одной платформы на другую рекомендуется выполнять при помощи backup/restore. Поскольку файл базы данных — это файл произвольного доступа, то его копирование (через copy или xcopy) в момент работы пользователей может привести к тому, что полученный файл-копия базы данных окажется испорченным.

        Автоматизация резервного копирования возможна при помощи сервисов операционной системы (at или cron) и утилиты командной строки GBAK либо с использованием инструментов третьих фирм, например, GbakScheduler, IBBackupScheduler и других.

        Classic vs SuperServer

        Эти обозначения указывают на различия в архитектуре сервера, выпускавшегося для разных платформ до версии 7.

        Версия Classic построена по старой схеме пользователь-процесс, которая берет свое начало из времен, когда в среде Unix не было стандартной модели threads. Это вполне надежная схема, так как пользователи работают с сервером в разных процессах, но большой ее недостаток — существенное потребление памяти из-за невозможности организации разделяемого кэша данных и метаданных. Для достаточно сложных баз данных клиентскому процессу могло потребоваться 35 Мбайт памяти. Умножьте это число на количество одновременно работающих пользователей, и вы получите объем RAM, который необходимо установить на сервер.

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

        Новая функциональность InterBase 7

        Поддержка SMP

        Версия 7.0 переработана для полноценного использования всех процессоров компьютера и обеспечивает корректное распределение нагрузки между приложениями OLTP и OLAP. Как и в предыдущих версиях, при помощи параметра CPU_AFFINITY (битовая маска) можно указать, какие именно процессоры InterBase 7 должен использовать для работы, но это имеет смысл делать лишь в случае размещения сервера приложений или другого ПО на той же машине, с тем чтобы InterBase гарантированно использовал только часть всех доступных процессоров компьютера.

        Для управления производительностью добавлен параметр MAX_THREADS в IBCONFIG — администратор системы может заранее определить максимальное количество потоков, используемых сервером. Для конкретных задач это число определяется экспериментально, и в общем случае оно должно минимально соответствовать количеству пользователей системы.

        Если работать с InterBase 7 как с однопользовательским сервером, то параметр max_threads необходимо установить равным 1. Благодаря этому использование ресурсов клиентского компьютера будет минимальным.

        Временные системные таблицы

        Во время работы сервер хранит разнообразную информацию о выполнении запросов, занимаемой памяти, количестве чтений данных и т. п. Однако для разработчика была доступна только часть такой информации, и для ее получения необходим был InterBase API.

        В InterBase 7 введены временные системные таблицы, т. е. информация практически обо всех структурах сервера доступна при помощи обычных sql-запросов. Данные этих таблиц не хранятся на диске, а лишь представляются для запросов в виде взаимосвязанных таблиц.

        Каждая временная таблица предоставляет список объектов определенного типа — базы данных, таблицы, процедуры, соединения пользователей, транзакции, память, но столбцов у этих таблиц много, и в результате можно получить практически любую информацию о происходящих на сервере событиях. Например, это может быть список 10 наиболее длительно выполнявшихся запросов, количество операций ввода-вывода (дисковых) для всех соединений, количество обновлений данных конкретной таблицы и т. д. (рис. 3). Объем получаемой информации и ее интерпретация зависят только от фантазии разработчика.

        Рис. 3. Пример временных таблиц.

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

        Разумеется, разработчики сервера позаботились и о вопросах безопасности при работе с временными системными таблицами. По умолчанию получать информацию из них и изменять ее может только администратор базы данных или ее владелец. Остальные пользователи могут лишь читать информацию из этих таблиц, и то если они имеют соответствующие права (grant).

        Тип данных BOOLEAN

        Базы данных нового формата поддерживают четырехбайтовый тип BOOLEAN в соответствии со стандартом SQL — столбец такого типа может содержать значения NULL, True (или 1) и False (или 0).

        InterClient — новый драйвер JDBC Type 4

        Новый драйвер JDBC Type 4 упрощает распространение клиентских приложений и администрирование сервера. Он не использует InterServer, как предыдущий драйвер Type 3, а работает с сервером InterBase напрямую. При этом клиенты, использующие драйвер Type 3, могут продолжать работать без изменений (при наличии InterServer).

        Безопасность внешних таблиц

        В новой версии сервера внешние таблицы (external tables, предназначенные для импорта-экспорта данных) должны располагаться только в каталогах, определенных параметром external_file_directory в IBCONFIG. Это повышает безопасность сервера в целом, ограничивая количество каталогов, в которых пользователи могут создавать или использовать внешние таблицы.

        Компоненты доступа

        Сервер баз данных вряд ли получит широкое распространение, если к нему сложно найти разнообразные и качественные средства доступа из различных языков программирования. Для InterBase такие средства доступа есть (рис. 4). Наиболее популярны из них, разумеется, BDE и dbExpress, а также компоненты прямого доступа InterBase eXpress (IBX — поставляются в Delphi и C++Builder) и FIBPlus.

        Рис. 4. Компоненты прямого доступа.

        Сейчас все больше разработчиков используют компоненты прямого доступа (в том числе и в отношении других серверов баз данных), поскольку они дают массу возможностей для использования особенностей сервера, о которых говорилось выше — как минимум для полноценного управления транзакциями и их характеристиками. Для Java, разумеется, на первом месте стоит драйвер InterClient.

        Доступ к серверу не из сред разработки Borland возможен из шести ODBC-драйверов, лучший из которых — EasySoft ODBC, трех провайдеров OLE DB (лучший — http://www.ibprovider.com) и других компонентов прямого доступа — IBObjects, Zeos DB, SQLRoots, IBPerl, DBD:InterBase и т. д.

        Кроме того, с выпуском новой среды разработки для C# (известной на момент написания статьи как проект Borland Sidewinder) Borland планирует расширить и спектр средств доступа к InterBase, добавив к нему специальный провайдер для платформы Microsoft. NET.

        Производительность

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

        Если производительности начинает не хватать, то следует обратиться к файлу конфигурации IBCONFIG. Здесь можно настроить минимальный и максимальный объем памяти для процесса InterBase, размер кэша базы данных, каталоги и размер временных файлов и т. п. Настройка не представляет особой сложности, однако она должна быть выполнена в соответствии с конкретной конфигурацией сервера.

        Может случиться, что изменение параметров IBCONFIG не даст существенного роста производительности. В этом случае следует обратить внимание на конфигурацию аппаратного обеспечения — чаще всего проблема не в процессоре или нехватке оперативной памяти, а в недостаточной производительности жестких дисков или в том, что на одном и том же диске размещается виртуальная память, каталог временных файлов, база данных и т. п. В этом случае следует подумать о дополнительных дисках, даже IDE, и корректно разместить на них как упомянутые выше компоненты, так и саму операционную систему. Такое разделение может повысить производительность системы в несколько раз.

        Если же сервер БД производит много вычислений (триггеры, хранимые процедуры, UDF…), то потребуется более быстродействующий процессор. А если обрабатывается большое количество данных (выборки, отчеты), то следует увеличить количество оперативной памяти.

        Практика применения

        Существует много как тиражируемых, так и промышленных систем, созданных с использованием InterBase. В первую очередь это системы, которые легко строятся с использованием всех преимуществ InterBase, — бухгалтерия, склад, грузоперевозки, полная автоматизация малых предприятий и т. д. Разумеется, есть кадровые системы, финансовые, биллинговые, CRM (известный SalesExpert) и даже ERP («Тектон-Интегратор»).

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

        От 300 Мбайт до 1 Гбайт

        Размер базы данных Доля систем, %
        От 30 до 300 Мбайт 27
        55
        От 1 до 8 Гбайт 14
        От 8 до 30 Гбайт 4

        Рост объемов баз данных идет достаточно быстро, и скорее всего уже через полгода многие системы перейдут из второй группы в третью (до 8 Гбайт). Это не связано с самим пакетом InterBase, а является следствием увеличения объемов данных, обрабатываемых обычными приложениями.

        Физического ограничения по размеру для базы данных — 131 Тбайт пока еще никто не достиг. Пока известны два случая, когда используется максимальный объем — 180 Гбайт финансовых транзакций по множеству компаний за несколько лет и база данных в 980 Гбайт, хранящая хэши паролей в MD5.

        Необходимо отметить, что для первой и второй групп тиражируемые приложения фактически не требуют никакого администрирования. Уже существует ряд банковских систем, в которых InterBase используется более чем в двухстах филиалах с количеством сотрудников от 3 до 15 человек. Разумеется, в таких условиях нет никакой возможности содержать администратора баз данных для каждого офиса. InterBase позволяет или вообще не заниматься администрированием БД, или автоматизировать все необходимые операции, такие, как создание резервных копий, зеркалирование и т. д., при помощи средств InterBase, третьих фирм или операционной системы.

        Заключение

        InterBase относится к числу наиболее популярных серверов для решения общих задач. Высокая функциональность и надежность, нетребовательность к ресурсам и одновременно способность использовать все ресурсы вычислительных систем, наличие множества сторонних библиотек функций, компонентов доступа, инструментальных средств разработки баз данных и автоматизации административных операций — все это в совокупности существенно облегчает разработку приложений и уменьшает стоимость владения.

        А если вдруг у вас возникнут вопросы, сообщество разработчиков, использующих InterBase, обязательно вам поможет.

        Инструменты третьих фирм

        IBExpert

        IBExpert — один из самых известных инструментов, используемых администраторами и разработчиками InterBase. Он содержит огромное количество функций, облегчающих жизнь программистам, а открытый Plugin’s API позволяет легко наращивать функциональность IBExpert.

        IBExpert поддерживает не только InterBase 7, но и предыдущие версии: c 4-й по 6-ю, что облегчает перенос уже существующих приложений, использующих InterBase, на новую платформу. Инструмент позволяет одновременно работать с несколькими открытыми базами данных, имеет прекрасный редактор с подсветкой синтаксиса SQL, развитый механизм экспорта в большинство распространенных форматов (Excel, RTF (Word), HTML и т. д.), отладчик хранимых процедур и триггеров, анализатор производительности выполнения запросов с графическим выводом информации, визуальный построитель запросов. Для администраторов в нем есть менеджер прав и менеджер пользователей, помощник для операций резервного копирования и восстановления, функции проверки базы данных, возможность ведения журнала изменений данных и метаданных в базе и т. д.

        IB Manager

        При первом взгляде на IBExpert и IB Manager сразу бросается в глаза несомненное сходство этих двух программ. У них практически одинаковый интерфейс и набор функций. Разница тем не менее есть, но как в игре «Найдите 10 отличий». Таким образом, все то, что ранее было сказано про IBExpert, в полной мере относится и к IB Manager. Отдельно стоит отметить у IB Manager качественную локализацию.

        InterBase Performance Monitor

        Эта утилита работает с новыми возможностями InterBase 7 — временными таблицами мониторинга, и соответственно только с базами данных, которые были созданы или перенесены в InterBase 7. InterBase Performance Monitor позволяет не только увидеть, какой пользователь занимает те или иные ресурсы, но и повлиять на выполнение транзакций и запросов тем или иным способом, посмотреть параметры использования памяти, состояние процесса сборки мусора, а также то, какие таблицы и представления используются в данный момент. Информация представляется не только в табличном виде, но и в виде различных графиков.

        IB Database Comparer

        Инструмент позволяет сравнивать две базы данных или их скрипты (SQL/DDL) и выдает скрипт отличий. Такой скрипт можно применять для распространения изменений метаданных БД, например, из центрального офиса в филиалы. Большинство выполняемых операций автоматизировано, есть возможность работы как в пакетном, так и в интерактивном режиме, с просмотром всех обнаруженных отличий баз данных.

        InterBase PLANalyzer

        Назначение этой утилиты очень простое — помочь разработчикам в оптимизации планов запросов. Известно, что InterBase предоставляет большой простор для оптимизации планов выполняемых запросов, иногда план составляется неоптимально. InterBase PLANalyzer показывает план выполнения запроса в виде дерева, с указанием качества применения того или иного индекса или таблицы.

        Grant Manager 3 for InterBase

        Grant Manager 3 for InterBase — наиболее функциональная утилита управления пользователями и их правами. Ряд черт выгодно выделяют ее, в том числе в сравнении со средствами управления правами, встроенными в универсальные утилиты типа IBExpert. Grant Manager может проводить все операции с пользователям и ролями, копировать наборы прав между держателями прав, сохранять наборы прав и использовать их потом как шаблоны, генерировать скрипты раздачи прав и отчеты о них. Не забыты и разработчики информационных систем — Grant Manager может использоваться как СОМ-сервер, т. е. как встраиваемый элемент приложения.

        IB Replicator

        IB Replicator — профессиональный инструмент репликации данных, входящий в комплект поставки InterBase. Поддерживает синхронную и асинхронную репликацию как в локальных сетях, так и по модемной связи. Может осуществлять двухстороннюю синхронную и асинхронную репликацию между любым количеством узлов, определять имена реплицируемых таблиц и столбцов, а также выполнять репликацию через хранимые процедуры.

        IBLogManager

        Эта программа предназначена для протоколирования изменений данных. Все, что для этого нужно, — позволить IBLogManager сделать все необходимые изменения в структуре базы данных и указать, изменения каких объектов нужно отслеживать. На этом работа администратора заканчивается, все остальное сделает IBLogManager.

        Другие статьи из раздела

        • Программная платформа IBM для повышения эффективности бизнеса
        • ИБП для защиты серверов
        • Интегрированное решение для защиты центров обработки данных
        • На пути к построению единой платформы защиты данных
        • Виртуализация без ограничений

        Поместить в блог

        Комментарии к статье

        Рекламные ссылки

        Chloride
        Демонстрация Chloride Trinergy
        Впервые в России компания Chloride Rus провела демонстрацию системы бесперебойного электропитания Chloride Trinergy®, а также ИБП Chloride 80-NET™, NXC и NX для своих партнеров и заказчиков.

        NEC Нева Коммуникационные Системы
        Завершена реорганизация двух дочерних предприятий NEC Corporation в России
        С 1 декабря 2010 года Генеральным директором ЗАО «NEC Нева Коммуникационные Системы» назначен Раймонд Армес, занимавший ранее пост Президента Shyam …

        компания «Гротек»
        С 17 по 19 ноября 2010 в Москве, в КВЦ «Сокольники», состоялась VII Международная выставка InfoSecurity Russia. StorageExpo. Documation’2010.
        Новейшие решения защиты информации, хранения данных и документооборота и защиты персональных данных представили 104 организации. 4 019 руководителей …

        МФУ Panasonic DP-MB545RU с возможностью печати в формате А3
        Хотите повысить эффективность работы в офисе? Вам поможет новое МФУ #Panasonic DP-MB545RU. Устройство осуществляет

        Adaptec by PMC
        RAID-контроллеры Adaptec Series 5Z с безбатарейной защитой кэша
        Опытные сетевые администраторы знают, что задействование в работе кэш-памяти RAID-контроллера дает серьезные преимущества в производительности …

        Chloride
        Трехфазный ИБП Chloride от 200 до 1200 кВт: Trinergy
        Trinergy — новое решение на рынке ИБП, впервые с динамическим режимом работы, масштабируемостью до 9.6 МВт и КПД до 99%. Уникальное сочетание …

      1. Илон Маск рекомендует:  Блочная модель
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL