Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Диплом К

.pdf
Скачиваний:
17
Добавлен:
23.03.2016
Размер:
1.22 Mб
Скачать

Код ошибки

Описание ошибки

 

 

btTREE_DelKeyNotFound

Не найден удаляемый элемент

btTREE_dsError

Ошибка в DS-файле

btTREE_ErrorCreateRes

Ошибка при создании результата поиска

btTREE_InternalDelKeyError

Внутренняя ошибка при удалении

btTREE_InvalidAddItem

Неверный элемент для добавления

btTREE_InvalidDelItem

Неверный элемент для удаления

btTREE_InvalidParameters

Неверные параметры при создании

btTREE_InvalidSearchItem

Неверный элемент для поиска

btTREE_InvalidSeekMode

Неверный режим позиционирования

btTREE_ItemAlreadyExist

Элемент уже существует

btTREE_NoMemory

Мало памяти

btTREE_NotFoundNullKey

Не найден нулевой ключ

btTREE_SeekBeforSearch

Позиционирования перед поиском

btTREE_TreeIsEmpty

Удаление из пустого индекса

btTREE_UniqKeyValueAlreadyExist

Есть значение при уникальном ключе

btTREEPATH_dsError

Ошибка в DS-файле

btTREEPATH_ErrorCreateCtrlBlock

Ошибка при создании управляющего

 

блока

btTREEPATH_ErrorCreateResBlock

Ошибка при создании блока данных

btTREEPATH_NoMemory

Мало памяти

btTREEPATH_ParamOutOfRange

Неверные входные параметры

btTREEPATH_TreeOverflow

Переполнение дерева

btTREERES_dsError

Ошибка в DS-файле

btTREERES_FileReadOnly

Режим только для чтения

btTREERES_InvalidMode

Неверный режим позиционирования

btTREESTACK_NoMemory

Нехватка памяти

 

 

Табл. 5. Список стандартных типов ключей

Символическая константа

Тип ключа

 

 

btKEY_STRING

Строка текста постоянной длины

btKEY_LSTRING

Строка текста переменной длины

btKEY_CHAR

Символ

btKEY_WORD

Целое число в интервале 0..215-1

btKEY_LONG

Целое число в интервале 0..231-1

btKEY_FLOAT

Вещественное число одинарной точности

btKEY_DOUBLE

Вещественное число двойной точности

btKEY_DATE

Дата

btKEY_TIME

Время

btKEY_MONEY

Деньги

btKEY_SPN

ВСН

btKEY_TELEPHONE

Телефон

btKEY_USER_TYPE

Пользовательский тип

 

 

Табл. 6. Список стандартных типов значений

Символическая константа

Тип значения

 

 

btVAL_STRING

Строка переменной длины

btVAL_NUMBER

Целое число

btVAL_CHAR

Символ

btVAL_WORD

Целое число в интервале 0..215-1

btVAL_LONG

Целое число в интервале 0..231-1

btVAL_FLOAT

Вещественное число одинарной точности

btVAL_DOUBLE

Вещественное число двойной точности

btVAL_DATE

Дата

btVAL_TIME

Время

btVAL_MONEY

Деньги

btVAL_SPN

ВСН

btVAL_TELEPHONE

Телефон

btVAL_USER_TYPE

Пользовательский тип

 

 

3.5.Заключение

Входе дипломного проектирования был создан работающий макет инструмента для разработки систем обработки документов (СОД). Разработанный инструмент удо-

влетворяет заданным в техническом задании требованиям.

Выделим наиболее важные возможности разработанного комплекса:

хранение в одной БД документов различного формата;

поддержку полноценного текстового поиска по текстовым полям документов;

открытость системы для новых типов полей документов;

поддержку сетевой работы в соответствии с архитектурой клиент-сервер;

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

Эти возможности стали доступны благодаря новому подходу к организации хра-

нения документов в БД и новым методам взаимодействия документов с БД и между со-

бой.

БД теперь не имеет логической структуры, которая перенесена на уровень доку-

ментов, и представляет собой “рабочий стол” документов, которые в принципе могут образовывать в рамках одной БД сложную иерархию. Документы могут иметь совер-

шенно различный внутренний формат, но, тем не менее, записываться в БД по единому механизму.

