Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Controller ¶
type Controller struct {
// contains filtered or unexported fields
}
Controller - адаптер контроллера базы данных для работы WAL журнала предзаписи.
func NewController ¶
func (*Controller) Execute ¶
func (c *Controller) Execute(command *querylang.Command) (string, error)
Execute адаптер для выполнения команд БД. Все операции чтения напрямую делегируются нижележащему контроллеру. Операции записи перед выполнением добавляются в WAL журнал. Команда записи делегируется нижележащему контроллеру только в случае успешной записи в WAL журнал.
func (*Controller) Serve ¶
func (c *Controller) Serve(ctx context.Context) error
Serve - сервисная функция для обслуживания WAL журнала. Ее необходимо запускать в фоне работы приложения для корректной работы журнала. Функция обеспечивает периодический сброс накопленных команд на жесткий диск. Завершается по получению сигнала отмены контекста.
type LSN ¶
LSN - Log Sequence Number, уникальный идентификатор записи в WAL журнале. Состоит из двух частей. SessionID - идентификатор сеанса работы сервера, который генерируется как метка времени запуска. SeqID - идентификатор выполняемой операции, генерируется как последовательное число.
type Log ¶
type Log struct {
// contains filtered or unexported fields
}
Log - сервис для работы WAL журналом. Обеспечивает операции добавления команд в журнал, их извлечение и процедуру обслуживания.
func (*Log) Add ¶
Add - добавляет команду в журнал WAL. Команда отправляется сначала в буфер команд. Сброс команд из буфера в журнал записи осуществляется по достижении лимита flushingBatchSize или по срабатыванию таймера flushingBatchTimeout. Операция возвращает управление только после записи всех данных на жесткий диск.
type Reader ¶
type Reader struct {
// contains filtered or unexported fields
}
Reader - сервис для вычитывания записей из WAL журнала.
func (*Reader) ReadRecords ¶
ReadRecords - вычитывает ранее записанные команды из WAL журнала. Для этого последовательно читает данные из файлов, а затем сортирует их по меткам LSN.
type StorageController ¶
type Writer ¶
type Writer struct {
// contains filtered or unexported fields
}
Writer отвечает за запись элементов WAL журнала в файлы.
func (*Writer) WriteRecords ¶
WriteRecords записывает пачку элементов журнала в текущий файл сегмента. Если сегмента еще не существует или достигнут лимит размера maxSegmentSize, то осуществляет ротацию сегмента на новый файл.