Научная статья на тему 'Сетевая FS-архитектура машин баз данных и исполняемые формальные спецификации'

Сетевая FS-архитектура машин баз данных и исполняемые формальные спецификации Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
49
11
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Зинкин Сергей Александрович

Предложен логико-алгебраический подход к определению операционной семантики распределенных систем хранения и обработки данных, основанный на описании данных систем сетями абстрактных машин. Рассматривается FS-архитектура сетевого процессора баз данных. Операции в процессоре определены сетями абстрактных машин.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Сетевая FS-архитектура машин баз данных и исполняемые формальные спецификации»

______ВЕСТНИК ПЕРМСКОГО УНИВЕРСИТЕТА_______________

2008 Математика. Механика. Информатика Вып. 4(20)

УДК 681.324

Сетевая Р8-архитектура машин баз данных и исполняемые формальные спецификации

С. А.Зинкин

Пензенский государственный университет, 440026, г. Пенза, ул. Красная, 40

Предложен логико-алгебраический подход к определению операционной семантики распределенных систем хранения и обработки данных, основанный на описании данных систем сетями абстрактных машин. Рассматривается FS-архитектура сетевого процессора баз данных. Операции в процессоре определены сетями абстрактных машин.

Введение

К настоящему времени разработан ряд технологий проектирования распределенных вычислительных систем, в том числе распределенных систем управления базами данных, систем управления промышленными объектами. Во многих крупных зарубежных университетах существуют проекты метакомпью-терных систем. Например, в Йельском университете (Yale University) разработаны мета-компьютерные технологии Linda, Paradise и Piranha, которым "родственны" разработки фирмы Sun Jini и фирмы IBM Tuple Spaces. Аналогичные концепции внедрены в ряде программных продуктов других фирм: например, к проектам подобного класса относятся реализации MPI (Message Passing Interface) и PVM (Parallel Virtual Machine). Эти продукты, как правило, закрыты для развития и выполняют важные, но ограниченные по составу функции. Принципы построения программного обеспечения скрыты от пользователя. Однако в последнее время наметилась тенденция создания такого сетевого программного обеспечения, в котором стираются грани между сетевой операционной системой, распределенной системой управления базой данных и распределенным приложением, а

© С. А. Зинкин, 2008

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

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

вания и координации модулей предлагается использовать фундаментальные концепции систем искусственного интеллекта: каузальные (причинно-следственные) и темпоральные (временные) отношения, предметные отношения и функции. В качестве базовой нотации может быть выбрана нотация алгоритмических алгебр Глушкова или другая алгоритмическая система. Развитием формализма является введение конкретизируемых темпоральных, каузальных и предметных отношений, позволяющих перейти к описанию и технологиям реализации распределенных систем хранения и обработки данных. Реализация сетевой инфраструктуры существенно упрощается и не требует значительных затрат на программирование: формальные спецификации перекодируются непосредственно в конструкции любого выбранного языка - C++, Java и других, использующих сетевые классы и стеки сетевых протоколов.

1. Определение базового формализма

При обсуждении принципов построения распределенных систем хранения и обработки данных рассматривается ряд парадигм, определяющих оригинальные методологии их логического проектирования. Среди известных принципов наиболее распространены нисходящее проектирование, функциональная декомпозиция, объектно-ориентированное программирование. Для концептуального представления принципов организации распределенных систем с целью выработки единых в концептуальном плане подходов в настоящей работе предлагается использовать формализм сетей абстрактных машин, берущих свое начало от машин Колмогорова-Успенского-Шёнхаге [1, 2, 3] и Гуревича [4, 5]. При определении декларативной составляющей формализма используется понятие алгебраических систем (в смысле работ [6, 7, 8, 9]) и логик высших порядков [10], а для представления процедурной составляющей используются некоторые элементы алгебры алгоритмов Глушкова [11, 12, 13, 14], в частности операции а-дизъюнкции и а-итерации для всюду определенных условий.

Сеть абстрактных машин (СеАМ), или эволюционирующая многоосновная алгебраическая система (ЭМАС), определяется следующим набором:

