logo
Книга по БД(Вальке А

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

Каждый из указанных процессов, с точки зрения сервера баз данных, и является так называемым «Виртуальным процессором» (ВП).

Существует несколько классов виртуальных процессоров. Не вдаваясь в подробности, выделим основные классы:

Если в качестве серверной платформы используется MS Windows NT, то внутренние нити Informix DS реализуются с помощью потоков Windows NT, а головные процессы реализованы в виде служб (по две службы на каждый экземпляр сервера):

Принцип действия архитектуры DSA следующий. Когда с какого-то клиентского приложения поступает запрос, он принимается ВП сетевого обмена. Затем данный запрос передается на исполнение в ВП для обработки запросов. Запрос анализируется, проводится его синтаксический разбор, и для запроса заполняется некоторая структура данных16). Эта структура данных содержит информацию о самом запросе, в каком состоянии он находится, какие действия требуются для продолжения обработки данного запроса и т.д. Заполненная структура данных, описывающая некоторый пришедший запрос, называются «нитью» («thread»). Для одного запроса может заводиться несколько нитей.

Вся дальнейшая обработка пришедшего запроса основывается на обработке этой нити. Нить находится в общей памяти, доступной нескольким виртуальным процессорам. Нити организованы в очереди. Виртуальный процессор, когда он освобождается, берет из очереди очередную нить на обработку. После того, как нить в течение некоторого времени (кванта времени) обрабатывается, она снова помещается в очередь.

Как только обработка запроса (а точнее, нити описывающей данный запрос) закончена, ВП сетевого обмена отсылает полученные результаты клиенту, приславшему данный запрос.

ВП ввода-вывода обеспечивают доступ ВП других классов к данным, расположенным на жестком диске или других носителях. ВП данного типа могут работать как в синхронном, так и асинхронном режиме.

Число виртуальных процессоров может быть больше, равно или меньше числа физических процессоров на компьютере. Другими словами, на одном физическом процессоре может находиться один или более ВП сервера БД Informix, также как и не находиться ни одного. Внутреннее устройство DSA схематически можно изобразить следующим образом: