Files
nis2/project-tasks/p09-a-foundationdb-transactions.md

5.5 KiB
Raw Permalink Blame History

P09-A. FoundationDB: транзакции и отказы

  • Версия и дата проверки: 1.1, 07.09.2026.
  • Статус: готово к назначению.

Статья и исходные материалы

  • Основная статья: FoundationDB Team — FoundationDB: A Distributed Unbundled Transactional Key Value Store. SIGMOD 2021.
  • Кратко о статье: FoundationDB строит распределённую базу вокруг небольшого строго упорядоченного транзакционного ядра, отделяя обработку транзакций, журналирование и хранение данных. Более сложные модели данных реализуются слоями поверх упорядоченного key-value-интерфейса, а архитектура рассчитана на заменяемость внутренних ролей и восстановление после отказов. В этом проекте проверяются транзакционная семантика и поведение сокращённой конфигурации при сбоях.
  • Почему результат актуален: статья описывает архитектуру FoundationDB: небольшое транзакционное ядро, разделение ролей хранения и обработки и детерминированную имитацию отказов для проверки системы.
  • Артефакты и данные: apple/foundationdb, открытая система с локальным многопроцессным режимом и детерминированными simulation tests. Зафиксированные ревизии: apple/foundationdb@ddec61a629a9 (Apache-2.0).
  • Что уже предоставляет артефакт: FoundationDB предоставляет транзакционный движок, клиентские API, локальный кластер, тесты и нагрузки. Систему можно использовать как внешнюю зависимость и объект измерения.

Обязательный результат

  • Проверяемый вопрос или утверждение: FoundationDB сохраняет сериализуемость и подтверждённые записи при конфликтующих транзакциях и отказе процесса, хотя рост конфликтности увеличивает число повторов и хвостовую задержку.
  • Технический результат: Развернуть малый многопроцессный кластер FoundationDB и реализовать повторяемую нагрузку с конфликтующими транзакциями, журналом исходов и проверкой сериализуемости.
  • Обязательное приращение команды: Реализовать предусмотренные нагрузку с управляемой конфликтностью, журнал исходов и проверку сериализуемости; организовать отказ процесса и проверку сохранности подтверждённых записей. Получить собственные сопоставимые серии при трёх уровнях конфликтности.
  • Эксперимент: Сравнить не менее трёх уровней конфликтности в штатном режиме и при одном управляемом отказе процесса. Измерить долю конфликтов и повторов, пропускную способность, p95/p99 и время восстановления; отдельно проверить отсутствие потерянных подтверждённых записей.
  • Границы выводов: проверяются сериализуемость, конфликты и восстановление для выбранной нагрузки и одного отказа в малом кластере; эксперимент не подтверждает производительность и отказоустойчивость FoundationDB в производственном масштабе.
  • Ресурсный профиль: локально, CPU, 8–16 ГБ памяти. Сборка всей системы может быть долгой; запасной вариант — использовать готовый выпуск для реального эксперимента и исходный код только для simulation tests.

Содержательные направления

  • транзакционная нагрузка.
  • отказы и имитация.
  • слой или исследование параметров и анализ семантики.

Возможное продолжение

Реализовать небольшой слой поверх упорядоченного KV-интерфейса либо систематически исследовать влияние размера транзакции, конфликтности или размещения ролей.