Алексей Маликов
гость
гость
Новый сезон открывает Database Internals Алекса Петрова. Row-oriented storage держит строку рядом, column-oriented разделяет колонки ради аналитики и сжатия. Далее идут data и index files, clustered и secondary indexes, in-memory и persistent структуры, упорядоченность и буферизация дискового доступа.
B+ tree делают широким и невысоким, чтобы сократить чтения pages и поддержать point и range queries. Ключи страницы отсортированы, fan-out согласован с блочным I/O. При вставке переполненная page split, обновляя родительские ссылки; merge и работа с соседями усложняются при concurrency.
Двоичное представление включает big-endian и little-endian, размеры примитивов, flags и поля разной длины. Slotted page отделяет заголовок и указатели от значений, позволяя двигать записи. Удаления создают fragmentation и free-space map; большие значения выносят отдельно.
B-link tree добавляет sibling links для range scan и безопасного split, а high key ограничивает страницу сверху. Overflow, background rebalancing, compression и монотонные ключи меняют write path. Vacuum-подобная уборка поддерживает структуру и борется с энтропией на диске.