Исследовательская группа

Лаборатория информационных систем

В нашей лаборатории в настоящий момент есть два основных направления:

  • Разработка движков.
    1. PosDB -- распределенная дисковая колоночная система с поддержкой поздней материализации. Современные колоночные системы, в большинстве своем поддерживают только раннюю материализацию, то есть, оперируют колонками только на самых нижних уровнях плана запроса. Обычно, после вычитки колонок и фильтрации по предикатам такая система формирует записи, и далее обработка продолжается таким же образом, как и в классических системах. В свою очередь, идея поздней материализации заключается в откладывании момента восстановления записи из набора колонок настолько, насколько это возможно.

      Бум колоночных систем с поддержкой поздней материализации оставил множество открытых вопросов. Наш проект нацелен на их исследование, а именно: поведение поздней материализации в распределенном окружении; поздняя материализация и различные варианты агрегации, оконных функций; поздняя материализация и подзапросы; оптимизация запросов и физический дизайн в условиях поздней материализации.
    2. ToyDBMS -- комплекс для обучения разработке движков СУБД. Представляет собой набор заданий, эталонную реализацию, а также тестирующую систему. Идея подхода, реализуемого комплексом, заключается в выдаче некоторого костяка движка который студенты дорабатывают в течении семестра, в результате получая на выходе достаточно серьезную систему. Для желающих есть leaderboard, то есть возможность “посоревновать” реализации друг с другом. В ходе работы студенты реализуют такие компоненты реляционных СУБД, как рерайтер запросов, набор реляционных операторов, модуль статистики, а также простой эвристический оптимизатор запросов. Система используется при ведении курса “Разработка СУБД” в бакалавриате ВШЭ и магистратуре ИТМО.

      В рамках этого проекта предполагается разработка новых заданий, а также поддержка функциональности тестирующей системы.
  • Поиск функциональных и не только зависимостей
    1. Алгоритмы поиска функциональных и прочих зависимостей. Задача состоит в том, чтобы, имея на входе некоторый набор данных (таблицу), отыскать сокрытые в нём зависимости. Такие регулярности в данных представляют интерес для прикладных исследователей и дают им возможность формулировать гипотезы или даже делать выводы о данных. Основная сложность поиска зависимостей заключается в том, что это вычислительно трудоемкая задача. Даже на скромном наборе данных алгоритм может работать несколько суток. В рамках данного проекта мы занимаемся улучшением алгоритмов и их компонентов.
    2. Высокопроизводительный поиск функциональных и прочих зависимостей. Так же, как и в предыдущем случае, целью данного проекта является повышение производительности поиска функциональных зависимостей. Однако в этом проекте мы концентрируемся именно на реализационных аспектах. Мы исследуем возможности эффективной реализации алгоритмов на C++, применения векторизационных примитивов AVX/AVX2, использования вычислений на GPU и так далее.
    3. Исполнение запросов и функциональные зависимости. В данном проекте мы предлагаем соединить вместе хранимые данные (таблицы) и их функциональные (и не только) зависимости внутри СУБД. Наша цель -- сделать функциональные зависимости полноправными объектами в СУБД, которыми можно манипулировать (запрашивать) и которые сами могут быть использованы в запросах. Идея -- дать возможность аналитикам исследовать одновременно и данные, и зависимости посредством одного языка внутри СУБД. Например, аналитик может быть заинтересован в таких запросах, как “найти все строки, которые мешают данной зависимости выполняться на этой таблице”, “для указанной таблицы найти все функциональные зависимости с указанным атрибутом в левой части” и так далее.

Кроме этих, достаточно больших проектов, есть еще некоторое количество проектов на одного человека, касающихся различных тематик.

Если заинтересованы в каком-то проекте -- напишите нам.