N = (A1,..., An, Z, FC,FOb,PC,POb,IOO,I(U Z',F',P',J, ^,Uf,Up,M,

^Top, ^Cop, L, ^Lop, Ф, B, ^B,

^update, Mtest, Mblock, MB , MMB, ML , C, Q, W),

где Д, •••, A - непустые непересекающиеся

множества (основы), на которых определены множества функций и предикатов, имена которых составляют "текущую" (с изменяющейся, или эволюционирующей в процессе функционирования сети интерпретацией I(t) функциональных и предикатных символов) и "статическую" (с неизменной интерпретацией) сигнатуры;

A = (Д, ..., An} - множество основ;

Z = F U P - казуально-объектная сигнатура (F = Fc UFob,P = Pc UPob);

- множество "каузальных" функций;

Fob - множество "объектных" функций;

Pc - множество "каузальных" предикатов;

Pob - множество "объектных" предикатов;

I(t), t > t0 - текущая интерпретация функциональных и предикатных символов, составляющих сигнатуру Z ;

I(t0), t0 > 0 - начальная интерпретация функциональных и предикатных символов, составляющих сигнатуру Z ;

Z' = F' U P' - статическая сигнатура (с неизменяемой в процессе функционирования СеАМ интерпретацией функциональных символов из множества F' и предикатных символов из множества P');

J - интерпретация функциональных символов из множества F' и предикатных символов из множества P';

^a : (ZUZ') ^ (1,2, ...,na} - отображение арности, где na = const; в процессе

функционирования СеАМ арности функций и предикатов остаются неизменными;

Up - множество элементарных обновлений функций, сопоставленных функциональным символам из Z ;

Up - множество элементарных обновлений предикатов, сопоставленных предикатным символам из Z ;

и = ир и иР - система образующих алгебры модулей;

М - множество модулей СеАМ, реализующих локальные преобразования (обновления) текущей интерпретации ВД сигнатуры 2; под модулем подразумевается СеАМ-выражение, не содержащее свободных вхождений предметных переменных;

0Гор - система темпоральных операций

вида шт : М х М ^ М, принимающих значения в множестве модулей М;

0Сор - система дополнительных операций вида шс : Ь х М х М ^ М и юсоР : Ь х М ^ М ("управляющих конструкций" СеАМ), принимающих значения в множестве модулей М;

Ь - множество логических условий;

^ьоР - система логических операций вида

юЬор: Ь х Ь ^ Ь и шЬор: Ь ^ Ь, принимающих значения в множестве логических условий L;

Ф - множество атомарных формул (атомов) - система образующих алгебры логических условий;

В - множество блоков СеАМ;

- множество операций, выполняемых в блоках модулей СеАМ;

Лирйа1е : М ^ Р(^) \0 - отображение, сопоставляющее каждому модулю подмножество функций и предикатов, которые им модифицируются, Р - символ булеана;

: М ^ Р(^) \0 - отображение, сопоставляющее каждому модулю подмножество функций и предикатов, которые им проверяются;

Иыаак : М ^ Р(^) \0 - отображение, сопоставляющее каждому модулю подмножество функций и предикатов, с которыми оперирует данный модуль, причем

(Ут е М)(/Ыоск (т) = 1ЛиРа,е(т) и ¡л^ (т)),

(в общем случае для корректной работы сети функции и предикаты, с которыми оперирует конкретный модуль, должны быть временно заблокированы в целях недопущения нежелательных взаимоблокировок конкурирующих модулей);

Лв : В ^ Р(ир и ир) \0 - отображение, ставящее в соответствие каждому блоку под-

множество совместимых элементарных обновлений интерпретации сигнатуры 2;

Мыв : М ^ P(B) \0 - отображение, сопоставляющее каждому модулю СеАМ подмножество реализуемых им блоков;

¡ль : М ^ P(L) \0 - отображение, сопоставляющее каждому модулю подмножество проверяемых им логических условий;

С - отношение каузации, представленное областью истинности одноименного предиката. Этот предикат определяется следующим образом:

C(mi,mj) = pinter

(Mupdate(mi), Mtest (mj)),

где

Pinter update К X Цtest(j =

true, если Цupdate (mi ) П Цtest (mj ) * 0 falSe, если Цupdate (mi ) П Цtest (mj ) = 0

Для сети N может быть дополнительно задана следующая пара множеств:

Q - множество предикатов вида q: M ^ {true, false}, характеризующих рабочее или нерабочее состояние модулей из множества M; данные предикаты не могут модифицироваться никакими модулями и используются только в формулах логических условий из множества L для проверки фактов исполнения некоторых модулей в текущий момент времени;

W - множество предикатов вида w: M ^ {true, false}, используемых для "внешнего" или "внутреннего" управления текущей конфигурацией сети N: в процессе функционирования сети из нее могут исключаться некоторые модули либо они снова могут подключаться к сети; такие манипуляции с сетью могут осуществляться модулями с помощью включаемых в блоки правил обновления предикатов из множества W.

Примечание. Для удобства при описании операционной семантики сетей в дальнейшем мы будем использовать понятие FS-пространства, объединяющего в одно множество S = F u P множества функций F и предикатов P.

Для используемых в логикоалгебраических моделях функций вида f: Дихлах ... xAjn ^ Aj и предикатов вида

p: AjixAj2x ... xAjn ^ {true, false} введем дополнительно следующие (статические) функции:

Г,^) - функция арности предикатного или функционального символа q;

с^Г), Ср(р) - функции типов функционального Г или предикатного р символов соответственно (в многосортных или многоосновных системах тип п-арного предикатного символа - это кортеж (11, 12, ..., 1п, j), а тип парного предикатного символа - это кортеж (1Ь

12, ..., 1п), где 11, 12, ..., 1п, j - названия (сорта) для основ, или носителей);

л1(р) - функция проекции по 7-й предметной переменной в области истинности парного предиката р;

Сф(1) - функция, ставящая в соответствие п-арной функции Г (п+1)-арный предикат р.

2. Выполнение операций над сегментированными отношениями в сетевой среде и сетевая архитектура процессора базы данных

Рассмотрим распределенную реляционную базу данных, в которой "горизонтальные" фрагменты (подмножества кортежей) А1, ., Ам, В1, ..., Вм отношений А и В размещены на нескольких узлах у1, ..., ум (рис. 1). Данным фрагментам соответствуют области истинности высказывательных функций, или предикатов Гм, ..., Гв1, ..., Гв№ Фрагментам результирующего отношения С соответствуют области истинности предикатов ГС1, ..., ГС№

Рис. 1. Пример начального размещения фрагментов отношений в сетевом процессоре базы данных

Выполнение реляционных операций в сетевом процессоре базы данных удобно специфицировать логико-алгебраическими моделями СеАМ и РСеАМ (расширенный за счет а-итерации и межмодульных темпоральных операций формализм СеАМ [16, 17]). Далее на основе данных спецификаций и Б8-технологии необходимо реализовать соответствующее сетевое программное обеспечение промежуточного уровня. Диаграмма развертывания комплекса программно-аппаратных средств сетевого процессора базы данных представлена на рис. 2.

Построение выражений для модулей СеАМ и РСеАМ существенно облегчается, если использовать готовые функции для выполнения реляционных операций £п1ег, £іш0п, £ш-, ґсагі, ґіоіп, ^"Є^ї оіп, £ієі, ґрг и бинарного предиката размещения Г(іер1.

Область истинности бинарного предиката ґаер1 представляет отношение размещения объектов - фрагментов отношений базы данных. Так, например, истинность высказывания f йер1 (ґді, Уі) означает, что фрагмент Аі отношения А размещен на узле у1 сети, реализующей функции процессора базы данных.

Q

Клиент системы 1

±

Java-машина

Клиент системы 2

Узел сети 5

Java-машина

Узел сети 6

Вычислительная сеть (TCP/IP)

Узел сети 1

Сервис дискового I накопителя 1

Узел сети 2

Узел сети 3

Сервис дискового накопителя 2

1 Вспомогательные 1 1 Вспомогательные

1 компоненты среды 1 1 I компоненты среды 3

1 (Java-машина и | 1 (Java-машина и

1 реестр RMI) 1 1 реестр RMI)

Узел сети 4

Сервис дискового I накопителя 3

Сервис дискового I накопителя 4

Вспомогательные компоненты среды 2 (Java-машина и реестр RMI)

Вспомогательные компоненты среды 4 (Java-машина и реестр RMI)

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Рис. 2. Диаграмма развертывания сетевого процессора базы данных

Операция обновления предиката fdepi соответствует выполнению в сети некоторой операции размещения данных. Например, при выполнении правил обновления

fdepl(fA1, У2) ^ tr1

ue; fdepi(fA1, У1) ^ false сначала фрагмент отношения А1 копируется на узел У2, а затем исходный экземпляр уничтожается на узле y1. Операция fdepl(fA1, y2) ^ true не может быть выполнена, если фрагмент

отношения А1 отсутствует в сети. Результат выполнения последней операции не определен и полагается равным RN (неопределенное обновление). В случае, если фрагмент А1 к моменту начала операции fdepl(fA1, y2) ^ true уже находится на узле y2, данная операция лишь подтверждает текущее размещение, т. е. ее фактический результат — RE (тождественное обновление). Использование формализмов СеАМ и РСеАМ и последующее приме-

нение FS-технологии в существенной степени упрощает сетевую реализацию процессора реляционной базы данных и разработку его программного обеспечения.

Далее логические формулы для а-условий и а-итераций в СеАМ- и РСеАМ-выражениях будем заключать в квадратные скобки, а множество совместимых обновлений интерпретации сигнатуры 2 в блоках СеАМ и циклически повторяющихся участках (подвыражениях) РСеАМ - в фигурные скобки.

3. Сетевая реализация операции

"пересечение отношений"

Следующие выражения для модулей СеАМ описывают выполнение реляционной операции "пересечение" в сети (для простоты сначала рассматривается пример четырехузловой сети):

m(nL = [a]({fdepl(fA1, У1) ^ true; fdepl(fB1, У1) true;

fC1 ^ funion(fCb finter(fAb fB1)); fdepl(fB1, У4) ^

true; fdepl(fB1, У1) ^ false;

fdepl(fB2, У1) ^ true; fC1 ^ funjon(fCb finter(fA1,

fB2)); fdepl(fB2, У4) ^ true;

fdepl(fB2, У1) ^ false; fdepl(fB3, У1) ^ true; f^

^ funjon(fC1, finter(fAb fB3));

fdepl(fB3, У4) ^ true; fdepl(fB3, У1) ^ false;

fdepl(fB4, У1) ^ true;

fC1 ^ funion(fCb finter(fAb fB4)); fdepl(fB4, У4) ^

true;

fdepl(fB4, У1) ^ false} v Re),

m(nL = [a]({fdepl(fA2, У2) ^ true; fdepl(fB2, У2) true;

fC2 ^ funjon(fC2, fjnter(fA2, fB2)); fdepl(fB2, У1) ^

true; fdepl(fB2, У2) ^ false;

i'dep^f^ У2) ^ true; fC2 ^ fjnter(fЛ2,

fB3)); fdepl(fB3, У1) ^ true;

fdepl(fB3, У2) ^ false; fdepl(fB4, У2) ^ true; fC2

^ funjon(fC2, fjnter(fA2, fB4));

fdepl(fB4, У1) ^ true; fdepl(fB4, У2) ^ false;

fdepl(fB1, У2) ^ true;

fC2 ^ fjnter(fЛ2, fB1)); fdepl(fB1, У1) ^

true;

fdepl(fB1, У2) ^ false} v Re),

