MonetDB — это открытая коло́нно-ориентированная реляционная система управления базами данных, первоначально разработанная в Центре математики и информатики (CWI) в Нидерландах. Система ориентирована на аналитические нагрузки (OLAP, сложные запросы), способна эффективно обрабатывать большие наборы данных с сотнями столбцов и миллионами строк. При этом MonetDB обеспечивает стандартный SQL-интерфейс, поддержку транзакций и многие привычные элементы реляционных СУБД.
Разработка MonetDB началась ещё в 1990-х годах в рамках исследовательских проектов CWI, и первая версия под открытой лицензией вышла в 2004 году. Архитектура системы претерпевала значительные изменения: начиная с версии MonetDB 5 ядро постепенно переписано с учётом векторного (vectorized) исполнения, оптимизации под память и современные многопроцессорные архитектуры. MonetDB постоянно использовался как объект исследовательских работ в области баз данных и служит основой для решений аналитической обработки данных.
- Коло́нно-ориентированное хранение данных (вертикальная фрагментация таблиц), при котором каждый столбец физически хранится отдельно и обрабатывается независимо.
- Трёхуровневая архитектура оптимизаторов с преобразованием запросов сначала к логическому плану, затем в промежуточный язык MAL (MonetDB Assembly Language), а затем в выполняемый план.
- Векторное и кеш-ориентированное исполнение — операции над колонками обрабатываются блоками с учётом архитектуры CPU и кэш-памяти.
- Адаптивные индексы и оптимизация во время выполнения, включая техники вроде «query recycling» для переиспользования промежуточных результатов.
- Поддержка стандартного SQL (на базе SQL:2003 и далее), включая связки, представления, триггеры, хранимые процедуры.
- Управление обновлениями через дельты и снапшотную изоляцию — основной столбец меняется не сразу, а через механизм дельт.
- Гибкость расширения — возможность добавлять пользовательские функции (UDF), расширять оптимизационный конвейер, интеграция с языками Python, R, C/C++.
- Встраиваемая версия MonetDBLite, позволяющая использовать движок внутри приложений (например, в Python или R) без запуска отдельного сервера.