Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в СУБД HyTech.doc
Скачиваний:
11
Добавлен:
01.03.2025
Размер:
2.67 Mб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ РОССИЙСКОЙ ФЕДЕРАЦИИ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

МОСКОВСКИЙ ИНЖЕНЕРНО-ФИЗИЧЕСКИЙ ИНСТИТУТ

(государственный университет)



Факультет Кибернетики

Кафедра «Управляющие интеллектуальные системы»

Курс лекций «Введение в СУБД HyTech»

Москва 2011 оглавление

1. Характеристика СУБД HyTech 14

Типовые функции современной СУБД 14

1.1 Управление данными во внешней памяти 14

Управление данными во внешней памяти 14

Организация хранения информации на внешнем устройстве 14

Политика размещения данных на внешних носителях в СУБД HyTech 14

Организация данных в таблицах HyTech 14

Структура файлов, реализующих таблицы СУБД HyTech 15

Организация индексов в СУБД HyTech 15

Журнальные файлы в СУБД HyTech 15

Словарь данных 16

1.2 Управление данными в оперативной памяти 16

Управление данными в ОП 16

Управление буферизацией данных при выполнении запросов на чтение 16

Управление буферизацией данных при выполнении запросов на запись 16

Разделение памяти для общих структур данных 17

Управление пользовательскими структурами данных 17

1.3 Управление транзакциями, обеспечение многопользовательского доступа 17

Термины и определения 17

Управление транзакциями 17

Атомарность транзакции в СУБД HyTech 18

Непротиворечивость информации в СУБД HyTech 18

Изолированность транзакций 18

Долговечность 18

Механизмы разделения времени 19

1.4 Обеспечение отказоустойчивости 19

Термины и определения 19

Обеспечение отказоустойчивости СУБД 19

Механизмы защиты от мягких сбоев 19

Механизмы защиты от жестких сбоев 19

1.5 Поддержка SQL и процедурных языков для работы с данными 20

Стандарт SQL-89 20

Типы данных в SQL HyTech 20

Таблицы в СУБД HyTech 20

Индексы в СУБД HyTech 20

Операторы DML (select, insert, update, delete) в СУБД HyTech 21

Ограничения целостности в СУБД HyTech 21

Оптимизация запросов в СУБД HyTech 22

Прочие операторы и свойства 22

Свойства процедурного расширения СУБД HyTech 22

1.6 Реализация средств сетевого взаимодействия и поддержки распределенных архитектур 23

Средства сетевого взаимодействия и поддержки распределенных архитектур 23

Поддержка сетевых протоколов 24

Работа с другими источниками данных 24

Распределенные вычисления 24

1.7 Разграничение доступа к данным 24

Средства разграничения доступа к данным 24

Базовое управление доступом 24

Аутентификация 25

Управление доступом к данным 25

2. Основные понятия СУБД HyTech 26

Основные понятия СУБД HyTech 26

2.1 Основные понятия 26

Реляционная таблица 26

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

Индексы 27

Курсоры 27

Отслеживание изменений данных 27

Механизм снимков 27

Отключение механизма снимков 27

Механизм транзакций 27

Транзакции в HyTech 28

Профиль, роль 28

Генератор 29

Кодификатор 29

Хранимая процедура 29

Триггер 30

Внешний источник данных 30

Встроенные представления 30

Встроенные переменные 31

2.2 Архитектура СУБД HyTech 31

Структура SQL - сервера 31

Схема взаимодействия клиента и сервера 32

Особенности организации таблиц в СУБД HyTech 33

Недостатки организации таблиц в СУБД HyTech 34

Поиск в таблицах СУБД HyTech 34

Идентификация записей в таблицах 35

Использование инвертированных списков в СУБД HyTech 35

Организация хранения данных на диске 36

Структура ядра СУБД 37

Монитор таблиц 37

Монитор транзакций 38

Решение задачи перевода денег 38

Система поддержки транзакций в СУБД HyTech 39

Монитор замков 39

Реализация системы захватов 40

Оптимизация запросов 40

3. SQL диалект СУБД HyTech 41

3.1 Тестовая схема БД 41

Описание тестовой схемы БД 41