m(i3|)er = [a]({fdepl(fA3, У3) ^ true; fdepl(fB3, У3)

true;

fC3 ^ fjnter(fЛ3, fB3)); fdepl(fB3, У2) ^

true; fdepl(fB3, У3) ^ false;

i'dep^f^ У3) ^ true; fC3 ^ fjnter(fЛ3,

fB4)); fdepl(fB4, У2) ^ true;

fdepl(fB4, У3) ^ false; fdepl(fB1, У3) ^ true; fC3

^ funjon(fC3, fjnter(fA3, fB1));

fdepl(fB1, У2) ^ true; fdepl(fB1, У3) ^ false; fdepl(fB2, У3) ^ true;

fC3 ^ fjnter(fЛ3, fB2)); fdepl(fB2, У2) ^

true;

fdepl(fB2, У3) ^ false} v Re),

m(n)er = [a]({fdepl(fA4, У4) ^ true; fdepl(fB4, У4) ^ true;

fC4 ^ fjnter(fЛ4, fB4)); fdepl(fB4, У3) ^

true; fdepl(fB4, У4) ^ false;

fdepl (fB1, У4) ^ true; fC4 ^ funjon(fC4, fjnter(fЛ4,

fB1)); fdepl(fB1, У3) ^ true;

fdepl(fB1, У4) ^ false; fdepl(fB2, У4) ^ true; fC4 ^ fumon(fC4, fjnter(fЛ4, fB2));

fdepl(fB2, У3) ^ true; fdepl(fB2, У4) ^ false; ; fdepl(fB3, У4) ^ true;

£c4 ^ fjnter(fЛ4, fB3)); fdepl(fB3, У3) ^

true;

fdepl(fB3, У4) ^ false} v Re),

