db ... dbs ...

Набор символов, не только классифицируемых как символы или функции 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
), если все выглядит правильно. В противном случае возвращается строка, указывающая на ошибку. В качестве побочного эффекта, возможно, неиспользуемые блоки (как это может быть, когда откат выполняется перед фиксацией вновь выделенных (новых) внешних символов) добавляются в свободный список.
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
Всегда чему-то учусь!