Wprowadzono projekt DBOS (System operacyjny ukierunkowany na DBMS), który rozwija nowy system operacyjny do uruchamiania skalowalnych aplikacji rozproszonych. Cechą tego projektu jest wykorzystanie baz danych do przechowywania aplikacji i stanu systemu, a także organizacja dostępu do stanu wyłącznie przez transakcje. Projekt rozwijany jest przez badaczy z Massachusetts Institute of Technology, Uniwersytetu Wisconsin, Uniwersytetu Stanforda, Uniwersytetu Carnegie Mellon oraz firm Google i VMware. Opracowania są udostępniane na licencji MIT.
Komponenty do interakcji z urządzeniami oraz niskopoziomowe usługi zarządzania pamięcią zostały przeniesione do mikrojądra. Możliwości udostępnione przez mikrojądro są wykorzystywane do uruchomienia warstwy z bazą danych. Usługi systemowe na wysokim poziomie, zapewniające wykonanie aplikacji, współdziałają wyłącznie z rozproszoną bazą danych i są oddzielone od mikrojądra oraz komponentów specyficznych dla danej systemu.
Budowanie na bazie rozproszonej bazy danych pozwala na stworzenie usług systemowych na początku rozproszonych i nieprzypisanych do konkretnego węzła, co odróżnia DBOS od tradycyjnych systemów klastrowych, w których na każdym węźle działa własna instancja systemu operacyjnego, na której uruchamiane są oddzielne planery klastrowe, rozproszone systemy plików oraz menedżery sieci.

Zauważono, że użycie współczesnych rozproszonych baz danych jako podstawy DBOS, które przechowują dane w pamięci operacyjnej i wspierają transakcje, takich jak VoltDB i FoundationDB, może zapewnić wydajność wystarczającą do skutecznego wykonania wielu usług systemowych. W bazach danych mogą być również przechowywane dane planera, systemu plików i IPC. Takie bazy danych doskonale się skalują, zapewniają atomowość i izolację transakcji, mogą zarządzać petabajtami danych oraz oferują narzędzia do zarządzania dostępem i śledzenia przepływów danych.
Zaletami zaproponowanej architektury jest znaczne poszerzenie możliwości analityki oraz zmniejszenie złożoności kodu dzięki zastosowaniu w serwisach systemu operacyjnego zwykłych zapytań do DBMS, na którego stronę przenosi się realizację transakcji oraz narzędzi zapewniających wysoką dostępność (podobna funkcjonalność może być zrealizowana po stronie DBMS jednorazowo i wykorzystana w OS oraz aplikacjach).
Na przykład, klastrowy planista może przechowywać informacje o zadaniach i obsługiwanych w tabelach DBMS oraz realizować operacje planowania jako zwykłe transakcje, mieszając kod imperatywny i SQL. Zastosowanie transakcji upraszcza rozwiązywanie takich problemów jak zarządzanie wielowątkowością i przywracanie po awariach, ponieważ transakcje gwarantują spójność i trwałość stanu. W kontekście przykładu z planistą, transakcje pozwalają zorganizować jednoczesny dostęp do współdzielonych danych i zapewnić zachowanie integralności stanu w przypadku awarii.
Mechanizmy prowadzenia logów i analizy danych dostarczane przez DBMS mogą być stosowane do monitorowania dostępu i zmian w stanie aplikacji, monitorowania, debugowania oraz zapewniania bezpieczeństwa. Na przykład, po wykryciu nieautoryzowanego dostępu do systemu można poprzez wykonanie zapytań SQL określić zakres wycieku, ujawniając wszystkie operacje przeprowadzone przez procesy, które uzyskały dostęp do poufnych informacji.
Projekt jest rozwijany od ponad roku i znajduje się na etapie tworzenia prototypów poszczególnych komponentów architektury. Obecnie przygotowano prototyp działających na bazie DBMS usług systemu operacyjnego, takich jak FS, IPC i planista, a także rozwija się środowisko programistyczne, które dostarcza interfejs do uruchamiania aplikacji opartych na modelu FaaS (function-as-a-service).
W następnej fazie rozwoju planowane jest udostępnienie pełnego stosu oprogramowania dla rozproszonych aplikacji. Jako DBMS w eksperymentach obecnie wykorzystywany jest VoltDB, jednak prowadzone są dyskusje na temat stworzenia własnej warstwy do przechowywania danych lub zaimplementowania brakujących funkcjonalności w istniejących DBMS. W fazie dyskusji znajduje się również kwestia, które komponenty powinny działać na poziomie jądra, a które można zrealizować na szczycie DBMS.
Źródło: opennet.ru
