Flatik.ru

Перейти на главную страницу

Поиск по ключевым словам:

страница 1




Косьмина Я.О.

http://kid.stu.cn.ua/~dart_vader

e-mail: [email protected]


Распределённая параллельная Пролог-система
Традиционно базы данных не имеют универсальных языков обработки данных [1], ограничиваясь языками запросов. С другой стороны универсальные языки обработки данных не имеют возможности работать с большими массивами информации. Также жестко стоит вопрос производительности систем обработки информации.

Различные реализации Пролога уже давно взаимодействуют с базами данных через интерфейсы [2] или драйверы доступа к системам управления базами данных (Amzi, GNU, SWI и др.). Значительный интерес представляет параллелизм и распределение в Акторном Прологе [3], при создании которого его автор, А.А. Морозов, частично решил проблему “необратимых” процессов, существующих вне Пролог-машины, но с которыми Пролог должен взаимодействовать. Ещё одной важной особенностью Акторного Пролога является то, что он позволяет сохранить текущее состояние программы на диск и затем восстановить выполнение этой программы.

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

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



Универсальный язык обработки данных

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

Среди логических языков наибольшую известность получил Пролог. Для Пролога существует стандарт ISO, его интерпретаторы и компиляторы поддерживаются рядом фирм на различных платформах. Эти особенности послужили главными аргументами в пользу выбора языка SWI-Пролог, среди диалектов Пролога – KL1[4] и других логических языков, например языка Рефал [5].

Типичный способ представления данных – таблица, она состоит из строк, а строки – из полей. Проводя аналогию с языком Пролог: поля – это аргументы терма, строки – это факты, а таблицы – предикаты, рис.1.


Т
поле(‘ФИО’, фамилия).

поле(‘ФИО’, имя).

поле(‘ФИО’, отчество).


аблица «ФИО»


Фамилия

имя

отчество

Торндотар

Дария

Тор

Нотар

Ив

Фёрн





‘ФИО’(‘Торндотар’, ‘Дария’, ‘Тор’).

‘ФИО’(‘Нотар’, ‘Ив’, ‘Фёрн’).


Рис.1. Представление реляционной таблицы в Прологе.


Конечно, поля таблиц придётся хранить отдельно – в специальном предикате “поле”.

Отношения между таблицам

и задаются с помощью правил, также как представления (view) и процедуры.

На Прологе легко задаются отношения реляционной алгебры, пример на рис. 2.


select *

from ФИО


where Фамилия = “Торндотар”;




а)

forall( ‘ФИО’('Торндотар', A, B) ).

б)

Рис. 2. Отношение select на SQL (а) и на Прологе (б).
Как уже упоминалось, Пролог является языком обработки данных. Поэтому, например, после выполнения запроса на рис. 2б можно сразу обработать данные. Языки запросов не дают такой возможности.

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



Производительность

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

Распределение предикатов возможно двумя путями:

а) дублирование базы предикатов для всех узлах системы обработки данных;

б) распределение информации по узлам.

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

Существует ряд алгоритмов распределения ресурсов: “распределитель-работники”, хэш-фрагментация и др. [6]. Из рассмотренных алгоритмов для реализации Пролог-системы был выбран алгоритм балансировки, зарекомендовавший себя в проекте FGCS (Fifth Generation Computer Systems) [4]. Этот алгоритм применяется для распределения базы предикатов логического языка, распараллеливания логического вывода и обладает почти линейной зависимостью производительности от числа процессоров.

Производительность сильно зависит от индексации базы предикатов, эта проблема подробно рассматривается в моей статье “Индексация предикатов в Прологе” [7].



Выводы

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



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


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





  1. Хомоненко А.Д. и др., Базы данных. – Спб.: "КОРОНА принт", 2002, 672c.

  2. IF/Prolog / https://www.ifcomputer.co.jp/en/manuals5.2/home.html.

  3. А.А. Морозов, Логический анализ функциональных диаграмм в процессе интерактивного проектирования информационных систем: Диссертация на соискание учёной степени кандидата физико-математических наук, - Москва, 1998.

  4. Transforming CHIP Programs to KL1. Design and Implementation of the CHUKL Preprocessor, Konstantinos D. Varsamos; MSc Thesis, Department of Computer Science University of Bristol: September 1994.

  5. Метавычисления и их приложения (диссертация). С.Абрамов / ftp://ftp.botik.ru/pub/local/Sergei.Abramov/book.appndx/dissertation

  6. В.В. Воеводин, Вл.В. Воеводин, Параллельные вычисления. – Спб.: "БХВ-Петербург" , ISBN: 5-94157-160-7, 2004, 608 c.

  7. Я.О. Косьмина, Индексация предикатов в Прологе, 2004 / https://online.com.ua/~dart/notikoj/index_predicates.html.




Распределённая параллельная Пролог-система

Традиционно базы данных не имеют универсальных языков обработки данных [1], ограничиваясь языками запросов. С другой стороны универсальные языки обработки данных не имеют возможнос

47.64kb.

01 10 2014
1 стр.


3. Логическое программирование 2 Язык Пролог 2

Пролог является декларативным языком логического программирования. Он основывается на языке исчисления предикатов первого порядка и методике автоматического доказательства теорем

1058kb.

01 10 2014
6 стр.


Using Turbo Prolog Для чего нужен Турбо-Пролог?

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

4158.81kb.

09 10 2014
16 стр.


Литература", "Пролог", "Сетевая словесность", "Зарубежные задворки". Тема рассказов творчество, по жанру близки к "магическому реализму" (с примесью мистики). Перелицовка

Рассказы в разное время публиковались в журналах "Новый берег" (журнальный зал), "Новая литература", "Пролог", "Сетевая словесность", "Зарубежные задворки"

640.69kb.

09 10 2014
6 стр.


Случайная величина, распределенная по закону Бернулли

Бернулли подсчитать значение вероятности каждого целого числа X, где X – число появлений события a в n испытаниях

361.93kb.

03 09 2014
1 стр.


3 паспорт программы 4 характеристика существующего состояния коммунальной инфраструктуры 5 Система теплоснабжения 5 Система водоснабжения 8 Система водоотведения 14 Стстема газоснабжения 19

Перспективы развития муниципального образования и прогноз спроса на коммунальные ресурсы 23

1624.16kb.

08 10 2014
15 стр.


Система CyberKnife® Система роботизированной радиохирургии

Система CyberKnife в своем четвертом поколении уникальным образом сочетает в себе технологию постоянного контроля по изображению с управляемой компьютером робототехникой для точног

97.52kb.

26 09 2014
1 стр.


1. Составить программу на языке пролог для поиска ответа на вопрос: ? друг(Х,коля)

Составить программу на языке пролог для поиска ответа на вопрос: ? друг(Х,коля)

97.71kb.

01 10 2014
1 стр.