32 урока по Delphi

Урок 25: Утилиты для Local InterBase

Содержание урока 25:

Обзор
Некоторые технические характеристики InterBase
InterBase Interactive SQL
Установка соединения
Создание новой базы данных
Получение информации о структуре базы данных
Выполнение SQL запросов
InterBase Server Manager
Резервное копирование

1. Обзор

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 запросов.

2. Некоторые технические характеристики 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

В поставке 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 */

/* Domain definitions */

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 запроса.

2. InterBase Server Manager

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

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

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

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

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

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

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

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