Осуществление взаимодействия между документами, после их считывания из БД,

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

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

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

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

Естественно, что за новые возможности надо платить. В нашем случае плата – это хранение структуры у каждого объекта1, что увеличивает объем файла данных.

3.5.1. Возможные области применения.

Наиболее подходящими являются задачи двух классов:

ориентированные на сложный поиск в слабо формализованных предметных об-

ластях;

часто изменяющиеся, но формализованные предметные области.

В качестве примеров первого класса можно привести различные медицинские,

юридические, образовательные, библиотечные задачи. Во всех них содержимое доку-

ментов или не может быть четко разделено на поля или сформирована или содержит большой объем текстовой информации. В этих областях, помимо хранения текстов пе-

ременного размера, требуется осуществление полноценного текстового поиска, жела-

тельно по запросам, заданным на естественном языке.

1Реляционные БД хранят логическую структуру БД один раз, обычно в начале файла данных, так

как она одинакова для всех записей.

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

сятки тысяч документов, поэтому требование реорганизации всех записей при измене-

нии логической структуры БД является неприемлемым.

Во всех случаях следует отдавать предпочтение информационным системам перед системами, ориентированными на сложные расчеты.

3.5.2. Почему разработанная СУБД не является реляционной?

Разработанная СУБД предназначена для работы с неструктурированной инфор-

мацией и не являются реляционной базой данных по определению. В любой реляцион-

ной БД информация структурирована в виде таблиц фиксированной формы, с помощью которых выполняется координированный доступ, хранение и поиск данных. Поскольку информация в этих таблицах жестко фиксирована, то связи между двумя или несколь-

кими таблицами, необходимые для выполнения этих функций, зафиксированы и четко определены. Конечно, это касается не теории реляционных СУБД, а их реализации.

4. ИССЛЕДОВАТЕЛЬСКАЯ ЧАСТЬ

4.1. Исследование реализации файла данных

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

4.1.1. Анализ компактности размещения записей переменной длины.

Основным предназначением разработанной реализации файла данных является хранение записей переменного размера. Естественно, что для этого надо идти на какие-

то накладные расходы при организации хранения информации. В результате длина фай-

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

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

Для первой страницы в цепочке введен термин головная, а для остальных – термин хво-

стовая. Широко известным примером такого подхода является организация хранения файлов на внешних носителях в операционной системе MS-DOS. В нашей реализации в качестве названия сегмента используется термин страница.

Оценим теоретически величину накладных расходов при хранении записей пере-

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

ляющие:

заголовок записи;

заголовки страниц (для каждой страницы);

незаполненная часть на последней хвостовой странице.

Для исходных величин введем следующие обозначения:

L - длина записи,

Lстр - длина страницы,

pз - длина заголовка записи,

pстр - длина заголовка страницы.

Тогда число страниц в одной записи (n) можно рассчитать следующим образом:

 

 

 

 

n

L pç 1

 

1,

(1)

 

L cmp pcmp

 

 

Теперь легко вычислить объем служебной информации ( ) для одной записи фай-

ла данных:

n Lcmp L ,

(2)

Чтобы получить для всего файла данных надо просто просуммировать ее по

каждой записи:

 

 

k

 

 

(ni

L cmp L i ),

(3)

i 1

 

 

где k - число записей в файле.

Переменным параметром в этих формулах является длина записи - L. В зависимо-

сти от нее величина накладных расходов может сильно меняться за счет изменения сво-

ей последней составляющей - размера незаполненной части на последней странице.

Теоретически мы можем оценить максимальное и минимальной значение . Макси-

мальное будет для таких L, при которых на последней хвостовой странице будет занят только один байт (проще говоря, для записей длиной в 1 байт). Тогда:

max ( n 1) pcmp pç Lcmp 1,

(4)

Минимальное значение будет для таких L, при которых на последней хвостовой странице незаполненное место вообще отсутствует. Например:

 

 

L Lcmp pç pcmp,

(5)

Тогда:

 

 

 

 

 

 

 

 

 

 

min n pcmp pç,

(6)

Теперь можно получить конкретные цифры - рассчитаем максимальную и мини-

мальную долю служебной информации в файле данных:

 

 

 

 

