Серебряной пули нет: почему Write-Ahead Logging – это всегда компромисс?

Резерв

PostgreSQL
Отказоустойчивость
Хранилища

Доклад принят в программу конференции

Целевая аудитория

Разработчики и архитекторы систем хранения данных, разработчики СУБД.

Тезисы

Обеспечение надежного сохранения данных и их восстановления после сбоев — ключевая задача систем обработки данных. Любая ошибка записи может привести к потере транзакций или повреждению данных, а масштабные системы требуют при этом высокой производительности и быстрой доступности после сбоя. Мы в OtterBrix тоже столкнулись с задачей проектирования собственного WAL, и довольно быстро выяснили, что универсального рецепта здесь не существует.

Проектирование WAL — это поиск инженерного компромисса между скоростью записи, временем фиксации транзакций, временем восстановления после сбоя и надёжностью системы хранения. В зависимости от требований, для каждой отдельной СУБД этот компромисс будет решатся по-разному.

В докладе я покажу модель принятия решений при проектировании WAL на примере PostgreSQL, SQLite и DuckDB, а также расскажу, как в OtterBrix мы построили собственный WAL.

Михаил Федоренко

Open Source: OtterBrix

C++-разработчик, занимаюсь серверными и инфраструктурными системами обработки данных. Мейнтейнер фреймворка обработки данных OtterBrix.

Студент магистратуры ИТМО.

Видео