mC = [a]({fdepl(fC2, У1) ^ true; fdepl(fe, У2) ^

false; fC1 ^ funjon(fC1, fC2);

fdepl(fC2, У1) ^ false; fdepl(fC3, У1) ^ true; fdepl(fC3, У3) ^ false;

fC1 ^ funjon(fC1, fC3); fdepl(fC3, У1) ^ false;

fdepl(fC4, У1) ^ true;

fdepl(fC4, У4) ^ false; fC1 ^ funjon(fC1, fC4);

fdepl(fC4, У1) ^ false} v Re).

Здесь и далее а - условие, определяющее готовность сети к работе. Работа сети в целом при выполнении операции "пересечение" описывается следующим выражением РСеАМ:

M = (m(1) |c m(2) |c m(3) |c m(4) ) T m

Minter (minter 1 m inter 1 minter 1 minter) 1 mC,

c

где "| " - символ операции конкурентного взаимодействия модулей, при котором их интервалы реализации, возможно, пересекаются неоднократно. Тем самым подчеркивается, что для взаимодействия модулей не всегда необходимо пересечение временных интервалов их выполнения: они могут взаимодействовать, например поочередно используя механизм обмена через "почтовый ящик".

Учитывая схожесть основных фрагментов, введем следующую псевдофункцию (макроопределение):

Fjnter(#1, #2, #3, #4, #5) = (fdept(#1, #2) ^ true;

#3 ^ funion(#3, fjnter(#4, #1)); fdepl(#1, #5) ^

true; fdepl(#1, #2) ^ false).

Здесь вместо псевдопеременных #1 #5

можно подставлять имена объектов и функций, тогда выражения для модулей, реализующих реляционную операцию "пересечение", можно представить в более компактном виде:

m(nL = [a]({fdepl(fA1, У1) ^ true; Fmter(fB1, У1,

fC1, fЛ1, У4) ^ true;

Fmter(fB2, Уl, fC1, fAb У4) ^ true; Fjnter(fB3, Уl, fC1, fЛ1, У4) ^ true;

Fjnter(fB4, У1, fC1, fA1, У4) ^ true} v RE),

m(nL = ([a]{fdepl(fA2, У2) ^ true; Fmter(fB2, У2, fC2, fЛ2, У1) ^ true;

Fmter(fB3, У2, fЛ2, У1) ^ true; Finter(fB4, У2,

fC2, fЛ2, У1) ^ true;

Fjnter(fB1, У2, fC2, fA2, У1) ^ true} v RE),

m(n3)er = ([a]{fdepl(fA3, У3) ^ true; Fmter(fB3, У3,

fC3, fЛ3, У2) ^ true;

Fmter(fB4, У3, fC3, ^ У2) ^ true; Finter(fB1, У3, fC3, fЛ3, У2) ^ true;

Fjnter(fB2, У3, fC3, fA3, У2) ^ true} v Re),

m(n4)er = ([a]{fdepl(fA4, У4) ^ true; Fjnter(fB4, У4, fC4, fЛ4, У3) ^ true;

Finter(fBb У4, fC4, fA4, У3) ^ true; Fjnter(fB2, У4, fC4, fЛ4, У3) ^ true;

Fjnter(fB3, У4, fC4, fA4, У3) ^ true} v RE).

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

e = <1, 2, ... , n>, r = <У1, У2, ... , Уп>, которые будут далее использоваться для реализации кольцевых списков. Введем дополнительно функции fnext(a, u) и fprev(a, u) циклического выбора элементов из кортежа при обходе элементов по часовой стрелке и против нее

соответственно, где a - константа, обозначающая объект, а u - имя одного из кортежей. Например,

fiext^, r) = У2, fnext(Уn, r) = У1, fprev(Уl, r) = Уп, fprev(yn) = Уn-1, fprev(У2) = У1.

Введем далее операцию репликации (replicate), при выполнении которой формируются копии выражений СеАМ и РСеАМ. Запишем выражение Rjnter, описывающее работу сетевого процессора базы данных для общего случая n узлов:

Rjnter: replicate n times from i = 1 and move module i to node у: mi=[a]({fdepl(fAi, yi) ^ true; replicate n times from j = i ranges fnext(j,e): Finter(fBj, yi, fCi, fAi, fprev(yi, r)) ) ^ true;} v Re), где внутренний оператор replicate формирует n правил обновления псевдофункции Finter для

i-го модуля mj^ , а внешний - формирует n

модулей m1, m2, ., mn и отправляет каждый из них на соответствующий узел yi, i = 1, 2, ., n. Для внутреннего оператора replicate ключевое слово ranges означает, что входящее в состав оператора обновление псевдофункции Finter копируется n раз (копии разделены символом операции ";" непосредственного следования), причем индексирующая переменная j пробегает значения "по кольцу", определяемому функцией fnext. После завершения формирования последовательности правил обновления функции Finter последний символ операции ";" игнорируется.

Например, для n=8 и i=4 при формировании i-го модуля m^ индекс j пробегает по значениям 4, 5, 6, 7, 8, 1, 2, 3; в такой же последовательности формируются все 8 правил обновления псевдофункции Finter для четвертого модуля. При n=4 результатами выполнения приведенного выше выражения R будут формулы, описывающие функционирование

описанных выше модулей m(i1t)er , m(L, m(3))er

и m(4) . При формировании модулей вместо фиктивного правила обновления псевдофункции Finter подставляются реальные правила обновления предикатов. Генерация реальной распределенной программы, выполняющей операцию "пересечение" отношений в сетевой среде, осуществляется специальной программой-препроцессором, установленной на одном из сетевых узлов. Работа внешнего оператора replicate легко распараллеливается, и программы, непосредственно интерпрети-

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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

Модуль mC, объединяющий фрагменты результирующего отношения C, размещается на первом узле и реализуется по той же технологии, что и модули, выполняющие операции пересечения фрагментов исходных отношений Л и B. Введем псевдофункцию

FC_union(#A, #B) = (fdepl(#A, У1) ^ true; fdepl(#A, #B) ^ false; f^ ^ fu^fd, #A); fdepl(#A, У1) ^ false), тогда выражение для модуля mC примет более простой вид:

mC = [a]({FC_umon(fC1, У2) ^ true; FC_union(fC3, У3) ^ true;

FC_union(fC4, У4) ^ true} v RE).

Запись выражения RC для произвольного n имеет следующий вид:

Rc: [a]({replicate n-1 times from i=2 and move module to node У1:

FC_union(fCi, yi) ^ true;} v Re).

Как и в предыдущем случае, после завершения формирования последовательности правил обновления функции FC_union последний символ операции ";" игнорируется.

Данный подход в существенной степени облегчает построение системного программного обеспечения сетевого процессора базы данных на основе непосредственно интерпретируемых спецификаций.

4. Сетевая реализация операции "разность отношений"

Следующие выражения для модулей СеАМ описывают выполнение реляционной операции "разность" в сети:

mdif = [a]({fdepl(fA1, У1) ^ true; fdepl(fB1, У1)

^ true; fC1 ^ fdiff(fAb fB1);

fdepl(fB1, У4) ^ true; fdepl(fB1, У1) ^ false; fdepl(fB2, У1) ^ true;

fC1 ^ fdiff{fC1, fB2); fdepl(fB2, У4) ^ true;

fdepl(fB2, У1) ^ false;

fdepl(fB3, У1) ^ true; fC1 ^ fdiff(fC1, fB3);

fdepl(fB3, У4) ^ true;

fdepl(fB3, У1) ^ false; fdepl(fB4, У1) ^ true; f^

^ fdiff(fC1, fB4);

fdepl(fB4, У4) ^ true; fdepl(fB4, У1) ^ false} v

RE),

md2)f = [a]({fdepl(fA2, У2) ^ true; fdepl(fB2, У2)

^ true; fC2 ^ fdiff(fЛ2, fB2);

fdepl(fB2, У1) ^ true; fdepl(fB2, У2) ^ false; fdepl(fB3, У2) ^ true;

fC2 ^ fdiff(fC2, fB3); fdepl(fB3, У1) ^ true;

fdepl(fB3, У2) ^ false;

fdepl(fB4, У2) ^ true; fC2 ^ fdiff(fC2, fB4);

fdepl(fB4, У1) ^ true;

fdepl(fB4, У2) ^ false; fdepl(fB1, У2) ^ true;

^ fdiff(fC2, fB1);

fdepl(fB1, У1) ^ true; fdepl(fB1, У2) ^ false} v

RE),

md3)f = [a]({fdepl(fA3, У3) ^ true; fdepl(fB3, У3)

^ true; fC3 ^ fdiff(fA3, fB3);

fdepl(fB3, У2) ^ true; fdepl(fB3, У3) ^ false; fdepl(fB4, У3) ^ true;

fC3 ^ fdiff(fC3, fB4); fdepl(fB4, У2) ^ true;

fdepl(fB4, У3) ^ false;

fdepl(fBb У3) ^ true; fC3 ^ fdiff(fC3, fB1);

fdepl(fB1, У2) ^ true;

fdepl(fB1, У3) ^ false; fdepl(fB2, У3) ^ true; fe

^ fdiff(fC3, fB2);

fdepl(fB2, У2) ^ true; fdepl(fB2, У3) ^ false} v

re),

mdf = [a]({fdepl(fA4, У4) ^ true; fdepl(fB4, У4)

^ true; fC4 ^ fdiff(fЛ4, fB4);

fdepl(fB4, У3) ^ true; fdepl(fB4, У4) ^ false; fdepl(fB1, У4) ^ true;

fC4 ^ fdiff(fЛ4, fB1); fdepl(fBb У3) ^ true;

fdepl(fB1, У4) ^ false;

fdepl(fB2, У4) ^ true; fC4 ^ fdiff(fЛ4, fB2);

fdepl(fB2, У3) ^ true;

^eplCf^ У4) ^ false; fdepl(fB3, У4) ^ true; fC4

^ fdiff(fЛ4, fB3);

fdepl(fB3, У3) ^ true; fdepl(fB3, У4) ^ false} v

RE).

