(499) 236-8067
Москва, Ленинский пр-т, д.4
support@libermedia.ru
Комплексные решения для библиотек

НазадСУБД D3

Введение в D3

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

 

Основные принципы, необходимые для понимания функционирования D3:

 

D3 – это постреляционная СУБД. Сравнение терминологии D3 с обычными реляционными СУБД представлено в таб. 1.

Таб. 1

Понятия D3

Реляционные СУБД

Счёт

База данных

Файл

Таблица

Запись

Строка таблицы

 

Минимальной идентифицируемой единицей данных является значение. Значения хранятся в структуре, называемой атрибутом (полем). Атрибут может содержать 1 значение, несколько значений или ни одного значения.

 

Каждая запись характеризуется идентификатором записи – имя файла, т к в пределах 1 файла имя записи уникально.

 

Группа атрибутов образует запись.

 

Каждый файл имеет свой словарь.

 

Словарь – это специальный файл, кот может содержать описатели атрибутов соответствующих файлов данных.

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

 

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

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

 

Доступ к записям файла

 

Доступ к записям , хранящимся в файле ,осуществляется различными способами , а именно :

  • Непосредственно, используя идентификатор записи в качестве ключа.
  • С сортировкой по одному или нескольким полям.
  • По индексу.

 

Для просмотра записей (вручную) как правило, используется update процессор.

Еще один способ доступа к записи – это доступ по индексу.

Индекс создается командой create-index

Схема индексации предполагает использование отдельных небольших файлов,

содержащих только ключи и указатели. Индексные файлы D3 всегда

отсортированы и организованы в виде сбалансированного дерева или В - .дерева что позволяет свести к минимуму время поиска .

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

 

 

 

Внутренняя структура записи:

 

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

 

В D 3 используется концепция групп, которая определяется как разбиение линейного пространства, предназначенного для хранения данных, на одинаковые по размеру блоки. Для того , чтобы хеширование было эффективным, количество групп в файле должно представляться обязательно простым числом. В результате хеширования запись помещается в определенную группу. Когда запись добавляется в файл, она помещается в конец цепочки записей , уже находящихся в этой группе . Когда группа ( ) переполняется, к ней, по мере необходимости, присоединяются дополнительные фреймы.

Хеширование - это внутренняя функция , выполняющая математическое

вычисление адреса записи на основе ее ключа.

Добавление записи

Используя алгоритм хеширования, система определяет группу, в которую

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

свободного места. Если запись с таким именем уже существует в группе, то

система сообщает об этом. Если система находит свободное место, то она

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

свободного пространства в группе недостаточно для добавления записи, то D 3

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

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

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

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

связанных фреймов.

 

В идеале фрэймов переполнения быть не должно, посколько когда таких фрэймов становится много, это начинает тормозить работу системы, поскольку данные как бы разбросаны, к тому же всегда хранится в фрэйме ссылка на фрэйм – продолжение и при различных сбоях (отключение питания, проблемы с жестким диском и эта связка может теряться), поэтому периодически в рамках обслуживания системы мы делаем вам так называемый resize. Заключается resize в том, что мы смотрим текущее модуло (размер файла во фрэймах) (u dict codbar codbar 3-ий атрибут), смотрим сколько реально фрэймов используется (командой group имя_файла) и корректируем модуло.

 

Удаление записи

Используя алгоритм хеширования , система определяет группу , в которой

должна находиться удаляемая запись , и начинает просматривать эту группу , а

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

запись . Если такой записи не существует , система сообщит , что запись не

найдена . Если запись найдена , то она удаляется , а все следующие за ней в

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

Если в результате сдвига фрейм переполнения становится пустым , то он

отсоединяется от группы и возвращается в область переполнения .

 

Подитог

Структура словарей D3, организация файлов

 

Файлы могут содержать любое количество записей и автоматически

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

сколько записей в нем будет храниться и каков средний размер записи . При

создании файла под него на диске выделяется определенное пространство в

виде цепочки смежных фреймов .

 

Каждый файл в D3 состоит из 2-х частей:

 

  • Раздел данных, где находится информация
  • Словарный раздел, в котписывается как данные должны быть представлены при выводе и как они должны обрабатываться

 

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

 

Пример:

Sortc dict codbar

Codbar – совпадает с названием файла – описатель раздела данных

Остальные – описатели атрибутов.

Пример описателя атрибутов:

:u dict codbar liv

 

01 a – признак того, что это описатель атрибутов

02 1 – номер атрибута, который мы будем брать из записей файла codbar

03 livre_name

04

05

06

07

