Разработчики OrioleDB предложили обновления для API Table/Index AM в PostgreSQL, которые позволят создавать альтернативные механизмы хранения данных. С момента введения такого API в версии PostgreSQL 12 разработчикам стала доступна возможность разработки альтернативных механизмов хранения данных, однако полнофункциональные транзакционные движки расширениями пока не реализованы.
Необходимость в альтернативных табличных движках Наиболее востребованными функциями для альтернативных табличных движков PostgreSQL являются альтернативные реализации MVCC и индексно-организованные таблицы. Проблема заключается в необходимости внедрения OrioleDB в код PostgreSQL, что подчеркивает необходимость модернизации текущего API Table AM.
Ограничения текущего API API Table AM, несмотря на гибкость, имеет ограничения. Первое — это принцип обновления всех индексов одновременно, что может вызывать значительное "усиление записи" при изменениях атрибутов. На практике внесение точечных изменений затруднительно из-за отсутствия соответствующих функций в Index AM, особенно в аспекте наличия в одном TID нескольких кортежей.
Предложения по улучшению Предложено два способа решения текущих ограничений:
- Расширение API Index AM: расширение возможностей для поддержки альтернативных реализаций MVCC, хранение пользовательских данных вместе с TID и специфика удаления или обновления данных индекса.
- Поддержка MVCC индексов: позволяет облегчить процесс сканирования и управления данными индексов. Это позволяет сканировать только кортежи, видимые согласно правилам MVCC.
Обновление API также предлагает разделением Index AM на логический слой и слой реализации, что позволит поддерживать различные модели хранения в PostgreSQL.