Процесс выполнения операции "разность" в сети описывается следующим выражением РСеАМ:

м = (m(1) ic m(2) ic m(3) ic m(4)) T m

Mdiff (mdiff 1 mdiff 1 mdiff 1 mdiff ) 1 mC .

Здесь модуль mC формирует конечный результат на первом узле сети.

Введем псевдофункцию

Fdiff(#1, #2, #3, #4, #5) = (fdept(#1, #2) ^

true; #3 ^ fdiff(#4,#1);

fdept(#1, #5) ^ true; fdept(#1, #2) ^ false),

тогда выражения для модулей m(1^ ^ m(4^ могут быть представлены в следующем более компактном виде:

mdf = [a]({fdepl(fA1, У1) ^ true; Fdiff(fB1, У1,

fC1, fAb У4) ^ true;

Fdiff(fB2, У1, fd, £л1, У4) ^ true; Fdiffi^, У1,

fC1, fЛ1, У4) ^ true;

Fdiff(fB4, У1, fC1, fA1, У4) ^ true} v RE),

mdf = [a]({fdepl(fA2, У2) ^ true; Fdiff(fB2, У2,

fЛ2, У1) ^ true;

Fdiff(fB3, У2, £c2, £л2, У1) ^ true; Fdiff(fB4, У2, fC2, fA2, У1) ^ true;

Fdiff(fB1, У2, fC2, fA2, У1) ^ true} v RE), m^f = [a]({fdepl(fA3, У3) ^ true; Fdiff(fB3, У3,

fC3, fЛ3, У2) ^ true;

Fdiff(fB4, У3, £c3, £л3, У2) ^ true; Fdiff(fB1, У3,

fC3, fЛ3, У2) ^ true;

Fdiff(fB2, У3, fC3, fA3, У2) ^ true} v Re), mdf = [a]({fdepl(fA4, У4) ^ true; Fdiff(fB4, У4,

fЛ4, У3) ^ true;

Fdiff(fBb У4, fC4, fЛ4, У3) ^ true; Fdiff(fB2, У4, fC4, fA4, У3) ^ true;

Fdiff(fB3, У4, f<C4, fA4, У3) ^ true} v RE).

Используя операторы replicate, опишем

выполнение операции "разность" для сети из

n узлов следующим выражением:

Rdiff: replicate n times from i =1 and move

module i to node У:

[a]({fdepl(fAi, yi) ^ true;

replicate n times from j = i ranges fnext(j, e):

Fdiff(fBj, yi, fCi, fAi, fprev(yi, r)) ) ^ true;} v RdEif)f. Bj i Ci Ai prev i

Модуль mC, формирующий конечный результат на первом узле сети из n узлов, описывается приведенным ранее выражением RC.

5. Сетевая реализация операции "объединение отношений"

Следующие выражения для модулей СеАМ задают сетевую реализацию реляционной операции "объединение":

minion = [a]({fdepl(fA1, У1) ^ true; fdepl(fB1, У1)

true;

fC1 ^ fdiff(fAb fB1)} v RE),

mUnion = [a]({fdepl(fA2, У2) ^ true; fdepl(fB2, У2)

^ true;

fC2 ^ fdifí{fA2, fB2)} V RE),

mUnion = [a]({fdepl(fA3, Уз) ^ true; fdepl(fB3, Уз)

^ true;

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

fC3 ^ fdifi{fA3, fB3)} V RE),

mUni on = [a]({fdepl(fA4, У4) ^ true; fdepl(fB4, У4)

^ true;

fC4 ^ fdiff(fA4, fB4)} V RE)-

Запись выражения для сетевого процесса выполнения операции "объединение" в нотации РСеАМ имеет следующий вид:

M = (m(1) |c m(2) |c m(3) |c m(4) ) T m

Munion (munion 1 munion 1 mumon 1 munion) 1 mC •

6. Сетевая реализация операций "декартово произведение отношений" и "соединение отношений"

Построение модулей СеАМ для сетевых реализаций операций декартова произведения отношений (cart) и соединения отношений (join) производится полностью аналогично построению модулей, реализующих сетевую операцию пересечения с той разницей, что во всех модулях СеАМ для работы с фрагментами отношений вместо функции finter необходимо использовать функции fcart и fjoin. Во всех соответствующих сетевой операции пересечения выражениях вместо нижних индексных символов "inter" нужно подставить символы "cart" и "join" соответственно для каждой операции, например:

м«= (m™ |c m® |c m“ |c m™) T me.

M,o,n = jmfoLr m(3>n |cm(4)n) T mc .

7. Сетевая реализация операций "проекция отношений" и "селекция отношений"

Спецификации модулей сети для выполнения операций проекции (pr) и селекции (sel) имеют одинаковую структуру и различаются лишь использованием функций fpr или fsel:

moPer = [a]({fdepl(fAi, У1) ^ true; fdepl(fz, У1)

^ true;

fC1 ^ foper(fAb fZ)} v RE);

m02p)er = [a]({fdepl(fA2, У2) ^ true; fdepl(fz, У2) true;

fC2 ^ foper(fЛ2, fZ)} v RE);

mOper = [a]({fdepl(fA3, У3) ^ true; fdepl(fz, У3) true;

fC3 ^ foper(fЛ3, fZ)} v RE);

mOp^r = [a]({fdepl(fA4, У4) ^ true; fdepl(fz, У4) true;

fC4 ^ foper(fЛ4, fZ)} v RE).

Здесь область истинности предиката fZ содержит лишь один кортеж c аргументами для выполнения операций проекции или селекции. При реализации конкретных операций следует заменить функциональный символ foper на символ fpr или fsel.

Moper = (mOpl Г mO2p)er |c mO3p)er |c mOPer ) T mC .

