Как устроены append-optimized таблицы в GreenPlum(Arenadata DB)?
Из статьи Yandex Cloud : Таблицы такого типа обеспечивают строковое и колоночное хранение. Таблицы для строкового хранения сокращенно называют AO-таблицами (append-optimized), а колоночного — AOCO-таблицами (append-optimized column-oriented). Оба вида таблиц реализованы на основе вспомогательных heap-таблиц. Данные в таблицах AO и AOCO хранятся в сегментных файлах, которые состоят из блоков произвольного объема.
Из статьи BigDataSchool: хранилище, оптимизированным для добавления (AO, append-optimized storage) таблиц и разделов, которые нечасто обновляются после начальной загрузки, а последующие вставки выполняются только в пакетных операциях. Следует избегать выполнения одноэлементных операций INSERT, UPDATE или DELETE в AO-таблицах. Допустимы конкурентные пакетные операции INSERT, но не пакетные UPDATE или DELETE. Эта модель предназначена для больших таблиц, которые загружаются один раз, редко обновляются и часто запрашиваются для аналитической обработки запросов.
Из статьи VMware : Перемещение больших таблиц фактов в модель хранения, оптимизированную для добавления, устраняет накладные расходы на хранение информации о видимости обновлений для каждой строки, экономя около 20 байтов на строку. Это позволяет сделать структуру страницы более компактной и простой в оптимизации. Модель хранения таблиц, оптимизированных для добавления, оптимизирована для массовой загрузки данных. INSERT
Понятна цель создания AO-таблиц: ускорение батчёвых вставок в таблицу, возможность колоночного хранения и сжатия. Но совершенно непонятно "как" это реализовано. Только в статье Яндекса что-то вскользь упоминается про вспомогательные таблицы.
Подскажите, пожалуйста, как всё-таки реализованы AO-таблицы под капотом?