Turtle

 
 
 
   РАСШИРЕННЫЙ ПОИСК
   ПОИСК ПО ФРАГМЕНТУ
   ПОМОЩЬ
   ПРОСТАЯ ФОРМА
 
 СИНОНИМЫ   ВСЕ ФОРМЫ СЛОВ
 Добавить   Архитектура   Запросы сейчас   Цифры и факты   FAQ   Кнопка поиска   Сделать стартовой 

Модуль поддержки основного индекса Turtle Free Space vs/1.0

Статус этого документа.

Этот документ описывает подсистему поддержки свободного пространства основного индекса поисковой системы Turtle. Документ предназначен для служебного использования.

Copyright Notice

Copyright © Stack Technologies Ltd. (2001). All Rights Reserved.

Содержание.

1. Назначение.
2. Принципы работы.
3. Основные функции.

1. Назначение.

Основным назначением данной библиотеки функций является поддержка информации о наличии свободного пространства в файле данных индекса поиска, используемого SP для произведения логических операций с данными по поисковым терминам. В процессе изменения, удаления данных по поисковым терминам свободное место может освобождаться и может в дальнейшем быть вновь использовано для занесения туда новых данных соответствующего максимального размера. Использование подобной подсистемы позволяет эффективней использовать дисковое пространство без полного перестроения данных поискового индекса. Библиотека написана на языке программирования "C".

2. Принципы работы.

Библиотека функций реализована в виде отдельного модуля, входящего в состав основной библиотеки libturtle.a. Коды текстов функций находятся в файле src/lib/indexer_freespace.c. Подсистема держит в памяти сортированный по размеру список структур. Структура определена в подсистеме как:

typedef struct FREESPACE FREESPACE;

struct FREESPACE {
        u_int32_t       fs_size;	/* size of free space */
        off_t           fs_off;		/* position in the data file */
        FREESPACE       *fs_next;
        FREESPACE       *fs_prev;
        };

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

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

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

3. Основные функции.

u_int32_t freespace_total(off_t *res)
Помещает в переменную res суммарный размер свободного места в подсистеме.

void freespace_destroy(FREESPACE *f)
Освобождает структуру FREESPACE

void freespace_log(void)
Отладочная функция вывода содержания всех структур FREESPACE

void freespace_remove(FREESPACE *f)
Вспомогательная функция подсистемы удаления структуры f из активных цепочки структур.

int freespace_open(int flag)
Зачитывает ранее сохраненные значения структур из файла, определенного в конфигурационных параметрах как dmn.dmn_freespacedb. Возвращает 0 в случае успеха или -1 в случае неудачи. Диагностика заносится в лог-файл, определенный в конфигурации как dmn.dmn_logfile и открытый системой.

void freespace_sync(void)
Производит запись текущего состояния структур FREESPACE на диск в файл, определенный в параметрах системы как dmn.dmn_freespacedb.

void freespace_close(void)
Функция закрытия подсистемы свободного места, вызывает freespace_sync().

void freespace_resort(void)
Пересортирует массив структур, пытаясь слить вместе непрерывные куски свободного места в один. Функция должна вызываться периодически т.к. является относительно "дорогой".

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

void freespace_put(off_t begin, u_int32_t sz)
Поместить свободный блок файла данных индекса в подсистему.
Наверх Назад Turtle
 Черепаший Ранк.   Реклама на Turtle   Логотипы   Правовая информация   Конфиденциальность   Контакты 
    ©ЗАО "Группа компаний Стек". 2003-2007