08 tlivre;x;1;1 - получить значение атрибута из другого или текущего файла (x – только д ля вывода)

 

09 L

10 70

 

:u dict codbar codbar

 

DICT codbar 'codbar' size = 37

01 a

02 0

03 Shtrihkod

04

05

06

07

08

09 L

10 70

 

команда list codbar cod liv

 

 

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

 

Иерархия файловой системы D3:

 

  • Уровень 0 – системный словарь
  • Уровень 1 – главный словарь
  • Уровень 2 – словарь файла данных
  • Уровень 3 – файл данных

 

Системный словарь (Уровень 0)

 

Системный словарь, файл mds, содержит информацию о том, какие в системе есть счета и где они находятся. Существует только один системный словарь.

Он может содержать:

  • Записи-определители файлов
  • Записи-определители атрибутов
  • Записи-определители синонимов (Q-указатели на счета)

 

Записи – определители файлов

В системном словаре записи-определители файлов определяют все главные словари (счета), существующие в системе. (u mds *)

 

Q-указатели на примере u mds phoenix

Главный словарь (Уровень 1)

 

Каждый счет в D3 имеет свой собственный главный словарь. Он содержит:

 

  • Записи-определители ( словарных разделов файлов )
  • Записи-определители синонимов файла (Q-указатели на файлы)
  • Глаголы
  • Процедуры PROC
  • Указатели на каталогизированные BASIC – программы
  • Макрокоманды (m, n)

В кажд. счете содержится только 1 главный словарь.

 

В главном словаре (md) записи-определители файлов определяют словарные разделы файлов данных. (u md livre)

 

Словарь файла данных (Уровень 2)

 

Файл данных состоит из двух разделов: словарного раздела и раздела данных.

 

Словарный раздел содержит указатели на связанные с ним разделы данных этого файла. Он также содержит информацию, описывающую структуру данных в разделе данных файла. Словари файла данных могут содержать:

  • Записи-определители атрибутов
  • Записи-определители синонимов
  • Объектный код FlashBasic

 

Один словарь может использоваться несколькими разделами данных.

В словаре файла записи-определители файлов определяют разделы данных файла (u dict codbar codbar)

 

Раздел данных (Уровень 3)

Эти разделы файлов содержат реальные данные, вводимые пользователем.

 

 

 


Основные команды TCL, Access

  1. Пользователи (u users *)
  2. Войти в счет
    TO имя_счета
  3. LF
  4. SORTC имя_файла
  5. COUNT имя_файла
  6. LIST
  7. SELECT ИМЯ ФАЙЛА1 IF УСЛОВИЕ
    SAVE-LIST
    NSELECT ИМЯ ФАЙЛА2 – ВЫБОР ЗАПИСЕЙ, КОТ ЕСТЬ В ФАЙЛ1 И НЕТ В ФАЙЛ2
  8. OFF
  9. TERM-TYPE
  10. WHO
  11. LU
  12. WHICH
  13. SET-FILE
  14. COMPILE
  15. CATALOG
  16. SET-DEVICE
  17. T-REW
  18. T-DET
  19. MESSAGE
  20. CREATE-FILE
  21. DELETE-FILE
  22. CLEAR-FILE
  23. DELETE ИМЯ_Ф ИМЯ_ЗАПИСИ
  24. COPY

 

Управляющие команды

Ctrl D

Ctrl A

CTRL R

<CTRL> <BREAK> - ВХОД В РЕЖИМ ОТЛАДКИ

Основные операторы PickBasic

1.

FOR ПЕРМЕН = НАЧ.ЗНАЧ TO КОНЕЧН. ЗНАЧ.

END ELSE

END

2.                  OPEN “ИМЯ_ФАЙЛА” TO ПЕРЕМЕННАЯ_Ф

3.                  READ ПЕРЕМЕННАЯ FROM ПЕРЕМЕННАЯ_Ф,ID_ЗАПИСИ

4.                  WRITE ПЕРЕМЕННАЯ ON ПЕРЕМЕННАЯ_Ф,ID_ЗАПИСИ

5.                  EXECUTE ‘SELECT ИМЯ_ФАЙЛА IF УСЛОВИЕ

6.                  LOOP

READNEXT ПЕРЕМЕННАЯ ELSE ДЕЙСТВИЕ

REPEAT

7.                  ROOT "ИМЯ_ФАЙЛА","a8" TO ПЕРЕМЕННАЯ ELSE ДЕЙСТВИЕ
KEY('n', ПЕРЕМЕННАЯ,ПЕРЕМЕННАЯ1,ПЕРЕМЕННАЯ2)