Создание тестовой схемы 43

Листинги тестовой схемы 44

3.2 Основные SQL операторы манипулирования данными 49

3.2.1 Оператор отбора информации из таблицы select 49

Оператор select 49

Особенности работы с оператором select 50

Примеры работы с оператором select 50

Объединение выборок 52

Конструкция for update 54

Внешнее соединение 54

Работа с кодификаторами 56

3.2.2 Оператор вывода результатов на экран browse resullts 57

Оператор вывода результатов на экран 57

3.2.3 Оператор копирования записей между таблицами insert select 58

Оператор insert select 58

Примеры работы с оператором 59

3.2.4 Оператор добавления записи в таблицу insert values 60

Оператор insert values 60

Пример работы с оператором insert values 61

3.2.5 Оператор модификации записей в таблице update 62

Оператор update 62

Пример работы с оператором update 62

3.2.6 Оператор удаления строк из таблицы delete 63

Оператор delete 63

3.2.7 Оператор выполнения запроса, заданного строкой execute immediate 64

Оператор execute immediate 64

3.2.8 Оператор выгрузки результатов в таблицу results table 65

Оператор results table 65

3.3 Операторы управления транзакциями и снимками 66

3.3.1 Операторы работы со снимками 66

Операторы работы со снимками 66

3.3.2 Операторы работы с транзакциями 67

Механизм транзакций и механизм снимков 67

Оператор начала транзакции begin work 68

Операторы завершения транзакции 69

Примеры работы с операторами завершения транзакции 70

Работа с транзакциями в многопользовательском режиме 71

3.3.3 Блокировки 71

Оператор блокирования таблицы lock 71

Оператор освобождения строк unlock 72

Примеры работы с блокировками 72

3.4 Операторы работы с таблицами и индексами 72

3.4.1 Оператор создания таблицы create table 73

Оператор create table 73

Атрибуты и ограничения столбцов 74

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

Другие функции для создания таблиц - функция dsexec 75

Другие функции для создания таблиц - функция copytable 76

Другие функции для создания таблиц - функция htCreateTable 77

Другие функции для создания таблиц - функция imptitle 77

3.4.2 Оператор удаления таблицы drop table 78

Оператор drop table 78

3.4.3 Оператор открытия таблицы open table 79

Оператор open table 79

3.4.4 Оператор закрытия таблицы close table 79

Оператор close table 79

3.4.5 Оператор переноса переменной части таблицы в постоянную pack table 80

Оператор pack table 80

3.4.6 Оператор удаления переменной части таблицы drop diff 81

Оператор drop diff 81

3.4.7 Оператор переименования таблицы rename table 82

Оператор rename table 82

3.4.8 Оператор создания индекса таблицы create index 82

Оператор create index 82

Использование группы атрибутов в качестве индекса 82

Добавление подстроки в качестве индекса таблицы 83

3.4.9 Оператор удаления индекса drop index 85

Оператор drop index 85

Удаление группы или подстроки 85

3.5 Операторы для работы с внешними источниками данных 86

Создание внешнего источника данных 86

Выполнение запросов к внешнему источнику данных 87

Пакетное выполнение запросов к внешнему источнику данных 87

Удаление внешнего источника данных 89

3.6 Операторы для работы с генераторами 89

Операторы create generator, set generator 89

Операторы gen_id, drop generator 90

Использование генератора 91

4. Процедурные расширения SQL диалекта СУБД HyTech 93

4.1 Лексические элементы языка 93

Лексические элементы - зарезервированные слова 93

Зарезервированные слова 93

Лексические элементы - константы 94

Константы 94

Константы целого типа 94

Константы вещественного типа 95

Строковые константы 95

Константы типа дата 95

Лексические элементы - операции, ограничители, комментарии 95

Ограничители 95

Операции 95

Комментарии 96

Лексические элементы - идентификаторы 96

Идентификаторы 96

4.2 Переменные 96

Переменные процедурного языка HyTech 96

4.3 Типы данных 97

Типы данных для хранения целочисленных и действительных значений 97

Типы данных float, double, currency 97

Типы данных byte, int, word, number, long, dword 98

Типы данных процедурного языка HyTech. 98

