SterBase
Операции

Блокировки и транзакции

Объектная команда

ObjectCommand передаёт законченную операцию над одним объектом. Этот API не содержит публичных begin/commit и команд записи отдельных физических таблиц. Ревизия объекта и контекст позволяют проверять актуальность изменения на границе runtime/провайдера.

Не переносите эти гарантии на любые одноимённые операции встроенного языка: их реализация требует отдельного контракта.

Файловый механизм DBF

FileTransaction координирует участвующие процессы, блокирует набор файлов и применяет подготовленные изменения. Поддерживаются полные образы и компактные undo/redo delta. LockedValidator выполняется после захвата набора блокировок и до создания журнала.

Ожидание задаётся через set_lock_wait_milliseconds. Повторяется только конфликт блокировки; ошибка записи не должна маскироваться бесконечным повтором. Код ограничивает ожидание значением 300 000 мс.

Logical и durable

Режим Гарантия из контракта
durable Перед успехом сбрасываются WAL и затронутые файлы
logical Изменения могут оставаться в кэше ОС до checkpoint

При отключении питания до checkpoint logical-режим ограничен гарантиями кэша ОС. checkpoint(root) переводит накопленные logical commits в durable состояние. Это не основание обещать универсальные ACID-гарантии для любой файловой системы.

Восстановление и чтение

recover(root) должен отработать до выдачи файлов читателям: подготовленный незавершённый пакет восстанавливается, committed-пакет требует очистки. verify_readable_state(root) проверяет допустимость чтения без создания координационной блокировки; незавершённое состояние не разрешается молча.

Есть guard_reads для согласованного чтения агрегата и read-only scope begin_read_transaction. Это не готовая схема распределённых транзакций.

Неопределённый исход

Если committed установлен, а success не получен из-за чтения после записи, используйте reconciliation_required и восстановите состояние. Слепой повтор может создать второе изменение.

TODO: эксплуатационная инструкция поставки и таблица поведения будущих SQL-провайдеров.