Ответ
WAL (Write-Ahead Log) — это журнал предзаписи, который хранит изменения данных перед их применением в основное хранилище. В нем фиксируются:
- Операции записи — все изменения данных (INSERT, UPDATE, DELETE).
- Метаданные транзакций — начало/конец транзакции, контрольные точки (checkpoints).
- Служебная информация — например, LSN (Log Sequence Number) для контроля порядка записей.
Пример (условный):
type WALEntry struct {
LSN uint64
Data []byte // сериализованная операция
TxID string // ID транзакции
Commit bool // флаг завершения транзакции
}
Зачем? Для обеспечения:
- Долговечности (Durability) — данные не теряются при сбое.
- Восстановления — репликация или откат к последней устойчивой точке.
Используется в БД (PostgreSQL), distributed-системах (etcd) и др.