Типы данных для хранения символьных значений, дат и массивов 99

Тип данных date 99

Тип данных char 99

Тип данных array 99

4.4 Линейные операторы 100

Выражения - арифметические операции 100

Выражения 100

Арифметические операции 100

Выражения - операции отношения и присваивания 100

Операции отношения 100

Операция присваивания 101

Выражения - логические операции 101

Составной оператор, пустой оператор 102

Составной оператор 102

Пустой оператор 102

Оператор вывода, оператор завершения работы программы 103

Оператор вывода 103

Оператор завершения работы программы 103

Операторы ветвления 104

Оператор ветвления 104

Оператор цикла с предусловием в формате WHILE 105

Оператор цикла с предусловием в формате FOR 106

Оператор цикла с постусловием 107

Переход к выполнению очередной итерации цикла 108

4.5 Хранимые процедуры и функции 108

Хранимые процедуры 108

Функции 110

4.6 Триггеры 112

Создание триггера 112

Удаление триггера 113

4.7 Совместное использование SQL запросов и процедурных расширений 114

Совместное использование SQL-запросов и процедурных расширений 114

Передача переменных в качестве параметра в SQL-запрос 114

Сохранение результата запроса в переменной 114

Использование результата запроса 115

Использование результата, сохраненного в переменной, в других запросах 115

Чтение результата запроса 115

Работа с триггерами 116

Использование в триггерах переменных old и new 116

Проверка ошибок триггера 117

4.8 Встроенные SQL функции 118

Функции преобразования 118

Функции преобразования 118

Строковые функции 118

Операции с таблицами, выполнение запросов 119

Функции работы с датами и временем 120

Импорт-экспорт 120

Функции для получения информации о таблицах 120

Числовые функции 120

Функции обработки ошибок 121

Интерфейсные и битовые функции 121

Интерфейсные функции 121

Битовые функции 121

Функции отладки 121

Функции отладки 121

Разные функции 122

Функции работы с кодификаторами 122

4.9 Практические приемы и оптимизация SQL запросов 122

Навигационное соединение таблиц 122

Использование кодификаторов вместо соединений 123

Уточнение результатов соединения 124

Использование конструкции IN вместо соединения 125

Использование группы для связки таблиц по нескольким ключам 126

Получение декартового произведения 127

Использование ключевых полей в запросах 128

Использование суррогатного ключа вместо уникального ключа 128

Использование неуникального ключа вместо уникального  128

Использование ключевого поля вместо неключевого 128

Выделение длинных неключевых полей в отдельную таблицу 129

Расположение суррогатного ключа в начале строки  129

4.10 Оптимизация поисковых запросов 129

Поиск в результатах предыдущего поиска 129

Использование временных таблиц для промежуточных вычислений 130

Оптимизация группировки и сортировки 130

Различные приемы оптимизации 131

Перенос условий из having в where 131

Уменьшение размера поля, используемого для поиска по маске 131

Перенос изменений в постоянную часть 131

Использование пакетных SQL-операций вместо одиночных 132

4.11 Диагностика результатов выполнения SQL запросов 133

Работа с функциями обработки ошибок - функции lasthterr, lastsqlerr 133

Функция lasthterr – Получить код последней ошибки HyTech 133

Функция lastsqlerr – Получить код последней ошибки Sql 133

Работа с функциями обработки ошибок - функции sqlermsg, htiomsg 133

Функция sqlermsg – Получить текст сообщения об ошибке SQL 133

Функция htiomsg — Получить сообщение об ошибке ввода/вывода 134

Работа с функциями обработки ошибок - функции htabort, htSetError 134

Функция htabort – Завершает (или нет) выполнение SQL-скрипта при ошибке в HyTech 134

Функция htSetError – Установить пользовательский код ошибки 135

Коды ошибок SQL 135

5. Администрирование СУБД HyTech 137

Типовые задачи администрирования 137

5.1 Установка и настройка сервера HyTech 137

Установка сервера 137

Получение дистрибутива СУБД HyTech 137

Инсталляция СУБД HyTech в Windows 137

Инсталляция СУБД HyTech в Linux 138

Настройка параметров работы сервера 139

