Программирование внешних баз данных

   
На этом шаге мы рассмотрим программирование внешних баз данных.

   
Рассмотрим некоторые общие принципы и методы работы с системой внешних баз данных Visual Prolog.

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

Просмотр базы данных

   
При использовании систем баз данных важно представлять механизм работы с памятью Visual Prolog. Каждый раз, извлекая
терм из внешней базы данных с помощью предиката ref_term, Visual Prolog помещает его в общий стек. Память, занятая
термом, не освобождается до тех пор, пока программа не выдаст неудачу и не вернется к точке, находящейся перед
вызовом предиката ref_term. Это значит, и последовательного просмотра базы данных необходимо использовать
аналогичный следующему:

% Структура для последовательного просмотра цепочки 
   scan(db_selector,Chain,....):-
      chain_first(db_selector,Chain,Ref).
   scanloop(db_selector,Ref):-
   ref_term(db_selector,mydom,Ref,Term),
   % ... ваши предикаты...
   fail.
   scanloop(db_selector,_):-
      chain_next(db_selector,Ref,NextRef),
      scanloop(db_selector,NextRef).

   
Для последовательного просмотра каталога индексов следует использовать структуру типа:

   % Структура для последовательного просмотра каталога 
   scan(db_selector,Bt_selector):-
      key_first(db_selector,Bt_selector,FirstRef),
      scanloop(db_selector,Bt_selector,FirstRef). 
   scanloop(db_selector,Bt_selector,Ref):-
      ref_term(db_selector,mydom,Ref,Term),
      % ... ваши предикаты...
      fail. 
   scanloop(db_selector,Bt_selector,_):-
      key_next(db_selector,Bt_selector,NextRef),  
      scanloop(db_selector, Bt_selector,NextRef).

   
Вы также можете осуществить последовательный просмотр цепочки в базе данник с использованием предиката
chain_terms:

   % Другой путь последовательного просмотра цепочки 
   scan(db_selector,Chain):-
      chain_terms(db_selector,Chain,mydom,Term,Ref),
      % ... ваши предикаты...
      fail. 
   scan(_,_).

   
Для просмотра В+ дерева вы должны определить и использовать предикат bt_keys. В процессе поиска с возвратом
предикат возвращает каждый ключ в В+ дереве и связанный с ним указатель базы данных.

   predicates
      bt_keys(db_selector,bt_selector,string,ref)
      bt_keysloop(db_selector,bt_selector,string,ref)
   clauses
      bt_keys(Db_selector, Bt_selector,Key,Ref):-
         key_first(Db_selector,Bt_selector,_), 
         bt_keysloop(Db_selector,Bt_selector,Key,Ref).
      bt_keysloop(Db_selector,Bt_selector,Key, Ref):-
         key_current(Db_selector,Bt_selector,Key,Ref). 
      bt_keysloop(Db_selector,Bt_selector,Key,Ref):-
         key_next(Db_selector,Bt_selector,_),
      bt _keysloop(Db_ selector,Bt_selector,Key,Ref).

   
На следующем шаге мы рассмотрим вывод содержания базы данных.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий