Сообщество Apache Iceberg рассматривает введение вторичных индексов для повышения эффективности работы с большими наборами данных. Эта задача более сложная, чем может показаться на первый взгляд, поскольку она требует глубокого переосмысления всей структуры индексации в открытого формата.
Что такое вторичные индексы
Цель сообщества не просто добавить один индекс, а создать универсальную основу для всей системы индексов. Разработчики сейчас стандартизируют такие аспекты, как жизненный цикл индексов и API для каталога. Первым кандидатом на реализацию станет индекс Bloom filter skipping, который не требует изменений в процессе записи и предлагает четкие семантики корректности.
Зачем нужны индексы в Iceberg
Apache Iceberg уже обеспечивает отличную эффективность благодаря механизмам фильтрации. Например, уже используются следующие методы:
- Фильтрация по разделам: Запросы сканируют только эти в совпадающих разделах.
- Статистика файлов: Каждый файл отслеживает минимальные и максимальные значения, что позволяет избежать ненужного чтения.
В определенных сценариях, таких как ситуации с большим количеством данных, пользователи сталкиваются с проблемой поиска, когда необходимо просмотреть множество файлов для нахождения нужных записей. Например, если у вас есть таблица с 700 миллионами записей, находящихся в 700 файлах, и вы ищете заказы для конкретного пользователя, Iceberg может отфильтровать некоторые файлы, но все равно может понадобиться открыть до 658 файлов.
Важно для разработчиков
Обсуждая индексы, сообщество сталкивается с более глубокими вопросами, касающимися совместимости открытых этих и процесса обновлений. Например, при использовании режима Merge-on-Read для обновлений и удаления эти не редактируются непосредственно в файлах, что может вызывать периоды высокой нагрузки на чтение из-за необходимости согласования множества файлов.
Разработчики Apache Iceberg не просто ищут способы оптимизации, а стремятся решить принципиальные задачи в области индексации и сохранения совместимости.
Перспективы улучшений
Основные работы над индексами будут продолжаться, поскольку ожидается внедрение более мощных индексов, таких как B-Tree и полнотекстовый поиск. Это открывает новые горизонты для работы с данными в больших объемах, делая их более доступными и управляемыми.