Файл инициализации - раздел «Параметры» 140

Файл инициализации - раздел «SQL процесс» 140

Файл инициализации - другие разделы файла инициализации 143

Пример файлов инициализации 143

Типовые рекомендации по настройке параметров сервера в файле инициализации 145

5.2 Запуск/останов работы сервера 146

Управление сервером 146

Запуск/останов HyTech SQL сервера 146

Настройка стартового файла 147

Мониторинг действий сервера с использованием лог-файла 148

Конфигурирование сервера по результатам мониторинга 150

5.2.1 Запуск/останов работы сервера в режиме сервиса 152

Регистрация и задание параметров сервиса 152

Настройка параметров сервиса в конфигурационном файле 152

Запуск, останов, удаление регистрации сервиса 153

5.2.2 Запуск/останов работы сервера в режиме консольного приложения 153

Администрирование запуска/останова работы сервера в режиме консольного приложения 153

Запуск/останов/пауза сервера 154

Запуск/останов сервера по расписанию 154

Мониторинг действий сервера - мониторинг из окна приложения сервера 157

Мониторинг и управление процессами 158

5.3 Резервное копирование (архивирование) и восстановление БД 159

Резервное копирование и восстановление БД 159

Архивирование базы данных в автономном режиме 160

Архивирование базы данных в оперативном режиме 161

Архивирование таблиц пользователей 161

Архивирование системных таблиц 162

Архивирование файла инициализации 163

Планирование стратегии архивирования базы данных 164

Восстановление базы данных, архивированной в автономном режиме 165

Восстановление базы данных, архивированной в оперативном режиме 165

Восстановление базы данных, архивированной в оперативном режиме - восстановление таблиц 166

Восстановление базы данных, архивированной в оперативном режиме - восстановление системных таблиц 166

5.4 Проверка и исправление таблиц данных и системных таблиц 167

Проверка и исправление таблиц 167

Проверка таблиц 168

Исправление поврежденного журнала 169

Исправление повреждения постоянной части или ассоциатора 169

Проверка целостности системных таблиц и восстановление системных таблиц сервера 169

Примеры пакетной проверки таблиц 170

Конфигурационный файл с именем HTCTLG.INI 171

5.5 Конфигурирование СУБД для использования прокси - сервера 172

Назначение прокси - сервера 172

Установка, запуск и останов прокси-сервера 173

Конфигурирование прокси-сервера 174

5.6 Индексирование и упаковка таблиц, снятие провисшего захвата 175

Индексирование таблицы 175

Упаковка таблицы (перенос журнала в постоянную часть) 176

Снятие провисшего захвата с записи таблицы 176

5.7 Управление безопасностью 177

Управление безопасностью 177

Создание пользователя 177

Изменение/удаление пользователя 178

Аутентификация пользователя при входе в систему 179

Создание профиля безопасности 179

Изменение/удаление профиля безопасности 181

Создание/удаление роли 181

Назначение права пользователю или роли 182

Отмена права пользователю или роли 184

Назначение/отзыв роли пользователю или другой роли 186

Установка/изменение пароля на чтение/запись данных в таблицу 187

Шифрование данных в таблицах 187

Аудит действий пользователя 189

6. PHP как инструментальное средство создания WEB приложений 190

Архитектура web-приложений с использованием PHP - клиент, http сервер 190

Архитектура web-приложений с использованием PHP - интерпретатор PHP, CУБД HyTech 190

Установка и настройка сервера Apache и модуля PHP 192

Установка для Windows 192

Установка для GNU/Linux 198

6.1 Синтаксис PHP 199

6.1.1 Общие свойства кода 199

Общие свойства кода 199

Комментарии, переменные, константы 200

Типы данных и выражения 201

Тип данных integer (целое число) 201

Тип данных float (число с плавающей точкой) 202

Тип данных boolean (логический) 203

Тип NULL 204

Тип данных строка 205

Создание массива 206

Доступ к элементам массива 207

Операции работы с массивом 208

6.1.2 Управляющие конструкции 209

Условный оператор 209

Оператор «переключатель» 210

Циклы 211

Примеры работы с циклами 212

Операторы передачи управления - break 214

