Foi apresentado o projeto DBOS (Sistema Operacional Orientado a SGBD), que desenvolve um novo sistema operacional para a execução de aplicações distribuídas escaláveis. A característica distintiva do projeto é o uso de SGBD para armazenar aplicações e o estado do sistema, bem como a organização de acesso ao estado apenas por meio de transações. O projeto está sendo desenvolvido por pesquisadores do Instituto de Tecnologia de Massachusetts, das Universidades de Wisconsin e Stanford, da Universidade Carnegie Mellon e pelas empresas Google e VMware. Os resultados são distribuídos sob a licença MIT.
Os componentes para interação com o hardware e os serviços de controle de memória de baixo nível foram movidos para o microkernel. As capacidades fornecidas pelo microkernel são utilizadas para executar uma camada com o SGBD. Os serviços de sistema de alto nível, que garantem a execução das aplicações, interagem apenas com o SGBD distribuído e são separados do microkernel e de componentes específicos de cada sistema.
A construção sobre um SGBD distribuído permite que os serviços de sistema sejam inicialmente distribuídos e não estejam vinculados a um nó específico, o que diferencia o DBOS de sistemas de cluster tradicionais, onde em cada nó é executada sua própria instância do sistema operacional, sobre a qual são iniciados gerenciadores de cluster separados, sistemas de arquivos distribuídos e gerentes de rede.

Observa-se que o uso de SGBDs distribuídos modernos como base para o DBOS, que armazenam dados na memória e suportam transações, como VoltDB e FoundationDB, pode garantir um desempenho suficiente para a execução eficiente de muitos serviços de sistema. Os SGBDs podem também armazenar dados do gerenciador, do sistema de arquivos e de IPC. Neste caso, os SGBDs escalam bem, garantindo atomicidade e isolamento de transações, podendo gerenciar petabytes de dados e fornecendo ferramentas para gerenciamento de acesso e monitoramento de fluxos de dados.
Entre as vantagens da arquitetura proposta, destaca-se a ampliação significativa das capacidades analíticas e a redução da complexidade do código, devido ao uso de consultas comuns ao banco de dados nos serviços do sistema operacional, sendo a implementação de transações e os mecanismos de alta disponibilidade geridos na camada do banco de dados (essa funcionalidade pode ser implementada no banco de dados uma única vez e utilizada no OS e nas aplicações).
Por exemplo, um planejador em cluster pode armazenar informações sobre tarefas e manipuladores em tabelas do banco de dados e implementar operações de planejamento como transações comuns, misturando código imperativo e SQL. A aplicação de transações simplifica a solução de problemas como gerenciamento de múltiplas threads e recuperação de falhas, uma vez que as transações garantem a consistência e a resiliência do estado. No contexto do exemplo do planejador, as transações possibilitam o acesso simultâneo a dados compartilhados e garantem a integridade do estado em caso de falhas.
Os mecanismos de registro e análise de dados fornecidos pelo banco de dados podem ser aplicados para rastrear o acesso e as alterações de estado das aplicações, monitoramento, depuração e manutenção da segurança. Por exemplo, após a detecção de acesso não autorizado ao sistema, é possível, mediante a execução de consultas SQL, determinar a extensão da violação, identificando todas as operações realizadas pelos processos que acessaram informações confidenciais.
O projeto está em desenvolvimento há mais de um ano e está na fase de criação de protótipos de componentes individuais da arquitetura. Atualmente, um protótipo de serviços operacionais em cima do banco de dados, como FS, IPC e um planejador, foi preparado, e um ambiente de programação está sendo desenvolvido, fornecendo uma interface para a execução de aplicações baseadas no modelo FaaS (function-as-a-service).
Na próxima fase de desenvolvimento, planeja-se fornecer uma pilha de software completa para aplicações distribuídas. Atualmente, o VoltDB está sendo utilizado como SGBD nos experimentos, mas está em discussão a criação de uma camada própria para armazenamento de dados ou a implementação de funcionalidades ausentes em SGBDs existentes. Também está sendo debatido quais componentes devem ser executados no nível do núcleo e quais podem ser implementados sobre o SGBD.
Fonte: opennet.ru
