Убираем fsync: как мы сделали хранилище быстрее и чуть опаснее

Разработчики Fractal Bits решили, что fsync — это тормоз, и просто выпилили его. Что могло пойти не так?
Разработчики из Fractal Bits поделились историей, как они убрали fsync из своего локального движка хранения. Если вы когда-нибудь ждали, пока база данных синхронизируется с диском, вы знаете эту боль — fsync может быть настоящим тормозом, особенно на облачных дисках. Команда решила, что для их сценариев использования консистентность данных не так критична, как скорость, и просто отключила синхронизацию. Результат? Прирост производительности в несколько раз. Но, как говорится, нет боли — нет гарантий.
Что такое fsync и почему его хочется убить
fsync — это системный вызов, который заставляет операционную систему сбросить буферы на диск. Без него данные могут болтаться в памяти, как носки в стиральной машине, и исчезнуть при внезапном отключении питания. Но если вы работаете с временными данными или можете позволить себе потерю последних нескольких записей, отказ от fsync даёт огромный прирост скорости. Fractal Bits пошли ва-банк и выпилили его полностью, полагаясь на то, что их приложение само восстановит состояние после перезапуска.
А что с безопасностью?
Конечно, это не для всех. Если вы пишете банковскую систему или медицинские записи, не повторяйте это дома. Но для аналитических баз данных, кешей или логов — почему бы и нет? Разработчики отмечают, что они добавили дополнительные проверки целостности и используют журналирование, чтобы минимизировать риски. В итоге, их движок стал работать как «Феррари без тормозов» — быстро и с адреналином.
Наш вердикт
История Fractal Bits — это отличный пример того, как можно пожертвовать строгими гарантиями ради скорости, если вы знаете свои требования. Но прежде чем повторять, убедитесь, что ваш босс не попросит восстановить данные из бекапа в пятницу вечером.
Комментарий студии METABYTE: Если ваша база данных начинает напоминать игру в русскую рулетку, возможно, стоит пересмотреть архитектуру. Мы помогаем найти баланс между скоростью и надёжностью, чтобы вы не просыпались в холодном поту после ночного деплоя.