Viene presentato il progetto DBOS (DBMS-Oriented Operating System), che sviluppa un nuovo sistema operativo per l'esecuzione di applicazioni distribuite scalabili. Una particolarità del progetto è l'utilizzo di un DBMS per la memorizzazione delle applicazioni e dello stato del sistema, nonché l'organizzazione dell'accesso allo stato solo tramite transazioni. Il progetto è stato sviluppato da ricercatori del Massachusetts Institute of Technology, dell'Università del Wisconsin e Stanford, della Carnegie Mellon University e di Google e VMware. L'opera è distribuita sotto licenza MIT.
Nel microkernel sono inseriti i componenti per l'interazione con le apparecchiature e i servizi di gestione della memoria di basso livello. Le funzionalità fornite dal microkernel vengono utilizzate per avviare il livello DBMS. I servizi di sistema di alto livello che consentono l'esecuzione delle applicazioni interagiscono solo con il DBMS distribuito e sono separati dal microkernel e dai componenti specifici del sistema.
Costruire su un DBMS distribuito rende possibile rendere i servizi di sistema inizialmente distribuiti e non legati a un nodo specifico, il che distingue i DBOS dai tradizionali sistemi cluster, in cui ogni nodo esegue la propria istanza del sistema operativo, sulla quale sono separate vengono lanciati pianificatori di cluster, file system distribuiti e gestori di rete.
Va notato che l’utilizzo di moderni DBMS distribuiti come base per DBOS, l’archiviazione dei dati nella RAM e il supporto di transazioni, come VoltDB e FoundationDB, possono fornire prestazioni sufficienti per l’esecuzione efficiente di molti servizi di sistema. Il DBMS può anche memorizzare dati di pianificazione, file system e IPC. Allo stesso tempo, i DBMS sono altamente scalabili, forniscono atomicità e isolamento delle transazioni, possono gestire petabyte di dati e fornire strumenti per il controllo degli accessi e il monitoraggio dei flussi di dati.
Tra i vantaggi dell'architettura proposta c'è una significativa espansione delle capacità di analisi e una riduzione della complessità del codice dovuta all'uso di query ordinarie al DBMS nei servizi del sistema operativo, dal lato della quale l'implementazione di transazioni e strumenti per garantire un'elevata viene effettuata la disponibilità (tale funzionalità può essere implementata una sola volta sul lato DBMS e utilizzata nel sistema operativo e nelle applicazioni).
Ad esempio, uno scheduler del cluster può archiviare informazioni su attività e gestori in tabelle DBMS e implementare operazioni di pianificazione come transazioni regolari, mescolando codice imperativo e SQL. Le transazioni semplificano la risoluzione di problemi quali la gestione della concorrenza e il ripristino degli errori poiché le transazioni garantiscono coerenza e persistenza dello stato. Nel contesto dell'esempio dello scheduler, le transazioni consentono l'accesso simultaneo ai dati condivisi e garantiscono che l'integrità dello stato venga mantenuta in caso di errori.
I meccanismi di registrazione e analisi dei dati forniti dal DBMS possono essere utilizzati per tenere traccia dell'accesso e delle modifiche allo stato dell'applicazione, al monitoraggio, al debug e al mantenimento della sicurezza. Ad esempio, dopo aver rilevato l'accesso non autorizzato a un sistema, è possibile eseguire query SQL per determinare l'entità della perdita, identificando tutte le operazioni eseguite dai processi che hanno ottenuto l'accesso a informazioni riservate.
Il progetto è in sviluppo da più di un anno ed è nella fase di creazione di prototipi di singoli componenti architettonici. Attualmente è stato preparato un prototipo dei servizi del sistema operativo in esecuzione sul DBMS, come FS, IPC e scheduler, ed è in fase di sviluppo un ambiente software che fornisce un'interfaccia per l'esecuzione di applicazioni basate su FaaS (function-as- modello a-servizio).
La fase successiva dello sviluppo prevede di fornire uno stack software completo per applicazioni distribuite. VoltDB è attualmente utilizzato come DBMS negli esperimenti, ma sono in corso discussioni sulla creazione di un nostro livello per l'archiviazione dei dati o sull'implementazione delle funzionalità mancanti nei DBMS esistenti. È in discussione anche la questione di quali componenti debbano essere eseguiti a livello del kernel e quali possano essere implementati sul DBMS.
Fonte: opennet.ru