
- •Факультет Кибернетики
- •Москва 2011 оглавление
- •1. Характеристика субд HyTech Типовые функции современной субд
- •Организация данных в таблицах HyTech
- •Структура файлов, реализующих таблицы субд HyTech
- •Организация индексов в субд HyTech
- •Журнальные файлы в субд HyTech
- •Словарь данных
- •1.2 Управление данными в оперативной памяти Управление данными в оп
- •Управление буферизацией данных при выполнении запросов на чтение
- •Управление буферизацией данных при выполнении запросов на запись
- •Управление транзакциями
- •Атомарность транзакции в субд HyTech
- •Непротиворечивость информации в субд HyTech
- •Изолированность транзакций
- •Обеспечение отказоустойчивости субд
- •Механизмы защиты от мягких сбоев
- •Механизмы защиты от жестких сбоев
- •1.5 Поддержка sql и процедурных языков для работы с данными Стандарт sql-89
- •Типы данных в sql HyTech
- •Индексы в субд HyTech
- •Операторы dml (select, insert, update, delete) в субд HyTech
- •Ограничения целостности в субд HyTech
- •Оптимизация запросов в субд HyTech
- •Прочие операторы и свойства
- •Свойства процедурного расширения субд HyTech
- •1.6 Реализация средств сетевого взаимодействия и поддержки распределенных архитектур Средства сетевого взаимодействия и поддержки распределенных архитектур
- •Поддержка сетевых протоколов
- •Работа с другими источниками данных
- •Распределенные вычисления
- •1.7 Разграничение доступа к данным Средства разграничения доступа к данным
- •Базовое управление доступом
- •Аутентификация
- •Управление доступом к данным
- •Временные таблицы
- •Индексы
- •Курсоры
- •Отслеживание изменений данных
- •Механизм снимков
- •Отключение механизма снимков
- •Механизм транзакций
- •Транзакции в HyTech
- •Профиль, роль
- •Генератор
- •Кодификатор
- •Хранимая процедура
- •Триггер
- •Внешний источник данных
- •Встроенные представления
- •Встроенные переменные
- •2.2 Архитектура субд HyTech Структура sql - сервера
- •Особенности организации таблиц в субд HyTech
- •Недостатки организации таблиц в субд HyTech
- •Поиск в таблицах субд HyTech
- •Идентификация записей в таблицах
- •Использование инвертированных списков в субд HyTech
- •Организация хранения данных на диске
- •Структура ядра субд
- •Монитор таблиц
- •Монитор транзакций
- •Решение задачи перевода денег
- •Система поддержки транзакций в субд HyTech
- •Монитор замков
- •Реализация системы захватов
- •Оптимизация запросов
- •3. Sql диалект субд HyTech
- •3.1 Тестовая схема бд Описание тестовой схемы бд
- •Создание тестовой схемы
- •Листинги тестовой схемы
- •3.2 Основные sql операторы манипулирования данными
- •3.2.1 Оператор отбора информации из таблицы select Оператор select
- •Особенности работы с оператором select
- •Примеры работы с оператором select
- •Объединение выборок
- •Конструкция for update
- •Внешнее соединение
- •Работа с кодификаторами
- •3.2.2 Оператор вывода результатов на экран browse resullts Оператор вывода результатов на экран
- •3.2.3 Оператор копирования записей между таблицами insert select Оператор insert select
- •Примеры работы с оператором
- •3.2.4 Оператор добавления записи в таблицу insert values Оператор insert values
- •Пример работы с оператором insert values
- •3.2.5 Оператор модификации записей в таблице update Оператор update
- •Пример работы с оператором update
- •3.2.6 Оператор удаления строк из таблицы delete Оператор delete
- •3.2.7 Оператор выполнения запроса, заданного строкой execute immediate Оператор execute immediate
- •3.2.8 Оператор выгрузки результатов в таблицу results table Оператор results table
- •3.3 Операторы управления транзакциями и снимками
- •3.3.1 Операторы работы со снимками Операторы работы со снимками
- •3.3.2 Операторы работы с транзакциями Механизм транзакций и механизм снимков
- •Оператор начала транзакции begin work
- •Операторы завершения транзакции
- •Примеры работы с операторами завершения транзакции
- •Работа с транзакциями в многопользовательском режиме
- •3.3.3 Блокировки Оператор блокирования таблицы lock
- •Оператор освобождения строк unlock
- •Примеры работы с блокировками
- •3.4 Операторы работы с таблицами и индексами
- •3.4.1 Оператор создания таблицы create table Оператор create table
- •Атрибуты и ограничения столбцов
- •Временные таблицы
- •Другие функции для создания таблиц - функция dsexec
- •Другие функции для создания таблиц - функция copytable
- •Другие функции для создания таблиц - функция htCreateTable
- •Другие функции для создания таблиц - функция imptitle
- •3.4.2 Оператор удаления таблицы drop table Оператор drop table
- •3.4.5 Оператор переноса переменной части таблицы в постоянную pack table Оператор pack table
- •3.4.6 Оператор удаления переменной части таблицы drop diff Оператор drop diff
- •Использование группы атрибутов в качестве индекса
- •Добавление подстроки в качестве индекса таблицы
- •3.4.9 Оператор удаления индекса drop index Оператор drop index
- •Удаление группы или подстроки
- •3.5 Операторы для работы с внешними источниками данных Создание внешнего источника данных
- •Выполнение запросов к внешнему источнику данных
- •Пакетное выполнение запросов к внешнему источнику данных
- •Удаление внешнего источника данных
- •3.6 Операторы для работы с генераторами Операторы create generator, set generator
- •Операторы gen_id, drop generator
- •Использование генератора
- •4. Процедурные расширения sql диалекта субд HyTech
- •4.1 Лексические элементы языка Лексические элементы - зарезервированные слова
- •Зарезервированные слова
- •Лексические элементы - константы Константы
- •Константы целого типа
- •Константы вещественного типа
- •Строковые константы
- •4.2 Переменные Переменные процедурного языка HyTech
- •4.3 Типы данных Типы данных для хранения целочисленных и действительных значений Типы данных float, double, currency
- •Типы данных byte, int, word, number, long, dword
- •Типы данных процедурного языка HyTech.
- •Типы данных для хранения символьных значений, дат и массивов Тип данных date
- •Тип данных char
- •Тип данных array
- •4.4 Линейные операторы Выражения - арифметические операции Выражения
- •Арифметические операции
- •Выражения - операции отношения и присваивания Операции отношения
- •Операция присваивания
- •Выражения - логические операции
- •Составной оператор, пустой оператор Составной оператор
- •Пустой оператор
- •Оператор вывода, оператор завершения работы программы Оператор вывода
- •Оператор завершения работы программы
- •Операторы ветвления Оператор ветвления
- •Оператор цикла с предусловием в формате while
- •Оператор цикла с предусловием в формате for
- •Оператор цикла с постусловием
- •Переход к выполнению очередной итерации цикла
- •4.5 Хранимые процедуры и функции Хранимые процедуры
- •Функции
- •4.6 Триггеры Создание триггера
- •Удаление триггера
- •4.7 Совместное использование sql запросов и процедурных расширений Совместное использование sql-запросов и процедурных расширений
- •Передача переменных в качестве параметра в sql-запрос
- •Сохранение результата запроса в переменной
- •Использование результата запроса Использование результата, сохраненного в переменной, в других запросах
- •Чтение результата запроса
- •Работа с триггерами Использование в триггерах переменных old и new
- •Проверка ошибок триггера
- •4.8 Встроенные sql функции Функции преобразования
- •Функции преобразования
- •Строковые функции
- •Операции с таблицами, выполнение запросов
- •Функции работы с датами и временем
- •Импорт-экспорт
- •Функции для получения информации о таблицах
- •Числовые функции
- •Функции обработки ошибок
- •Интерфейсные и битовые функции Интерфейсные функции
- •Битовые функции
- •Функции отладки Функции отладки
- •Разные функции
- •Функции работы с кодификаторами
- •4.9 Практические приемы и оптимизация sql запросов Навигационное соединение таблиц
- •Использование кодификаторов вместо соединений
- •Уточнение результатов соединения
- •Использование конструкции in вместо соединения
- •Использование группы для связки таблиц по нескольким ключам
- •Получение декартового произведения
- •Использование временных таблиц для промежуточных вычислений
- •Оптимизация группировки и сортировки
- •Различные приемы оптимизации Перенос условий из having в where
- •Уменьшение размера поля, используемого для поиска по маске
- •Перенос изменений в постоянную часть
- •Использование пакетных sql-операций вместо одиночных
- •4.11 Диагностика результатов выполнения sql запросов Работа с функциями обработки ошибок - функции lasthterr, lastsqlerr
- •Функция lasthterr – Получить код последней ошибки HyTech
- •Функция lastsqlerr – Получить код последней ошибки Sql
- •Работа с функциями обработки ошибок - функции sqlermsg, htiomsg Функция sqlermsg – Получить текст сообщения об ошибке sql
- •Функция htiomsg — Получить сообщение об ошибке ввода/вывода
- •Работа с функциями обработки ошибок - функции htabort, htSetError Функция htabort – Завершает (или нет) выполнение sql-скрипта при ошибке в HyTech
- •Функция htSetError – Установить пользовательский код ошибки
- •Коды ошибок sql
- •5. Администрирование субд HyTech Типовые задачи администрирования
- •Инсталляция субд HyTech в Linux
- •Настройка параметров работы сервера
- •Файл инициализации - раздел «Параметры»
- •Файл инициализации - раздел «sql процесс»
- •Файл инициализации - другие разделы файла инициализации
- •Пример файлов инициализации
- •Типовые рекомендации по настройке параметров сервера в файле инициализации
- •5.2 Запуск/останов работы сервера Управление сервером
- •Запуск/останов HyTech sql сервера
- •Настройка стартового файла
- •Мониторинг действий сервера с использованием лог-файла
- •Конфигурирование сервера по результатам мониторинга
- •5.2.1 Запуск/останов работы сервера в режиме сервиса Регистрация и задание параметров сервиса
- •Настройка параметров сервиса в конфигурационном файле
- •Запуск, останов, удаление регистрации сервиса
- •5.2.2 Запуск/останов работы сервера в режиме консольного приложения Администрирование запуска/останова работы сервера в режиме консольного приложения
- •Запуск/останов/пауза сервера
- •Запуск/останов сервера по расписанию
- •Мониторинг действий сервера - мониторинг из окна приложения сервера
- •Мониторинг и управление процессами
- •5.3 Резервное копирование (архивирование) и восстановление бд Резервное копирование и восстановление бд
- •Архивирование базы данных в автономном режиме
- •Архивирование базы данных в оперативном режиме
- •Архивирование таблиц пользователей
- •Архивирование системных таблиц
- •Архивирование файла инициализации
- •Планирование стратегии архивирования базы данных
- •Восстановление базы данных, архивированной в автономном режиме
- •Восстановление базы данных, архивированной в оперативном режиме
- •Восстановление базы данных, архивированной в оперативном режиме - восстановление таблиц
- •Восстановление базы данных, архивированной в оперативном режиме - восстановление системных таблиц
- •5.4 Проверка и исправление таблиц данных и системных таблиц Проверка и исправление таблиц
- •Проверка таблиц
- •Исправление поврежденного журнала
- •Исправление повреждения постоянной части или ассоциатора
- •Проверка целостности системных таблиц и восстановление системных таблиц сервера
- •Примеры пакетной проверки таблиц
- •Конфигурационный файл с именем htctlg.Ini
- •5.5 Конфигурирование субд для использования прокси - сервера Назначение прокси - сервера
- •Установка, запуск и останов прокси-сервера
- •Конфигурирование прокси-сервера
- •5.6 Индексирование и упаковка таблиц, снятие провисшего захвата Индексирование таблицы
- •Упаковка таблицы (перенос журнала в постоянную часть)
- •Снятие провисшего захвата с записи таблицы
- •5.7 Управление безопасностью Управление безопасностью
- •Создание пользователя
- •Изменение/удаление пользователя
- •Аутентификация пользователя при входе в систему
- •Создание профиля безопасности
- •Изменение/удаление профиля безопасности
- •Создание/удаление роли
- •Назначение права пользователю или роли
- •Отмена права пользователю или роли
- •Назначение/отзыв роли пользователю или другой роли
- •Установка/изменение пароля на чтение/запись данных в таблицу
- •Шифрование данных в таблицах
- •Аудит действий пользователя
- •6. Php как инструментальное средство создания web приложений Архитектура web-приложений с использованием php - клиент, http сервер
- •Архитектура web-приложений с использованием php - интерпретатор php, cубд HyTech
- •Установка и настройка сервера Apache и модуля php
- •Установка для Windows
- •Установка для gnu/Linux
- •Типы данных и выражения
- •Тип данных integer (целое число)
- •Тип данных float (число с плавающей точкой)
- •Тип данных boolean (логический)
- •Тип данных строка
- •Создание массива
- •Доступ к элементам массива
- •Операции работы с массивом
- •6.1.2 Управляющие конструкции Условный оператор
- •Оператор «переключатель»
- •Примеры работы с циклами
- •Операторы передачи управления - break
- •Операторы передачи управления - continue
- •Операторы включения - include
- •Операторы включения - require
- •6.2 Пользовательские функции в php, функции работы с массивами и строками
- •6.2.1 Пользовательские функции в php, функции работы с массивами и строками Пользовательские функции
- •Параметры пользовательских функций
- •Параметры пользовательских функций - переменное число параметров
- •Возвращаемое значение
- •Локальные и глобальные переменные
- •Статические переменные
- •6.2.2 Встроенные функции для работы с массивами
- •Функции поиска
- •Примеры функций поиска
- •Функции сортировки
- •Примеры сортировок
- •Итераторы
- •Функции выборки и преобразования массивов
- •Примеры работы с функциями выборки и преобразования массивов
- •6.2.3 Строковые функции и регулярные выражения Строковые функции
- •Примеры использования строковых функций
- •Функции разбора регулярных выражений
- •Примеры использования функций разбора регулярных выражений
- •Шаблоны
- •Шаблоны, продолжение
- •Подшаблоны
- •Модификаторы
- •6.3 Технология использования php при создании Интернет - приложений
- •6.3.1 Технология обработки http-запросов с помощью php Методы доступа
- •Параметры и переменные
- •Html - формы
- •Html - формы, продолжение
- •Более сложная html- форма
- •6.3.2 Сессии Взаимодействие между клиентом и сервером
- •Идентификатор сессии, использование механизма сессии
- •Пример работы с сессиями
- •6.4 Классы и объекты в php
- •6.4.1 Общие сведения о классах и объектах Классы
- •Примеры создания класса
- •Особенности передачи объектов в классы
- •6.4.2 Наследование Пример наследования
- •Уровни доступа
- •Пример с различными уровнями доступа
- •Абстрактные классы и интерфейсы
- •6.4.3 Конструкторы и деструкторы Создание конструктора и деструктора
- •Конструктор в классах-потомках
- •6.4.4 Полиморфизм Перегрузка методов
- •Другие возможности полиморфизма
- •6.4.5 Исключения Исключения
- •Соединение с сервером HyTech, функция hytech_pconnect
- •Отключение от сервера HyTech
- •Функция для смены кодировки символов
- •7.1.2 Функции для выполнения sql-запросов Выполнение sql-запроса и открытие результата запроса
- •Выполнение sql-запроса без открытия результата
- •7.1.3 Функции для работы с результатами sql-запросов Закрытие ранее открытого результата
- •Получение количества полей в результате запроса
- •Пример использования функций
- •Получение значений полей в заданной строке результата
- •Получение строки результата в виде объекта
- •Получение значения поля в заданной строке результата
- •Пример использования функций
- •7.1.4 Функции для работы с типами date и array в HyTech Установка режима работы с датами и массивами
- •Установка формата строки для преобразования даты
- •Преобразование строки в дату (целое число)
- •Преобразование даты(числа) в строку
- •Пример работы с функциями преобразования
- •7.1.5 Функции для пакетного ввода данных Пакетное добавление строк в таблицу
- •Открытие таблицы
- •Добавление строки в буфер пакетного ввода
- •Сохранение в таблице строк из буфера пакетного ввода
- •Пример работы с пакетным вводом информации
- •7.1.6 Функции для диагностики ошибок Диагностика ошибок
- •7.2 Комплексный пример работы приложения с использованием php и субд HyTech Описание сценария взаимодействия с пользователем
- •Форма регистрации
- •Скрипт формы регистрации
- •Функции для работы с бд
- •Страница для выбора таблицы
- •Регистрация переменной "table"
- •Выбор строк из таблицы
- •Форма редактирования
- •Сохранение информации
- •Результат успешного добавления строки
5.3 Резервное копирование (архивирование) и восстановление бд Резервное копирование и восстановление бд
Основная цель резервного копирования (архивирования) – обеспечение возможности восстановления данных и управляющих структур СУБД HyTech в случае физического повреждения диска, аппаратных ошибок, сбоев системного программного обеспечения и т.п., приводящих к искажению или потере данных. Также резервное копирование может использоваться для последующего развертывания копии БД, например, для целей тестирования или разработки.
Одной из основных задач администрирования СУБД HyTech является разработка стратегии архивирования. Стратегия архивирования в общем случае не является универсальной и должна разрабатываться с учетом особенностей эксплуатации информационной системы (систем), в составе которой используется БД под управлением СУБД HyTech.
HyTech поддерживает два основных способа архивирования:
Архивирование базы данных в автономном режиме;
Архивирование базы данных в оперативном режиме.
Оба способа архивирования предусматривают архивирование файлов базы данных, системных файлов, файлов параметров инициализации.
Важно также архивировать другие, относящиеся к базе данных, файлы, даже если они и не являются частью БД. Например, при архивировании базы данных нужно предусмотреть дублирование следующих файлов:
Файлы приложений, такие как выполняемые модули, исходный код, файлы конфигурации, файлы данных, которые не хранятся в самой базе данных, справочники и т.д.
Файлы конфигураций программ, используемых совместно с сервером, таких, как HTAT.
Командные файлы, созданные администратором и другими пользователями и т.д.
В зависимости от применяемой стратегии архивирования используются разные способы восстановления. HyTech поддерживает следующие способы восстановления (симметричные способам архивирования):
Восстановление базы данных, архивированной в оперативном режиме;
Восстановление базы данных, архивированной в автономном режиме.
Помимо восстановления из резервной копии HyTech имеет в своем составе утилиты для восстановления поврежденного журнала таблицы, поврежденной постоянной части таблицы и адресной части ассоциатора. Использование этих утилит рассматривается в другой теме: «Проверка и исправление таблиц».
Архивирование базы данных в автономном режиме
Первым способом создания резервной копии базы данных является следующая последовательность действий:
Останов СУБД управляющей БД;
Архивирование БД.
Такой тип создания резервной копии называется архивированием базы данных в автономном режиме. Чтобы его выполнить, необходимо сделать следующие действия:
Остановить SQL сервер (если он в настоящий момент находится в работе). Убедиться, что база данных нормально завершила свою работу. Если пришлось прервать работу сервера, то лучше вновь запустить сервер, проверить таблицы, а затем остановить сервер. Проверка таблиц описана в теме «Проверка и исправление таблиц».
С помощью команд операционной системы создать резервные копии таблиц пользователей, системных таблиц, файла параметров инициализации. Для регулярного выполнения резервного копирования рекомендуется создать скрипт (пакетный файл) с требуемыми командами операционной системы.
После выполнения архивирования всех файлов можно запустить базу данных и продолжить работу.
После выполнения архивирования базы данных в автономном режиме создается полный комплект файлов, составляющих базу данных на момент архивирования, а точнее, на момент останова сервера. Иногда архивирование базы данных в автономном режиме называют получением согласованной копии базы данных.
Как правило, получение согласованной копии базы данных выполняется по расписанию. Для этих целей могут использоваться утилиты операционной системы или можно воспользоваться специальной утилитой HTAT, поставляемой в дистрибутиве HyTech SQL-сервера, которая специально предназначена для выполнения действий по администрированию по заданному расписанию. Утилита HTAT рассмотрена нами ранее в теме «Запуск/останов сервера», разделе «Запуск/останов сервера по расписанию».
Достоинства архивирования БД в автономном режиме:
Простота архивирования и восстановления: фактически, требуется только написание корректного скрипта с командами ОС;
Гибкость: копироваться могут только те файлы БД и управляющие файлы, которые требуются.
Недостатки:
На время работы требуется останов БД и пользователи не могут работать с системой даже, если в данный момент копируются те файлы, которые пользователям не нужны. При большом размере БД операция резервного копирования может потребовать значительных временных затрат.
Согласованная копия БД должна быть, в общем случае, скопирована целиком, и, соответственно, восстанавливаться также будет целиком, что может существенно увеличить время восстановления.