6.1. Внутренняя архитектура dsa
В основе реляционного сервера баз данных Informix DS лежит архитектура DSA – Dynamic Scalable Architecture. В основе данной архитектуры лежит понятие «Виртуального процессора», то есть некоторой программы, выполняющей некоторый класс задач. Сервер представляется как набор таких виртуальных процессоров.
С точки зрения операционной системы, сервер баз данных Informix Dynamic Server выглядит как некоторых набор процессов. Например, на ОС Unix, если выполнить команду ‘ps –ef | grep informix’ , мы увидим следующий список процессов, реализующих сервер Informix DS:
informix 690 672 0 May-14 00:00:00 oninit informix 672 1 0 May-14 00:13:03 oninit informix 673 672 0 May-14 00:00:01 oninit informix 674 672 0 May-14 00:01:13 oninit informix 675 672 0 May-14 00:00:05 oninit informix 676 674 0 May-14 00:00:01 oninit informix 677 675 0 May-14 00:00:01 oninit informix 678 672 0 May-14 00:00:03 oninit informix 679 674 0 May-14 00:00:03 oninit informix 680 674 0 May-14 00:00:03 oninit informix 681 672 0 May-14 00:00:28 oninit informix 682 672 0 May-14 00:01:33 oninit
Каждый из указанных процессов, с точки зрения сервера баз данных, и является так называемым «Виртуальным процессором» (ВП).
Существует несколько классов виртуальных процессоров. Не вдаваясь в подробности, выделим основные классы:
Виртуальные процессоры для обработки запросов (CPU VP)
Виртуальные процессоры ввода-вывода (AIO VP)
Виртуальные процессоры для сетевого обмена (Net VP)
Другие виртуальные процессоры (Misc VP)
Если в качестве серверной платформы используется MS Windows NT, то внутренние нити Informix DS реализуются с помощью потоков Windows NT, а головные процессы реализованы в виде служб (по две службы на каждый экземпляр сервера):
Принцип действия архитектуры DSA следующий. Когда с какого-то клиентского приложения поступает запрос, он принимается ВП сетевого обмена. Затем данный запрос передается на исполнение в ВП для обработки запросов. Запрос анализируется, проводится его синтаксический разбор, и для запроса заполняется некоторая структура данных16). Эта структура данных содержит информацию о самом запросе, в каком состоянии он находится, какие действия требуются для продолжения обработки данного запроса и т.д. Заполненная структура данных, описывающая некоторый пришедший запрос, называются «нитью» («thread»). Для одного запроса может заводиться несколько нитей.
Вся дальнейшая обработка пришедшего запроса основывается на обработке этой нити. Нить находится в общей памяти, доступной нескольким виртуальным процессорам. Нити организованы в очереди. Виртуальный процессор, когда он освобождается, берет из очереди очередную нить на обработку. После того, как нить в течение некоторого времени (кванта времени) обрабатывается, она снова помещается в очередь.
Как только обработка запроса (а точнее, нити описывающей данный запрос) закончена, ВП сетевого обмена отсылает полученные результаты клиенту, приславшему данный запрос.
ВП ввода-вывода обеспечивают доступ ВП других классов к данным, расположенным на жестком диске или других носителях. ВП данного типа могут работать как в синхронном, так и асинхронном режиме.
Число виртуальных процессоров может быть больше, равно или меньше числа физических процессоров на компьютере. Другими словами, на одном физическом процессоре может находиться один или более ВП сервера БД Informix, также как и не находиться ни одного. Внутреннее устройство DSA схематически можно изобразить следующим образом:
- 4.5. Упражнения 67
- Глава 6. Устройство Informix Dynamic Server 165
- Глава 7. Эксплуатация информационных систем 177
- Глава 1 Обзор основных архитектур баз данных
- 1.1. Архитектура на основе разделяемых файлов
- 1.2. Архитектура “Хост-терминал”
- 1.3. Архитектура “Клиент-Сервер”
- 1.4. Архитектура с использованием сервера приложений (трехзвенная архитектура)
- 1.5. Упражнения
- Глава 2 Модели данных
- 2.1. Уровни восприятия данных
- 2.2. Иерархическая модель данных
- 2.3. Сетевая модель данных
- 2.4. Реляционная модель данных
- 2.5. Объектно-реляционная модель данных
- Глава 3 Реализация информационных систем на основе продуктов Informix Software
- 3.1. Обзор продуктов Informix
- 3.2. Варианты построения систем
- Internet/Intranet-конфигурация
- 3.3. Выбор оптимальной конфигурации
- Глава 4 Математические основы реляционных субд
- 4.1. Основные понятия
- 4.2. Ключи
- 4.3. Основные операции над таблицами и их интерпретация
- 4.4. Нормализация
- 4.5. Упражнения
- Глава 5 Язык sql
- 5.1. Типы данных, доступные в sql
- 5.3. Основные sql-операторы для доступа и модификации данных
- 5.4. Управление транзакциями
- 5.5. Продвинутые варианты оператора поиска
- 5.5.1. Поиск по нескольким таблицам
- 5.5.2. Устранение повторения данных в операторе select
- 5.5.3. Вычисления внутри оператора select
- 5.5.4. Логические выражения в условии sql-операторов
- 5.5.5. Слияние двух выборок
- 5.5.6. Сортировка выборки
- 5.5.7. Вставка в таблицу нескольких строк одновременно
- 5.6. Использование sql в языках программирования
- 5.7. Программирование сервера базы данных
- 5.7.1. Динамический sql
- 5.7.3. Хранимые процедуры
- 5.7.4. Триггеры
- 5.8. Ограничители (задание целостности на уровне схемы)
- 5.9. Разграничение в sql прав пользователей
- 5.9.1. Права доступа
- 5.9.2. Права на уровне базы данных
- 5.9.3. Права на таблицы
- 5.9.4. Права на хранимые процедуры
- 5.9.5. Кто и как следит за соблюдением прав
- 5.9.6. Механизм ролей
- 5.9.7. Псевдотаблицы (view)
- 5.9.7. Синонимы
- 5.10. Управление одновременным доступом к данным
- 5.10.1. Что бывает, когда несколько человек одновременно пытаются обновить одни и теже данные
- 5.10.2. Открытие базы данных только для себя
- 5.10.3. Блокирование таблицы
- 5.10.4. Механизм блокирования записей и уровни изоляции
- 5.10.5. Управление ожиданием снятия блокировок
- 5.10.6. Тупиковые ситуации
- 5.11. Повышение скорости обработки запросов.
- 5.11.1. Индексы
- 5.11.2. Буферизация журнала транзакций
- 5.11.3. Блокировка на уровне записей и страниц
- 5.11.4. Эффективное построение запросов
- 5.11.5. Сортировка и поиск по коротким полям. Классификаторы
- 5.12. Объектное расширение sql в Informix ds/Universal Data Option
- 5.12.1. Зачем нужна поддержка объектов в серверах бд?
- 5.12.3. Внедрение объектно-ориентированной технологии
- 5.12.4. Реализация объектного подхода в Informix
- Informix ds/Universal Data Option - объектно-реляционная субд
- 5.12.5. Итак…
- Глава 6. Устройство Informix Dynamic Server
- 6.1. Внутренняя архитектура dsa
- 6.2. Механизм хранения данных
- 6.3. Инсталляция продукта
- 6.4. Запуск и останов сервера
- 6.5. Работа с русским языком
- Глава 7. Эксплуатация информационных систем
- Администрирование серверов баз данных
- 7.2. Обеспечение сохранности данных.
- 7.2.1. Технологии постоянного дублирования
- 7.2.2. Архивация
- 7.2.3. Так как же обеспечить сохранность данных?
- 7.3. Архивирование и восстановление данных
- 7.3.1. Что нужно архивировать
- 7.3.2. Утилиты архивации и восстановления
- 7.3.3. Создание архивов утилитой ontape
- 7.3.4. Восстановление из архивов утилитой ontape
- 7.3.5. Как узнать “когда”?
- 7.3.6. Практические советы
- 7.4. Средства контроля за доступом
- 7.4.1 Как работает аудитинг?
- 7.4.2. Конфигурирование списков протоколируемых событий
- 7.4.3. Задание файлов, запуск и остановка механизма аудитинга
- Анализ протокола
- 7.4.5. Практические советы или Что делать, если вы хотите…
- 7.5. Реагирование на чрезвычайные ситуации
- 7.6. Мониторинг текущего состояния сервера базы данных
- 7.6.1. Кто работает с сервером базы данных
- 7.6.2. Сколько памяти использует сервер бд
- 7.6.3. Сколько свободного места имеется у сервера бд
- 7.7. Достижение требуемой производительности
- 7.7.1. Как узнать, что ждет некоторый запрос
- 7.7.2. Как выяснять причины падения производительности
- 2. Общие принципы предлагаемой технологии
- 3. Как портировать приложение