Дубликаты, появление которых возможно при выполнении проекции, исключаются на конечном этапе выполнения данной операции модулем mC при объединении фрагментов в результирующее отношение.

8. Реализация операций реляционной

алгебры сетями абстрактных машин

Формулы и термы составляются по известным в многосортном исчислении предикатов первого и высших порядков [6, 7, 8, 9] правилам. Отличительной особенностью предлагаемого формализма является использование термов вида

(~!х е X)p(x), (~!! x е X)p(x), (Vx е X)p(x), (VI! x е X) p( x)

в блоках и в a-выражениях модулей СеАМ и РСеАМ (т.е. в записи формул для логических условий в операциях a-дизъюнкции и a-итерации). Назовем данные операторы квантифицированными операторами выбора кортежей из областей истинности и-арных (n > 1) предикатов. Например, в случае применения введенных операторов к бинарным

предикатам соответствующие термы будем записывать в следующем виде:

(3! x e X, y e Y)q(x, y), (3!! x e X, y e Y)q(x, y),

(Vx e X, y e Y)q(x, y), (3)

(V!! x e X, y e Y)q(x, y).

Рассмотрим группу термов (2). Результатом выполнения оператора 3! является единственное значение предметной переменной х, выбранное произвольным образом из области истинности унарного предиката р. Оператор

3!! выбирает значение х при условии, что оно является единственным в области истинности

унарного предиката р. Оператор V позволяет выбрать все значения переменной х из области

истинности предиката р. Оператор V!! выбирает все значения переменной х из области истинности предиката p при условии, что эта область совпадает с областью определения данного предиката. Выбранные значения для обоих последних операторов составляют результирующие унарные отношения. Если специально оговорено, то предметная переменная х может принимать значения в множестве кортежей.