Операторы передачи управления - continue 214

Операторы включения - include 215

Операторы включения - require 217

6.2 Пользовательские функции в PHP, функции работы с массивами и строками 217

6.2.1 Пользовательские функции в PHP, функции работы с массивами и строками 217

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

Параметры пользовательских функций 218

Параметры пользовательских функций - переменное число параметров 219

Возвращаемое значение 220

Локальные и глобальные переменные 221

Статические переменные 222

6.2.2 Встроенные функции для работы с массивами 222

Функции поиска 223

Примеры функций поиска 223

Функции сортировки 224

Примеры сортировок 226

Итераторы 228

Функции выборки и преобразования массивов 228

Примеры работы с функциями выборки и преобразования массивов 229

6.2.3 Строковые функции и регулярные выражения 230

Строковые функции 230

Примеры использования строковых функций 231

Функции разбора регулярных выражений 232

Примеры использования функций разбора регулярных выражений 232

Шаблоны 233

Шаблоны, продолжение 234

Подшаблоны 235

Модификаторы 236

6.3 Технология использования PHP при создании Интернет - приложений 237

6.3.1 Технология обработки HTTP-запросов с помощью PHP 237

Методы доступа 237

Параметры и переменные 238

HTML - формы 239

HTML - формы, продолжение 240

Более сложная HTML- форма 241

6.3.2 Сессии 242

Взаимодействие между клиентом и сервером 242

Идентификатор сессии, использование механизма сессии 243

Пример работы с сессиями 245

6.4 Классы и объекты в PHP 246

6.4.1 Общие сведения о классах и объектах 246

Классы 246

Примеры создания класса 247

Особенности передачи объектов в классы 247

6.4.2 Наследование 248

Пример наследования 248

Уровни доступа 249

Пример с различными уровнями доступа 250

Абстрактные классы и интерфейсы 251

6.4.3 Конструкторы и деструкторы 253

Создание конструктора и деструктора 253

Конструктор в классах-потомках 254

6.4.4 Полиморфизм 255

Перегрузка методов 255

Другие возможности полиморфизма 256

6.4.5 Исключения 257

Исключения 257

7. Совместное использование языка PHP и СУБД HyTech 259

7.1 API HyTech в среде PHP 259

Основные функции API HyTech в среде PHP 259

7.1.1 Функции для соединения и отключения от сервера HyTech 259

Соединение с сервером HyTech, функция hytech_connect 259

Соединение с сервером HyTech, функция hytech_pconnect 260

Отключение от сервера HyTech 260

Функция для смены кодировки символов 262

7.1.2 Функции для выполнения SQL-запросов 262

Выполнение SQL-запроса и открытие результата запроса 262

Выполнение SQL-запроса без открытия результата 263

7.1.3 Функции для работы с результатами SQL-запросов 264

Закрытие ранее открытого результата 264

Получение количества полей в результате запроса 264

Пример использования функций 265

Получение значений полей в заданной строке результата 266

Получение строки результата в виде объекта 267

Получение значения поля в заданной строке результата 268

Пример использования функций 268

7.1.4 Функции для работы с типами DATE и ARRAY в HyTech 269

Установка режима работы с датами и массивами 269

Установка формата строки для преобразования даты 270

Преобразование строки в дату (целое число) 270

Преобразование даты(числа) в строку 271

Пример работы с функциями преобразования 271

7.1.5 Функции для пакетного ввода данных 273

Пакетное добавление строк в таблицу 273

Открытие таблицы 273

Добавление строки в буфер пакетного ввода 273

Сохранение в таблице строк из буфера пакетного ввода 274

Пример работы с пакетным вводом информации 275

7.1.6 Функции для диагностики ошибок 276

Диагностика ошибок 276

7.2 Комплексный пример работы приложения с использованием PHP и СУБД HyTech 277

Описание сценария взаимодействия с пользователем 277

Форма регистрации 278

Скрипт формы регистрации 279

Функции для работы с БД 281

Страница для выбора таблицы 283

Регистрация переменной "table" 286

Выбор строк из таблицы 287

Форма редактирования 291

Сохранение информации 295

Результат успешного добавления строки 299