ВикиЧтение
Поиск
Содержание
ВикиЧтение
Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Борри Хелен
SQL
{{title}}
{{{description}}}
Введение
Об авторе
О техническом редакторе
О научном редакторе перевода на русский язык
Благодарности
Введение в Firebird
Что такое Firebird?
Кому нужна эта книга?
Где найти нужную вам информацию?
Приложения и глоссарий
Происхождение Firebird
Проект Firebird
Спарки
Обзор возможностей
Версии Firebird
Доступ к сети
Многоверсионная архитектура
Транзакции
Хранимые процедуры и триггеры
Ссылочная целостность
Оперативное копирование базы данных
Безопасность
Пример базы данных
Соглашения по документации
От изготовителя fb2.
Синтаксические шаблоны
Специальные символы
ГЛАВА 1. Инсталляция.
Системные требования
Память на сервере (все платформы)
Инсталляционные диски
Минимальные требования к машине
Как получить инсталляционный комплект
Содержание комплекта
Соглашения по именованию в комплекте инсталляции
Зеркальные сайты
Комплект поставки для Linux
Сжатые файлы (tarballs)
Реализация NPTL для высших версий Linux
Комплект поставки для Windows
Сжатые файлы
Серверы
Клиентские библиотеки
Тестирование результатов инсталляции
Сетевой протокол
Тестирование сервера
Проверка, что сервер Firebird запущен
Инсталляция встраиваемого сервера
Пример структуры встроенной инсталляции
Другие вещи, которые вам нужно знать
Пользователи
Инструмент администратора
Размещение на диске по умолчанию
ГЛАВА 2. Установка сети.
Сетевые протоколы
Именованные каналы
Локальный доступ
Клиент-сервер
Встраиваемый сервер
Смешанные платформы
Сетевой адрес для сервера
Файл HOSTS
Местонахождение файла HOSTS
Имя сервера и путь к нему
Синтаксис строки соединения
Конфигурирование сервиса порта TCP/IP
Как сервер устанавливает прослушиваемый порт
Установка клиента для поиска порта сервиса
Конфигурирование файла services
Проверка соединения с помощью ping
Если ping выдает ошибку
Проблемы с событиями
Другие сетевые проблемы
ГЛАВА 3. Конфигурирование Firebird.
Конфигурация на уровне базы данных
Переменные окружения
Где устанавливаются переменные окружения
POSIX
ISC_USER и ISC_PASSWORD
Переменная FIREBIRD (или INTERBASE)
FIREBIRD_TMP
*_LOCK и *_MSG
TMP
Файл конфигурации Firebird
Изменение параметров конфигурации
ГЛАВА 4. Основные операции.
Запуск Firebird на Linux/UNIX
Суперсервер
Классический сервер
Запуск сервера Firebird в Windows
Суперсервер
Выполнение Firebird как сервиса в Windows NT, 2000 и XP
Апплеты Firebird Manager
Выполнение Firebird как приложения на платформах Windows
Запуск сервера как приложения вручную
Останов сервера
Алиасы базы данных
aliases.conf
Переносимость
Управление доступом
Администрирование баз данных
fbmgr/ibmgr
instsvc.exe
gbak
gsec
gfix
gstat
Введение в isql
Запуск isql
Использование isql
Создание базы данных с использованием isql
ГЛАВА 5. Введение в архитектуру клиент-сервер.
Базы данных клиент-сервер в сравнении с файл-серверами
Характеристики СУБД клиент-сервер
Масштабируемость
Функциональная совместимость
Защита данных
Распределение функций
Двухуровневая модель
Многоуровневая модель
Стандартизация
Проектирование систем клиент-сервер
Абстракция хранимых данных
"Руки прочь" от доступа к данным
Множество пользователей и параллельность
ГЛАВА 6. Сервер Firebird.
Роль сервера
Платформы для операционных систем
Примеры топологий
Двухуровневая архитектура клиент-сервер
Однопользовательская модель
Серверы Firebird в среде DTP
Терминальные серверы
Базы данных
Программирование на стороне сервера
Хранимые процедуры
Триггеры
Функции, определенные пользователем
Приложения, работающие с несколькими базами данных
Безопасность сервера
Безопасность базы данных
ГЛАВА 7. Клиенты Firebird.
Что такое клиент Firebird?
Клиентская библиотека Firebird
Разработка приложений
Динамические приложения клиент-сервер
Ядро API Firebird
Встроенные приложения Firebird
Сервисы API
Инсталляция клиентов
Инсталляция клиента Linux/UNIX
Список имен и размещение клиентской библиотеки
ГЛАВА 8. О типах данных Firebird.
Где задаются типы данных
Поддерживаемые типы данных
Булевы типы данных
"Диалекты" SQL
Идентификаторы с разделителями в SQL-92
Контекстные переменные
Временные значения
Примеры использования
Столбцы
Домены
Явное преобразование типов: CAST()
Изменение определения столбцов и доменов
Изменение типа данных столбца
Изменение типа данных домена
Ключевые слова, используемые для спецификации типа данных
Специальная тема миграции: диалекты SQL
ODS и диалект
Где учитывается диалект
ГЛАВА 9. Числовые типы данных.
Операции с числовыми типами
Целые типы
SMALLINT
INTEGER
BIGINT, NUMERIC(18,0)
Автоинкремент или тип IDENTITY
Генераторы
Масштабируемые типы с фиксированной точкой
Тип данных NUMERIC
Тип данных DECIMAL
Конвертированные базы данных
Специальные ограничения в статическом SQL
Поведение типов с фиксированной точкой в операциях
Числовой ввод и показатели степени
Типы данных с плавающей точкой
FLOAT
DOUBLE PRECISION
ГЛАВА 10. Типы даты и времени.
DATE
TIMESTAMP
Доли секунды
TIME
Интервал времени
Литералы даты
"Скользящее окно века" в Firebird
Пробелы в литералах даты
Заключение в апострофы литералов даты
Литералы месяца
Операции, использующие значения даты и времени
Общие правила для операций
Выражения в качестве операндов
Использование CAST() с типами дата/время
Преобразование между типами дата/время
Преобразования между типами дата/время и другими типами данных
Использование преобразований
Функция EXTRACT()
Синтаксис
Понимание функции EXTRACT()
ГЛАВА 11. Символьные типы данных.
Ограничения символьных типов
Символьные данные фиксированной длины
CHAR(n), алиас для CHARACTER(n)
NCHAR(n), алиас для NATIONAL CHARACTER(n)
Символьные данные переменной длины
Наборы символов и последовательность сортировки
Набор символов клиента
Переопределение набора символов
Специальные наборы символов
ГЛАВА 12. BLOB и массивы.
Сегменты BLOB
Когда использовать типы BLOB
Типы массивов
Типы ARRAY и SQL
Когда использовать тип массива
Подходящие типы элементов
Определение массивов
Многомерные массивы
Хранение столбцов массивов
Доступ к данным массива
ГЛАВА 13. Домены.
Создание домена
Идентификатор домена
Тип данных домена
Атрибут DEFAULT
Атрибут NOT NULL
Атрибут CHARSET/CHARACTER SET
Атрибут COLLATE
Использование доменов в определении столбца
Пример
Когда домены не работают
Изменение определения домена
Примеры
Ограничения на изменение типов данных
Удаление домена
ГЛАВА 14. Чертежная доска для базы данных.
Пользователь SYSDBA и пароль
Метаданные
Язык определения данных
Системные таблицы
Проектирование базы данных
Описание и анализ
Модель данных <> база данных
Одна база данных или много?
Соглашения по именованию объектов базы данных и ограничения
Скрипты схемы
Скрипты Firebird
Зачем использовать скрипты?
Что находится в скриптах DDL?
ГЛАВА 15. Создание и ведение базы данных.
Физическое хранение базы данных
Размещение
Безопасность доступа
ISC_USER и ISC_PASSWORD
Получение информации о базе данных
Кэш базы данных
Ограничения и значения по умолчанию
Вычисление размера кэша
Установка размера кэша на уровне базы данных
Изменение значений по умолчанию для сервера
Проверка размера кэша
Преобразование базы данных в режим только для чтения
Теневые копии базы данных
Преимущества и ограничения теневого копирования
Реализация теневого копирования
Увеличение размера теневой копии
Удаление теневой копии
"Гигиена" базы данных
Фоновая сборка мусора
Сборка мусора в процессе резервного копирования
Проверка и ремонт
Удаление базы данных
Синтаксис
ГЛАВА 16. Таблицы.
О таблицах Firebird
Структурные описания
Создание таблиц
Владение таблицами и привилегии
Ограничения
Ограничения целостности
Ссылочное ограничение
Именованные ограничения
Ограничения целостности
Ограничение NOT NULL
Ограничение PRIMARY KEY
Ограничения CHECK
Ограничения UNIQUE
Конвертирование внешних таблиц во внутренние
Изменение таблиц
Подготовка к выполнению ALTER TABLE
Изменение столбцов в таблице
Удаление столбцов
Удаление ограничений
Добавление столбца
Когда недостаточно ALTER TABLE
Удаление таблицы
DROP TABLE
RECREATE TABLE
Временные таблицы
Постоянные "временные" таблицы
ГЛАВА 17. Ссылочная целостность данных.
Терминология
Действия триггеров по изменению правил целостности
Взаимодействие ограничений
Триггеры действий пользователя
Привилегии на ссылки
Обработка других видов отношений
Отношение один-к-одному
Отношение многие-ко-многим
Ссылающиеся на себя отношения
Обязательные отношения
Ошибка "объект находится в использовании"
ГЛАВА 18. Индексы.
Ограничения
Автоматические индексы в сравнении с определенными пользователем индексами
Импорт существующих индексов
Направленные индексы
Планы запросов
Как могут помочь индексы
Сортировка и группирование
Соединения
Сравнения
Что индексировать
Когда индексировать
Необязательные элементы
Индексы для нескольких столбцов
Предикаты OR в запросах
Просмотр индексов
Изменение индекса
Активация/деактивация
Изменение структуры индекса
Удаление индекса
Ограничения
Тема оптимизации: оптимальное индексирование
Действия по обслуживанию индексов
Улучшение селективности индекса
Получение статистики по индексу
Интерфейс gstat
Другие переключатели gstat
ГЛАВА 19. Язык SQL в Firebird.
Firebird и стандарты
Операторы SQL
Язык определения данных (DDL)
Язык манипулирования данными (DML)
Возможности встраиваемого языка (ESQL)
Динамический в сравнении со статическим SQL
Интерактивный SQL (ISQL)
Процедурный язык (PSQL)
Диалекты SQL
Свободная поддержка SQL
ГЛАВА 20. Запросы DML.
Наборы данных
Таблица является набором
Кардинальное число и положение
Выходные наборы в качестве входных наборов
Наборы курсора
Привилегии
Оператор SELECT
Оператор UPDATE
Позиционированные операции в сравнении с поисковыми
Оператор DELETE
Оператор EXECUTE
Процедуры выбора
Операции DML и события изменения состояния
Предложения действия ссылочной целостности
Пользовательские триггеры
Где проверяется истинность
Утверждения
Решение, что является истинным
Операторы SQL
Приоритет операторов
Арифметические операции
Логические операторы
Предикат IS [NOT] NULL
Обсуждение NULL
NULL в выражениях
NULL в вычислениях
Понимание истинности и ложности
NULL и внешние функции (UDF)
Установка значения в NULL
Определение столбцов COMPUTED BY
Условия поиска
Выражения в PSQL
Вызовы функций
ГЛАВА 22. Запросы к множеству таблиц.
Виды многотабличных запросов
Соединения
Подзапросы
Запросы UNION
Соединения
Внутреннее соединение
Синтаксис неявного INNER JOIN в SQL-89
Внешние соединения
LEFT OUTER JOIN
RIGHT OUTER JOIN
FULL OUTER JOIN
Перекрестные соединения
Естественные соединения
Двусмысленность в запросах JOIN
Допустимые имена алиасов таблиц
Внутренний курсор
Реентерабельные соединения
Курсоры для реентерабельных соединений
Подзапросы
Поиск с использованием подзапроса
Реентерабельные подзапросы
Добавление данных с использованием подзапроса с соединениями
Оператор UNION
Наборы, совместимые для объединения
Условия поиска и упорядочивания
UNION ALL
Темы оптимизации: планы запросов и оптимизатор
ГЛАВА 23. Упорядоченные и агрегатные наборы.
Обсуждение сортировки
Задание порядка в предложениях сортировки
Временное пространство сортировки
Индексирование
Направление сортировки
Размещение пустых значений
Предложение GROUP BY
Список группируемых полей
Подвыражение COLLATE
Использование ORDER BY в группирующем запросе
ГЛАВА 24. Просмотры.
Что такое просмотр?
Ключи и индексы
Упорядочение и группирование строк
Некоторые простые спецификации просмотров
Почему просмотры могут быть полезными
Привилегии
Просмотры только для чтения и изменяемые
Просмотры только для чтения
Изменение поведения изменяемых просмотров
Изменить определение просмотра?
Удаление просмотра
Использование просмотров в SQL
Использование планов запросов для просмотров
Внешние виртуальные таблицы
ГЛАВА 25. Обзор транзакций Firebird.
Свойства ACID
Атомарность
Согласованность
Изолированность
Устойчивость
Контекст транзакции
Одна транзакция, много запросов
Транзакции и MGA
Пересылка в сравнении с COMMIT
Откат
Блокировка строки
Блокировка на уровне таблицы
Добавление
OIT и OAT должны постоянно изменяться
Условия для изменения OIT и OAT
Чистка в сравнении со сборкой мусора
Статистика транзакций
gstat
isql
Что может рассказать вам статистика
ГЛАВА 26. Конфигурирование транзакций.
Параллельность
Факторы, влияющие на параллельность
Уровень изоляции
Способ доступа
Способ разрешения блокировок ("Режим блокировок")
Резервирование таблиц
Версии записей
Зависимые строки
Блокировки и конфликты блокировок
Время действия
Конфликты блокировки
Что такое взаимная блокировка?
ГЛАВА 27. Программирование с транзакциями.
Язык для транзакций
ESQL
API
API
Доступ к идентификатору транзакции
Использование TID в приложениях
Процесс выполнения транзакции
Вложенные транзакции
Пользовательские точки сохранения
Логический контекст
Завершение транзакций
Транзакции для нескольких баз данных
Зависшие транзакции
Ограниченные базы данных
Пессимистическая блокировка
Блокировка на уровне таблицы
Хранимые процедуры, триггеры и транзакции
Хранимые процедуры
Триггеры
"Точки сохранения" в PSQL
Советы по оптимизации поведения транзакции
Выбор подходящей модели транзакции
Не переходите к "общему" пока вам это не понадобилось
Использование возможностей множества транзакций
Сохраняйте передвижение OAT!
ГЛАВА 28. Введение в программирование в Firebird.
Обзор модулей сервера
Хранимые процедуры
Преимущества использования хранимых процедур
Триггеры
Преимущества использования триггеров
Триггеры в качестве автоинкрементного механизма
Триггеры и транзакции
Расширения языка PSQL
Ограничения PSQL
Типы операторов, не поддерживаемых в PSQL
Исключения
События
Безопасность
Внутреннее устройство технологии
Эффекты изменений
ГЛАВА 29. Разработка модулей PSQL.
Элементы процедур и триггеров
Оператор CREATE
Элементы заголовка
Элементы тела
Элементы языка
Программные конструкции
Блоки BEGIN ... END
POST_EVENT
Разработка модулей
Добавление комментариев
Чувствительность к регистру и пробелы
Управление вашим кодом
Компиляция хранимых процедур и триггеров
ГЛАВА 30. Хранимые процедуры.
Выполняемые хранимые процедуры
Хранимые процедуры выбора
Создание хранимых процедур
Элементы заголовка
Элементы тела
Выполняемые процедуры
Сложная обработка
Поддержка "живых" клиентских наборов
Операции в выполняемых процедурах
Конструкция SELECT ... INTO
Курсоры в PSQL
Техника
Конструкция FOR SELECT ... DO
Вызов процедуры выбора
Просмотр массива в хранимой процедуре
Тестирование процедур
Процедуры для совместного использования
Изменение хранимых процедур
Влияние на приложения
Удаление хранимых процедур
Ограничения
RDB$DB_KEY в многотабличных наборах
ГЛАВА 31. Триггеры.
Фаза, событие и последовательность
Состояние
Создание триггеров
Синтаксис
Элементы заголовка
Тело триггера
Особенности PSQL для триггеров
Переменные события
Изменение строк в той же таблице
Изменение триггеров
Синтаксис для изменения триггеров
Удаление триггеров
ГЛАВА 32. Обработка ошибок и события.
Типы исключений
Что такое исключение?
Обработка исключений
Оператор WHEN
Вложенные исключения в качестве точек сохранения
Протокол ошибок
События
Использование сообщений о событиях
Элементы механизма
Синхронное прослушивание
Асинхронная сигнализация
Асинхронное прослушивание
ГЛАВА 33. Безопасность в операционной среде.
Физическая безопасность
Использование защищенных файловых систем
Защита оперативных копий
Защита, основанная на возможностях платформы
Ограничение подключения к операционной системе
POSIX
Платформы Microsoft Windows
Выполнение произвольного кода
Встроенный сервер под Windows
Безопасность сетевого соединения
Web и другие многозвенные серверные приложения
Использование выделенных серверов
Использование средств межсетевой защиты
Отражение атак
ГЛАВА 34. Защита сервера.
Ввод учетных данных пользователя
Шифрование пароля
Учет пользователей в SQL
Пользователь SYSDBA
Слабое место POSIX
Утилита gsec
Запуск интерактивной сессии gsec
Использование gsec из командной строки
Сообщения об ошибках gsec
Специальная тема: настройка безопасности пользователя
База данных безопасности
Как остановить злоумышленников
ГЛАВА 35. Безопасность на уровне базы данных.
Безопасность и доступ по умолчанию
А теперь плохие новости
Привилегии
Упаковка привилегий
Объекты
Ограничения привилегий
Пользователи
Специальные пользователи
Пользователь PUBLIC
Предоставление привилегий
Права UPDATE к столбцам
Права REFERENCES к столбцам
Привилегии к объектам
Множество привилегий и множество получателей привилегий
Привилегии через роли
Создание роли
Назначение привилегий роли
Предоставление роли пользователям
Подключение к базе данных с использованием роли
Удаление роли
Предоставление прав на предоставление привилегий
Неожиданные эффекты
Отмена полномочий
Использование REVOKE
Отмена привилегий у нескольких пользователей
Отмена права предоставлять привилегии
ГЛАВА 36. Конфигурация и специальные возможности.
Сравнение архитектуры Суперсервера и Классического сервера
Выполняемые программы и процессы
Управление блокировками
Использование ресурсов
Локальный доступ
Файл конфигурации Firebird
Параметры
Параметры для конфигурирования временного пространства для сортировки
Параметры, связанные с ресурсами
Параметры, связанные с коммуникацией
Работа со встроенным сервером
Запуск встроенного сервера
Приложения
Размещение и переименование библиотеки
Жестко закодированные пути к базе данных
Утилиты удаленных сервисов
Вопросы безопасности сервера
Совместимость нескольких серверов
Останов встроенного сервера
Модули внешних кодов
Разработка ваших собственных UDF
Фильтры BLOB
Написание фильтров BLOB
Инструменты для написания фильтров
Модули интернациональных языков
Конфигурирование внешних размещений
Установки в файле конфигурации
UDFAccess
ГЛАВА 37. Интерактивный SQL (утилита isql).
Интерактивный режим
Текстовый редактор по умолчанию
Запуск isql
Символ терминатора
Продолжение строки подсказки
Транзакции в isql
Поиск в буфере строк
Использование предупреждений
Обработка исключений
Установка в isql диалекта
Интерактивные команды
Создание и изменение объектов базы данных
Команды SHOW
Выход из интерактивной сессии isql
Командный режим
Выполнение isql в командном режиме
Переключатели командной строки
Извлечение метаданных
Использование isql -extract
Использование isql -a
ГЛАВА 38. Резервное копирование и восстановление баз данных (gbak).
Файлы gbak
Другие таланты gbak
Обновление структуры на диске (ODS)
Права на выполнение копирования и восстановления базы данных
Изменение владельца базы данных
Имя пользователя и пароль
Выполнение копирования
Аргументы для gbak -b[ackup]
Переключатели копирования
Переносимые копии
Копирование в один файл
Копирование многофайловой базы данных во множество файлов
Копирование только метаданных
Выполнение удаленного копирования
Решение вопросов безопасности
Возвращаемые коды и ответная реакция
Выполнение восстановления
Аргументы gbak для восстановления
Переключатели восстановления
Восстанавливать или создавать?
Объекты, определенные пользователем
Восстановление в один файл
Многофайловое восстановление
Возвращаемые коды и ответная реакция
Размер страницы и размер кэша по умолчанию
Использование gbak с Менеджером сервисов Firebird
Восстановление в POSIX
Копирование
Восстановление
Сообщение об ошибках gbak
ГЛАВА 39. Утилита gfix.
Использование gfix
Получение доступа к базе данных из gfix
Чистка базы данных
Сборка мусора
Интервал чистки
Выполнение ручной чистки
Закрытие базы данных
Закрытие базы данных перед остановом сервера
Команда gfix -shut
Изменение установок базы данных
Установка размера кэша по умолчанию
Изменение режима доступа
Изменение диалекта базы данных
Включение и отключение "использовать все пространство"
Включение и отключение синхронного вывода
Запрос версии сервера Firebird
Проверка и починка данных
Когда проверять базу данных
Выполнение проверки базы данных
Восстановление разрушенной базы данных
Восстановление транзакций
Двухфазное подтверждение
Восстановление транзакции
Теневые копии
Активизация теневой копии
Удаление недоступных теневых копий
Список переключателей gfix
Сообщения об ошибках gfix
ГЛАВА 40. Менеджер блокировок.
Менеджер блокировок Firebird
Состояния блока
Таблица блокировок
Утилита Lock Print
Статичные отчеты
Интерактивные отчеты
Вывод отчета в файл
Простое использование Lock Print
Интерактивная выборка
Установка конфигурации блокировки
Файлы конфигурации
Функции BLOB[159]
Тригонометрические функции
Прослушивает ли сервер порт Firebird?
Вы получили ошибку, хотя сервис выполняется?
Находится ли база данных на физически локальном диске?
Правильные ли имя пользователя и пароль?
Имеет ли владелец серверного процесса достаточно полномочий для открытия файлов?
Может ли клиент найти хост?
Нужно ли вам отключить автоматический набор номера для Интернета в Windows?
Изменить порядок сетевых адаптеров
Изменение конфигурации Internet Explorer
Запретить автодозвон через реестр
Запретить автодозвон RAS
Все еще есть проблемы?
Firebird .NET Provider
IBPP для разработки C++
Delphi, Kylix и Borland C++ Builder
IB Objects
FIBPlus
Другие
PHP
Python
Perl
Приложение 4. Как выполнять ремонт базы данных
Восемь шагов восстановления
Получение исключительного доступа
Создание копии работающего файла
Выполнение проверки
Исправление разрушенных страниц
Проверка после исправления -mend
Очистка и восстановление базы данных
Восстановление очищенной резервной копии в качестве новой базы данных
Проверка восстановленной базы данных
Как поступать, если проблемы остались
Приложение 5. Инструменты администрирования
Графические инструменты администратора
Database Workbench
IBExpert
BlazeTop
IB Access
IBAdmin
IB_SQL
IBOConsole
Инструменты резервного копирования
DBak
gbak BackupRunner
Time То Backup
Разное
Инструменты починки базы данных IBSurgeon
Анализатор статистики IBAnalyst
Interbase DataPump
Advanced Data Generator для Firebird
Менеджеры полномочий
Где посмотреть информацию о других инструментах
Приложение 6. Пример базы данных
Создание базы данных Employee с помощью скриптов
Приложение 7. Ограничения Firebird
Приложение 8. Наборы символов и порядков сортировки
Приложение 9. Системные таблицы и просмотры
Системные просмотры
Приложение 10. Коды ошибок
Приложение 11. Зарезервированные слова
Список Web-сайтов
Сайты проекта Firebird
Web-сайты ресурсов
Форумы Firebird
Как стать разработчиком Firebird