Cтатья о том, как в Rust сделать zero-copy страницы для базы данных, чтобы не гонять туда-сюда данные и не грузить процессор лишними копированиями, особенно при высоких нагрузках.
Автор объясняет, что сначала они убрали копирование между диском и буферным пулом с помощью Direct IO (флаг O_DIRECT), а затем принялись за копирования внутри самого движка. Тут началось самое интересное - пришлось плотно работать с понятием lifetimes в Rust, чтобы создавать не копии страниц, а их заимствованные представления.
В итоге сделали отдельные структуры для читателей и писателей, где буферный пул владеет данными, а все что выше - просто "смотрит" на них через займы. Да, код стал сложнее с кучей аннотаций времен жизни, зато компилятор гарантирует безопасность и нет лишних memcpy, что для высоконагруженных движков - самый кайф
28.04.2026
Похожее
04.06.2026
58 720 256 ключей
Статья о крупном инциденте в рабочем процессе LinkedIn, когда их база данных, на...
03.06.2026
Rust на Kindle
Автор джейлбрейкнул Kindle Paperwhite 7-го поколения и научился кросс-компилиров...
02.06.2026
Визуальный туториал по bevy
Визуальный обзор Bevy — игрового движка на Rust с data-driven архитектурой. В...
01.06.2026
Руководство по миграции с Go на Rust
Подробное руководство по миграции с Go на Rust для бэкенд-сервисов. Автор об...