В случаях, когда термы вида (2) и (3) используются в логических a-выражениях, заключенных в квадратные скобки, значение каждого терма трактуется двояким образом. В a-выражении терм заменяется логическим условием, истинным или ложным в зависимости от успешного или неуспешного выполнения квантифицированного оператора выбора. Сами вычисленные значения терма используются в блоке, следующем за a-условиями одного и того же модуля .

Ранее нами было допущено использование в блоках согласованных обновлений операций реляционной алгебры с рассмотрением каждого алгебраического выражения как функции, которая отображает множество отношений в одно отношение. Примеры выражений для модулей в нотации РСеАМ, выполняющих известные (например, из [15]) варианты основных операций реляционной алгебры: пересечения (inter), объединения

(union), разности (diff), соединения (join), декартова произведения (cart), эквисоединения (eqjoin), ограничения (sel), проекции (pr) и для двух вспомогательных операций - удаления всех кортежей (del) и копирования отношений (copy) - представлены ниже:

mmter - fc(a0) ^ false; ({ [feq (y, z)](f3 (x, y, z, t, s) ^ true v Re ),

[fc(ao)]{[~!(x e X, y e Y)fl(x, y)]({[f2(x y)] f2(z, t, s) ^ false}v fc (a2) ^ true)};

(f3(x, y) ^ true v Re), (f(x, y) ^ false, f2 ^ f2, fc(a2) ^ false)}v

fi(x, y) ^ false} v fc(ao) ^ true)}; fc (a) ^ true)};

munion - (f3 ^ f1, fc(«0) ^ false);

[fc (ao)]{[3!(x e X, y e Y)f2(x, y)]

({f3 (x, y) ^ true, f2 (x, y) ^ false}v

fc(«o) ^true)};

mdiff - (f3 ^ fl, fcK) ^false);

[f c (ao)]{[3!(x e X, y e Y)f 2(x, y)] ({[f3(x y)](fз(x, y) ^false v RE), f2 (x, y) ^ false} v fc (aoo) ^ true)};

mjoin- (f2 ^f 2, fc (ai) ^false);