L cmp 1

100%,

(7)

max %

 

 

 

 

 

L cmp

 

 

 

 

 

 

 

 

 

 

 

p3 pcmp

100%,

(8)

min %

 

 

 

 

Lcmp

 

 

 

 

 

 

 

Возьмем Lстр= 512 байт (в текущей реализации pз= 7 байт, а pстр= 5 байт). Тогда:

max % 512 1 100% 998%.,

(9)

 

512

 

 

min %

5 7

100% 2.3%,

(10)

 

512

 

 

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

ных.

Проведем экспериментальную оценку. На практике размер помещаемых записей является случайной величиной, распределенной по какому-то закону в некотором ин-

тервале. Для эксперимента примем, что размер записей является равномерно распреде-

ленной случайной величиной в интервале от 200 до 30000 байт. По результатам экспе-

римента были построены графики, показанные на рисунках 26 и 27. Результаты экспе-

римента показывают, что доля служебной информации колеблется от 4% до 17%, в за-

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

це.

 

6000

 

 

 

 

 

 

 

 

 

 

 

 

 

5000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

256

 

 

 

 

 

 

 

 

 

 

4000

 

 

512

 

 

 

 

 

 

 

 

 

Объем данных,Кб

 

 

 

1024

 

 

 

 

 

 

 

 

 

3000

 

 

2048

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2000

 

 

 

 

 

 

 

 

 

 

 

 

 

1000

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

0

500

1000

1500

2000

2500

3000

3500

4000

4500

5000

5500

6000

 

 

 

 

 

Î áúåì ô àéëà äàí í û õ, êÁ

 

 

 

 

 

Рис. 26. Зависимость объема данных в файле данных от объема файла данных

 

100

 

 

 

 

 

 

 

90

 

 

 

 

 

 

информации,%

80

 

 

 

 

256

 

 

 

 

 

 

 

70

 

 

 

 

512

 

60

 

 

 

 

1024

 

 

 

 

 

2048

 

 

 

 

 

 

 

50

 

 

 

 

 

 

служебной

 

 

 

 

 

 

40

 

 

 

 

 

 

30

 

 

 

 

 

 

 

 

 

 

 

 

 

Äîëÿ

20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

0

1000

2000

3000

4000

5000

6000

 

 

 

Î áúåì

ô àéëà äàí í û õ, êÁ

 

 

 

 

Рис. 27. Доля служебной информации в файле данных

 

4.1.2. Время выполнения базовых операций с записями.

В качестве основных были выбраны наиболее часто используемые операции: до-

бавление новой записи, удаление существующей и чтение заданной. Рассмотрим каж-

дую в отдельности, а результаты помести на один график.

В значение времени для операции добавления входит две составляющие: время по-

зиционирования на нужную страницу и время записи данных на страницу. Обозначим их соответственно tп и tз. Время записи tз можно принять постоянной величиной (для нашей аппаратной платформы), даже при изменении длины страницы. Время позицио-

нирования tп линейно зависит от номера страницы (смещения от начала файла). Таким образом для одной страницы имеем:

tз = const,

(11)

tï l k ncmp,

(12)

где l - время позиционирования до начала файла данных, nстр - порядковый номер запи-

сываемой страницы, k - коэффициент времени позиционирования, физический смысл которого – время позиционирования на следующую страницу файла данных. Эти три величины определяются параметрами аппаратной части.

Тогда время добавления записи будет подчиняться следующему закону:

 

n

 

 

TT

l k ni t3

,

(13)

 

i 1

 

 

где n - число страниц, на которых разместится запись, а ni - порядковый номер i-ой страницы. Расчет n проводится по формуле (1). В итоге мы имеем линейную зависи-

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

жения, которое займет новая запись в файле данных (наиболее часто - это место за кон-

цом файла). Все расчеты проводились в предположении, что на запись каждой страни-

цы требуется одна операция ввода-вывода.

Время удаления записи состоит из двух таких же составляющих, но, в отличие от операции добавления, при удалении любой записи модифицируются только две страни-

цы: головная страница записи и последняя страница из списка свободных страниц. Та-

ким образом можно, используя уже введенные обозначения записать выражения для времени удаления:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]