db ... dbs ...

Sergey ShishkinSergey Shishkin
3 min read

Набор символов, не только классифицируемых как символы или функции Database, но и лексически, отражающие эту концепцию. В отличие от концепции “отладочных операций или функций“ концепции базы данных Picolisp, как уже отмечалось, будет уделено особо внимание, как, пожалуй, одной из центральной, если не базовой концепции всей системы, а пока так:

*Db - глобальная переменная, содержащая внешний символ {1} (корень базы данных), пока база данных открыта, в противном случае NIL. Все внешние символы в базе данных могут быть получены из этого корня. За исключением случаев отладки, следует избегать любого явного буквального доступа к символам в базе данных, поскольку в противном случае может произойти утечка памяти (сборщик мусора временно устанавливает *DB в NIL и восстанавливает его значение после сбора, таким образом удаляя все внешние символы, которые в данный момент не используются в программе).

*Dbs - глобальная переменная, содержащая список чисел (масштабных коэффициентов размера блока, необходимых пулу). Обычно она устанавливается dbs.

dbs - инициализирует глобальную переменную *Dbs. Каждый элемент в lst имеет номер в своем CAR (масштабный коэффициент размера блока файла базы данных, который будет сохранен в *Dbs). Элементы CDR — это либо классы (чтобы объекты этого класса позже сохранялись в соответствующем файле), либо списки с классом в CAR и списком отношений в CDR (чтобы индексные деревья для этих отношений попадали в этот файл)

db - возвращает объект базы данных класса cls, где значения для аргументов sym соответствуют аргументам any. Если соответствующий объект не может быть найден, возвращается NIL. sym, cls и hook должны указывать дерево для cls или одного из его суперклассов.

db/1, db/2 и db/3 - предикаты базы данных Pilog, которые возвращают объекты, соответствующие заданному отношению ключ-значение (и необязательному отношению hook). Отношение должно иметь тип +index. Для шаблона ключа применяется:

  • символ (строка) возвращает все записи, которые начинаются с этой строки

  • другие атомы (числа, внешние символы) совпадают, как есть

  • пары cons составляют диапазон, возвращая объекты в порядке возрастания, если CDR больше CAR

  • в порядке убывания в противном случае

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

db: - возвращает номер файла базы данных для объектов типа, заданного аргументом(ами) cls. Требуется, например, для создания новых объектов.

dbSync - начинает транзакцию базы данных, пытаясь получить блокировку на корневом объекте базы данных *DB (или obj, если задано), а затем вызывает sync для синхронизации с возможными изменениями из других процессов. Когда все желаемые изменения внешних символов выполнены, следует вызвать (commit 'upd).

dbck - выполняет низкоуровневую проверку целостности текущего (или cnt'th) файла базы данных и возвращает NIL (или количество блоков и символов, если flg не равен NIL), если все выглядит правильно. В противном случае возвращается строка, указывающая на ошибку. В качестве побочного эффекта, возможно, неиспользуемые блоки (как это может быть, когда откат выполняется перед фиксацией вновь выделенных (новых) внешних символов) добавляются в свободный список.

https://picolisp.tiddlyhost.com/#db

0
Subscribe to my newsletter

Read articles from Sergey Shishkin directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Sergey Shishkin
Sergey Shishkin

Всегда чему-то учусь!