Представлен проект DBOS (DBMS-oriented Operating System), развивающий новую операционную систему для выполнения масштабируемых распределённых приложений. Особенностью проекта является использование СУБД для хранения приложений и состояния системы, а также организация доступа к состоянию только через транзакции. Проект развивается исследователями из Массачусетского технологического института, Висконсинского и Стэнфордского университетов, университета Карнеги-Меллона и компаний Google и VMware. Наработки распространяются под лицензией MIT.
Компоненты для взаимодействия с оборудованием и низкоуровневые сервисы управления памятью вынесены в микроядро. Предоставляемые микроядром возможности используются для запуска слоя с СУБД. Высокоуровневые системные сервисы, обеспечивающие выполнение приложений, взаимодействуют только с распределённой СУБД и отделены от микроядра и специфичных для конкретной системы компонентов.
Построение поверх распределённой СУБД позволяет сделать системные сервисы изначально распределёнными и не привязанными к конкретному узлу, что отличает DBOS от традиционных кластерных систем, в которых на каждом узле выполняется собственный экземпляр операционной системы, поверх которой запускаются отдельные кластерные планировщики, распределённые ФС и сетевые менеджеры.
Отмечается, что использование в качестве основы DBOS современных распределённых СУБД, хранящих данные в оперативной памяти и поддерживающих транзакции, таких как VoltDB и FoundationDB, способно обеспечить производительность, достаточную для эффективного выполнения многих системных сервисов. В СУБД в том числе могут размещаться данные планировщика, файловой системы и IPC. При этом СУБД отлично масштабируются, обеспечивают атомарность и изолированность транзакций, могут управлять петабайтами данных, предоставляют инструменты для управления доступом и отслеживания потоков данных.
Из достоинств предложенной архитектуры называется значительное расширение возможностей аналитики и снижение сложности кода за счёт использования в сервисах операционной системы обычных запросов к СУБД, на сторону которой выносится реализация транзакций и средств для обеспечения высокой доступности (подобная функциональность может быть реализована на стороне СУБД один раз и использована в ОС и приложениях).
Например, кластерный планировщик может сохранять информацию о задачах и обработчиках в таблицах СУБД и реализовывать операции планирования как обычные транзакции, смешивая императивный код и SQL. Применение транзакций упрощает решение таких проблем, как управление многопоточностью и восстановление после сбоев, так как транзакции гарантируют согласованность и устойчивость состояния. В контексте примера с планировщиком транзакции позволяют организовать одновременный доступ к совместно используемым данным и гарантировать сохранение целостности состояния в случае сбоев.
Предоставляемые в СУБД механизмы ведения логов и анализа данных могут применяться для отслеживания доступа и изменения состояния приложений, мониторинга, отладки и поддержания безопасности. Например, после обнаружения несанкционированного доступа к системе можно через выполнение SQL-запросов определить масштаб утечки, выявив все операции, сделанные процессами, получившими доступ к конфиденциальной информации.
Проект разрабатывается уже более года и находится на стадии создания прототипов отдельных компонентов архитектуры. В настоящее время подготовлен прототип работающих поверх СУБД сервисов операционной системы, таких как ФС, IPC и планировщик, а также развивается программное окружение, предоставляющее интерфейс для запуска приложений на базе модели FaaS (function-as-a-service).
На следующей стадии разработки планируется предоставить полноценный программный стек для распределённых приложений. В качестве СУБД в экспериментах пока используется VoltDB, но ведётся обсуждение создания собственного слоя для хранения данных или реализации недостающих возможностей в существующих СУБД. На стадии обсуждения также находится вопрос, какие компоненты должны выполняться на уровне ядра, а какие можно реализовать поверх СУБД.
Источник: opennet.ru