[fc(ai)]{[3!(x e X, y e Y)fi(x, y)]

({fc(a2) ^ false; [fc(a2)]

{[3!(z e Z, t e T, s e S)f2(z, t, s)]

({ [fcond (У, z)](f3(x, У, z, t, s) ^true v rE X f2(z, t, s) ^ false}v fc(a2) ^ true)};

(f (x, y) ^ false, f2 ^ f2, f (a) ^ false)}v

fc(ai) ^ true)};

mcart - (f2 ^ f2 , fc(ai) ^ false);

[fc(ai)]{[3!(x e X, y e Y)fi(x, y)]

({fc(a2) ^ false; [fc(a2)]

{[3!(z e Z, t e T, s e S)f2(z, t, s)]

({f3 (x, y, z, t, s) ^ true, f2 (z, t, s) ^ false}v

fc(a2) ^true)};

(f (x, y) ^ false, f2 ^ f2, fc(a2) ^ false)}v

fc(ai) ^ true)};

me^oin - (f2 ^ f2, fc(ai) ^ false);

[fc(ai)]{[3!(x e X, y e Y)fi(x, y)]

({fc(a2) ^ false; [fc(a2)]

{[3!(z e Z, t e T, s e S)f2(z, t, s)]

msel = fcK) ^ false; [fcK)]

{[3!(x є X, y є Y)f,(x, y)]({[fcond(x, y)] (f2(x, y) ^ true v Re),

f(x, y) ^ false}v f (a0) ^ true)};

mpr = fc(«0) ^ false; [fc(«0)]

{[3!(x є X, y є Y, z є Z, t є Tf(x, y, z, t)] ({f2 (y, z) ^ true, f (x, y, z, t) ^ false} v

fc(«o) ^ true)}-

В приведенных выражениях для модулей PCeAM отношения представлены областями истинности высказывательных функций (предикатов) fi и f2. Переменные x, y, z, t, s принимают значения из множеств X, Y, Z, T, S соответственно. Функция fc со значениями аргумента ао, ai и а2 используется для управления циклами. Аргументы предикатов сравнения fcond и feq должны быть 0-сравнимыми, где 0 - символ операции сравнения. Запись fj-^f означает копирование функции. Запись fi^false означает удаление всех кортежей из отношения, представленного областью истинности высказывательной функции (предиката) fj. Запись f^true означает добавление кортежей в отношение, представленное областью истинности высказывательной функции (предиката) fi, таким образом, чтобы в конечном итоге ее область истинности совпадала с областью определения. Последнее отношение формируется с помощью операции декартова произведения множеств значений атрибутов или значений предметных переменных, определенных для предиката.

Ниже представлены РСеАМ и СеАМ-модули удаления и копирования данных:

mdel1 = fc(a0) ^ false; [fc(a0)]

{[(~!x є X, y є Y)fi(x, y)](fi(x, y) ^ false v

fc(a0) ^ true)}

или

imdel =[~~(x є X, y є Y)fi(x y)](fi(x y) ^ falsev Re) = f ^ false.;

(mdei]- в нотации РСеАМ, mdel - в нотации СеАМ);

mcopy1 = fc(a0) ^ false; [fc(a0)]

{[~! (х е X, у е Y)f2 (x, y)](fi (x, y) ^ true v

fc(ao) ^ true)}

или

mcopy = [(Vx е X, У е Y)f2 (x, y)](f1 (x, y) ^ true v Re) = f ^ f;

(mcopy1 - в нотации РСеАМ, mcopy - в нотации СеАМ);

Удаление всех кортежей из области истинности предиката f и последующее копирование в эту область кортежей из области истинности предиката f2 обеспечивает следующий модуль РСеАМ:

mdel_copy = (mdel; mcopy)-

В плане развития формализмов СеАМ и РСеАМ имеет смысл ввести вместо модулей специальные функции, позволяющие формировать отношения, представленные областями истинности соответствующих предикатов:

m inter * finter (f1, f2 ), m union * f union (f1, f 2 X

mdlff * fdifT (f1 , f2), mjoin

mcart * fcart (f1 , f2 ), meqjoin * feqjoin (f1 , f2 ), msel * fsel (f1 ), mpr *fpr(f1X

mdel *fdel(f1X

Введенные функциональные символы предназначены для использования в качестве сокращающих символов в выражениях СеАМ и РСеАМ, аналогично тому, как используются символы кванторов в исчислении предикатов. Кроме того, данные выражения могут непосредственно интерпретироваться в процессоре базы данных.

Заключение

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

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

ные возможности данных сетей, а также возможности представления декларативной и процедурной информации о функционировании распределенных систем широкого класса и выполнения на данной основе произвольных распределенных вычислительных процедур. Ранняя версия формализма была рассмотрена нами в работах [16, 17]. На основе проведенного в настоящей работе исследования сформулируем следующие выводы:

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

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

3. Сети абстрактных машин имеют преимущества, аналогичные преимуществам широкого класса дискретных сетевых моделей общего вида. Во-первых, они обладают большими выразительными способностями в представлении распределенных асинхронных систем, в том числе способностями представления локального управления, параллельных, конфликтных и асинхронных событий. Во-вторых, возможностью иерархического моделирования на их основе; неинтерпретирован-ность сетевой модели предоставляет возможность описания системы на различных уровнях абстракции и системной иерархии. В-третьих, данные сети обладают способностями к реконфигурации и самомодификации, что существенно расширяет их функциональные возможности.

4. Определенный формализм соответствует такой тенденции создания сетевого программного обеспечения, в котором стираются грани между сетевой операционной системой, распределенной системой управления базой данных и распределенным приложением, а проект "видим" разработчику на всех его этапах.

5. Проиллюстрировано использование предлагаемых моделей и методов в качестве основы для создания программного обеспечения сетевого процессора базы данных на основе согласованных взаимодействий объектов через общее пространство - коммуникационную среду - или общее пространство информационных объектов.

Список литературы

1. Gurevich Y. On Kolmogorov machines and related issues. The logic in computers science column / Y.Gurevich // Bulletin of Europian Assoc. for Theor. Comp. Science. 1998. № 35. Р.71-82.

2. Dexter S. Gurevich abstract state machines and Shonhage storage modification machines / S.Dexter, P.Doyle, Y.Gurevich // Journal of Universal Comp. Science. 1997. Vol.3, №4. Р.279-303.

3.Григорьев Д.Ю. Алгоритмы Колмогорова сильнее машин Тьюринга / Д.Ю.Григорьев // Зап. науч. семинаров Ленинград. отд. Ма-тем. ин-та АН. 1979. № 88. С.15-18.

4. Gurevich Y. Evolving Algebras 1993: Lipari Guide, Specification and Validation Methods / Y.Gurevich, ed. E.Borger. Oxford University Press, 1995. P.9-36.

5. Gurevich Y. Draft of the ASM Guide / Y.Gurevich // University of Michigan EECS Department Technical Report CSE-TR-336-97. May 1997. P.1-27.

6. Плоткин Б.И. Универсальная алгебра, алгебраическая логика и базы данных / Б.И. Плоткин. М.: Наука, 1991. 448 с.

7.Плесневич Г.С. Логические модели / Г.С. Плесневич //Искусственный интеллект: в 3 кн. Кн.2. Модели и методы: справочник / под ред. Д.А.Поспелова. М.: Радио и связь, 1990. С.14-28.

8. Ершов Ю.Л. Математическая логика /

Ю.Л.Ершов, Е.А.Палютин. М.: Наука,

1979. 320 с.

9.Артамонов В.А. Общая алгебра / В.А.Ар-тамонов, В.Н.Салий, Л.А.Скорняков, Л.Н. Шеврин, Е.Г.Шульгейфер. М.: Наука, 1991. 480 с.

10. Маркин В.И. Логика предикатов / В.И. Маркин // Новая философская энциклопедия: в 4 т. Т.2. М.: Мысль, 2000. С.15-18.

11. Глушков В.М. Алгебра. Языки. Программирование / В.М.Глушков, Г.Е.Цейтлин, Е.Л. Ющенко. Киев: Наукова думка, 1978. 320 с.

12. Глушков В.М. Методы символьной мультиобработки / В.М.Глушков, Г.Е.Цейтлин, Е.Л.Ющенко. Киев: Наукова думка, 1980. 252 с.

13. Капитонова Ю.В. Математическая теория проектирования вычислительных систем / Ю.В.Капитонова, А.А.Летичевский. М.: Наука, 1988. 296 с.

14. Суржко С.В. Алгоритмические алгебры / С.В.Суржко, Е.Л.Ющенко, Г.Е.Цейтлин, А.И.Шевченко. Киев: ИСМО. 1997.

15. Мейер Д. Теория реляционных баз данных / Д.Мейер. М.: Мир, 1987. 608 с.

16. Зинкин С.А. Сети абстрактных машин высших порядков в проектировании систем и сетей хранения и обработки данных (базовый формализм и его расширения) / С.А.Зинкин // Известия высших учебных заведений. Поволжский регион. 2007. №3. С.13-22.

17. Зинкин С.А. Сети абстрактных машин высших порядков в проектировании систем и сетей хранения и обработки данных (механизмы интерпретации и варианты использования) / С.А.Зинкин // Там же. № 4. С.12-21.

A network-based FS-architecture of the database machines and executable formal specifications

S. A. Zinkin

Penza State University, 440026, Penza, Krasnaya st., 40

A logical-algebraic approach to operational semantic definition for distributed data processing systems based on the formalism of the abstract machine networks is presented. This paper gives also

an example of definition for the network-based database processor as well as its operational semantic with abstract machine networks used as executable formal specifications.

i Надоели баннеры? Вы всегда можете отключить рекламу.