
- •Факультет Кибернетики
- •Москва 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"
- •Выбор строк из таблицы
- •Форма редактирования
- •Сохранение информации
- •Результат успешного добавления строки
Шаблоны, продолжение
Для задания множеств символов используется также метасимвол: [ (в паре с ]). Алгоритм сравнения, встретив [ считает, что далее должен быть один из символов, находящихся между [ ].
Примеры:
Шаблон |
Описание |
/\w\w\w:/ |
Подстроки из 4 символов, которые состоят из трех словарных символов и заканчиваются :. |
/[abcd]\S\S\S/ |
Подстроки из 4 символов, которые начинаются с a, b, c, d и заканчиваются тремя непустыми символами. |
/[a-kA-K]123/ |
Подстроки из 4 символов, которые начинаются с любой буквы от a до k или от A до K и заканчиваются 123. |
/.123/ |
Подстроки из 4 символов, которые начинаются с любого символа и заканчиваются 123. |
/\.123/ |
Подстроки .123. |
/%[0-9А-Яа-я]/ |
Подстроки из 2 символов, которые начинаются с % и заканчиваются цифрой или любой русской буквой. Символ -, если он встретился внутри квадратных скобок, задает интервал. |
/%[^0-9А-Яа-я]/ |
Подстроки из 2 символов, которые начинаются с % и НЕ заканчиваются цифрой или любой русской буквой. Символ ^, если он встретился сразу после квадратной скобки, означает «все символы», кроме перечисленных в квадратных скобках. |
/\[abc]/ |
Подстроки вида [abc], поскольку квадратные скобки здесь задают не множество символов, а воспринимаются как обычные квадратные скобки, поскольку перед [ стоит \. |
После символа может быть задано ожидаемое количество повторов:
Символ |
Описание |
? |
0 или 1 |
* |
0 или больше |
+ |
1 или больше |
{ |
Задаем число повторений «с» … «по», используем в паре с } |
Примеры:
Шаблон |
Описание |
/a+/ |
Подстроки, состоящие только из букв а. |
/%[0-9А-Яа-я]{1,3}/ |
Подстроки от 2 до 4 символов, которые начинаются с % и далее содержат цифры или русские буквы. 1 в фигурных скобках задает минимальное число повторов, 3 - максимальное. |
/%[0-9А-Яа-я]{2,}/ |
Подстроки более 3 символов, которые начинаются с % и далее содержат цифры или русские буквы. 2 в фигурных скобках задает минимальное число повторов. |
/%[0-9А-Яа-я]{,2}/ |
Подстроки длиной до 3 символов включительно, которые начинаются с % и далее содержат цифры или русские буквы. 2 в фигурных скобках задает максимальное число повторов. |
/\d{3}/ |
Подстроки длиной 3 символа только из цифр. |
/\d{3}-\d{2}-d{2}/ |
Семизначный телефонный номер (разряды разделяются -). |
/A*_Z/ |
Подстроки, начинающиеся с А после которого может быть произвольное число _ и заканчивающиеся Z. |
/ABC.*/ |
Подстроки, начинающиеся с АBC. |
Внимание! Применение повторов связано со следующим нюансом. По умолчанию алгоритм сравнения ищет подстроку с максимальным возможным числом повторов. Например, алгоритм сравнения для шаблона /ABC.*Z/ в строке ___ABC___Z__ AB_Z найдет только подстроку ABC___Z__ AB_Z, а не две подстроки ABC___Z и AB_Z, как можно было бы подумать. Для того, чтобы искать строку с минимальным числом повторов, нужно после символа повтора указать ?. Таким образом, для шаблона /ABC.*?Z/ будут распознаны две подстроки.