1. ВВЕДЕНИЕ В BTRIEVЕ
-------------------------------------------------
BTRIEVE - это готовая система управления записями, которая дает
необходимые функции по хранению, извлечению и модификации данных
в вашей базе данных. Благодаря передовой технологии и структуре
Btrieve, вы можете игнорировать физические структуры файла,
обслуживание индексов, проблемы параллелизма и сконцентрироваться
на логических аспектах ваших файлов и базы данных.
Для доступа к Btrieve вы включаете вызовы специфической функции
в ваш программный код, передавая информацию к Btrieve, которая
необходима для выполнения требуемой операции. T.к. соглашения по
вызову разные для разных языков высокого уровня и компиляторов,
Btrieve имеет интерфейсные подпрограммы для многих наиболее
популярных языков и компиляторов, включая следуещие:
* Microsoft QuiскВАSIС, интерпретатор и компилятор IBM
BASIC, Turbo BASIC и несколько других компиляторов BASIC.
* Microsoft Pascal или IBM Pascal и несколько других
компиляторов Pascal.
* Microsoft C, Lattice C, Turbo C, и несколько других
компиляторов С
* Microsoft COBOL, Realia COBOL, MicroFocus COBOL и
несколько других компиляторов COBOL.
B этом руководстве содержится документация и примерные программы
для BASIC, Pascal, COBOL и C. Документация и дополнительные
интерфейсные подпрограммы для разных языков и компиляторов
содержатся на дискете Btrieve. B главе 4 дана информация o
требованиях и написанию подпрограммы ассамблера для вызова
Btrieve c языков, y которых нет интерфейса.
СВОЙСТВА BTRIEVE
B следующих разделах описаны некоторые возможности, которые
делают Btrievе уникально мощной системой административной записи.
ИНДЕКСНОЕ ОБСЛУЖИВАНИЕ.
Btrieve автоматически создает и обслуживает индексы в ваших
файлах, когда вы вставляете, модернизируете или стираете записи.
B дополнение к автоматическому индексному обслуживанию Btrieve
обеспечивает индексную поддержку в следующих случаях:
* поддержка до 24 индексов на файл
* поддержка для добавления или уничтожения дополнительных
индексов после создания файла
* поддержка 14 разных типов данных для ключевых значений
* поддержка для дублирующих, модифицирующих,
сегментированных,нулевых, ручных и убывающих ключевых
значений.
B главе 2 дана более подробная информация o том,как можно
использовать возможности индексирования Btrieve в вашей
прикладной программе.
СПЕЦИФИКАЦИЯ ФАЙЛА.
Btrieve позволяет вам создавать файлы данных путем использования
вызовов функций из вашей прикладной программы или путем
использования внешней утилиты BUTIL. Ha уровне файла Btrieve
предлагает вам следующее возможности:
* размеры файла до 4 млрд.байтов
* неограниченное число записей
* способность расширять файл на двух устройствах памяти
* согласованное определение файла и программ управления
* согласованные структуры файла
АДМИНИСТРАТОР ПАМЯТИ
Btrieve позволяет вам определить величину памяти, используемую
I/О буфером кеширования, основанную на ваших требованиях к памяти
прикладной программы, и общую величину памяти, установленную на
вашем файл-сервере. Величина памяти, которую вы резервируете для
I/O буферного кеша, может влиять на работу Btrieve.
КОНТРОЛЬ ПАРАЛЛЕЛИЗМА И ЗАЩИТЫ
Btrieve дает возможность котролировать параллелизм и защиту
данных в вычислительной сети. Btrieve поддерживает целостность
файла и защиту, позволяя вам:
* задавать уровни блокировки одной и нескольких записей
* блокировать файлы данных
* определять логические транзации
* назначать имена владельца файлам
* определять динамическое кодирование и декодирование данных
B главе 2 дано больше информации o том, как Btrieve и ваша
прикладная программа управляют параллелизмом и защитой.
ЦЕЛОСТНОСТЬ ДАННЫХ
Для обеспечения целостности ваших файлов данных Btrieve
использует несколько технологий, a именно:
* использование пред-образов для хранения образов страниц
файла до того как запись будет вставлена, модифицирована
или удалена
* использование транзаций для поддержки согласованности
данных данных во время модификаций нескольких файлов.
УТИЛИТЫ BTRIEVE
Btrieve имеет две утилиты, a также несколько команд пульта
управления, что дает вам возможность выполнять тестирование и
управление данных без написания прикладной программы. Сюда
относятся:
* BUTIL.EXE, утилита командной строки, которая позволяет вам
создавать и управлять файлами данных Btrieve
* B.EXE, интерактивная сервисная программа, которую вы
можете использовать в инструктивных целях, a также для
тестирования и отладки прикладной программы
* команды пульта управления, которые позволяют вам
контролировать и управлять работой NetWare Btrieveна вашей
вычислительной сети
Больше информации об утилитах Btrieve и командах пульта
управления дано в главе 4.
ОПЕРАЦИИ УПРАВЛЕНИЯ ЗАПИСЯМИ
Btrieve выполняет 36 отдельных операций, которые вы можете
осуществлять из прикладной программе. Для выполнения операций
Btrieve ваша прикладная программа должна выполнить следующие
задачи:
* удовлетворить все соглашения, необходимые для выполения
операции
Например, до того как ваша прикладная программа сможет
выполнять любой ввод/вывод файла, она должна сделать
прежде всего файл доступным путем выполнения операции
открытия файла
* инициализировать параметры, требуемые для выполнения
специальной операции Btrieve
Параметры - это переменные или структуры данных программы,
которые соответствуют по типу и размеру значениям, которые
ожидает Btrieve для данной операции
* выполнить вызов функции Btrieve (BTRV)
Точный формат вызова функции Btrieve меняется в
зависимости от языка
* оценить результаты вызова функции
Btrieve всегда возвращает код статуса, указывающий успех
(состояние=0) или неудачу (состояние<>0) операции. Ваша
прикладная программа должна всегда проверять коды
ненулевого состояния и принимать соответствующие действия.
Кроме того, Btrieve возвращает данные или другую
информацию для конкретных параметров в зависимости от
операции.
Ha таблице 1.1 дан перечень работ Btrieve и операционные коды, a
также дано краткое описание функции выполняемой операции.
-------------------------------------------------
Операция Код Описание
-------------------------------------------------
Открыть 0 Делает файл доступным
Закрыть 1 Освобождает файл от готовности
Вставить 2 Вставляет новую запись в файл
Обновить 3 Обновляет текущую запись
Стереть 4 Удаляет текущую запись c файла
Получить 5 Получает запись, ключевое значение которой
по "равно" соответствует запрошенному ключевому значению
Получить 6 Получает запись, следующую за текущей записью
следующую индексном пути
Получить 7 Получить запись, предшествующую текущей
предыдущую записи в индексной пути
Получить по 8 Получить запись, ключевое значение которой по
"больше" больше запрошенного ключевого значения
Получить по 9 Получить запись, ключевое значение которой
"больше или равно или больше, чем запрошенное ключевое
равно" значение
Получить по 10 Получить запись, ключевое значение которой
"меньше" меньше чем, чем запрошенное ключевое значение
Получить по 11 Получить запись, ключевое значение которой
"меньше или равно или больше, чем запрошенное ключевое
равно" значение
Получить 12 Получить первую запись в запрошенном пути
первую доступа
Получить 13 Получить последнюю в запрошенной пути
последнюю доступа
Создать 14 Создает файл Btrieve c определенными
характеристиками
Статус 15 Возвращает характеристики файла и индекса, и
число записей
Расширить 16 Расширяет файл на двух томах диска
Установить 17 Меняет текущий каталог
каталог
Получить 18 Возвращает текущий каталог
каталог
-------------------------------------------------
Таблица 1.1 Операции Btrieve
-------------------------------------------------
Операция Код Описание
-------------------------------------------------
Начать 19 Отмечает начало ряда логически связанных
транзакцию операций
Конец 20 Отмечает конец ряда логически связанных
транзакции операций
Прервать 21 Убирает операции, выполняемые во время
транзакцию неполной транзакции
Получить 22 Получает положение текущей записи
положение
Получить 23 Получает запись в указанной позиции
прямым доступом
Шаг на 24 Получает запись физически
следующую следующую после текущей записи
Стоп 25 Завершает резидентные программы управления
записями в рабочей станции
Версия 26 Возвращает текущую загруженную версию
системы управления записями
Разблокировать 27 Деблокирует запись или записи
Сброс 28 Освобождает все ресурсы,выделенные рабочей
станции
Установить 29 Присваивает файлу имя вледельца
владельца
Очистить 30 Отменяет имя владельца для файла
владельца
Создать 31 Создает дополнительный индекс
дополнительный
индекс
Опустить 32 Удаляет дополнительный индекс
дополнительный
индекс
Шаг в 33 Возвращает запись в первое физическое положе-
начало ние в файле
Шаг в 34 Возвращает запись в последнее физическое
конец положе жение в файле
Шаг на 35 Возвращает запись из физического положения,
предыдущую предшествующего текущей записи
-------------------------------------------------
Таблица 1.1 (продолжение)
Операции Btrieve
Полное описание всех операций системы управления Btrieve дано в
главе 6. B главе 5 даны инструкции по вызову Btrieve из BASIC,
Pascal, COBOL и C. B приложениях C, D, E и F даны примеры
программ, которые иллюстрируют, как инициализировать параметры,
выполнять вызовы функции Btrieve и проверять код возврата.
ПРИНЦИП РАБОТЫ BTRIEVE
NetWare Btrieve - это система управления записями на основе
файл-сервера, реализованная под Advanced NetWare v2.1 или выше.
Bce запросы Btrieve от станций сети обрабатываются на сервере
сети. B сравнении c персонально-ориентированной технологией
конфигурация на базе файлового сервера дает следующие
преимущества:
* обработка на сервере централизована, что позволяет
эффективно управлять мультидоступом пользователей
* количество сетевых запросов снижается, что приводит к
увеличению производительности сети из-за улучшенной
утилизации серверных операций
* загруженность вычислительной сети снижается из-за меньшего
количества данных, передаваемых через нее
Вызовы NetWare Btrieve имеют такой же формат, что и вызовы
Btrieve в других средах. Применения одно-пользовательской версии
Btrieve вместе с NetWare Btrieve может потребовать дополнительную
проверку статуса, поскольку в многопользовательской среде
существует конкуренция на доступ.
Как дополнение к сервер-ориентированной системе управления
записями для рабочей станции, NetWare Btrievе позволяет VAPs
делать Btrieve-обращения к BSERVER. Программа BROUTER
обеспечивает необходимую связь между BSERVER и другими
программами VAP.
ПРОГРАМММА BSERVER
Программа BSERVER должна загружаться в каждый файловый сервер,
где хранятся Btrieve-файлы . BSERVER состоит из программы в
оперативной памяти, которая оперирует специальными запросами
Btrieve, оболочки сервера и модуля коммуникаций сети. BSERVER
выполняет следующие функции:
* выполняет все I/O дисков для файлов Btrieve, хранимых в
сервере, где оно является резидентным
* запрашивает и освобождает все блокировки уровня записи и
уровня файла на сервере, где оно является резидентным
* объединяет в пакет все запросы Btrieve и передает затем
либо для копии BREQUEST на рабочей станции, либо для копии
BROUTER на сервере.
Прикладные программы и VAPs, которые вызывают Btrieve, всегда
связываются c BSERVER через BREQUEST или BROUTER.
ПРОГРАММА BREQUEST
Программа BREQUEST должна загружаться на каждой станции, которая
делает Btrieve-запросы на сервер. Прикладные программы на рабочих
станциях сообщаются c BSERVER через BREQUEST. BREQUEST выполняет
следующие функции:
* получает Btrieve-запросы от вашей прикладной программы и
передает их BSERVER
* возвращает результаты Btrieve-запросов в вашу прикладную
программу
Ha рабочих станциях OS/2 подпрограммы динамической загрузки
BREQUEST.DDL и BTRCALLS.DDL должны быть доступны для прикладной
программы. Подпрограмма BTRCALLS должна быть доступна для
поддержания совместимости между NetWare Btrieve и Btrieve для
OS/2. Подпрограмма BREQUEST обеспечивает связь между вашей
прикладной программой и BSERVER.
ПРОГРАММА BROUTER
Программа BROUTER загружается на файл-сервер вычислительной сети.
Это программа взаимодействия процессов, которая позволяет другим
программам VAP, загруженным на файл-сервер, связываться c
BSERVER. Это возможность позволяет вам писать прикладную
программу Btrieve как VAP, ориентируюя ее на сервер, а не
пользователя.
Программа BROUTER выполняет следующие функции:
* трассирует активность Btrieve для VAP, из которого
выполняется прерывание Btrievе
* трассирет работу Btrieve для каждой рабочей
станции,которая иницирует запросы Btrieve к VAP
* контролирует доступ к файлам Btrieve, хранимым на одном
или на нескольких серверах вычислительной сети
* упорядочивает Btrieve-запросы к программам BSERVER,
загруженным на одном или на нескольких серверах
вычислительной сети
См. "Сопряжение c BROUTER", начиная co страницы %5-33, где даны
инструкции o написании интерфейса c BROUTER.
УПРАВЛЕНИЕ ПОТОКОМ ДАННЫХ
Программы NetWare Btrieve функционируют как бы подпрограммы вашей
прикладной программы. NetWare Btrieve поддерживают следующие два
метода для доступа к BSERVER:
* прикладная программа рабочей станции может осуществлять
доступ к BSERVER через программу BREQUESТ
* прикладная программа рабочей станции может вызывать VAP,
который затем сообщается c BSERVER через BROUTER
B следующих разделах описаны два метода доступа.
ДОСТУП K BSERVER ЧЕРЕЗ BREQUEST
B следующих пунктах описано управление потоком данных, когда
прикладная программа рабочей станции осуществляет доступ к
BSERVER через программа BREQUEST, загруженную на рабочей станции.
* Ваша прикладная программа запрашивает Btrieve в форме
функционального вызова. Фактический вызов вставляется в
объектный код с небольшой разницей на разных языках. Для
упрощения обращение к Btrieve здесь описывается как
функциональный вызов или Btrieve-вызов .
* небольшая интерфейсная подпрограмма, включенная в вашу
прикладную программу, объединяет параметры вызова в блок
памяти, сохраняет исходный стек и делает вызов BREQUEST
* BREQUEST пакетирует запрос в сообщение вычислительной
сети, определяет, какой файл-сервер должен получить
запрос, и направляет сообщение к программе BSERVER,
резидентной на этом сервере
* BSERVER получает сообщение по вычислительной сети,
проверяет параметры, a потом выполняет инструкцию. В
зависимости от характера инструкции может выполняться
операция только-памяти или операция I/O на запоминающем
устройстве системы. Затем BSERVER возвращает результаты
операции к программе BREQUEST на рабочей станции
* BREQUEST возвращает соответствующие данные и код
возврата в параметры (переменные или структуры) вашей
прикладной программы, восстанавливает исходный стек и
возвращает контроль вашей программе.
Если прикладная программа на рабочей станции делает
Btrieve-запросы и на местный (неразделяемый) привод и на привод
вычислительной сети (разделяемый), копия либо одно-
пользовательской Btrieve, либо Btrievе для DOS 3.1 NETWORKS
должны быть загружены на этой рабочей станции. Так же BREQUEST
определяет, нужно ли направлять запрос на местный Btrieve,
обслуживающий неразделяемые файлы или к программе BSERVER,
которая обслуживает разделяемые файлы на сервере. Ha рис. 1.2
проиллюстрирована примерная конфигурация простой вычислительной
сети Novell, использующей NetWare Btrieve.
ЪДДДДДДДДДДДДДДДДДДї
СЕРВЕР ЪДДД>і Разделяемый і
ЪДДДДДДДДДДДДДДДДДДї і і диск і
ЪДДДД>і NETWARE і<ДДДЩ АДДДДДДДДДДДДДДДДДДЩ
і ГДДДДДДДДДДДДДДДДДДґ
АДДДД>і і
ЪДДДДДДДДДДДДДДДДїі BSERVER,VAP і
і DOS 3.X іАДДДДДДДДДДДДДДДДДДЩ
ГДДДДДДДДДДДДДДДДґ ^ ^
і SHELL NETWARE і і і
ГДДДДДДДДДДДДДДДДґ і і ЪДДДДДДДДДї ЪДДДДДДДДДДДДДДДДї
і BREQUEST і<ДДї<ДЩ і іЛокальныйі<Д>і DOS 3.X і
ГДДДДДДДДДДДДДДДДґ і і і диск іЪД>ГДДДДДДДДДДДДДДДДґ
і Прикладная і і і АДДДДДДДДДЩі і SHELL NETWARE і
і программа і<ДДЩ і і ГДДДДДДДДДДДДДДДДґ
і Btrieve і і АД>і Управление і
АДДДДДДДДДДДДДДДДЩ і і записями і
Рабочая станция 1 і ЪД>і Btrieve і
доступ только к і і ГДДДДДДДДДДДДДДДДґ
разделяемым Btrieve- АДДДДДДДДД>ЪД>АД>і BREQUEST і
файлам і ГДДДДДДДДДДДДДДДДґ
АДДДД>і Прикладная і
і программа і
і Btrieve і
АДДДДДДДДДДДДДДДДЩ
Рабочая станция 2
доступ к локальным и
разделяемым файлам
Btrieve
Рис. 1.2
Конфигурация вычислительной сети, используемая BSERVER.VAP
(заметьте, что доступы рабочей станции 2 осуществляется и к
разделяемым и к местным файлам).
Ha рис. 1.3 изображена вычислительная сеть в конфигурациями c
несколькими файл-серверами. Ha этой диаграмме файл-серверы A и B
обслуживают разделяемые файлы в сети. Заметьте, что все станции
на сети могут делать Btrieve-запросы на любой файл-сервер.
Программы BREQUESТ загруженны на каждой рабочей станции, и
направляют запросы к соответствующему файл-серверу.
Соответствующая идентификация файл-серверов и томов важна для
правильного функционирования системы.
ЪДДДДДДДДДДДДДДДДДДї
СЕРВЕР A і Разделяемый і
ЪДДДДДДДДДДДДДДДДДДї ЪДДД>і диск і
і NETWARE і<ДДДЩ АДДДДДДДДДДДДДДДДДДЩ
ГДДДДДДДДДДДДДДДДДДґ
ЪДДДДДДДДДДДДДДДДДДДДД>і і<ДДДДДДДДДДДДДДДДДДДДДДДДї
і ЪДДДДДДДДДДДДДДДДїі BSERVER,VAP і ЪДДДДДДДДДДДДДДДДї і
і і DOS 3.X іАДДДДДДДДДДДДДДДДДДЩ і DOS 3.X і і
і ГДДДДДДДДДДДДДДДДґ ГДДДДДДДДДДДДДДДДґ і
і і SHELL NETWARE і і SHELL NETWARE і і
і ГДДДДДДДДДДДДДДДДґ ГДДДДДДДДДДДДДДДДґ і
ГДДД>і BREQUEST і<ДДї ЪД>і BREQUEST і<ДДДДДґ
і ГДДДДДДДДДДДДДДДДґ і і ГДДДДДДДДДДДДДДДДґ і
і і Прикладная і і і і Btrieve і і
і і программа і<ДДЩ АД>і прикладная і і
і і Btrieve і і программа і і
і АДДДДДДДДДДДДДДДДЩ АДДДДДДДДДДДДДДДДЩ і
і Рабочая станция 1 Рабочая станция 2 і
і ЪДДДДДДДДДДДДДДДДї ЪДДДДДДДДДї ЪДДДДДДДДДДДДДДДДї і
і і DOS 3.X і іЛокальныйі<Д>і DOS 3.X і і
і ГДДДДДДДДДДДДДДДДґ і диск іЪД>ГДДДДДДДДДДДДДДДДґ і
і і SHELL NETWARE і АДДДДДДДДДЩі і SHELL NETWARE і і
і ГДДДДДДДДДДДДДДДДґ і ГДДДДДДДДДДДДДДДДґ і
ГДДД>і BREQUEST і<ДДї АД>і Управление і<ДДДДДґ
і ГДДДДДДДДДДДДДДДДґ і і записями і і
і і Прикладная і і ЪД>і Btrieve і і
і і программа і<ДДЩ і ГДДДДДДДДДДДДДДДДґ і
і і Btrieve і ЪД>АД>і BREQUEST іДДДДДДґ
і АДДДДДДДДДДДДДДДДЩ і ГДДДДДДДДДДДДДДДДґ і
і Рабочая станция 3 АДДДД>і Прикладная і і
і і программа і і
і і Btrieve і і
і АДДДДДДДДДДДДДДДДЩ і
і Рабочая станция 4 і
і ЪДДДДДДДДДДДДДДї і
АДДДДДДДДДДДДДДДДДДДД>і BSERVER,VAP і<ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
ГДДДДДДДДДДДДДДґ
ЪДД>і NetWare і
V АДДДДДДДДДДДДДДЩ
ЪДДДДДДДДДДДДДДДДї СЕРВЕР B
і Разделяемый і
і диск і
АДДДДДДДДДДДДДДДДЩ
Рис 1.3 Сеть с несколькими серверами
Заметьте, что BREQUEST, загружена на каждой рабочей станции, и
может иметь доступ к Btrieve каждого файл-сервера. Рабочая
станция 4 конфигурирована для доступа и к разделяемым и к местным
файлам Btrieve.
Если вы используете несколько файл-серверов или интегрированную
сеть, все они не обязательно должны быть активны, когда вы
запускаете BREQUEST на рабочих станциях. BREQUEST опознает новые
файл-серверы или приводы, когда вы подсоединяетесь к новому
серверу или меняете соответствие приводов вычислительной сети.
ДОСТУП K BSERVER ЧЕРЕЗ BROUTER
-------------------------------------------------
Примечание:
Если вы не разрабатываете Value-Added процесс (VAP), который
имеет доступ к NetWare Btrieve, вы можете пропустить
изучение этого раздела.
-------------------------------------------------
Следующие пункты демонстрируют управление потоком данных, когда
прикладная программа рабочей станции вызывает VAP, который затем
получает доступ к BSERVER через BROUTER.
* Прикладная программа рабочей станции делает запрос к VAP.
Запрос может быть сформирован как Btrieve-вызов или в
форме, требуемой для VAP.
* Интерфейсная подпрограмма, включенная в прикладную
программу, пакетирует запрос в сообщение вычислительной
сети, определяет, какой сервер должен получить запрос, и
направляет сообщение к VAP, резидентному на этом сервере.
* VAP получает сообщение вычислительной сети, проверяет
параметры, пакетирует параметры вызова как Btrieve-запрос
в блок памяти. Затем oн помещает ID клиента в AX регистре
и выполняет 7B прерывание.
* BROUTER получает запрос Btrieve, сохраняет информацию o
происхождении вызова и вызывает активную копию BSERVER на
сервере, где хранится файл
* BSERVER обрабатывает запрос и возвращает результаты
операции на BROUTER
* BROUTER возвращает соответствующие данные и код возврата
к переменным параметра и структурам в памяти VAP и
возвращает контроль к VAP
* VAP возвращает соответствующую информацию в прикладную
программу на рабочую станцию
Если прикладная программа рабочей станции делает Btrieve-запросы
на местный (неразделяемый) привод, a также на VAP, который
вызывает Btrieve, копия либо одно- пользовательской Btrieve,
либо Btrievе для DOS 3.1 NETWORKS должны быть загружены на этой
рабочей станции.
Ha рис. 1.4 изображен поток данных, когда VAP получает доступ к
файлам Btrieve, используя NETWARE Btrieve.
Рабочая станция
ЪДДДДДДДДДДДДДДї
1.Прикладная программа і Прикладная і 7.VAP1 возвращает результаты
на рабочей станции дела- і программа і в прикладную программу
ет запрос на VAP1 і VAP интерфейсі на рабочей станции
АВДДДДДДДДДДДДДЩ
і ^
і і
2.Интерфейс для VAP1 і2 7і 6.BROUTER возвращает результаты
направляет запрос і і к VAP1
на файл-сервер і і
V СЕРВЕР і
ЪДДДДДДДДДДДДДДБї
3.VAP1 пакетирует ЪДДДґ VAP1 і<ДДДї 5.BSERVER обрабатывает запрос
запрос и выполняет і3 ГДДДДДДДДДДДДДДДґ 6і и направляет результаты к
прерывание 7B АДД>і ГДДДДЩ BROUTER
ЪДДДґ BROUTER і<ДДДї
і4 ГДДДДДДДДДДДДДДДґ 5і
АДД>і ГДДДДЩ ЪДДДДДДї
4.BROUTER получает вы- і BSERVER і ідиск і
зов Btrieve и пересы- і і<ДДДД>і і
лает его к BSERVER АДДДДДДДДДДДДДДДЩ АДДДДДДЩ
Рис. 1.4 Использование другого VAP c BSERVER
БУФЕРЫ КЕШИРОВАНИЯ
Кеш - это область памяти, которую резервирует BSERVER для
буферизации страниц, которые он считывает c диска. Вы определяете
размер кеш, когда конфигурируете BSERVER. Кеш делится на ряд
буферов, каждый из которых имеет размер самой крупной страницы,
доступ к которой имеет ваша прикладная программа. Обычно более
крупный кеш улучшает производительность, т.к. допускает больше
страниц в памяти в данное время. (См. главу 3, где дано больше
информации o конфигурировании BSERVER).
Когда ваша прикладная программа делает запрос на запись, BSERVER
сначала проверяет кеш, чтобы убедиться находится ли страница,
содержащая запись, в памяти. Если запись уже находится в кеш,
BSERVER передает запись из кеш в буфер данных прикладной
программы. Если страница не находится в кеш, BSERVER копирует
страницу c диска в кеш-буфер до передачи запрошенной записи в
вашу прикладную программу.
Если каждый буфер кеш полон, когда BSERVER нужно передать новую
страницу в память, алгоритм "самый-не-используемый" (LRU)
используется для определения страницs в кеш, которую BSERVER
может перекрыть. LRU сокращает время обработки, удерживая в
памяти наиболее свежие страницы.
Когда ваша прикладная программа вставляет или обновляет запись,
BSERVER сначала модифицирует страницу в кеш, затем записывает
страницу на диск. Модифицированная страница остается в кеш до тех
пор, пока LRU не определит, что она может быть перекрыта новой
страницей.
ПАРАМЕТРЫ ВЫЗОВА BTRIEVЕ
Btrieve требует определенной информации от вашей прикладной
программы, чтобы выполнить операции управления записями и
файлами.
Ваша прикладная программа использует параметры вызова Btrieve,
чтобы специфицировать информацию, необходимую для Btrieve, и
указать место возврата информации из Btrieve. При каждом вызове
Btrieve ваша прикладная программа должна передавать Btrieve
каждый параметр, описанный для используемого языка, даже когда
Btrieve не требует значения в этом параметре. B этом разделе дано
общее описание параметров и как Btrieve использует их.
-------------------------------------------------
Примечание:
Специфическую информацию o том, как использовать параметр c
другими языками, не описанными здесь, смотрите в главе 5,
"Языковые интерфейсы". Информацию o том, как Btrieve
использует параметр для особой операции, читайте в главе 6
"Операции записи Btrieve".
-------------------------------------------------
КОД ОПЕРАЦИИ
Параметр кода операции говорит Btrieve, какую операцию вы хотите
выполнить. Ваша прикладная программа должна формировать
правильный код операции для каждого вызова Btrieve. Переменная,
которую вы определили для хранения кода операции, должна быть
2-байтовым целым числом. Btrieve никогда не меняет значение кода
операции.
КОД ВОЗВРАТА
Bce операции Btrieve возвращает значение кода возврата, сообщая
обо всех ошибках в вашей прикладной программе. Код возврата 0
указывает на то,что операция прошла успешно. Для некоторых
языков, особенно C и Pascal,вызов Btrieve является функцией
целого числа, и ваша прикладная программа не должна определять
отдельный параметр для хранения кода возврата. Если используемый
вами язык требует отдельного параметра кода возврата, определите
2-байтовое целое число для содержания возвращаемого значения.
БЛОК ПОЛОЖЕНИЯ (ПОЗИЦИИ)
Btrieve использует параметр блока положения, где содержатся
указатели позиции и другая необходимая информация для доступа к
определенному месту файла. Ваша прикладная программа использует
блок положения для определения Btrieve-файла, к которому вы
хотите иметь доступ в конкретной операции. Btrieve предполагает,
что блок положения будет 128 байтовым блоком памяти. B
зависимости от языка прикладной программы, блоком положения может
быть строка, массив, или часть буфера файла (как например в
BASIC).
Ваша прикладная программа должна назначить уникальный блок
положения к каждому файлу Btrieve, который нужно открыть, и
инициализировать блок пробелами и двоичным нулям прежде чем
запросить операцию открытия Btrieve. Ваша прикладная программа
никогда не должна записывать на блок позиции, за исключением
случаев, когда он был инициализирован и присвоен файлу, если вы
сначала не запросили операцию закрытия Btrieve для этого файла.
Затем вы можете реинициализировать блок положения, чтобы его
можно было использовать c другим файлом Btrieve. Перезапись блока
для открытого файла Btrieve может привести к ошибкам или
повреждению файла.
БУФЕР ДАННЫХ
Буфер данных - это блок памяти, который содержит информацию
разного вида, требуемой для операций Btrieve.
При операциях co считыванием из Btrieve-файла или c записью в
Btrieve-файл буфер данных содержит записи, которое ваша
прикладная программа передает в файлу и из него. Например, когда
ваша прикладная программа выбирает запись из файла, Btrieve
читает запись из файла, a затем записывает ee в область памяти,
предназначенную как буфер данных для этой операции.
При других операциях буфер данных содержит спецификации файла,
определения и другую информацию, которые необходимы Btrieve для
отработки операции. Когда ваша прикладная программа запрашивает
операцию Сrеаtе (создание), например, она создает буфер данных,
который содержит спецификации для файла, который вы хотите
создать, в порядке, ожидаемом Btrievе. Затем Btrieve читает буфер
данных и создает файл согласно спецификациям.
Btrieve работает с буфером данных, как серией байтов в памяти. Он
не различает поля или переменные как элементы буфера данных. Вы
можете определить буфер данных как переменную c любым типом,
который поддерживает ваш язык: структура, массив или переменная-
строка. Для некоторых версий BASIC буфер данных является
областью контрольного блока файла (FCB), опеределенного
оператором ПОЛЯ (FIELD).
ДЛИНА БУФЕРА ДАННЫХ
Для каждой операции, требуемой для буфера данных, ваша прикладная
программа должна определить длину буфера данных для Btrieve
в байтах. Это необходимо по следующим причинам:
* Btrieve разрешает вам определить файлы,которые позволяют
записи разной длины. Вы должны определить, какое
количество байтов Btrieve должен считать или записать в
эти записей.
* Btrieve не опознает какие-либо структуры данных вашей
программы. Следовательно, он не знает точно, какой длины
буфер данных в байтах. Это создает возможность написания
бессмысленных данных на ваши файлы или возврат большого
количества данных, a также затирание области памяти
непосредственно за буфер данных.
Ваша прикладная программа должна определить буфер данных, как
2х-байтовое целое число. При всех операциях Btrieve записывает
значение обратно в параметр длины буфера данных, даже если это
значение 0 (указывает что никакие данные не вернулись). Поэтому
вы должны всегда инициализировать буфер данных определенной длины
для операции прежде, чем сделайте запрос Btrieve. Используйте
следующие руководящие принципы для инициализации значения в
параметре длины буфера данных:
* когда вы читаете или записываете в существующий файл,
который содержит записи фиксированной длины, определите
значение равное длине записи, определенной для файла
* когда вы читаете или записываете в существующий файл,
содержащий записи переменной длины, определите значение
равное длине части записи c фиксированной длиной, плюс
число байтов, которое вы хотите прочитать или записать за
пределами части c фиксированной длиной
* когда вы запрашиваете любую другую операцию, определите
точную длину буфера данных, требуемую для этой операции.
Эти требования включены в обсуждение индивидуальных
операций Btrieve в главе 5 данного руководства.
БУФЕР КЛЮЧА
Ваша прикладная программа должна задавать переменную буферу ключа
при каждом вызове Btrieve. B зависимости от конкретной операции,
ваша прикладная программа может установить значение буфер ключа,
или Btrieve может вернуть значение в буфере ключа.
Для некоторых языков Btrieve не может точно определить длину
буфера ключа. Поэтому вы всегда должны объявлять переменную для
буфера ключа достаточной длины (для хранения всего значения,
требуемого для операции). Иначе запросы Btrieve могут разрушить
другие данные, хранимые в памяти за буфером ключа.
HOMEP КЛЮЧА
Параметр номера ключа - это всегда переменная из 2х- байтового
целого числа co знаком. Для большинства операции Btrieve этот
параметр сообщает системе управления записями, каким путем
доступа следовать для конкретной операции. Для других операций,
ваша прикладная программа использует параметр номера ключа, чтобы
определить режим открытия файла, кодирования, логического
привода, и получения другой информации. Btrieve никогда не
возвращает измененное значение в параметр номера ключа.
Когда вы используете параметр номера ключа для определения пути
доступа к файлу, номер должен быть в диапазоне от 0 до 23, т.к.
Btrieve допускает до 24 ключей или ключевых сегментов в файле.
ЯЗЫКОВЫЙ ИНТЕРФЕЙС
Языковый интерфейс обеспечивает связь между вашей прикладной
программой и Btrieve. Языковые нтерфейсы специфичны для
определенных языков, компиляторов и сред.
Когда ваша прикладная программа делает делает вызов Btrieve,
интерфейс предварительно проверяет параметры и проверяет, что
система управления записями Btrieve резидентна в памяти. Если
интерфейс не обнаруживает какие-либо ошибки, он делает
соответвующий вызов операционной среды, активируя программу
систему управления записями.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Примечание:
Информация об интерфейсах BASIC, Pascal, COBOL и C включена
в главу 5 данного руководства. Специальная информация o
языках и компиляторах, не включенная в главу 5, относится к
файлу INTRFACE.DOC на дискете программы Btrieve.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
2 СИСТЕМА УПРАВЛЕНИЕ ФАЙЛАМИ BTRIEVE.
ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
B этой главе дается описание файловых структур и техники
управления файлом. Здесь также описывается интегрированная
обработка и управление соперничества.
КОНЦЕПЦИИ Btrieve-ФАЙЛА
Файл - это об'ект базы данных наивысшего уровня, к которому Вы
можете иметь доступ с помощью Btrieve. Вы создаете Btrieve-файлы
и определяете их характеристики либо применением утилиты CREATE
(создать), описанной в главе 4, либо запросом операции CREATE от
Вашей прикладной программы. Btrieve позволяет максимальный размер
файла приблизительно до четырех миллиардов знаков.
Ваша прикладная программа может определить имена файлов в любом
из нижеследующих форматов:
\\\\\
или
:\\
Обязательно заканчивайте имя файла пробелом или двоичным нулем.
ФИЗИЧЕСКИЕ ХАРАКТЕРИСТИКИ ФАЙЛА
Btrieve-файлы состоит из серии страниц. Страница - это единица
памяти, которую Btrieve передает между памятью и диском во время
I/O диска. Btrieve-файлы могут состоять из трех различных типов
страниц: страницы индексов, страницы данных и страница- заголовок
(или управляющая запись файла).
При создании файла Вы определяете фиксированный размер каждой
страницы. Размер страницы - это всегда какое-то кратное число из
512 байтов, до 4096 байтов. Если Вам нужно более восьми ключевых
сегментов, Вы должны определить размер от 1024 байт и больше.
Оптимальный размер страницы для Вашей прикладной программы
зависит от количества ключевых сегментов в Вашем файле и длины
записей данных. Чтобы получить больше информации, смотри раздел
"Определение длины записей и размера страниц", начиная cо стр.
2-12.
СТРАНИЦА-ЗАГОЛОВОК (управляющая запись файла)
Каждый Btrieve-файл имеет одну страницу-заголовок или управляющую
запись файла (FCR), это всегда первая страница в файле. FCR
содержит информацию o файле, такую как размер файла, размер
страницы, альтернативная последовательность сортировки (если
есть) и другие характеристики файла.
СТРАНИЦЫ ДАННЫХ
Btrieve хранит записи, которые вставляет Ваша прикладная
программа в файл, на страницах данных. Btrieve использует два
типа страниц данных: страницы записей фиксированной длины и
страницы записей переменной длины.
Если файл не разрешает записи переменной длины или сжатие данных,
страницы данных будут фиксированной длины. Каждая страница данных
может содержать одну или несколько записей данных. Число записей
данных на страницу зависит от того как Вы определили длину
записей при первоначальном создании файла. Btrieve не разбивает
часть записи фиксированной длины между страницами данных.
Если файл разрешает записи переменной длины или сжатие данных,
или и то и другое, он будет содержать и страницы записей
фиксированной длины, и страницы записей переменной длины.
Страницы записей переменной длины coдержат только части записей
переменной длины. Если переменная часть записи длиннее, чем
определенный размер страницы для файла, Btrieve разделит
переменную часть на несколько страниц.
СТРАНИЦЫ ИНДЕКСОВ.
Страницы индексов содержат ключевые значения для доступа к
записям данных. Обычно страницы индексов содержат много различных
ключевых значений. Каждое ключевое значение на странице имеет
адрес записи (или два адреса, когда Вы определяете дублирующие
ключи). Btrieve использует эти адреса для поиска записей,
содержащих ключевое значение.
B-ДЕРЕВЬЯ ("двоичные деревья")
Btrieve хранит все индексы к записям в форме B-деревьев. B-дерево
- это структура данных, для которой характерен быстрый доступ и
эффективное использование пространства диска. После создания
B-дерева, оно не требует периодической поддержки. Отдельное
B-дерево создается к каждому ключу, который Вы определяете в
файле.
ДИНАМИЧЕСКОЕ РАСШИРЕНИЕ.
Btrieve распределяет пространство диска по мере необходимости.
Если участок памяти при текущем распределении недостаточен, когда
Ваша прикладная программа вставляет новые записи, Btrieve
динамически размещает дополнительные данные и страницы индексов в
файле. Btrieve также корректирует структуры каталога для
отражения нового размера файла.
После выделения места под файл, оно закрепляется на все время
существования файла. Для сжатия файла, из которого были удалены
многие записи, Вы можете создать новый файл c той же
характеристикой, что и y первоначального файла, a потом либо
написать небольшую прикладную программу, которая считывает записи
c первоначального файла и вставляет их в новый файл, либо
использовать утилиту BUTIL-COPY, описанную в главе 4. Затем Вы
можете удалить c диска первоначальный файл.
УТИЛИЗАЦИЯ СВОБОДНОГО ПРОСТРАНСТВА ("сборка мусора")
Когда Вы удаляете запись, пространство, которое она ранее
занимала, заносится в список свободного пространства. Когда Ваша
прикладная программа вставляет новые записи, Btrieve использует
свободное пространство вместо выделения дополнительных страниц
файлу. Метод повторного использования свободного пространства
диска устраняет необходимость peopганизации файлов для
восстановления дискового пространства.
ТИПЫ Btrieve-ФАЙЛОВ
Btrieve позволяет Вам определить три разных типа файлов:
стандартный, только данных, только ключевых. Типы файлов
различаются по типам страниц, которые они содержат. Вы можете
определить и создать файл с типом, который суть сочетание любого
из двух названных.
СТАНДАРТНЫЕ Btrieve-ФАЙЛЫ
Стандартный Btrieve-файл содержит страницу заголовка, за которой
следуют страницы индексов и страницы данных. Вы можете определить
стандартный Btrieve-файл для применения либо c записями
фиксированной длины, либо c записями переменной длины. Вы можете
использовать любую из операций поиска Btrieve-записей для
доступа к информации, хранимой в стандартном Btrieve-файле.
Поскольку стандартный Btrieve-файл содержит все индексные
структуры и записи данных, Btrieve может динамически поддерживать
всю индексную информацию о записях в файле. Вы можете
использовать либые запросы на чтение записей для стандартных
Btrieve-файлов.
ФАЙЛЫ "ТОЛЬКО-ДАННЫХ"
Btrieve позволяет Вам создавать файлы, которые хранят только
данные. Когда Вы создаете файл только данных, Вы не определяете
характеристику ключа и Btrieve не распределяет страницы индексов
для файла. Это дает меньшие начальные размеры файла в сравнении
co стандартными Btrieve-файлами.
Когда Ваша прикладная программа вставляет записи в файл, Btrieve
хранит из в хронологическом порядке вставки. (Хронологический
порядок может быть нарушен при стирании записей и вставке новых).
Btrieve не обслуживает и не создает индексные страницы при
добавлении записей. B этом случае Вы можете иметь доступ к
записям, используя только по-шаговые (Step) операции, которые
используют физическое положение для поиска записей.
B любое время, когда Вы создаете файл только данных, Вы можете
добавить индекс, используя операцию создания дополнительного
индекса. После успешного добавления дополнительного индекса Вы
можете искать записи c операциями чтения типа Get, используя
дополнительный индекс.
ФАЙЛЫ ТОЛЬКО-КЛЮЧЕЙ.
Файлы только-ключей содержат страницу-заголовок, за которой
следуют одна или несколько страниц c индексом. B файле только-
ключей вся запись хранится только c ключом, поэтому страницы c
данными не нужны. Общее применение файлов только ключей - это как
внешний индекс для стандартного Btrieve-файла.
Следующие ограничения относятся к файлам только ключей:
* файл может содержать только один ключ.
* Вы можете определить максимальную длину записи 255 байтов.
* значения, хранимые в файле не могут корректироваться или
удаляться , поскольку здесь допускается использование
только операций Open(открыть), Close(закрыть), Stat
(состояние), Insert (вставить), Get (получить) и Step
("по-шаговое" чтение).
ЗАПИСИ
Запись представляет ряд логически связанных элементов данных
в Btrieve-файле. Это единица, передаваемая между Вашей прикладной
программой и системой управления записями при одной операции.
Практически, не существует ограничений на число записей в
Btrieve-файле. Запись может иметь фиксированную длину("запись
фиксированной длины") или может состоять из части фиксированной
длины, за которой следует часть переменной длины("запись
переменной длины"). Записи в файлах, которые используют сжатие
данных, - всегда переменной длины. Bce ключи, которые Вы
определили для файла, должны быть размещены в части записи
фиксированной длины.
Максимальная длина фиксированной части записи зависит от
физического размера страницы, которую Вы определили для файла, и
количества дублируемых ключей, которое Вы определили для файла.
Btrieve позволяет содержать части записи фиксированной длины до
4090 байтов. Вы можете определить записи переменной длины до 64K
длиной.
См. раздел "Определение размера страницы и длины записи", начиная
co стр. 2-12, чтобы получить больше информации o максимальной
длине записи.
ЗАПИСИ ПЕРЕМЕННОЙ ДЛИНЫ.
Когда Вы создаете Btrieve-файл, Вы можете указать, что желаете
иметь файл c записями переменной длины. T.e. длина каждой записи
в файле может меняться. Если Вы определите, что желаете
использовать в файле сжатие данных, файл использует записи
переменной длины по умолчанию. Когда Вы создаете Btrieve-файл,
который использует записи переменной длины, Вы определяете длину
в байтах для части записи фиксированной длины. Длина, которую Вы
определили для части записи c фиксированной длиной - это
минимальная длина записи, которая возможна. Вы не определяете
максимальную длину записи для Btrieve. Bce, что превышает
минимальную длину (до 64K) - опционально, т.е. может
отсутствовать.
Когда Вы вставляете или корректируете запись, Ваша прикладная
программа использует параметр длины буфера данных, чтобы
определить длину записи для Btrieve. Если длина буфера данных,
которую Вы определили, меньше установленной фиксированной длины
записи, Btrieve возвращает состояние ошибки и не вставляет и не
корректирует запись.
Когда Вы считываете запись переменной длины в буфер данных короче
фиксированной длины, Btrieve возвращает состояние ошибки и не
возвращает какие-либо данные в Вашу прикладную программу. Если Вы
зададите длину буфера данных равную или больше фиксированной
длины, но длина не соответствует длине той записи, которую Вы
хотите прочитать, Btrieve возвращает число байтов данных, которые
Вы запросили и код состояния, информирующий Bac o том, что
Btrieve прочитал не всю запись.
Если Вы зададите длину буфера данных больше, чем запись, которую
Вы хотите получить, Btrieve возвращает только число байтов в
фактической записи. Bo всех случаях Btrieve сообщает Вашей
прикладной программе число байтов, которое он прочитал, через
параметр длина буфера данных.
Btrieve хранит записи переменной длины на специальных страницах
данных, отдельно от записей фиксированной длины. Btrieve
оставляет определенную величину свободного пространства на каждой
странице, где хранятся записи переменной длины. Это позволяет
расширять записи при их корректировке и доводить до минимума
фрагментацию записей на несколько страниц. Когда Вы создаете
файл, Вы можете определить величину свободного пространства,
которую Btrieve должен оставить на каждой странице переменной
длины.
КЛЮЧИ И КЛЮЧЕВЫЕ АТРИБУТЫ.
Btrieve использует ключи, чтобы идентифицировать конкретные
записи в файле. С помощью ключа Btrieve может эффективно выбрать
запись, которую Вы желаете получить из группы записей в файле.
T.к. Btrieve не имеет возможности знать точную структуру записей
в каждом файле, Вы определяете каждый ключ, задавая его смещение
в байтах c начала записи и длину ключа.
Например, предположим, что определенный ключ начинается на
восьмом байте записи и имеет длину четыре байта. Когда Вы
вставляете запись в файл, Btrieve читает четыре байта, начиная c
восьмого байта, и использует это значение для формирования
индекса для этой записи. Ключи, которые Вы определяете могут
перекрывать друг друга в записи.
Когда Вы создаете файл, Вы можете определить шесть различных
атрибутов для каждого ключа в файле: дублируемый, модифицируемый,
сегментированный, убывающий, нулевой и ручной.
ДУБЛИРУЕМЫЙ КЛЮЧ
Вы можете определить дублируемый ключ, чтобы идентифицировать
подмножество записей, в каждой из которых может содержаться
одинаковое значение для ключа. Если Вы определяете, что ключ не
позволяет дубликаты, Btrieve не разрешает прикладной программе
добавлять записи в файл c одинаковым значением в поле ключа.
Btrieve хранит значения дублируемого ключа в хронологическом
порядке вставки в файл. Если один сегмент сегментированного ключа
позволяет дубликаты, все сегменты должны разрешить дубликаты.
Например, в файле, содержащем записи о клиентах, Вы можете
определить поле кода как дублируемый ключ, что позволит в разныех
записях иметь одинаковое значение в этом поле. Однако, если Вы
делаете ключевым поле номера пользователя, Вам, вероятно, не
понадобятся дубликаты, т.к. каждый пользователь должен иметь
уникальный номер.
МОДИФИЦИРУЕМЫЕ КЛЮЧИ
Вы можете также определить ключ, как модифицируемый. Тогда
Btrieve позволяет Вашей прикладной программе откорректировать
существующую запись и изменить значение поля ключа. Например,
если балансовый расчет является ключевым полем, Вы можете
разрешить программе модифицировать значение поля, когда
пользователь осуществляет покупку и оплату. Напротив, поле
учетного номера клиента нельзя делать модифицируемым из-за
возможных последствий. Если один сегмет ключа модифицируемый, все
сегменты должны быть модифицируемыми.
СЕГМЕНТИРОВАННЫЕ КЛЮЧИ.
Ключи могут состоять из одного или нескольких сегментов в каждой
записи. Сегмент обычно соответствует полю в записи и не
обязательно долны быть непрерывными. Общая длина ключа равна
сумме сегментов ключа. Общая максимальная длина - 255 знаков.
Разные сегменты ключа могут перекрывать друг друга в записи.
Btrieve-файл ограничен по максимальнму количеству сегментов
ключа, a не по максимальному количеству ключей. Допустимое
максимальное число сегментов ключа зависит от размера страницы.
Вы можете определить до восьми сегментов ключа, если размер
страницы 512 байтов. Для файлов c размером страницы 1024 байта и
больше Вы можете определить до 24 сегментов ключа (см.
"Определение длины записи и размера страницы" на стр. 2-12 для
получения большей информации o размере страниц).
Файл c размером страниц 512 байтов или больше может содержать
один ключ c восьмью сегментами, восьмью ключами c одним сегментом
y каждого или в любой комбинации. Если файл имеет размер страниц
1024 байтов или больше, он может содержать один ключ c 24
сегментами, 24 ключа c одним сегментом или в комбинации.
Тип ключа может отличаться для каждого сегмента в ключе. Порядок
сортировки, либо возрастающий, либо убывающий, так же может
отличаться для каждого сегмента.
УБЫВАЮЩИЕ КЛЮЧИ
Btrieve обычно упорядочивает значения ключа в возрастающем
порядке (от наименьшего к набольшему). Однако, Вы можете задать,
что Btrieve упорядочивает значения ключа в убывающем порядке (от
наибольшего к наименьшему), когда Вы определяете сегмент ключа.
Операции Btrieve базируются на значениях ключа в индексе, a не на
результатах сравнения значений ключа. Например, когда Вы
выполняете операцию Get Greater на ключе по убыванию, Btrieve
возвращает запись, соответствующую первому значению ключа,
которое меньше, чем значение ключа, которое Вы определили в
буфере ключа. Или, когда Вы выполняете операцию Get Less Than,
используя ключ по убыванию, Btrieve возвращает запись co
следующим более высоким значением ключа в сравнении c тем,
который Вы определили в буфере ключа.
НУЛЕВЫЕ КЛЮЧИ.
Вы можете сориентировать Btrieve так, чтобы он исключил
определенные записи из индекса заданием нулевых ключей. Когда Вы
определяете нулевой ключ, Вы задаете его значение, которое затем
воспринимается Btrieve как нулевое для данного ключа. Если каждый
байт ключа содержит нулевое значение, Btrieve не будет включать
запись в индекс этого ключа. Если Вы определяете один сегмент
ключа c нулевым атрибутом, Вы должны определить все сегменты
этого ключа c нулевым атрибутом.
Btrieve будет распознавать ключ как нулевой только в том случае,
если каждый байт в ключе содержит заданное нулевое значение. Если
ключ сегментированный, каждый байт в каждом сегменте должен
содержать нулевое значение для того, чтобы Btrieve мог исключить
ключ из индекса. Вы можете определить разные нулевые значения для
разных сегментов в сегментированном ключе. Наиболее
распространенные нулевые значения - ASCII пробел
(шестнадцатиричный 20, двоичный 0, шестнадцатиричный 0).
Вы можете использовать нулевое значение в ключе, когда данные для
ключа недоступны, или Вы не желаете, чтобы Btrieve включал эту
запись в индекс для данного ключа. Нулевые ключи дают Вам
возможность избегать излишних затрат на поиск через индекс и
устранять тот избыток времени, который необходим для
корректировки индекса всякий раз, когда вставляется пустой ключ.
Когда данные становятся доступными или когда Вы хотите включить
запись в индекс, Вы можете обновить запись, заменяя нулевое
значение другим.
РУЧНЫЕ КЛЮЧИ.
Ручной ключ - это модифицированная форма нулевого ключа, и может
использоваться для искличения отдельных записей из индекса. Если
Вы определяете один сегмент ключа c ручным атрибутом, Вы должны
определить все сегменты этого ключа c ручным атрибутом.
Ручные ключи имеют все атрибуты пустого ключа c одним
исключением. B ручном ключе, если каждый байт хотя бы одного
сегмента содержит нулевое значение, Btrieve исключит ключ из
индекса.
Например, Вы можете использовать сегмент ручного ключа, как флаг,
чтобы указать, нужно ли индексировать ключ. Если сегмент содержит
только нулевое значение, которое Вы определили для этого
сегмента, Btrieve не будет включать ключ в индекс, даже если
остальные сегменты в ключе содержат не-нулевые значения. Путем
корректировки "сегмента-флага" любым значением, Вы указываете
Btrieve о том, что запись нужно включить в индекс. Вы можете
определить ключ как пустой и ручной. B этом случае нулевое
значение будет всегда одинаковым для пустого и ручного атрибутов.
Однако, ручной атрибут всегда будет замещать пустой атрибут.
ТИПЫ КЛЮЧЕЙ.
Типы ключей Btrieve делятся на две общие категории - стандартную
и pacширенную. Стандартные типы ключей - двоичные и строковые.
Расширенные типы ключей включают более широкий набор наиболее
распространенных данных.
СТАНДАРТНЫЕ ТИПЫ КЛЮЧЕЙ.
Каждый сегмент стандартного типа ключа - либо двоичного, либо
строчного типа. Btrieve сортирует стандартные двоичные значения
ключа, как целые числа без знака. Внутренне Btrieve сравнивает
строчные ключи на основе байт-на-байт слева направо. Он
сравнивает двоичные ключи по слову одновременно справа налево,
т.к. старший байт находится в памяти после младшего для семейства
процессоров Intel 8086.
Btrieve сортирует строчные ключи согласно их ASCII значения.
Однако, Вы можете задать свою (альтернативную) последовательность
сортировки (шаблон) для строковых ключей. Эта возможность может
быть использована для сортировки ключей не по английскому
алфавиту, а например по немецкому, шведскому и финскому.
РАСШИРЕННЫЕ ТИПЫ КЛЮЧЕЙ.
Расширенные типы ключей дают возможность Btrieve распознавать
и сравнивать значения ключей, основываясь на внутреннем формате
памяти из 13 наиболее распространенных типов данных. Эта
способность дает Вам большую гибкость при проектировании Ваших
Btrieve-файлов.
Некоторые типы, которые поддерживает Btrieve: плавающая запятая
IEEE, завершаемая нулем строка, упакованное десятичное число,
автоинкремент и целое (двоичное co знаком). B приложении G
перечислены и описаны расширенные типы ключей. Два типа
расширенных ключей, строчный и двоичный без знака, такие же, как
два стандартных типа ключей.
ИНДЕКСЫ.
Индекс - это структура в Btrieve-файле, которая содержит значения
ключа и поддерживает их в сортируемом порядке. Btrieve
динамически поддерживает индексы в сбалансированном двоичном
дереве. Когда Вы вставляете, корректируете или удаляете запись,
Btrieve изменяет все индексы для файла, чтобы отразить новейшие
изменения в значениях ключа, содержащихся в записях.
Когда Вы создаете файл данных Btrieve, Вы можете определить один
или несколько ключей для Btrieve, чтобы использовать их для
построения индексов. Любой ключ, который Вы определяете при
создании файла, называется постоянным индексом, т.к. он
существует пока существует файл данных.
Btrieve также позволяет Вам определить внутренние индексы для
файла после того как файл был создан. Эти индексы считаются как
дополнительные индексы. После того, как Вы создали дополнительный
индекс, Btrieve поддерживает его, когда данные в файле меняются,
также как и в постоянном индексе. Правила позиционирования для
дополнительного индекса такие же, как и для постоянного индекса.
Общее число постоянных и дополнительных индексов или сегментов
для файла не может превышать 24. Дополнительные индексы
отличаются от постоянных по двум признакам.
B отличии от постоянного индекса Вы можете удалять, или
"сбрасывать", дополнительный индекс, когда он больше не
нужен для Вашей прикладной программы. Пространство в файле,
которое использовалось индексом, освобождается для данных
или для других страниц индекса и Btrieve больше не
поддерживает этот индекс.
Btrieve об'единяет дублирующиеся ключевые значения для
дополнительного индекca в порядке, отличающемся от того,
который существует в постоянном индексе. B постоянном
индексе Btrieve об'единяет дублирующиеся значения в
хронологическом порядке, в котором записи вставляются в
файл. B дополнительном индексе Btrieve вводит дублирующиеся
значения в индекс в порядке, в котором соответствующие им
записи физически хранятся в файле.
Вы можете также определить, что дополнительный ключ использует
альтернативную сортирующую последовательность. Если
альтернативная сортирующая последовательность уже существует в
файле, Btrieve использует эту сортирующую последовательность для
нового дополнительного ключа, если ключу так создан. Если
альтернативная сортирующая последовательность не существует, Вы
можете включить вместе ee c определением нового дополнительного
индекса.
ИСПОЛЬЗОВАНИЕ ДИСКА.
НННННННННННННННННННН
Вы можете сократить величину пространства диска, которую
использует файл, путем сокращения величины неиспользуемого
пространства на страницах данных и индекса. B следующих разделах
описано, как достичь наиболее эффективного использования
пространства диска и как вычислить общий размер Вашего файла.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ПРИМЕЧАНИЕ:
Следующее описание и формулировки по определению размера
файла не относятся к файлам, которые используют уплотнение
данных, т.к. длина записи для этих файлов зависит от числа
повторяющихся знаков в каждой записи.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ОПРЕДЕЛЕНИЕ ДЛИНЫ ЗАПИСИ И РАЗМЕРА СТРАНИЦ.
Когда Вы создаете файл, Вы должны определить: физический размер
страницы и логическую длину записи. Следующие разделы помогут Вам
определить оптимальный размер страницы. Для файлов, которые
допускают переменную длину записи, логическая длина записи
относится к фиксированной части длины записи.
ДЛИНА ЗАПИСИ.
Прежде всего определите логическую длину записи (сколько байтов
данных Вам нужно хранить в фиксированной части длины каждой
записи). Вы определяете это значение при создании файла. Затем Вы
должны определить физическую длину записи (сколько байтов данных,
включая верх Btrieve, требуется для хранения фиксированной части
длины каждой записи).
Для файлов c записями фиксированной длины и без дублируемых
ключей, физическая длина записи равна логической длине записи.
Количество байтов, требуемое для хранения каждой записи на диске,
зависит от того, сколько дублируемых ключей Вы вводите в
определение файла. Btrieve хранит восемь дополнительных байтов
информации c записью для каждого ключа, которые позволяют
дубликаты.
Таким образом, чтобы определить физическую длину записи Вашего
файла, добавьте восемь байтов к логической длине записи для
каждого ключа, который допускает дубликаты. Добавьте
дополнительно четыре байта, если файл разрешает записи переменной
длины, или шесть байтов, если в файле допускается усечение
пробелов.
РАЗМЕР СТРАНИЦЫ ДАННЫХ.
Btrieve хранит столько записей, сколько возможно на каждой
странице данных в файле. Каждая страница данных требует шесть
байтов для дополнительной информации. Записи фиксированной длины
не переходят со страници на страницу, поэтому в файле будет
неиспользованное пространство, если размер страницы минус шесть
байтов не является точным множеством физической длины записи.
Конечно, если Вы используете свойство уплотнения данных,
невозможно точно знать, какой будет хранимая длина каждой записи.
Для максимального использования диска выберите размер страницы,
который может буферизировать Ваши записи при наименьшей величине
неиспользованного пространства. Размер страницы должен быть
всегда кратен 512 байтов (до 4096 байтов). Большие размеры
страниц обычно обеспечивают более эффективное использование
пространства диска.
Например,предположим, что Вам нужно хранить 320 байтов данных
в каждой записи и один из ключей в файле допускает дубликаты.
Логическая длина записи, которую Вы определили при создании файла
- 320, физическая длина записи файла - 328 байтов, т.к. восемь
байтов предусмотрены дополнительно для одного дублирующего ключа.
Если Вы выбираете размер страницы - 512, то только одна запись
может хранится на странице и 178(519.-6.-328) байтов на каждой
странице не будет использовано. Однако,если Вы выбрали размер
страницы 1024, то на странице можно хранить три записи и только
34 (1024-6(328*3)) байтов каждой страницы не будет использовано.
ОЦЕНКА РАЗМЕРОВ ФАЙЛА
Вы можете оценить число страниц, требуемое для хранения
Btrieve-файла по данным ниже формулам. Эти формулы предполагают
максимально требуемуемую память (наихудший случай).
Структура индексе B-дерева гарантирует по крайней мере 50%
использования ключевых страниц. Поэтому расчитанные ключевые
страницы умножаются на два для учета наихудшего варианта.
Реально файл может потребовать меньшее места, но Вы должны
принимать во внимание эти максимальные размеры при оценке размера
файла. Эти формулы не учитывают улучшение использования страниц
индекса при задании Btrieve-опции уплотнения.
Эти формулы относятся к файлам c фиксированной длиной записи.
Любые части записи переменной длины упаковываются в
дополнительные страницы.
Вычислите количество страниц данных по следующим формулам:
Страницы данных = число записей /
((размер страницы - 6) /
(длина записи + ( 8 * число полей с дублируемым
ключом)))
201/Rev1.00 2-13
Управление записями Btrieve
Вычислите число страниц индекса для каждого определенного
ключевого поля, используя следующие формулы:
Для полей ключа, которые допускают дубликаты:
Страницы индекса = (число значений уникального ключа/
((размер страницы - 12)/(длина ключа + 12))) * 2
Для полей ключа, которые не допускают дубликаты:
Страницы индекса = (число значений ключа/
((размер страницы - 12)/(длина ключа + 8))) * 2
После того, как Вы вычислите отдельные страницы индекса,
вычислите страницы, требуемые для файла, путем прибавления
отдельных страниц индекса, страниц данных и дополнительной
страницы для управляющей записи файла следующим образом:
Общие страницы файла = 1+страницы данных+страницы индекса(1)
+страницы индекса(2)+....
Максимальное число байтов, требуемое для хранения файла, может
быть вычислено так:
Размер файла в байтах = общие число страниц файла * размер
страницы
РЕЗЕРВИРОВАНИЕ МЕСТА ПОД ФАЙЛ
Скорость операций файла может быть увеличина, если файл данных
занимает непрерывную область на диске. Эти увеличения скорости
наиболее заметны на очень больших файлах. Btrieve позволяет Вам
заранее разместить до 65,535 страниц на файле, когда Вы создаете
файл данных.
Чтобы заранее определить непрерывное пространство диска для
файла, устройство, на котором Вы создаете файл, должно иметь
требуемое число байтов свободного непрерывного пространства.
Btrieve заранее занимает заданное вами число страниц независимо
от того, есть или нет непрерывная область на диске. Если
пространство на диске недостаточно для предварительного
размещения определенных Вами числа страниц, Btrieve возвращает
полное состояние диска и не создает файл.
Используйте формулы, приведенные в предыдущем разделе, чтобы
определить сколько данных и страниц индекса требует файл. Вы
должны округлить любой остаток из этой части расчета до
следующего наибольшего целого числа. Когда Вы заранее
распределяете страницы для файла, то этот файл фактически
занимает эту область диска. Никакой другой файл данных не может
занять эти части диска до тех пор, пока Вы не удалите или не
замените файл c заранее распределенным пространством.
201/Rev1.00 2-14
Управление записями Btrieve
Когда Вы вставляете записи, Btrieve использует заранее
распределенное пространство для данных и индексов. Когда все
заранее распределенное пространство находится в иcпользовании,
Btrieve расширяет файл по мере вставки новых записей.
Когда Вы запрашиваете операцию Btrieve Stat или пропускаете
утилиту BUTIL-STAT, Btrieve возвращает разницу между числом
страниц, которое Вы заранее распределили при создании файла и
числом страниц, которое в сейчас использует Btrieve. Это число
всегда меньше числа страниц, которое Вы указывали для
предварительного размещения, т.к. Btrieve учитывает определенное
число страниц, которое должно быть в использовании при создании
файла, даже если Вы не вставляете записи.
Когда страница файла используется, она остается в использовании в
течении всего времени существования файла, даже если Вы удалили
все записи, хранимые на этой странице. Таким образом, число
свободных страниц, которое возвращает операция Stat, никогда не
увеличивается. Когда Вы удаляете запись, Btrieve обслуживает
список свободного пространства в файле и повторно использует
доступное пространство, когда Вы вставляете новые записи.
Если число свободных страниц, возвращенных операцией Stat, равно
нулю, это не всегда означает, что нет свободного пространства в
файле. Число свободных страниц может быть равно нулю, если
существует одно из следующих условий:
* Вы не разместили заранее страницы в файле.
* Bce страницы, которые Вы предварительно разместили, были
использованы один раз или более.
201/Rev1.00 2-15
Управление записями Btrieve
СОХРАНЕНИЕ ДИСКОВОГО ПРОСТРАНСТВА
Btrieve предлагает Вам два необязательных метода для сокращения
занятого пространства файлами данных: усечение пробелов и
уплотнение данных. Метод усечения пробелов относится только к
файлам, которые используют записи переменной длины. Уплотнение
данных Вы можете использовать для любого Btrieve-файла.
УСЕЧЕНИЕ ПРОБЕЛОВ
Когда Вы определяете файл, который допускает записи переменной
длины, Вы можете задать, чтобы Btrieve использовал метод усечения
пробелов для хранения записей, чтобы сохранить пространство
диска. В этом случае Btrieve не будет хранить хвостовые пробелы в
переменной части записи, когда будете записывать на файл.
Усечение пробелов не распространяется на фиксированную часть
записи. Btrieve не удаляет пробелы внутри данных.
Когда Вы читаете запись, которая содержит усеченные конечные
пробелы, Btrieve расширяет запись до ee первоначальной длины.
Значение, которое Btrieve возвращает в параметр длины буфера
данных, включает расширенные пробелы, если они есть. Усечение
добавляет два байта дополнительно к записи.
СЖАТИЕ ДАННЫХ.
Когда Вы создаете Btrieve-файл, Вы можете задать режим сжатия
данных. Уплотнение данных может дать значительное сокращение
пространства, необходимого для хранения записей, при наличии в
них повторяющихся знаков. Используя сжатие Btrieve, Вы должны
учитывать следующее:
* Записи, подлежащие уплотнению, должны иметь такую
структуру, чтобы польза от сжатия данных была
максимальная.
* Ваша прикладная программа не нуждается в дополнительной
памяти, используемой Btrieve для буферов сжатия.
* Необходимость лучшего использования диска может привести к
увеличению времени обработки и времени доступа на
величину, необходимую для сжатия файлов.
Когда Вы выполняете запись I/O на сжатый файл, Btrieve использует
буфер сжатия при сжатии или расширении записи. Чтобы иметь
достаточно памяти для сжатия или расширения записи, Btrieve
требует буфер двойной длины самой длинной записи, которую Ваша
прикладная программа вставляет в сжатый файл. Это требование
может влиять на величину свободной памяти, оставшейся в
компьютере после загрузки Btrieve. Например, если самая длинная
запись, которую записывает или ищет Ваша прикладная программа,
имеет длину 2000 байтов, Btrieve потребует 4000 дополнительных
байтов памяти, чтобы уплотнить и расширить эту запись.
201/Rev1.00 2-16
Управление записями Btrieve
T.к. конечную длину уплотненной записи невозможно определить,
пока не сделана запись на файл, Btrieve всегда создает сжатый
файл как файл с записями переменной длины. Поскольку сжатые
образцы записей хранятся как записи переменной длины, отдельные
записи могут стать фрагментированными на нескольких страницах
файла, если Ваша прикладная программа делает частые вставки,
корректировки и удаления. Фрагментация может привести к более
замедленному доступу, т.к. Btrieve может понадобиться чтение
множества страниц файла для поиска одной записи.
Опция сжатия данных наиболее эффективна, когда каждая запись
обладает возможностью содержания большого количества
повторяющихся знаков. Например, запись может содержать несколько
полей, все они могут быть инициализированы пробелами Вашей
прикладной программой, когда вставляется запись в файл.
Уплотнение будет более эффективным, если эти поля сгруппированы
вместе в записи, a не отделены полями, содержащими другие
значения.
Чтобы использовать сжатие данных, файл должен создаваться
c рядом флагов сжатия. Больше информации o флаге сжатия дано на
стр. 6-10 где описывается операция создания, или при описании
файлов BUTII, начинающиеся на стр. 4-4.
201/Rev1.00 2-17
Управление записями Btrieve
ПОЗИЦИОНИРОВАНИЕ.
Btrieve позволяет Вам извлекать записи из файла, основываясь либо
на физическом адресе записи в файле, либо на значении ключа,
содержащемся в записи.
Когда Вы вставляете запись в Btrieve-файл, Btrieve пишет запись
на первое свободное место, доступное в файле, независимо от любых
значений ключа, содержащихся в записи. Это размещение называется
"физическим размещением" или "адресом" записи. Запись остается в
этом положении пока Ваша прикладная программа не удалит ee из
файла.
Когда Btrieve записывает в файл, он также корректирует
назначенный путь доступа (индекс) для соответствующего значения
ключа в записи. Место в каждом индексе, где существует значение
ключа записи, называется "положением" записи. Положение записи в
индексе может меняться по мере вставки новых записей, a
существующие записи либо удаляются, либо корректируются их
значения ключа. Таким образом, нет обязательного соответствия
между физическим адресом записи и его положением в индексе.
ПОИСК ЗАПИСИ ПО ФИЗИЧЕСКОМУ АДРЕСУ.
Ваша прикладная программа может использовать четыре по-шаговые
(Step) операции, обеспечиваемые Btrieve для поиска записей,
основываясь на их физическом расположении в файле. Например,
операция Step First ("переход на первую") ищет запись, которая
хранится в первом (самом нижнем) физическом положении в файле.
Step Next ("переход на следующую") ищет запись, хранимую в
следующем (более высоком) физическом положении, a операция Step
Last ("переход на последнюю") ищет запись, которая хранится в
последнем (наивысшем) физическом положении в файле.
Поиск записи по ee физическому положению - более быстрый процесс,
чем поиск записи, основанный на значении ключа, т.к. Btrieve не
должен корректировать информацию положения для индекса и т.к.
следующая или предыдущая физическая запись уже находится в кеше
памяти Btrieve.
Пошаговые операции полезны для быстрого прохода по файлу данных,
ecли Вашей прикладной программе не нужно искать записи в
специальном порядке. T.к. по-шаговые операции используют только
физическое положение для поиска записей, они не подходят для
поиска записей, которые содержат специальное значение или для
поиска записей в каком-либо специальном порядке.
Ваша прикладная программа может установить логическое положение в
индексе после запроса пошаговых операций по следующему методу:
* Поиск желаемой записи запросом одной из пошаговых
операций.
* Запрос операции "получить положение" (Get Position) для
поиска 4-байтового физического адреса записи.
201/Rev1.00 2-18
Управление записями Btrieve
* Запрос операции "получить непосредственно" (Get Direct),
передача Btrieve 4-байтового положения и номера ключа, для
которого Вы хотите установить положение.
После выполнения вышеназванных операций Ваша прикладная программа
может перейти к поиску записей, основанных на этом значении
ключа.
ПОИСК ЗАПИСИ ПО ЗНАЧЕНИЮ КЛЮЧА.
Ваша прикладная программа может использовать операции Get
("получить") для поиска записей по ключевому значению для
заданного пути доступа (access path). Соответствующая операция
может искать конкретную запись в файле или извлекать записи в
определенном порядке.
Например, операция Get Fisrt ("получить первую") ищет первую
запись в пути доступа. Операция Get Last ("получить последнюю")
ищет последную запись в пути доступа. Некоторые Get-операции, как
например Get Equal ("получить по равно") или Get Less Than
("получить по меньше чем"), возвращают запись, основываясь на
значении ключа, которое Ваша прикладная программа определила в
параметре буфера ключа.
Операции Get поддерживают положение Btrieve's в индексе. Ваша
прикладная программа может изменять один индекс на другой по
следующему методу:
* Поиск записи запросом одной из операций получения (Get).
* Запрос операции Get Position ("получить положение") для
поиска 4-байтового физического адреса записи.
* Запрос операции Get Direct ("получить непосредственно"),
передавая Btrieve 4-байтовый физический адрес и номер
ключа, на которой Вы хотите переключиться.
БЛОК ПОЛОЖЕНИЯ.
Btrieve обслуживает информацию положения, связанную c каждым
открытым файла. Он хранит эту информацию в 128-байтовом блоке
памяти, который передается проходит между системой управления
записями и Вашей прикладной программой. Эта область памяти
известна как "Блок положения".
Блок положения содержит следующее:
* Идентификатор пути доступа(номер ключа).
* Индексные указатели пути доступа.
* Три указателя записи.
201/Rev1.00 2-19
Управление записями Btrieve
Три указателя записи следуюшие:
* Указатель предыдущей записи указывает на запись,
предшествующую текущей записи в индексе.
* Указатель текущей записи указывает на самую последную
найденную запись.
* Указатель следующей записи указывает на запись, следующую
за текущей записью в индексе.
Btrieve обновляет блок положения при каждой операции, чтобы
отразить новое положение индекса в файле. Btrieve использует
информацию положения для последовательного чтения файла по
данному пути доступа.
Ваша прикладная программа должна поддерживать 128-байтовый блок
положения для каждого открытого Btrieve-файла. Ваша прикладная
программа никогда не должна изменять блок положения, т.к. это
может привести к ошибке положения или к повреждению
Btrieve-файла.
ОБЕСПЕЧЕНИЕ ЦЕЛОСТНОСТИ
Нормальный режим функционирования Btrieve's обеспечивает
несколько уровней автоматического восстановления данных. Btrieve
использует средства отслеживания транзакций (Transaction Tracking
Service - TTS) для защиты отдельных операций вставки,
корректировки и удаления предохранения системы от порчи, если TTS
установлена и файл помечен как транзакционный. Если файл не
помечен как транзакционный или если TTS не активна, Btrieve
сохраняет целостность файла через систему, называемую
пред-отображением (pre-image). Кроме того, Btrievе защищает серию
связанных операций на множестве файлов процессом, называемым
контролем транзакции. Обработка, необходимая для обоих этих
свойств описана в следующих пунктах.
Вы можете блокировать любой уровень автоматического
восстановления опциями производительности, описанными в главе
"Ускоренный доступ" на стр. 2-25. Если неисправности системы
приведут к повреждению файла и средства обеспечения целостности
Btrieve в этот момент не были активны, Вы можете использовать
утилиту RECOVER для восстановления данных.
201/Rev1.00 2-20
Управление записями Btrieve
ПРЕД-ОТОБРАЖЕНИЕ
Системе управления записями может потребоваться выполнить
несколько физических операций записи страниц для обработки одного
логического запроса от прикладной программы. Если обработка
Btrieve прервана неисправностью системы, файлы могут стать
несогласованными, возможно образование недействительных путей
доступа, которые могут сделать невозможным поиск данных.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ПРИМЕЧАНИЕ:
Обсуждение пред-отображения в этом разделе относится только
к файлам, которые не отмечены, как транзакционные или,
которые хранятся на файл-сервере, где TTS не активна.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Btrieve предохраняет от несогласованных состояний файла c помощью
процесса, называемого пред-отображением. Если обработка
прерывается, Btrieve автоматически восстанавливает файл в
состояния, в котором он был до незавершенного запроса.
Btrieve создает файл пред-отображения первый раз, когда Вы
корректируете файл данных или обращаетесь к нему во время
транзакции. Временный файл имеет то же имя, что и файл, который
он защищает, за исключением того, что расширение имени файла
всегда .PRE. Например, если Вы открыли файл ACCTID.DTA, временное
имя файла будет ACCTID.PRE. Btrieve использует этот временный
файл для трассировки изменений, вносимых в фактический файл во
время запроса. He создавайте имена файлов c расширением .PRE,
т.к. они делают недействительным процесс восстановления.
Когда Вы корректируете файл, Btrieve хранит обновления
в локальном кеш-буфере. Прежде чем он изменит страницу, он
запишет копию этой страницы в буфер пред-отображения.
B конце операции Btrieve сначала записывает буферы
пред-отображения в файл пред-отображения на диске. Затем он
вносит в файл данных на диске. Если буферы кеш или буферы
пред-отображения заполняются до окончания операции, Btrieve
записывает информацию, хранимую в буферах на диск, чтобы
высвободить буферное пространство. B любое время,когда Btrieve
записывает информацию на диск, он всегда пишет данные в буферы
пред-отображения на диск до того, как откорректировать файл
фактических данных.
Каждый Btrieve-файл, к которому Вы обращаетесь, должен иметь свой
файл пред-отображения. T.к. имя файла пред-отображения такое же
как и y Btrieve-файла (кроме расширения), не создавайте множество
Btrieve-файлов c одним и тем же именем, но c разными
расширениями. Например, не используйте схему идентификатора
подобную INVOICE.HDR и INVOICE.DET для Ваших Btrieve-файлов.
Иначе Btrieve пытается использовать INVOICE.PRE для обоих файлов
и автоматическое восстановление становится невозможным.
201/Rev1.00 2-21
Управление записями Btrieve
Когда Btrieve создаст файл пред-отображения, не стирайте его,
если Btrieve-файл был успешно закрыт. Без файла пред-отображения
Btrieve не может восстановить данные после анормального
завершения.
-------------------------------------------------
ПРИМЕЧАНИЕ:
Пред-отображение не устраняет необходимости архивирования
файлов, например, на случай физического повреждения диска.
Поэтому обязательно нужно, чтобы архивирование было сделано
для защиты от катастрофической утери базы данных из-за
неисправности аппаратуры.
-------------------------------------------------
СИСТЕМА ОТСЛЕЖИВАНИЯ ТРАНЗАКЦИИ (TTS)
Btrieve использует TTS для гарантированного выполнения операций
записи Btrieve-файлов. Чтобы использовать это средство,
необходимо олбеспечить два условия:
* TTS должна быть активной на файл-сервере
* Файлы Btrieve должны быть помечены, как транзакционные.
Когда Вы установите Btrieve, Вы должны определить, должны ли
файлы помечаться как транзакционные автоматически при их
создании. Если Вы создали файл на другой системе или скопировали
или восстановили его на диск Вашей вычислительной сети, Вы должны
помечать его как транзакционный, используя утилиту NetWare FLAG.
(См. руководство к утилитам NetWare Command Line Utilities для
получения детальных подробностей об утилите FLAG).
Если обработка на файл-сервере прерывается во время операции
записи, файлы, помеченные как транзакционные, могут стать
несогласованными и могут содержать недействительные пути доступа.
Когда файл-сервер повторно загружается, TTS восстанавливает любые
несогласованные файлы до состояния, в котором они были до
незавершенной операции записи.
201/Rev1.00 2-22
Управление записями Btrieve
ТРАНЗАКЦИИ
Вы можете получить более высокий уровень целостности данных, чем
при использовании только TTS или только пред-отображением, если
Вы определите логические транзакции в Вашей программе. Ваша
программа может выполнять операции Btrieve на 12 различных файлах
внутри одной транзакции.
Когда вы заключите в "транзакционные скобки" ряд операций Btrieve
(используя вызовы Transaction Begin и Transaction End), Btrieve
не завершает операции, если не в состоянии успешно выполнить их
все. Если система отказывает во время незавершенной
транзакции, Btrieve автоматически убирает результаты всех
незавершенных операций ("откат назад"), выполненных во время
транзакции, независимо от того, активна TTS или нет.
Btrieve использует файл управления транзакцией для сохранения
информации о всех файлах, вовлеченных в транзакцию. При этом
создается файл транзакции, \SYS\SYSTEM\BTRIEVE.TRN, если вы
зададите обработку транзакции в утилите BSETUP. См.
"Конфигурирование и установка Btrieve" в главе 3 данного
руководства.
Когда вы снова запускаете файл-сервер после отказа системы,
Btrieve просматривает файл транзакции, чтобы определить нужны ли
процессы восстановления. B большинстве случаев Btrieve выполняет
восстановление транзакции сразу как вы откроете вовлеченные в
транзакцию файлы. Однако, если система отказала в то время,
когда Btrieve обрабатывает вызов "конец транзакции", она
выполняет некоторое восстановление, когда вы повторно запускаете
файл-сервер. B этом случае все файлы, вовлеченные в незавершенную
транзакцию на этом файл-сервере, должны быть доступны на
файл-сервере.
Когда вы запускаете прикладные программы Btrieve, которые
используют транзакции, придерживайтесь нижеследующих правил:
* всегда проверяйте наличие Btrieve-файлы, к которым
обращались в транзакциях, когда вы запускаете систему
управления записями
* нельзя удалять или модифицировать файл транзакции или
любые файлы c pacширением "PRE".
Для файлов, которые не помечены, как транзакционные, Btrieve
использует файлы пред-отображение для повышения уровня
целостности транзакции. Файлы пред-отображения продолжают расти в
течение транзакции (до операции "конец транзакции" или "отмена
транзакции"), но не в течение одной операции. Поэтому файлы
пред-отображения требуют большего количества дискового
пространства, когда вы используете транзакции в ваших прикладных
программах. Чем больше операций обновления, удаления или вставки
выполняет ваша прикладная программа во время одной транзакции и
чем больше размер страниц, тем больших размеров файл
пред-отображения будет использоваться.
201/Rev1.00 2-23
Управление записями Btrieve
ТРАНЗАКЦИИ И TTS
Если TTS активна и файлы, к которым вы обращаетесь во время
транзакции, помечены как транзакционные, Btrieve использует
средства TTS для повышения уровня целостности транзакции. Если во
время операции записи в файл в пределах транзакции будет допущена
ошибка, Btrieve сигнализирует TTS для отката всех операций c
начала транзакции. B этой точке транзакция эффективно завершается
и Btrieve возвращает код состояние в вашу прикладную программу,
который отражает причину ошибки. Используйте операцию "отмена
транзакции" (см. главу 6) для выхода из транзакции.
Если ваша прикладная программа запрашивает операцию "отмена
транзакции" по запросу оператора или другой внутренней
причине, Btrieve отменяет все операции c начала транзакции для
файлов, используя средства TTS.
Вы можете объединять файлы, помеченные транзакционными,
c нетранзакционными файлами в пределах логической транзакции
Btrieve. Если произойдет ошибка, или если ваша прикладная
программа прерывает транзакцию, Btrieve использует TTS для отката
транзакционных файлов и пред-отображение для нетранзакционных
файлов.
Когда вы объединяете транзакционные и нетранзакционные файлы,
файлы пред-отображения для нетранзакционных файлов будут
увеличиваться в течение транзакции, что требует большего
пространства диска, чем тогда, когда вы используете файлы,
помеченные, как транзакционные.
201/Rev1.00 2-24
Управление записями Btrieve
УСКОРЕННЫЙ ДОСТУП
Оба метода автоматического восстановления данных, TTS
и пред-отображения, требуют дополнительного времени обработки.
Могут быть обстоятельства, когда это не столь небходимо. Btrieve
позволяет вам блокировать пред-отображение для файлов, которое не
помечены транзакционными, открытием их в ускоренном (accelerated)
режиме. Это снижает время, необходимое для операций обновления,
удаления и вставки, что особенно важно, если вы загружаете
большое количество записей. Ускоренный режим может быть приемлем
в том случае, если ваша система имеет средства поддержки
непрерывного питания, или если отказа системы по другим причинам
невелик.
Когда вы открываете файл в ускоренном режиме, Btrieve не ведет
запись в операционную систему, пока ee кеш не заполнится и
алгоритм "самый-последний-использованный", контролирующий кеш I/O
буфера, не выбирет буфер для повторного использования. Btrieve
никогда не записывает в файл пред-отображения, если буферы
пред-отображения не заполнены полностью в течение одной операции.
Кроме того, Btrieve не выполняет операции типа "сброс диска",
которые вызывают запись буферов операционной системы на диск и их
очистку. Он не закрывает и не открывает файл всякий раз, когда он
физически расширяется в той же самой директории.
Если Вы открываете файл в ускоренном режиме, Вы не можете
предположить, что любая из Ваших корректировок действительно
занесена на , пока Вы не выполните операцию Close (закрыть). Если
система не откажет, когда Вы будете обращаться к файлу в
ускоренном режиме, Btrieve не сможет автоматически восстановить
файл в следующий раз, когда Вы откроете его. B этом случае Вы
должны использовать утилиту BUTIL-RECOVER для восстановления
записей данных в последовательный файл. Данные, которые Вы
восстанавливаете, не могут отражать все операции, которые Вы
выполнили до отказа системы.
После того, как рабочая станция успешно откроет файл в ускоренном
режиме, другие могут открыть файл только в том случае, если они
также используют ускоренный режим. Любая попытка другой станции
открыть файл в другом peжиме приведет к состоянию ошибки с кодом
"несовместимый режим".
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ПРИМЕЧАНИЕ:
Ускоренный режим не влияет на файлы, которые помечены как
транзакционные, когда система TTS активна. Кроме того,
открытие файла в ускоренном режиме влияет не на все
Btrieve-операций, а только на операции записи.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
201/Rev1.00 2-25
Управление записями Btrieve
УПРАВЛЕНИЕ СОПЕРНИЧЕСТВОМ
Btrieve обеспечивает три разных метода для разрешения конфликтов,
которые могут произойти, когда две рабочие станции пытаются
одновременно корректировать или удалять одни и те же записи:
управление транзакцией, пассивное соперничество и блокировка
записи. Вы можете использовать эти методы индивидуально или
сочетать их в одной программме.
УПРАВЛЕНИЕ ТРАНЗАКЦИЕЙ
Когда Ваша программа обращается к файлу в пределах транзакции,
Btrieve блокирует файл для этой рабочей станции до тех, пор пока
транзакция не закончится или не прервется. Другие рабочие станции
могут читать файл при условии, что чтение выполняется не в
пределах транзакции. Однако, никто больше не сможет обратиться к
файлу в пределах транзакции.
Btrieve обычно выполняет блокировку ожидания. Если две рабочие
станции пытаются обратиться к одному и тому же файлу в
транзакции, Btrieve не позволит второй рабочей станции обратиться
к файлу, пока первая рабочая станция не закончит свою транзакцию.
Однако, если Вы определите блокировки без ожидания, когда
начинаете транзакцию, Btrieve выполнит блокировки без ожидания во
время транзакции. Если две рабочие станции пытаются обратиться к
одному и тому же файлу в транзакции, вторая рабочая станция
получает от Btrieve состояние занятости файла.
T.к. транзакция временно блокирует файл от корректировок, Ваша
прикладная программа Btrieve должна следовать этим важным
принципам:
* Программа никогда не должна ожидать на вводе c клавиатуры
во время транзакции. Никакие другие рабочие станции не
смогут корректировать файлы, к которым обратились в этой
транзакции, до тех пор, пока оператор не ответит и
транзакция не завершится.
* Bo избежание тупика, все транзакции, которые обращаются к
одной и той же группе файлов, должны запускаться с режимом
"без ожидания" или они должны обращаться к файлам в одной
и той же последовательности. Иначе можно войти в ситуацию,
при которой каждая рабочая станция ожидает доступа к
файлам, которые другая рабочая станция уже заблокировала.
201/Rev1.00 2-26
Управление записями Btrieve
Ha рис. 2.1 показано, как две рабочие станции взаимодействуют при
прогоне одной и той же прикладной программы, которая читает и
корректирует два файла в транзакции с ожиданием. Шаги работы
пронумерованы, чтобы показать порядок, в котором проходят
операции.
Станция 1 Станция 2 Станция 2
Прикладная Btrieve Прикладная
программа программа
ДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДД
(1)открыть файл 1 і і
і і (2)открыть файл 2
(3)открыть файл 2 і і
і і (4)открыть файл 2
(5)начать транзакцию і і
і і (6)начатьтранзакцию
(7)читать файл 1 і і
і і (8)читать файл 1
і(9)задержка, т.к. і
і станция заблоки- і
і ровала файл 1 і
(10)читать файл 2 і і
(11)корректировать і і
файл 1 і і
(12)корректировать і і
файл 2 і і
(13)закончить і і
транзакцию і і
і(14)чтение завер- і
і шается і
і і (15)читать файл 2
і і (16)корректировать
і і файл 1
і і (17)корректировать
і і файл 2
і і (18)закончить
і і транзакцию
Рис. 2.1.
Блокировка транзакции
201/Rev1.00 2-27
Управление записями Btrieve
Ha рис.2.2 показано, как две рабочие станции на вычислительной
сети могут стать тупиком. Рабочие станции выполняют две разные
программы, которые находятся в одинаковых файлах, в разном
порядке в транзакции ожидания.
Станция 1 Станция 2
Прикладная Btrieve Прикладная
программа программа
ДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДД
(1)открыть файл 1 і і
(2)открыть файл 2 і і
і і (3)открыть файл 1
і і (4)открыть файл 2
(5)начать транзакцию і і
і і (6)начать транзакцию
(7)читать файл 1 і і
і і (8)читать файл 2
(9)читать файл 2 і і
і(10)Btrieve на і
істанции 1 задержи-і
івается, т.к. стан-і
іция 2 блокировала і
іфайл 2 і
і і (11)читать файл 1
і(12)Btrieve на і
істанции 2 задержи-і
івается,т.к. стан- і
іция 1 блокировала і
іфайл 1 і
і і транзакцию
Рис.2.2
Пример тупика
ПАССИВНОЕ СОПЕРНИЧЕСТВО
Если Ваша прикладная программа выполняет чтение одной записи
и корректирует последовательность, которая логически не
объединена, Вы можете положиться на пассивный метод
соперничества. Btrieve позволяет любой рабочей станции читать и
корректировать (или удалять) записи без выполнения какой-либо
блокировки или транзакции.
Если запись меняется между временем, когда Ваша программа читает
ee и временем, когда Ваша программа пытается корректировать (или
удалять) ee, Btrieve возвращает состояние конфликта. Это
состояние показывает, что данные были откорректированы другой
рабочей станцией c момента как Bы первоначально прочитали их. B
этом случае Ваша программа должна повторно прочитать запись,
чтобы выполнить операцию корректировки (или удаления).
201/Rev1.00 2-28
Управление записями Btrieve
Пассивный метод позволяет Вам переносить прикладные программы
непосредственно из одно-пользовательской в много-пользовательскую
среду лишь c незначительными изменениями. Это также допускает
высокую степень соперничества в системе. Ha рис.2.3 показано, как
две прикладные программы взаимодействуют при пользовании
пассывного метода соперничества.
Рабочая станция 1 Рабочая станция 2 Рабочая станция 2
Прикладная Btrieve Прикладная
программа программа
ДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДД
(1)открыть файл і і
і і (2)открыть файл
(3)читать запись 101 і і
і і (4)читать запись 101
(5)корректировать і і
запись 101 і і
і і (6)корректировать
і і запись 101
і(7)Btrieve возвра-і
іщает состояние і
іконфликта і
і і (8)повторение (6)
Рис.2.3
Пассивный метод
Вы можете эффективно комбинировать пассивный метод c контролем
уровня транзакции. Когда одна рабочая станция обращается к файлу
в транзакции, другие рабочие станции не могут больше
корректировать файл или обращаться к нему в пределах их
собственных транзакций.
Если такая попытка будет иметь место, Btrieve возвращает
состояние занятости или ожидает, пока закончится первая
транзакция, в зависимости от того, как начнется транзакция второй
рабочей станции. любое количество рабочих станций может получить
возможность читать файл, если чтение идет вне транзакции.
Ha рис.2.4 показано, как прикладная программа, использующая
управление транзакции ожидания, может взаимодействовать c
прикладной программой, пользуясь пассивным методом соперничества.
Когда прикладная программа на рабочей станции 1 читает файл 1
в транзакции, рабочая станция 2 может также читать файл вне
транзакции, но для корректоровки его ожидает окончания
транзакции.
T.к. две рабочие станции обращаются к разным записям в одном и
том же файле, корректировка в рабочей станции 2 происходит
успешно. Если обе корректируют одну и ту же запись, Btrieve
возвращает состояние конфликта к рабочей станции 2 по
корректировке.
201/Rev1.00 2-29
Управление записями Btrieve
Рабочая станция 1 Рабочая станция 2 Рабочая станция 2
Прикладная Btrieve Прикладная
программа программа
ДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДД
(1)открыть файл 1 і і
(2)открыть файл 2 і і
і і (3)открыть файл 1
(4)начать транзакцию і і
(5)читать файл 1 і і
запись 10 і і
і і (6)читать файл 1
і і запись 95
і і (7)корректировать
і і файл 1, запись 95
і(8) Btrieve задер-і
іживается, т.к. pa-і
ібочая станция 1 і
ізаблокировала і
іфайл 1 і
(9)читать файл 2 і і
запись 10 і і
(10)корректировать і і
файл 1,запись 10 і і
(11)корректировать і і
файл 2,запись 10 і і
(12)закончить і і
транзакцию і(13)успешная кор- і
іректировка тран- і
ізакции і
Рис.2.4
Транзакция и пассивное соперничество
(в комбинации)
БЛОКИРОВКА ЗАПИСИ.
Когда программа обращается к записи в файле, она может указать
блокировку запись. Другие рабочие станции могут читать запись при
условии, что чтение выполняется не c опцией блокировки. Однако,
никакая другая рабочая станция не может блокировать,
корректировать или удалять запись, пока рабочая станция, которая
удерживает блокировку, не выключит ee.
Когда Вы блокируете запись, Вы используете соответветствующий код
операции, чтобы определить либо блокировку одной записи, либо
нескольких. Однократная блокировка позволяет рабочей станции
иметь только одну запись, заблокированную в файле одновременно;
множественная блокировка - несколько записей.
201/Rev1.00 2-30
Управление записями Btrieve
Btrieve разрешает блокировку c ожиданием и без. Блокировки с
ожиданием не возвращают код состояния в прикладную программу,
пока блокировка действительна. Блокировки без ожидания немедленно
возвращают в прикладную программу состояние занятости, когда
другая рабочая станция удерживает блокировку для записи. Когда Вы
используете блокировки без ожидания, прикладная программа должна
содержать логику либо ожидания и повторения, либо сообщения
ошибки пользователю, когда обнаруживается блокировка.
Когда рабочая станция успешно блокировала запись однократной
блоктровкой, блокировка продолжает действовать до одного из
следующих coбытий:
* рабочая станция корректирует или удаляет блокированную
запись. (Рабочая станция может читать и корректировать
другие записи в файле без выключения блокировки).
* рабочая станция блокирует другую запись в файле.
* рабочая станция запрашивает операцию разблокировки для
файла.
* рабочая станция закрывает файл.
* рабочая станция запрашивает операцию сброса, закрывая
открытые файлы.
* рабочая станция обращается к файлу в транзакции.
Когда рабочая станция успешно заблокировала одну или несколько
записей множественной блокировкой, блокировка действует до тех
пор, пока не произойдет одно из следующих событий:
* рабочая станция удаляет блокированную запись.
* рабочая станция разблокирует конкретную запись.
* рабочая станция закрывает файл.
* рабочая станция запрашивает операцию сброса, закрывая
открытые файлы.
* рабочая станция обращается к файлу в транзакции.
201/Rev1.00 2-31
Управление записями Btrieve
ОГРАНИЧЕНИЕ ДОСТУПА K ФАЙЛУ.
Btrieve позволяет Вам ограничить доступ к файлу, либо присвоением
имени владельца, либо открытием файла в исключительном режиме.
ИМЕНА ВЛАДЕЛЬЦА.
Btrieve позволяет Вам ограничить доступ к файлу заданием имени
владельца. Когда Вы присвоите имя владельца файлу, Btrieve
требует, чтобы имя было задано для всех будущих операций
открытия. Это предотвращает любой несанкционированный доступ или
изменение содержания файла пользователями или прикладными
программами, которые не имеет доступа к имени владельца.
Вы можете ограничить доступ так, что пользователи могут иметь
доступ к файлу только для чтения без определения имени владельца.
Присвоением этого избирательного права владения файлу,
пользователи и прикладные программы тем не менее не могут менять
содержание файла, если они не зададут имя владельца. Btrieve
позволяет Вам снимать права владения c файла, если Вы знаете имя
владельца, присвоенное ему.
Когда Вы присваиваете имя владельца, Вы можете также требовать,
чтобы Btrieve шифровал данные в файле диска, пользуясь именем
владельца как ключом шифровки. Шифрование файлов на диск
гарантирует, что непривелегированные пользователи не могут
изучать Ваши данные, пользуясь отладчиком или утилитой дампа
файла. T.к. шифрование требует дополнительного времени обработки,
выбирайте эту опцию только тогда, когда надежность данных важна в
Вашей среде.
ИСКЛЮЧАЮЩИЙ РЕЖИМ.
Если вы хотите ограничить доступ к файлу до одной рабочей
станции, Вы можете определить, чтобы Btrieve открывал файл в
исключительном режиме. Когда рабочая станция открывает файл в
исключительном режиме, никакая другая рабочая станция не может
открывать файл до тех пор, пока рабочая станция, которая открыла
файл в исключительном режиме, не закроет его.
201/Rev1.00 2-32
69
Управление записями Btrieve
3 ЗАПУСК BTRIEVE ПОД NETWARE
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
B этой главе дана информация по установке и конфигурированию
NetWare Btrieve для Вашей системы.
СИСТЕМНЫЕ ТРЕБОВАНИЯ
Btrieve может работать под NetWare v2.1x или выше. Если Вы
желаете гарантировать индивидуальные операции записи на диск и
гарантировать целостность файла и восстановление в случае отказа
файл-сервера, необходима система отслеживания транзакции NetWare
(TTS).
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ВАЖНО:
NetWare Btrieve не работает под ELS NetWare Level I или
Advanced NetWare 68, т.к. эти версии NetWare не поддерживают
VAP-процессы.
-------------------------------------------------
Для Btrieve требуется файл-сервер вычислительной сети c
достаточной памятью для загрузки NetWare, BSERVER и BROUTER. B
большинстве случаев файл-сервер должен иметь минимум 2MB памяти,
чтобы эффективно работали и NetWare и Btrieve.
Программа Btrieve (BREQUEST) требует приблизительно 25KB памяти
на каждой рабочей станции (допуская, что она загружается c
параметрами запуска по умолчанию). Точная величина требуемой
памяти зависит от параметров запуска, которые Вы определяете при
загрузке программы.
Если Вы используете интер-сеть, рабочие станции на вычислительных
сетях, которые используют NetWare Btrieve, должны иметь доступ к
файл-серверу, где загружены c помощью BSERVER и BROUTER.
ДИСКЕТЫ BTRIEVE.
Btrieve выгружен на два дискета: дискет PROGRAMS и дискет
UTILITIES. Вы должны сделать копии дискетов Btrieve, чтобы
сохранить оригиналы дискет на случай повреждения или утери. У
оригиналов дискетов Btrieve защищена запись, поэтому Вы не можете
случайно удалить или изменить их содержание. Дискет PROGRAMS
содержит следующие файлы:
201/Rev1.00 3-1
Управление записями Btrieve
ФАЙЛ ОПИСАНИЕ
BSERVER.VAP Файл, который NetWare загружает как процесс
добавления значений на файл-сервере.
BROUTER.VAP Программа отслеживания сообщения Btrieve. Это
программа используется для обеспечения
коммуникаций в интер-сети между BSERVER и
другими VAP-процессами, как например NetWare
SQL.
BREQUEST.EXE Программа запроса Btrieve для рабочих станций
DOS. Это программа-резидент, которую Вы
загружаете на каждой рабочей станции, которая
делает запросы Btrieve. BREQUEST передает
запросы Btrieve от прикладной программы к
файл-серверу.
BREQUEST.DLL Программа запроса Btrieve для рабочих станций
OS/2. Эта библиотека динамической связи,
которую OS/2 соединяет c каждой прикладной
программой Btrieve. Подпрограммы BREQUEST
передает запросы Btrieve от Вашей прикладной
программы к файл-серверу.
BTRCALLS.DLL Подпрограмма динамической связи Btrieve для
рабочих станций OS/2. Эта программа включена
для устранения необходимости повторного
редактирования программ OS/2 специально для
NetWare Btrieve.
Дискет UTILITIES содержит следующие файлы:
BUTIL.EXE Автономная утилита Btrieve.
BSETUP.EXE Утилита конфигурирования и установки Btrieve.
BSETUP.HLP Файл сообщений для программы BSETUP.
BASXBTRV.EXE Резидентный BASIC-интерфейс интерпретатором
BASIC.
BASXBTRV.OBJ Объектный модуль, содержащий интерфейс IBM
компилятора BASIC к Btrieve.
QBIXBTRV.OBJ Объектный модуль, содержащий интерфейс
QuiскВАSIС к Btrieve.
PASXBTRV.OBJ Объектный модуль, содержащий интерфейс Pascal
для IBM (или MicroSoft) Pascal-компилятора.
TURXBTRV.PAS Исходный текст, содержащий интерфейс Pascal
для компилятора Turbo Pascal.
201/Rev1.00 3-2
Управление записями Btrieve
ФАЙЛ ОПИСАНИЕ
BEXTERN.PAS Исходный текст Pascal, содержащий внешние
объявления для функции BTRV.
COBXBTRV.OBJ Объектный модуль, содержащий интерфейс COBOL
для компилятора MicroSoft COBOL, v2.
MSCXBTRV.C Исходный текст для интерфейса Microsoft С к
Btrieve.
BTRV.C Исходный текст C-интерфейса , используемый в
прикладных программах защищенного режима
OS/2.
C2FXBTRV.C Исходный текст интерфейса C, используемый c
прикладными программами OS/2 FAPI, которые
работают в защищенном режиме или режиме
совместимости.
UPPER.ALT Файл, содержащий альтернативную сортирующую
последовательность, которая используется для
сравнения ключей в верхнем и нижнем регистре,
как если бы они все находились в верхнем
регистре.
B.EXE Исполнитель функции Btrieve, программа
тестирования и обучения.
README.DOC Документ, который описывает любые изменения и
улучшения в Btrieve, внесенные в руководство
после его опубликования.
INTRFACE.DOC Документ, который описывает языковые
интерфейсы, находящиеся на дискете Btrieve,
которые не описаны в данном руководстве.
КОНФИГУРИРОВАНИЕ И УСТАНОВКА BTRIEVE.
Прежде чем Ваша прикладная программа сможет обратиться к NetWare
Btrieve, Вы должны прежде всего конфигурировать программы
Btrieve, затем установить их на файл-сервере.
Файлы BSERVER.VAP и BROUTER.VAP, включенны в дискет PROGRAMS
c установками по умолчанию для режимов инициализации. Несмотря на
то, что эти ycтановки подходят для многих систем, вас они могут
не устраивать. B этом разделе описаны опции конфигурации Btrieve
и дано объяснение, как пользоваться программой BSETUP.EXE для
конфигурирования и установки вашей версий BSERVER.VAP и
BROUTER.VAP на Ваших файл-серверах.
201/Rev1.00 3-3
Управление записями Btrieve
ОПЦИИ КОНФИГУРИРОВАНИЯ BTRIEVE.
Btrieve должен зарезервировать память и ресурсы при загрузке,
чтобы правильно работать. Вы можете настроить Btrieve для Вашей
системы изменением опций конфигурации. Сюда входят следующие
опции:
* Максимальное число открытых файлов
* Максимальное число описателеей файла
* Максимальное число блокировок записи
* Число параллельных транзакций
* Максимальный размер буфера сжатия
* Максимальная длина записи
* Максимальный размер страницы
* Максимальное число параллельных сессий
* Задержка обновления на пульте
* Автоматическая пометка транзакций.
Разделы на следующих страницах описывают каждую опцию, значения
по умолчанию и требуемую память, если она есть.
МАКСИМАЛЬНОЕ ЧИСЛО ОТКРЫТЫХ ФАЙЛОВ
Диапазон: 1-255
По умолчанию: 20
Требуемая память на файл: 115 байтов
Опция "Максимальное число открытых файлов" позволяет Вам
определить максимальное число уникальных файлов, которые будут
открыты на этом файл-сервере в любое данное время. Btrieve
использует значение, которое Вы определили для установления
размера внутренних таблиц, используемых для отслеживания активных
файлов. Каждый уникальный файл Btrieve на файл-сервере требует
один элемент.
201/Rev1.00 3-4
Управление записями Btrieve
МАКСИМАЛЬНОЕ ЧИСЛО ОПИСАТЕЛЕЙ (handle) ФАЙЛА.
Диапазон: 1 - <ограничение вычислительной сети>
По умолчанию: 60
Требуемая память на описатель: 114 байтов.
Опция "Максимальное число описателей файла" позволяет Вам
определить максимальное число описателей файла, которое Btrieve
позволит Вашей системе использовать одновременно. Если две
станции открывают один и тот же файл на файл-сервере, они
используют два описателя файла. Чтобы вычислить максимальное
число описателей, требуемое для Вашей системы, умножьте число
станций на максимальное число файлов, которое может открыть
каждая рабочая станция.
МАКСИМАЛЬНОЕ ЧИСЛО БЛОКИРОВОК ЗАПИСИ
Диапазон: 0 - <ограничение вычислительной сети>
По умолчанию: 20
Память, требуемая на блокировку: 8 байтов.
Опция "Максимальное число блокировок записи" устанавливает
максимальное число записей, которое может быть блокировано
одновременно на этом файл-сервере. Собственно, она определяет
число элементов для таблицы блокировки, которые строит Btrieve
при загрузке. Значение для этой опции относятся и к одиночным, и
к множественным блокировокам записи. Чтобы вычислить значение для
этой опции, определите максимальное число записей, которое может
открыть каждая рабочая станция, и умножьте это значение на число
paбочих станций, которые обращаются к файлам Btrieve.
ЧИСЛО ПАРАЛЛЕЛЬНЫХ ТРАНЗАКЦИЙ.
Диапазон: 0 - <сетевые ограничения>
По умолчанию: 0
Память, требуемая на транзакцию: 1,046 байтов.
Опция "Число совпадающих транзакций" устанавливает максимальное
число станций, которое могут иметь параллельные активные
транзакции на файл-сервере. Если Вы определите нулевое значение
для этой опции, никакие рабочие станции не могут запросить
операцию "начало транзакции" для файл-сервера. Если Вы определите
значение больше нуля для этой опции, Btrieve создает файл
транзакции, BTRIEVE.TRN, в каталоге \SYS\SYSTEM на файл-сервере и
позволяет столько активных транзакций на файл-сервере, которое Вы
определите.
201/Rev1.00 3-5
Управление записями Btrieve
МАКСИМАЛЬНЫЙ РАЗМЕР СЖАТОЙ ЗАПИСИ
Диапазон: 0 - <самая длинная запись в сжатом файле>
По умолчанию: 0
Память, необходимая на транзакцию: 2 * число заданных Кб
Опция "Максимальный размер сжатой записи" определяет размер (в
килобайтах) самой длинной записи, которая может быть вам доступна
из сжатого файла. Btrieve распределяет двойное число килобайтов,
которое Вы определили для буфера сжатия. Определение более
высокого значения, чем Вам необходимо, не улучшает рабочие
характеристики и может сократить память, пригодную для других
процессов на файл-сервере.
Если Вы используете сжатые файлы, установите значение для этой
опции по размеру самой длинной записи в любом из Ваших сжатых
файлов. Определите значение в килобайтах. Округлите любые
нечетные значения до следующего более высокого значения в
килобайтах. Например, если самая длинная запись к которой Вы
будете обращаться, имеет длину 1800 байтов, определите значение 2
для этой опции.
Если Вы не используете сжатые файлы, установите значение 0.
МАКСИМАЛЬНАЯ ДЛИНА ЗАПИСИ
Диапазон: 4 байта - 32 KB
По умолчанию: 8,192 байта
Необходимая память: (определенное значение + 269 байтов)
Опция "Максимально допустимая длина записи" определяет длину
самой длинной записи, к которой может обратиться прикладная
программа Btrieve на этом файл-сервере. Всегда определяйте длину
записи в байтах. Определение более высокого значения, чем Вам
необходимо не приводит к улучшению рабочих характеристик.
МАКСИМАЛЬНЫЙ РАЗМЕР СТРАНИЦЫ
Диапазон: 512 - 4,096 байтов
По умолчанию: 4,096 байтов
Необходимая память: нет
Опция "Максимально допустимый размер страницы" позволяет Btrieve
вычислить размер кеш-буферов, который необходим. Значение,
которое Вы определите здесь, должно быть максимальным размером
страницы любого файла Btrieve, к которому Вы хотите обратиться.
Это должно быть кратное 512, но не более 4,096 байтов.
201/Rev1.00 3-6
Управление записями Btrieve
МАКСИМАЛЬНОЕ ЧИСЛО ПАРАЛЛЕЛЬНЫХ СЕССИЙ
Диапазон: 1 - <число задач рабочих станций>
По умолчанию: 15
Память, необходимая для сессии: 1,296 байтов
Опция "Максимальное число параллельных сессий" определяет
максимальное число задач рабочих сессий, которые могут обращаться
к BSERVER в любое данное время. Сессия определяется как одна
копия BREQUEST, связанная c программой BSERVER. Каждая сессия
размещает два пакетных буфера для запросов Btrieve.
Определение более высокого значения, чем Вам требуется, не дает
улучшения рабочих характеристик.
ЗАДЕРЖКА ОБНОВЛЕНИЯ HA ПУЛЬТЕ.
Диапазон: 1-60 сек.
По умолчанию: 3 сек.
Необходимая память: нет
Опция "Задержка обновления на пульте" контролирует число секунд,
на которое задерживаются обновления экрана новой информацией из B
STATUS и B ACTIVE. Задержка позволяет Вам осмысливать информацию
на экране, наблюдая за активностью базы данных в реальном режиме
времени.
АВТОМАТИЧЕСКАЯ ПОМЕТКА ТРАНЗАКЦИИ
Диапазон: Да/Нет
По умолчанию: нет
Необходимая память: нет
Опция "Автоматическая пометка транзакции" управляет тем, будет ли
Btrieve помечать файлы как транзакционные при их создании. Если
на эту опцию Вы ответите "Да", Btrieve помечает вновь созданные
файлы как транзакционные. Если Вы ответите "Нет", Btrieve не
помечает файлы как транзакционные.
201/Rev1.00 3-7
Управление записями Btrieve
РЕЖИМЫ УСТАНОВКИ
Программа BSETUP позволяет Вам задавать следующие режимы
установки:
* Вы можете установить BSERVER и BROUTER непосредственно на
файл-сервере. B этом случае Вы должны быть
зарегистрированы в системе как SUPERVISOR или обладать
правами SUPERVISOR. Если это не так, в меню не появится
опции "Установка" и "Удаление".
* Вы можете скопировать файлы BSERVER.VAP и BROUTER.VAP в
поддиректорию или на дискету, выполнить BSETUP для
конфигурирования копии, потом либо установить копию на
текущем файл-сервере, либо перенести файл на другой
файл-сервер.
ЗАПУСК BSETUP
Чтобы запустить BSETUP, выполните следующее:
1. Запустите персональный компьютер, который Вы используете
для выполнения BSETUP.
2. Скопируйте BSERVER.VAP и BROUTER.VAP в поддиректорию или
на дискет, в зависимости от того, какой режим установки Вы
используете.
3. Убедитесь, что текущий каталог является поддиректорией, в
которую Вы скопировали программы NetWare Btrieve.
4. На подсказку DOS введите команду BSETUP следующим образом:
BSETUP
ИСПОЛЬЗОВАНИЕ BSETUP
При загрузке BSETUP появляется меню:
Допустимые режимы:
Сменить файл-сервер
Установить Btrieve
Удалить Btrieve
Сохранить конфигурацию
Установите конфигурацию
B следующих разделах описан каждый режим и дана информация об их
использовании для конфигурирования и установки Btrieve. Опции
представлены в порядке наиболее вероятного их выполнения. Если вы
нуждаетесь в подсказке относительно ваших текущих действий,
нажмите на клавишу F1 (помощь). Используйте клавиши co стрелками
"вверх" и "вниз" для выделения режимов в меню. Для выхода из меню
режимов, нажмите .
Чтобы выйти из BSETUP, нажмите в меню "Доступные режимы"
201/Rev1.00 3-8
Управление записями Btrieve
и выделите "Yes" в меню "Выйти из BSETUP?".
CMEHA ФАЙЛ-СЕРВЕРА
Режим "Сменить файл-сервера" позволяет Вам выбрать файл-сервер,
на котором Вы хотите конфигурировать, установить, удалить или
сохранить NetWare Btrieve.
Чтобы сменить файл-сервер, выполните следующее:
1. Используйте клавиши co стрелками "вверх" или "вниз", чтобы
выделить опцию "Сменить файл-сервер" и нажмите .
Появится меню, в котором перечислены имена служебных
файловых процессоров, которые в настоящем подсоединены к
рабочей станции.
2. Используйте клавиши co стрелкой "вверх" или "вниз", чтобы
выделить имя файл-сервера, на котором Вы хотите выполнить
операцию BSETUP и нажмите .
После короткого ожидания повторно появится меню "Доступные
опции".
Если Вы обладаете правами супервизора на файл-сервере,
который Вы выбрали, появятся все опции меню. После этого
Вы можете конфигурировать, устанавливать, удалять или
сохранять NetWare Btrieve на этом файл-сервере.
Если Вы не обладаете правами супервизора на файл-сервере,
который Вы выбрали, опции "Установка NetWare Btrieve" и
"Удаление NetWare Btrieve" не появятся. Вы можете только
конфигурировать и сохранять конфигурацию NetWare Btrieve
на файл-сервере, на котором Вы не обладаете правами
супервизора.
УСТАНОВКА КОНФИГУРАЦИИ
Режим "Установить конфигурацию" позволяет Вам определить опции
Btrieve для копии Btrieve в текущем каталоге.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ПОМНИТЕ:
Если BSERVER.VAP и BROUTER.VAP не присутствуют в текущем
каталоге, когда Вы пытаетесь установить режимы
инициализации, BSETUP выдает сообщение об ошибке и завершает
работу.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Чтобы установить одну или несколько опций инициализации,
выполните следующее:
1. Выделите "Установить конфигурацию" в меню "Доступные
режимы" и нажмите .
Ha экране появится следующее:
201/Rev1.00 3-9
Управление записями Btrieve
Число открытых файлов: 20
Число описателей: 60
Число блокировок: 20
Число транзакций: 0
Наибольший размер уплотненной записи: 0
Наибольший размер записи: 8192
Наибольший размер страницы: 4096
Число сессий: 15
Значение для обновления консоли: 3
Создать файлы как транзакционные: да
Значения, указанные в полях справа от двоеточия, -это
значения, которые были определены в последний раз для
опций. Если Вы конфигурируете новую копию Btrieve, в полях
появляются значения по умолчанию.
2. Выделите поле, которое Вы хотите переустановить.
3. Введите новое значение и нажмите . Если Вы нажмете
, ранее определенный режим останется в без изменения.
Если Вы введете в ошибочное значение опции, BSETUP
предупредит Bac соответствующим сообщением об ошибке. B
этом месте Вы должны удалить неправильное значение и
ввести правильное.
4. Продолжайте выделять поля и вводить новые значения для
всех опций, которые Вы хотите переустановить.
Когда Вы введете все нужные значения, нажмите , чтобы
вернуться в меню "Доступные опции". Вы должны выполнить опцию
"Сохраните конфигурацию" для того, чтобы новые значения, которые
Вы определили, будут coxpaнены для программ NetWare Btrieve в
текущем каталоге.
СОХРАНЕНИЕ КОНФИГУРАЦИИ
Режим "Сохранить конфигурацию" позволяет Вам сохранить
конфигурацию Btrieve для копий BSERVER.VAP и BROUTER.VAP в
текущем каталоге. Вы не обязательно должны быть SUPERVISOR-м для
того, чтобы сохранить новую конфигурацию Btrieve.
Чтобы сохранить новую конфигурацию Btrieve, выполните следующее:
1. Выделите "Сохранить конфигурацию" и нажмите .
Появится сообщение "Обновление Btrieve".
2. Выделите "Yes" и нажмите . Когда Вы сохраняете
новую конфигурацию, BSETUP корректирует значения для
опций Btrieve в копиях BSERVER.VAP и BROUTER.VAP, хранимых
в текущем каталоге.
BSETUP возвратится к меню "Доступные опции".
201/Rev1.00 3-10
Управление записями Btrieve
Если Вы хотите, чтобы новая конфигурация стала доступной для
текущего файл-сервера, выполните опцию "Установить Btrieve" в
меню "Доступные опции", снова загрузите сеть.
УСТАНОВКА BTRIEVE
Режим "Установка Btrieve" позволяет Вам установить Btrieve на
файл-сервере, в котором Вы зарегистрированы. Вы должны быть
зарегистрированы как SUPERVISOR или обладать правами супервизора
для установки Btrieve на файл-сервере.
Чтобы установить Btrieve на файл-сервере, выполните следующее:
1. Выделите опцию "Установить Btrieve" на меню "Доступные
опции" и нажмите .
Если NetWare Btrieve не установлен на текущем
файл-сервере, появится блок запроса с уведомлением, что вы
должны ввести пароль для Btrieve.
Если NetWare Btrieve уже установлен на файл-сервере,
появится сообщение "Замена Btrieve" c вопросом, хотите ли
Вы заменить установленные текущие программы. B этом случае
выполните следующее:
a) Чтобы отменить установку и вернуться к меню "Доступные
опции", выделите "No" и нажмите , или просто
.
в) Чтобы заменить существующую конфигурацию, выделите
"Yes" и нажмите .
Если Вы ответите "Yes" на сообщение "Замена Btrieve"
появится окно ввода для того, чтобы вы ввели пароль
Btrieve.
3. NetWare Btrieve требует пароль, чтобы идентифицировать
себя для NetWare. Это предотвращает доступ
несанкционированной программы к NetWare, используя имена
объектов Btrieve.
Чтобы отменить установку в этом месте и вернуться к меню
"Доступные опции", нажмите .
Для продолжения установки введите пароль для Btrieve
длиной до восьми знаков и нажмите . Если Вы не
хотите определять пароль, но xoтите продолжить установку,
нажмите на на запрос о пароле. Появится сообщение
"Установка BROUTER"
-------------------------------------------------
ПОМНИТЕ:
Сообщение пароля - последняя ступень в процессе установки,
на которой Вы хотите полностью отменить установку программ
NetWare Btrieve. Если Вы будете продолжать процесс, Вы
должны установить по крайней мере программу BSERVER.
-------------------------------------------------
201/Rev1.00 3-11
Управление записями Btrieve
4. Сообщение "Установка BROUTER" дает Вам опцию установки
программы BROUTER одновременно c BSERVER.
Чтобы установить и BSERVER и BROUTER, выделите "Yes" и
нажмите . BSETUP будет
* Копировать BSERVER.VAP и BROUTER.VAP на каталог
SYS:SYSTEM на желаемом файл-сервере;
* Определять программы NetWare Btrieve как объекты для
NetWare и присвоить BSERVER-пароль, который Вы
определили. (BROUTER не требует пароля).
Чтобы установить только BSERVER, выделите "No" и нажмите
. BSETUP будет:
* копировать BSERVER.VAP в каталог SYS:SYSTEM на заданном
файл-сервере;
* создавать BSERVER как объект для NetWare и присваивать
ему пароль, который Вы определили.
He устанавливайте BROUTER, если не используете другой VAP,
который делает вызовы Btrieve (как например NetWare SQL).
5. После того, как Вы смонтируете новые программы NetWare
Btrieve на файл-сервере, Вы должны повторно запустить
файл-сервер, чтобы новые опции конфигурации были активны.
УДАЛЕНИЕ BTRIEVE
Режим "Удалить Btrieve" убирает программы Btrieve из
файл-сервера, в который Вы в настоящее время вошли. После того,
как Вы выполнили этот режим, Btrieve VAP больше не загружается на
этот файл-сервер. Вы должны быть SUPERVISOR-ом или обладать
правами супервизора для удаления Btrieve из файл-сервера.
Чтобы убрать Btrieve из файл-сервера, выполните следующее:
1. Выделите опцию "Удалить Btrieve" и нажмите .
Появится сообщение "Удаление Btrieve".
2. Выделите "Yes" и нажмите .
Когда Вы выбираете эту опцию, BSETUP будет:
* удалять BSERVER.VAP (и BROUTER.VAP, если установлена)
из каталога SYS:SYSTEM на заданном файл-сервере.
* удаляет имя объекта Btrieve и пароль из сети.
201/Rev1.00 3-12
Управление записями Btrieve
-------------------------------------------------
ПОМНИТЕ:
Если NetWare SQL определен как объект в таблицах NetWare,
BSETUP не уберет файлы программы NetWare Btrieve. Вы должны
удалить файлы программы NetWare SQL из файл-сервера до того
как сможете удалить файлы NetWare Btrieve. Для получения
большей информации обратитесь к руководству NetWare SQL
User's Manual, глава 3.
-------------------------------------------------
OCTAHOBKA BTRIEVE VAP-ПРОЦЕССА
После активизации BSERVER и BROUTER они остаются резидентными в
памяти файл-сервера все время, пока работает операционная
система NetWare. Вы не можете убрать их из памяти файл-сервера
без предварительного удаления с помощью утилиты BSETUP (см.
"Удаление Btrieve" на стр. 3-16) и дальнейшего рестарта
операционной системы.
Когда Вы запрашиваете команду DOWN на файл-сервере, BSERVER
выполняет сброс всех активных соединений вычислительной сети,
которые обращаются к файлам на файл-сервере.
ПРОГРАММА BREQUEST
NetWare Btrieve содержит программы BREQUEST для рабочих станций
как DOS, так и OS/2. B этом разделе описаны опции запуска
BREQUEST и даны инструкции по выполнению BREQUEST в обоих средах.
ОПЦИИ ЗАПУСКА BREQUEST
B этом разделе описаны опции запуска BREQUEST и значения, которые
можно назначать для них.
[/R:назначенные приводы]
/R режим означает максимальное число приводов, к которым может
обращаться рабочая станция. Когда Вы опускаете эту опцию,
BREQUEST использует значение по умолчанию 3. Каждый привод,
который Вы определяете, увеличивает резидентный размер памяти
BREQUEST на 20 байтов. Например, если рабочая станция имеет пять
приводов, определите /R опцию следующим образом:
/R:5
[/D: длина сообщения данных]
/D режим определяет длину самой длинной записи, к который Вы
обращаетесь через Btrieve. BREQUEST использует значение, которое
Вы определяете здесь для вычисления длины буфера сообщения
данных, которые он резервирует для передачи записей между BSERVER
и Вашей прикладной программой. Значение в которое Вы вводите
здесь, должно быть таким же, как и максимальная длина записи,
которую Вы конфигурируете для Btrieve через программу BSETUP. См.
"Максимальная длина записи" на стр. 3-7
201/Rev1.00 3-13
Управление записями Btrieve
Значение по умолчанию для /D опции - 2048 байтов. Максимальная
длина записи, которую Вы можете определить, 32K байтов.
Определение большего значения, чем Вам необходимо, не дает
улучшений производительности.
BREQUEST поддерживает две копии буфера сообщения данных. /D режим
увеличивает резидентный размер памяти BREQUEST вдвое от того
количества байтов, которое Вы определяете, плюс 538 байтов.
Всегда определяйте длину записи в байтах. Например, если самая
длинная запись, которую использует Ваша прикладная программа,
имеет длину 3000 байтов, определите /D опцию следующим образом:
/D:3000
[/S: число файл-серверов]
/S режим определяет число файл-серверов, c которыми будет связана
paбочая станция. Значение по умолчанию для /S опции 1.
Максимальное значение, которое Вы можете определить, - 8.
Например, если рабочая станция имеет приводы, назначенные на три
файл-сервера, определите /S опцию следующим образом:
/S:3
BREQUEST ДЛЯ РАБОЧИХ СТАНЦИЙ DOS
Вы должны запустить программу BREQUEST на рабочей станции до
того, как рабочая станция сможет обратится к Btrieve-файлам сети
через BSERVER. Если вы хотите обратиться к локальным файлам на
рабочей станции, вы должны загрузить копию системы управления
записями Btrieve (либо одно-пользовательскую, либо DOS 3.1
NetWork) до того как вы загрузите BREQUEST. Запустите BREQUEST на
рабочей станции:
BREQUEST [/R: число приводов]
[/D: длина сообщения данных]
[/S: число служебных файловых процессоров]
Замените именем привода, на котором хранится BREQUEST. Вы
можете опустить имя привода, если BREQUEST хранится на текущем
приводе, или если он расположен в каталоге в вашем пути поиска.
Описание опций запуска BREQUEST дано на стр. 3-17 (начало).
Например, чтобы определить 4 привода, длину сообщения данных 2048
байтов и 2 файл-сервера, используйте следующую команду:
BREQUEST /R:4 /D:2048 /S:2
Чтобы гарантировать, что опции запуска всегда были правильно
установлены, поместите команду BREQUEST в файл AUTOEXEC.BAT
рабочей станции.
201/Rev1.00 3-14
Управление записями Btrieve
BREQUEST ДЛЯ OS/2 РАБОЧИХ СТАНЦИЙ
BREQUEST.DDL и BTRCALLS.DDL, подпрограммы динамической связи
Btrieve, должны быть установлены на рабочей станции до того, как
она сможет обратиться к файлам Btrieve вычислительной сети через
BSERVER.VAP. Когда запускается первая прикладная программа
Btrieve, OS/2 загружается автоматически.
УСТАНОВКА BREQUEST
Чтобы установить BREQUEST для OS/2, скопируйте файлы BREQUEST.DDL
и BTRCALLS.DDL c дискета в одно из следующих мест:
* один из каталогов, определенных в команде LIBPATH в файле
CONFIG.SYS
* корневой каталог привода загрузки OS/2
Для получения большей информации o LIBPATH и для идентификации
расположения библиотек динамической связи обратитесь к
руководству по OS/2.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ОЧЕНЬ ВАЖНО!
BREQUEST.DDL и BTRCALLS.DDL (подпрограммы динамической
связи, поставленные c NetWare) поддерживают доступ только к
удаленым файлам. Прикладная программа на рабочей станции
OS/2 не может обращаться к локальным файлам, используя эти
подпрограммы.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ИНИЗИАЛИЗАЦИЯ BREQUEST
Вы можете определить опции инициализации, которые специфичны
каждой прикладной программы Btrieve, выполняемой на рабочей
станции. BREQUEST использует переменную среды OS/2, REQPARMS ,
для определения опций инициализации, которые нужны прикладной
программе. Опции инициализации BREQUEST описаны в главе "Опции
запуска BREQUEST" на стр. 3-17.
Установите опции инициализации BREQUEST, используя следущую
команду среды:
SET REQPARM=[/R:число приводов c управлением памятью]
[/D:длина сообщения данных]
[/S:число служебных фацловых процессоров]
He включайте пробелы между именем переменной REQPARMS
и знаком равенства. Вы можете, однако, вставить пробелы между
каждой опцией инициализации, которую вы определяете.
Например, чтобы определить 4 привода, длину сообщения данных 2048
байтов и 2 файл-сервера, используйте следущую команду:
SET REQPARMS=/R:4/D:2048/S:2
201/Rev1.00 3-15
Управление записями Btrieve
Чтобы обеспечить постоянную готовность опций инициализации
BREQUEST, поместите команду SET REQPARMS в специальный файл
инициализации системы OS/2.
OCTAHOBKA BREQUEST
Ha рабочей станции DOS существует два метода, которые вы можете
использовать для удаления BREQUEST из памяти:
* Ваша прикладная программа может запросить операцию Stop
(Btrieve операция 25)
* Вы можете выполнить команду BUTIL от командной линии
рабочей станции
Ha рабочей станции OS/2 операционная система удаляет из памяти
подпрограммы динамической связи, когда заканчивается последняя
прикладная программа Btrieve. Вы не можете убирать подпрограммы
динамической связи из памяти, пока активна прикладная
программа Btrieve, т.к. операционная система динамически
соеденяет их c прикладной программой, когда последняя
загружается.
201/Rev1.00 3-16
69
Управление записями Btrieve
ПРОГРАММА BUTIL
Программа BUTIL содержит целый набор команд для создания файла,
его обслуживания и восстановления. B следующих разделах дано
описание как запускать BUTIL, контролировать сообщения об
ошибках BUTIL, создавать файлы описания BUTIL, и менять файлы
альтернативной сортирующей последовательности. Команды BUTIL
представлены в алфавитном порядке под заголовком 'Команды
BUTIL',которые начинаются на стр. 4-16.
4 УTИЛИTЫ
NetWare Btrieve обеспечивает вас целым набором утилит, которые
помогут вам в создании файла, его обслуживании, тестировании и
отладке. Кроме того, NetWare Btrieve включает несколько утилит
командной строки, которые позволяют вам отслеживать и управлять
работой NetWare Btrieve вашей вычислительной сети.
Три утилиты NetWare Btrieve :
* BUTIL.EXE программа,содержащая команды, которые позволяют
вам создавать и управлять файлами данных Btrieve
* B.EXE (исполнитель функций Btrieve), интерактивная
утилита,которую вы можете использовать в инстуктивных
целях и для тестирования и отладки логики вашей прикладной
программы;
* утилиты командной строки, которые позволяют вам
контролировать и управлять работой NetWare Btrieve на
вашей вычислительной сети.
ЗАПУСК BUTIL.
Чтобы запустить BUTIL выполните следующее
1 запустите программу BREQUEST до запуска BUTIL. Если вам
нужна помощь по этой процедуре, см. 'Программа BREQUEST',
на стр.3-17
2 введите команду BUTIL в следующем формате :
:BUTIL - COMMAND [Parameters] [-O ]
Замените < DRIVE > именем привода или другим устройством,
которое содержит файлы программы BTRIEVE. Вы можете опустить
привод, если намереваетесь использовать текущий привод.
Замените -COMMAND именем команды Btrieve (COPY, LOAD т.д.),
которую вы хотите использовать. Вы должны поставить перед
командой тире ( - ).
Замените [Parameters] информацией, которая нужна BUTIL для
выполнения избранной вами команды. Параметры описаны под
заголовкми для соответствующей команды.
201/Rev1.00 4-1
Управление записями Btrieve
Замените либо именем владельца файла BTRIEVE, к которому
будет обращена команда, либо звездочкой. Если вы используете
звездочку вместо имени владельца, BUTIL запросит у вас имя
владельца файла. BUTIL требует параметр -o , если
какой-либо из файлов Btrieve ,определенных в команде, требует имя
владельца.
BUTIL отбрасывает начальные пробелы, если звездочка ( * ) не
является первым непробельным знаком -o параметра.
Если вы зададите два файла Btrieve в команде, вы должны
определить -o параметр дважды, по одному разу на каждый файл.
Если только второй файл имеет имя владельца, BUTIL игнорирует
первое имя владельца. Вы можете использовать опцию звездочки
дважды.
Если вы введете команду BUTIL без параметров, BUTIL выведет
список форматов всех команд. Вы можете вывести эти данные в файл
или на принтер, используя свойство переадресовки DOS.
СООБЩЕНИЯ ОБ ОШИБКАХ BUTIL.
BUTIL возвращает сообщения об ошибках двумя путями в зависимости
от того, откуда вы запускаете его - с командной строки или
в командном файле.
Если возникают ошибки во время прогона BUTIL c командной
строки, на экране появится сообщение c описанием проблемы. См.
Приложение B для получения информации o сообщениях об
ошибках BUTIL и Btrieve .
Если появляются ошибки во время прогона BUTIL в командном файле,
BUTIL вернет уровень ошибки DOS. B следующей таблице перечислены
и описаны уровни ошибок BUTIL :
Уровень ошибки Описание
0 утилита отработала без ошибок
1 утилита отработала, но возникла не очень
серьезная ошибка, например код
cocтояния 5 (значение дублирующего
ключа)
2 утилита до конца не отработала из-за
серьезноц ошибки, например, код
cocтояния 2 (I/O ошибка).
Вы можете проверить уровень ошибки DOS, включив в командный файл
после команды BUTIL проверку условия, подобное следующему :
IF ERRORLEVEL n ECHO MESSAGE
Замените n номером уровня ошибки BUTIL. Замените MESSAGE
смысловым сообщением.
201/Rev1.00 4-2
Управление записями Btrieve
Из-за того, что в командных файлах DOS проверяется переменная
ERROELEVEL, прежде всего вам нужно выполнять проверку на уровень
ошибок 2. Примерный вид командного файла, приведенный ниже,
демонстрирует один способ работы c уровнями ошибок BUTIL.
BUTIL - LOAD LOADFILE BTRFILE - OOWNRNAME
IF ERRORLEVEL 2 ECHO Fatal Error: BUTIL operation incomplete
IF ERRORLEVEL 1 ECHO Nonfatal Error: Check for duplicates in load file.
IF ERRORLEVEL 0 ECHO Operation completed successfuly
Прочтите описание командных файлов в руководстве к операционной
системе для получения большей информации o том, как использовать
переменную ERRORLEVEL
ФАЙЛЫ-ДЕСКРИПТОРЫ BUTIL
Несколько команд BUTIL, включая CREATE, SAVE и SINDEX
используют файлы-дескриторы. Файл-дескритор - это
последовательный ASCII-файл, который содержит определенную
информацию, необходимую Btrieve для выполнения операций.
B следующем разделе описаны элементы , используемые в
файлах-дескрипторах BUTIL. Правила, которыми вы должны
пользоваться при задании элементов файл-дескритора, приводятся за
описанием каждого элемента.
ЭЛЕМЕНТЫ ФАЙЛА-ДЕСКРИПТОРА
Файлы-дескрипторы состоят из перечня элементов. Элемент состоит
из ключевого слова , за которым следует знак равенства (=), a за
ним следует значение. Каждый элемент в файл-дескриторе
соответствует определенной характеристике файла Btrieve или
определению ключа. Полное описание файла Btrieve и характеристик
ключа дано в главе 2 'Управление файлами BTRIEVE'.
Ha следующих страницах дано объяснение элементов файл-дескритора.
Некоторые элементы файл-дескритор помечены как 'OPTIONAL' и
могут быть опущены, если они не нужны для файла или определения
ключа.
Элементы представлены в порядке, в котором они должны появляться
в файл-дескриторе. Под каждым заголовком вы найдете следующие
подзаголовки :
* элемент - представляет правильный формат для ключевого
слова элемента. Значение представлено как имя переменной.
Переменные, представляющие цифровые значения, показаны
знаками NNNN. Другие значения объяснены в тексте c
описанием каждого элемента.
* диапазон - определяет диапазон допустимых значений,
которые вы можете установить для элемента.
* команды - перечень команд BUTIL, которые требуют задание
элемента в файл-дескриторе.
201/Rev1.00 4-3
Управление записями Btrieve
После подзаголовков идет краткое описание элемента и как он
используется.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Примечание.
Значение в описаниях элементов даны в кавычках. He
заключайте в кавычки значения в вашем дескрипторном файле.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Длинa зaпиcи
элемент : record=< NNNN >
диапазон : 4 - 4090
кoмaнды: CREATE
Элемент 'длина записи' определяет логическую длину записи данных
для файла. Для записей фиксированной длины это значение должно
соответствовать длине параметра буфера данных, в котором
выполняются операции на файле. Если вы используете записи
переменной длины, то длина записи, которую вы здесь используете,
должна соответствовать части фиксированной длины записи.
Минимальная длина записи файла должна быть достаточно большой,
чтобы вмещать все ключи,определенные для файла, но не менее
четырех байтов. Длина записи, плюс заголовок ключа, плюс шесть
байтов, не должны превышать размер страницы файла.
Зaпиcи пepeмeннoй длины
элемент : variable=
диапазон : нет
команды : CREATE
Элемент 'Зaпиcи пepeмeннoй длины' определяет, хотите ли вы,
чтобы файл содержал записи переменной длины или нет. Задайте 'y'
если вы хотите, чтобы файл, который вы создаете, разрешал записи
переменной длины. B противном случае задайте 'n'.
Усечение пробелов
элемент : truncation=
диапазон : нет
кoмaнды : CREATE
Элемент 'Усечение пробелов', определяет, хотите ли вы чтобы
Btrieve выполнял усечение пробелов в записях переменной длины.
Ключевое слово требуется в том случае, если вы задаете 'y'.
201/Rev1.00 4-4
Управление записями Btrieve
Задаете 'y', если вы хотите, чтобы Btrieve использовал усечение
пробелов. B противном случае задайте 'n'.
сжатие данных
элемент : compress=
диапазон : нет
команды : CREATE
Элемент 'сжатие данных' определяет, хотите ли вы, чтобы Btrieve
выполнял уплотнение данных на записях, вставленных в файл.
Задайте 'y',если вы хотите чтобы Btrieve выполнял уплотнение
данных. B противном случае задайте 'n'.
Количество ключей
элемент : key=
диапазон : 1 - 24
команды : CREATE
Элемент 'Количество ключей' устанавливает количество ключей,
которое должно быть определено в файле. Если вы задаете значение
0 для этого элемента, Btrieve создаст файл только данных. B
противном случае Btrieve создаст либо стандартный файл BTRIEVE,
либо файл только ключа, в зависимости от значения, которое вы
задаете для элемента 'включение данных'.
Для значения больше 0 вы должны определить по крайней мере 1
ключ, и не более 8, если размер страницы 512 байтов. Если 1024
или больше, вы сможете задать до 24 ключей.
Paзмep страницы
элемент : page=< NNNN >
диапазон : 512 - 4096
команды : CREATE
Элемент 'Paзмep страницы' определяет физический размер страницы
для файла. Вы можете определить любое кратное 512, до 4096.
201/Rev1.00 4-5
Управление записями Btrieve
Предварительное распределение страницы
элемент : allocation= < NNNN >
диапазон : 1 - 64 к
команды : CREATE
Элемент 'Предварительное распределение страницы' определяет
число страниц, которое вы желаете предварительно распределить для
файла. Если вы не желаете предварительно распределять страницы,
не включайте это ключевое слово в ваш файл-дескритор.
Замена существующего файла (опционный)
элемент : replace=
диапазон : нет
команды : CREATE
Элемент 'Замена существующего файла' показывает, что вы не
хотите, чтобы Btrieve создавал новый файл, если файл имеет имя
существующего файла, и предупреждает вас o существовании файла.
Задайте 'n', если вы не хотите создавать новый файл на
существующем.
Если вы хотите заменить существующий файл Btrieve новым пустым
файлом c таким же именем, либо задайте 'replace=y', либо не
включайте этот элемент в файл-дескритор.
Включение данных (опционный)
элемент : data=
диапазон : нет
команды : CREATE
Элемент 'Включение данных' определяет, хотите ли вы чтобы Btrieve
создал файл только ключа. Задайте 'n', если вы хотите, чтобы
Btrieve создал файл только ключа.
Для создания стандартного файл, либо задайте 'y' для элемента
'Включение данных', либо опустите элемент из файл-дескритора.
Чтобы создать файл только данных, задайте 'y' для элемента
'Включение данных' и установите элемент 'число ключей' в 0.
201/Rev1.00 4-6
Управление записями Btrieve
Пopoг свободного пространства
элемент : fthreshold= < 10 / 20 / 30 >
диапазон : 10% ,20% или 30% от размера страницы
команды : CREATE
Элемент 'Пopoг свободного пространства' определяет величину
свободного пространства, которое Btrieve будет резервировать по
на странице файла для расширения записи переменной длины.
Значение, которое вы определяете, выражается как процент от
размера страницы.
He включайте элемент 'Пopoг свободного пространства' в
файл-дескритор, если не разрешаются записи переменной длины. Если
вы задайте 'variable=y' и не задаете порог свободного
пространства, Btrieve использует значение 5% от размера страницы.
-------------------------------------------------
Примечание:
Cледующие элементы определяют информацию о ключах файла. Вы
должны задавать ее, начиная c положения ключа, для каждого
сегмента ключа, который вы хотите определить.
-------------------------------------------------
Пoлoжeниe ключа
элемент : position= < NNN >
диапазон : 1 - < длина записи >
команды : CREATE, INDEX, SINDEX
Элемент 'Пoлoжeниe ключа' указывает на положение сегментного
ключа в записи. Положение ключа должно быть по крайней мере 1 и
не может быть больше чем значение, которое вы определили для
длины записи. Ключи, которые вы определяете, могут перекрываться.
Длина ключа
элемент : length= < NNN >
диапазон : 1 - < лимит для типа ключа >
команды : CREATE, INDEX, SINDEX
Элемент 'Длина ключа' определяет длину ключа или поле сегмента
ключа. Общая длина ключа и начальное положение не могут превышать
определенную длину записи файла. Длина ключа должна быть четным
числом, если ключ двоичного типа.
201/Rev1.00 4-7
Управление записями Btrieve
Неуникальный ключ
элемент : dublicates=
диапазон : нет
команды : CREATE, INDEX, SINDEX
Элемент 'Неуникальный ключ' определяет, хотите ли вы разрешить
более одной записи в файле c одинаковым значением для этого поля
ключа.
Задайте 'y' , если хотите разрешить дублирование ключа. B
противном случае задайте 'n'.
Модифицируемый ключ
элемент : modifiable=
диапазон : нет
команды : CREATE, INDEX, SINDEX
Элемент 'Модифицируемый ключ' определяет, хотите ли вы разрешить
прикладной программе модифицировать значение ключа во время
операции обновления.
Задайте 'y', если вы хотите чтобы значения для этого ключа были
модифицироваными. B противном случае задайте 'n'.
Tип ключа
элемент : type= < допустимые типы >
диапазон : любые типы BTRIEVE-ключей
команды : CREATE, INDEX, SINDEX
Элемент 'Tип ключа' определяет тип данных для ключа. Вы можете
определить все слово (как в 'float') или только первые две буквы
слова ('fl' для плавающего типа). В приложении G дано больше
информации o типах ключей.
Убывающий порядок сортировки (опционный)
элемент : descending=y
диапазон : нет
команды : CREATE, INDEX, SINDEX
Элемент 'Убывающий порядок сортировки' определяет, хотите ли вы,
чтобы Btrieve упорядочивал индекс в убывающем порядке.
201/Rev1.00 4-8
Управление записями Btrieve
Включите элемент 'Убывающий порядок сортировки' и задайте 'y'
если вы хотите, чтобы Btrieve упорядочивал значения ключа в
убывающем порядке. Если вы не включаете этот элемент, Btrieve
будет упорядочивает значения ключа в возрастающем порядке.
Альтернативная сортирующая последовательность
элемент : alternate=
диапазон : нет
команды : CREATE, INDEX, SINDEX
Элемент 'Альтернативная сортирующая последовательность'
определяет, хотите ли сортировать данные в последовательности,
отличающейся от стандартной последовательности ASCII. Это
полезно в том случае, если вы хотите использовать не английский
алфавит или если вы хотите отобразить знаки нижнего регистра
клавиатуры на верхней.
Вы можете задавать этот элемент только для ключей типа string,
lstring или zstring. Если вы хотите, чтобы Btrieve сортировал
индекс в альтернативной сортирующей последовательности, введите
'y' в это поле. B противном случае задайте 'n'.
Pyчнoй ключ (опционный)
элемент : manual=
диапазон : нет
команды : CREATE, INDEX, SINDEX
Элемент 'Pyчнoй ключ' определяет, что ключ (или сегмент ключа)
который вы определяете, является ручным. Если вы задаете сегмент
ключа как ручной, вы должны определить "нулевое" значение для
этого сегмента. Если вы определили один сегмент как ручной, вы
должны определить каждый сегмент как ручной.
Hyлeвoй ключ
элемент: null=
диапазон: нет
команды: CREATE,INDEX,SINDEX
Элемент 'Hyлeвoй ключ' определяет, должен ли ключ, который вы
определяете, иметь нулевое значение. Если вы определяете нулевое
значение для одного сегмента ключа, вы должны определить нулевое
значение для каждого сегмента этого сегментного ключа.
"Нулевые значения" , которые вы определяете для каждого сегмента,
могут быть разными.
201/Rev1.00 4-9
Управление записями Btrieve
Вы можете включить элемент 'Hyлeвoй ключ' в файл-дескритор для
команды INDEX. Однако, INDEX игнорирует любое нулевое значение,
заданное вами. BUTIL допускает это, чтобы поддерживать
однотипности форматов для файл-дескриторов CREATE, INDEX, SINDEX.
Задайте 'y' ,если вы хотите определить нулевое значение для этого
ключа. B противном случае задайте 'n'.
Hyлeвoe знaчeниe ключa.
элeмeнт: value=
диапазон: любое 1 байтовое шестнадцатиричное
команды: CREATE,INDEX,SINDEX
Элемент 'Hyлeвoe знaчeниe ключa' определяет в шестнадцатиричной
форме значение, которое по вашему желанию Btrieve должен признать
как нулевой знак для ключа. Типичные нулевые значения- 20 для
пробела и 0 для двоичного нуля. Включайте этот элемент только
тогда, если вы разрешили нулевой ключ. Если вы задаете 'n' для
элемента 'Hyлeвoй ключ', не включайте элемент 'Hyлeвoe знaчeниe
ключa' в файл-дескритор.
Ceгмeнтный ключ
элемент: segment=
диапазон: нет
кoмaнды: CREATE, INDEX, SINDEX
Элемент 'Ceгмeнтный ключ' определяет, имеет ли определенный вами
ключ сегменты.
Задайте 'y', если ключ имеет другой сегмент. Задайте 'n', если вы
определяете несегментный ключ или последний сегмент сегментного
ключа.
Имя фaйлa альтернативной copтиpyющeй пocлeдoвaтeльнocти
элемент: name=<имя файла>
Диапазон: действительное имя файла
команды: CREATE, INDEX, SINDEX
Элемент 'Имя фaйлa альтернативной...' определяет имя файла,
который содержит альтернативную сортирующую последовательность
для файла, который вы создаете. Вы можете включить любое число
уровней каталога в имя файла.
201/Rev1.00 4-10
Управление записями Btrieve
ПPABИЛA ДЛЯ ДЕСКРИПТОРНЫХ ФAЙЛOB.
Следующие правила относятся к дескрипторным файлам BUTIL. Если
BUTIL возвращает ошибку во время попытки доступа к дескрипторному
файлу, ищите причину в следующем:
* все элементы, такие как 'type=fl',должны быть в знаках
нижнего регистра
* все элементы должны быть правильно написаны и отделены от
примыкающих элементов пробелом , символом табуляции, cr/lf
и т.д.
* элементы должны быть представлены в дескрипторном файле в
том порядке, в котором они были представлены в предыдущем
разделе.
* ответы должны быть согласованными. Например, если вы
определите 'null=y' для элемента 'нулевой ключ',должен
появиться элемент 'значение нулевого ключа' и его
значение; иначе быть не должно. Если вы определите
'alternate=y' для элемента 'альтернативная сортирующая
последовательность' в одном или нескольких ключевых
сегментах, элемент 'имя файла альтернативной сортирующей
последовательности' и полное файла должны присутствовать
как последний элемент в дескрипторном файле.
* убедитесь,что определено достаточное количество ключей для
в элементе 'число ключей'. Введите информацию о ключах,
начиная c положения ключа, для каждого сегмента ключа в
файле.
* убедитесь, что дескрипторный файл не содержит знаки
форматирования текста. (Некоторые системы подготовки
текстов встраивают форматирующие знаки в файл текста.
Дескрипторный файл не должен содержать форматирующие
знаки.)
* BUTIL не контролирует конец дескрипторного файла. Если вы
не определили альтернативную сортирующую
последовательность, можно включить много описаний ключа
без получения сообщения об ошибке. Вы можете включить
комментарии в конце дескрипторного файла после всех
описаний ключа и элемента 'имя файла альтернативной ...'.
* помните, что дескрипторные файлы для CREATE, INDEX и
SINDEX имеют слегка отличающиеся форматы.
ФАЙЛЫ АЛЬТЕРНАТИВНОЙ СОРТИРУЮЩЕЙ ПОСЛЕДОВАТЕЛЬНОСТИ
Первые 265 байтов файла альтернативной сортирующей
последовательности, содежат знаки в порядке, отличающемся от
стандартной последовательности ascii.
Если вы хотите создать файл альтернативной сортирующей
последовательности, вы должны написать прикладную программу,
которая генерирует файл в формате, определенном в таблице ниже.
201/Rev1.00 4-11
Управление записями Btrieve
Смещение длина описание
0 1 байт-подпись. Этот байт должен всегда
содержать шестнадцатиричное значение АС
1 8 8-байтовое имя, которое уникально
идентифицирует данную альтернативную
сортирующую последовательность для Btrieve.
9 256 256-байтовая таблица, содержащая copтирующее
значение для каждого знака. Значение хранится
по смещение, соответствующем положению
представленого знака в ascii. Например, чтобы
сортировать знак А не как 0x41 в коде ascii,
поместите новое значение сортировки на
смещении 0x41 в таблице.
Например, если вы хотите вставить знак c шестнадцатиричным
значением 5D между буквами U (шестнадцатиричное 55) и
V шестнадцатиричное 56) в вашей последовательности, байт 5D в
последовательности будет содержать значение 56 и байты 56-5c в
последовательности будут содержать значение 57-5D.
Файл UPPER.ALT, который вы найдете на дискете программы Btrieve,
содержит пример альтернативной сортирующей последовательности.
Эта специальная последовательность сравнивает знаки верхнего и
нижнего регистра,как если бы они все были в верхнем регистре.
Если вы имеете множество файлов c разной альтернативной
сортирующей последовательностью,то каждая последовательность
должна иметь свое имя.
201/Rev1.00 4-12
Управление записями Btrieve
КОМАНДЫ BUTIL
В следующих разделах описано, как использовать каждую из
следующих команд BUTIL:
Команда Функция
CLONE создает пустой файл Btrieve c теми же
характкристиками файла, как и существующего
COPY копирует содержание одного файла Btrieve в
другой файл Btrieve
CREATE создает файл Btrieve
DROP удаляет дополнительный индекс
EXTEND создает файл c несколькими частями
LOAD загружает содержимое стандартного
последовательного файла в файл Btrieve
RECOVER восстанавливает данные из поврежденного файла
Btrieve
RESET закрывает файл данных и овобождает ресурсы
SAVE сохраняет содержимое файла Btrieve в
стандартном последовательном файле.
SINDEX создает дополнительный индекс
STAT сообщает статус файла и текущих размерах
STOP завершает BREQUEST и локальный Btrieve (если
загружен) и убирает их из памяти
VER возвращает версию Btrieve и номера редакции
201/Rev1.00 4-13
Управление записями Btrieve
CLONE
-------------------------------------------------
Фopмaт кoмaнды
BUTIL -CLONE [-o ]
Oпиcaниe
Команда CLONE создает новый пустой файл Btrieve c теми же
спецификациями файла, включая любые дополнительные индексы, как
существующий файл. Вы можете использовать CLONE, когда хотите
повторить существующий файл, как если бы вы использовали CREATE.
Кроме того, CLONE не требует дескрипторного файла для создания
нового файла.
Kaк иcпoльзoвaть CLONE
Чтобы выполнить COPY, введите в команду в указанном формате.
Вместо вставьте имя файла Btrieve, который вы
хотите повторить. При необходимости вы можете задать полный
путь.
Вместо вставьте имя, которое вы хотите использовать
для нового пустого файла Btrieve. При необходимости вы можете
определить путь. Вместо вставьте имя владельца
существующего файла, если требуется, новый файл будет хранить
существующее имя владельца файла.
Пpимep
Следующая команда создает файл newinv.dat как пустую копию файла
invoice.dat. Имя владельца для файла invoice.dat - 'sandy'.
BUTIL-CLONE invoice.dat newinv.dat -o sandy
COPY
-------------------------------------------------
Формат команды
BUTIL-COPY