Cтраница 2
Механизм Пролога активизируется, как только первый кортеж извлечен из базы данных, интерфейс базы данных и интерфейс Пролога продолжают загружать данные асинхронно. Это позволяет механизму Пролога производить другие запросы до того, как ответ на текущий запрос будет получен полностью. [16]
Каждый интерфейс базы данных получает результат выполнения запроса из БД не полностью, а по нескольку блоков ( страниц) данных, которые помещаются в основную память. Перед тем как механизм Пролога использует всю страницу данных, интерфейс базы данных будет активизирован повторно, в результате чего получается следующая страница ( страницы) данных. Такие средства предвыборки разработаны для уменьшения объема данных, загружаемых в память, а также для уменьшения времени ожидания механизма Пролога. Предвыборка может использоваться для повышения степени параллелизма, так как при этом могут быть активными одновременно несколько интерфейсов базы данных. [17]
Цели или дизъюнкты без головы представляют собой запросы. Когда цель поступает в механизм Пролога, последний пытается доказать истинность цели, используя при этом факты и правила, присутствующие в программе. Пролога попытаться доказать, что Джорджу нравится Люси, используя правила и факты программы. [18]
В этом случае переменные X и У после выполнения получают значения, извлеченные из первого найденного в базе данных кортежа. После того как первый кортеж получен, управление передается механизму Пролога. При этом загрузка остальных кортежей выполняется асинхронно. [19]
Механизм Пролога представляет собой некоторую Пролог-систему, способную выполнять цели языка Пролог. Хотя мы и не намерены при связывании изменять базовое поведение механизма Пролога ( поиск по стратегии сначала вглубь, унификация, бэктрекинг), однако в этом механизме могли быть расширены некоторые средства с целью их адаптации к среде конкретной системы баз данных. [20]
Интерфейс ESTEAM включает алгоритм последовательного построения базовых конъюнкций, начиная с целей Пролога. При слабом связывании все взаимодействия с базой данных происходят перед активацией механизма Пролога. При сильном связывании построение базовых конъюнкций запросов происходит одновременно с вычислением Пролог-программы. Интерфейс ESTEAM допускает дизъюнкцию, отрицание, рекурсию и специальный предикат отсечения ( рассмотренный в разд. Допускаются также агрегатные запросы. [21]
Множество кортежей возвращается целиком. При этом кортежи помещаются в резидентную в оперативной памяти базу данных Пролога, после чего работа механизма Пролога возобновляется с первого кортежа множества. При бэктрекинге механизм Пролога обнаружит следующий кортеж, удовлетворяющий заданной цели, уже в основной памяти. Следовательно, в этом случае сопоставление и бэктрекинг на предикатах базы данных находятся под управленем механизма Пролога. [22]
![]() |
Архитектура ТСРЯ-системы. Цифра 2 над стрелкой обозначает связывание во время выполнения. [23] |
На рис. 4.3 показана общая схема ГСРЯ-систем. Действия по связыванию ( 2) происходят либо во время представления цели, когда новая цель вводится пользователем в механизм Пролога, либо во время выполнения правила, когда некоторое правило активизируется механизмом Пролога, либо во время сопоставления с предикатом базы данных, когда возможно сопоставление с каждым отдельным предикатом базы данных. Эти альтернативы соответственно приводят к ситуациям с уменьшенной степенью связанности. [24]
![]() |
Архитектура ТСРЯ-системы. Цифра 2 над стрелкой обозначает связывание во время выполнения. [25] |
На рис. 4.3 показана общая схема ГСРЯ-систем. Действия по связыванию ( 2) происходят либо во время представления цели, когда новая цель вводится пользователем в механизм Пролога, либо во время выполнения правила, когда некоторое правило активизируется механизмом Пролога, либо во время сопоставления с предикатом базы данных, когда возможно сопоставление с каждым отдельным предикатом базы данных. Эти альтернативы соответственно приводят к ситуациям с уменьшенной степенью связанности. [26]
Программист использующий Пролог, может упорядочить факты и правила наиболее подходящим образом с точки зрения вычислительной эффективности. Механизм Пролога чувствителен к порядку правил и фактов. [27]
Множество кортежей возвращается целиком. При этом кортежи помещаются в резидентную в оперативной памяти базу данных Пролога, после чего работа механизма Пролога возобновляется с первого кортежа множества. При бэктрекинге механизм Пролога обнаружит следующий кортеж, удовлетворяющий заданной цели, уже в основной памяти. Следовательно, в этом случае сопоставление и бэктрекинг на предикатах базы данных находятся под управленем механизма Пролога. [28]
В результате выполнения этого запроса все кортежи удовлетворяющие заданному условию, помещаются в резидентную базу данных Пролога. В качестве имени предиката для полученных фактов берется имя первого отношения в операторе FROM. Выполнение SQL-запроса происходит синхронно: механизм Пролога приостанавливается до тех пор, пока выбранные кортежи полностью не загрузятся в основную память. [29]
Обсудим теперь параллелизм и предвыборку - два разных подхода к повышению эффективности интерфейса Пролог / База данных. Параллелизм достигается путем использования нескольких интерфейсов базы данных, работающих одновременно. При предвыборке заранее определяются данные, необходимые механизму Пролога. Следствием обоих этих подходов является уменьшение задержки со стороны Пролога за счет дополнительных требований к базе данных. [30]