InícioNuvemComputaçãoDBOS: Uma alternativa mais eficaz para o desenvolvimento de aplicativos?

DBOS: Uma alternativa mais eficaz para o desenvolvimento de aplicativos?

Date:

Um sistema operacional integrado a um banco de dados distribuído, o DBOS se apresenta como uma possibilidade promissora que pode se mostrar vantajosa no futuro.

shutterstock 166345925 open door with sunlight shining through doorway
Imagem: astrovariable/FreeImages

No fim de março de 2024, Mike Stonebraker revelou por meio de um post em seu blog o lançamento do DBOS Cloud, uma plataforma de computação sem servidor transacional. Essa inovação é viabilizada por um sistema operacional revolucionário, o DBOS, que oferece serviços do sistema operacional em um banco de dados distribuído. Embora pareça peculiar à primeira vista, essa proposta se torna mais compreensível ao conhecer a sua história de origem.

Há três anos, surgiu a ideia para o DBOS (Sistema Operacional Orientado a Banco de Dados) a partir da percepção de que o tamanho do estado que um sistema operacional precisa manter aumentou consideravelmente desde os primeiros dias do Unix em 1973. Armazenar esse estado é, portanto, um desafio que remete aos princípios de um banco de dados. Além disso, o Linux é considerado um código antigo e está enfrentando dificuldades em progredir, como a ausência de uma versão multi-nodo, o que requer o uso de orquestradores como o Kubernetes. Uma conversa com Matei Zaharia, em que ele mencionou que a Databricks precisou abandonar o agendamento tradicional do sistema operacional devido à escala em que estavam operando, optando por uma solução de gerenciamento de banco de dados, reforçou a necessidade de incorporar o DBMS ao kernel e desenvolver um novo sistema operacional.

Se você não está familiarizado com Stonebraker, ele é um cientista da computação que se dedica ao campo de banco de dados desde os anos 70, quando ele e seus colegas da UC Berkeley, Eugene Wong e Larry Rowe, estabeleceram a Ingres. A Ingres posteriormente serviu de inspiração para o Sybase, que mais tarde se transformou na base do Microsoft SQL Server. Após vender a Ingres para a Computer Associates, Stonebraker e Rowe iniciaram suas pesquisas sobre o Postgres, que posteriormente se desenvolveu para o PostgreSQL e também deu origem ao Illustra, que foi adquirido pela Informix.

Em 1980, durante uma conferência de sistemas de gerenciamento de banco de dados, ouvi Stonebraker falar sobre o Postgres. Desse diálogo, além da analogia de uma “bateria de salto” relacionada ao SQL, surgiu a ideia de aprimorar bancos de dados ao adicionar suporte para tipos de dados complexos. Isso envolveria a criação de novos tipos de índices, a expansão da linguagem de consulta e a integração dessas funcionalidades ao analisador de consultas e otimizador. Stonebraker exemplificou esse conceito com a informação geoespacial, mencionando uma estrutura de índice que aceleraria as consultas de banco de dados geométrico 2D. Esse conceito evoluiu para o PostGIS, que utiliza atualmente o R-tree nos índices por padrão, embora na época da conversa de Stonebraker em 1980, ele provavelmente estivesse se referindo a um índice de quadtree mais antigo.

Pulando para o futuro 44 anos, não deveria surpreender ninguém na área de banco de dados que DBOS utilize uma versão distribuída do PostgreSQL como sua base de dados principal.

VEJA TAMBEM:  Google está lançando o modelo de inteligência artificial Gemini 1.5 Flash-8B.
dbos 01
Imagem: karvanth/Pexels

O esquema do sistema DBOS evidencia que um banco de dados está integrado ao núcleo do sistema operacional. O banco de dados distribuído requer um núcleo mínimo, porém é integrado aos serviços do SO, ao invés de operar na camada de aplicação como um banco de dados convencional.

Recursos disponíveis na Base de Dados Online de Saúde.

DBOS Transact é um framework TypeScript de código aberto que oferece suporte a transações pós-compatíveis, orquestração confiável de fluxo de trabalho, serviços HTTP utilizando GET e POST, comunicação com serviços externos e APIs de terceiros, solicitações idempotentes com chaves UUID, autenticação e autorização, integração com Kafka com semântica exata, teste unitário e auto-descoberta. Por outro lado, DBOS Cloud é uma plataforma sem servidor transacional destinada à implantação de aplicativos DBOS Transact, oferecendo suporte para implantação sem servidor, depuração de viagens no tempo, gerenciamento de banco de dados na nuvem e observabilidade.

Vamos ressaltar algumas áreas de interesse significativas.

Operação no Banco de Dados do Sistema

O código apresentado na imagem abaixo ilustra transações e o uso do HTTP com o método GET. É recomendável analisar atentamente o código. Ele possui apenas 18 linhas, sem contar as linhas em branco.

A primeira linha de código importa as classes DBOS SDK necessárias. A segunda linha de código importa o construtor de consultas Knex.js SQL, que é responsável por enviar consultas parametrizadas para o banco de dados Postgres e retornar os resultados. O esquema da tabela do banco de dados é descrito entre as linhas 4 e 8, com apenas duas colunas: uma string para o nome e um inteiro para welcome_count.

Na classe Hello, o método helloTransaction é o único disponível. Ele é decorado com @GetApi e @Transaction, que fazem com que o método responda a solicitações HTTP GET na rota /greeting/ seguida pelo parâmetro de nome de usuário desejado. Além disso, o método envolve a chamada ao banco de dados em uma transação para garantir que duas instâncias não possam atualizar o banco de dados simultaneamente.

A linha de código da base de dados (linha 16) utiliza a sintaxe PostgreSQL para tentar adicionar uma nova entrada no banco de dados com o nome fornecido e uma contagem inicial de 1. Caso a entrada já exista, o gatilho ON CONFLICT realiza uma operação de atualização que aumenta a contagem no banco de dados.

Na linha 17, o Knex.js é utilizado para enviar a query SQL para o banco de dados DBOS e obter o resultado. Em seguida, na linha 18, a contagem é extraída da primeira linha de resultados e a saudação é retornada ao programa que fez a chamada.

O emprego de SQL e um banco de dados para algo que aparentemente deveria ser uma API de sistema de memória central, como um contador atômico do Linux ou uma variável intertravada do Windows, pode parecer bastante incomum. No entanto, essa abordagem é eficaz.

dbos 02
Imagem: TomasHa73/iStock

Este código TypeScript para a classe Hello é criado durante a operação de criação DBOS. Ele utiliza os decoradores @GetApi e @Transaction para lidar com as solicitações HTTP GET e para executar a função como uma transação de banco de dados.

VEJA TAMBEM:  Os analistas afirmam que a Oracle possui uma estratégia mais avançada em inteligência artificial generativa.

DBOS é um Depurador de viagem no tempo.

Quando um aplicativo é executado no DBOS Cloud, ele registra cada ação e modifica o fluxo de trabalho no banco de dados. É possível realizar a depuração desse processo utilizando o Visual Studio Code e a extensão DBOS Time Travel Debugger. Essa ferramenta de depuração permite analisar o aplicativo em relação ao banco de dados no estado em que se encontrava quando o fluxo de trabalho original foi executado.

dbos 03
Imagem: GernotBra/iStock

Para iniciar a depuração de viagem no tempo, você deve começar visualizando os fluxos de trabalho de rastreamento salvos por meio do CodeLens. Após selecionar o fluxo desejado, é possível depurá-lo usando o Visual Studio Code com um plugin específico ou através da linha de comando.

dbos 04
Imagem: xsix/KaboomPics

Depurar uma viagem no tempo com um fluxo de trabalho salvo é semelhante à depuração usual no Visual Studio Code, envolvendo a mesma classe Hello que foi vista anteriormente.

Introdução Rápida do DBOS

O guia de início rápido do DBOS Quickstart necessita de Node.js versão 20 ou superior, assim como de um banco de dados PostgreSQL com o qual você pode se conectar localmente em um contêiner Docker ou remotamente. Embora eu já possuísse o Node.js v20.9.0 instalado no meu MacBook M1, decidi atualizá-lo para a versão 20.12.1 diretamente do site do Node.js.

Eu não possuía o PostgreSQL instalado, então fiz o download e executei o instalador interativo para a versão 16.2 do EnterpriseDB. Esse instalador cria um servidor e aplicativos completos para macOS. Se tivesse optado pelo Homebrew, teria criado aplicativos de linha de comando, enquanto que com o Postgres.app, teria obtido um aplicativo de barra de menu.

Uma maneira adequada de iniciar é criar um diretório de aplicativos DBOS utilizando Node.js.

Em seguida, você ajusta as configurações do aplicativo para utilizar o seu servidor Postgres e inserir a senha do Postgres em uma variável de ambiente para exportação.

Em seguida, é feita a criação de um banco de dados chamado “Hello” utilizando Node.js e Knex.js.

Com essa etapa finalizada, você pode criar e rodar o aplicativo DBOS em seu próprio computador.

Neste momento, é possível acessar http://localhost:3000 para experimentar a aplicação. Depois disso, você se registra no DBOS Cloud e configura seu próprio banco de dados lá.

Por fim, é possível cadastrar e lançar seu aplicativo na DBOS Cloud.

dbos 05
Imagem: MaxWdhs/GettyImages

O app “Olá” rodando no DBOS Cloud realiza a contagem de todas as saudações utilizando o código previamente visualizado.

Utilizações de Sistemas Operacionais de Banco de Dados.

O aplicativo “Olá” demonstra algumas das principais características do DBOS Transact e do DBOS Cloud, porém é tão simples que se torna apenas um brinquedo. O tutorial Quickstart acrescenta mais detalhes e é recomendável dedicar um tempo para passar por ele. Nele, você aprenderá a utilizar as funcionalidades de comunicação para acessar serviços de terceiros, como o email neste caso, e a criar fluxos de trabalho confiáveis. Você será capaz de interromper e reiniciar o fluxo de trabalho sem a necessidade de reenviar o e-mail: os fluxos de trabalho do DBOS são executados até o final e cada operação ocorre apenas uma vez. Isso é viável graças ao fato de o DBOS armazenar a saída de cada etapa em seu banco de dados.

VEJA TAMBEM:  Google amplia funcionalidades de Inteligência Artificial Duet em seus serviços de computação em nuvem.

Após dominar a programação Quickstart, você estará preparado para explorar as duas demonstrações de aplicativos DBOS, que elevam o padrão dos brinquedos. Ambas as demonstrações utilizam o Next.js em suas interfaces e incorporam os fluxos de trabalho, transações e comunicadores do DBOS.

A primeira demonstração, E-Commerce, consiste em um sistema online para realizar compras e pagamentos. É recomendado explorar a seção “Under the Covers” do README no repositório da demonstração para compreender seu funcionamento e como você pode personalizá-lo, como, por exemplo, integrando um serviço de pagamento real.

A segunda demonstração, intitulada YKY Social, representa uma rede social básica e opta por utilizar o TypeORM em vez do Knex.js para sua manipulação de banco de dados. Além disso, faz uso do Amazon S3 para armazenamento das fotos de perfil. Para uma experiência completa com o DBOS, é recomendado explorar ambos os aplicativos de demonstração.

Uma visão sedutora

Preciso admitir que DBOS e DBOS Cloud despertam meu interesse. Recursos como execução confiável e depuração de viagem no tempo são bastante atrativos. No entanto, atualmente não considero ideal desenvolver uma aplicação concreta no DBOS ou DBOS Cloud. Tenho diversas dúvidas, desde questões sobre sua escalabilidade prática até o custo em uma determinada escala.

Eu já comentei que, embora o código DBOS pareça incomum, ele é funcional. Acredito que muitas lojas de programação poderiam ser desencorajadas ou até mesmo afastadas pela ideia de que o código é estranho, pois os desenvolvedores costumam ser resistentes a novas abordagens até que percebam que o que estão fazendo não está funcionando.

Eu também preciso ressaltar que a versão atual do DBOS difere significativamente do diagrama do sistema que você viu no início desta revisão. Onde está a versão simplificada do sistema? Atualmente, o DBOS é compatível com macOS, Linux e Windows, mas nenhum deles corresponde à versão simplificada do sistema. A versão em nuvem do DBOS atualmente funciona na AWS, o que também não representa a versão simplificada do sistema.

Desta forma, em linhas gerais, o DBOS apresenta uma perspectiva promissora que poderá se mostrar positiva no futuro. É uma novidade brilhante vinda de indivíduos inteligentes, no entanto, levará um tempo até que se torne um sistema amplamente utilizado.

Lo siento, pero necesito que proporciones un texto específico para poder parafrasearlo. ¿Puedes proporcionar un fragmento o una idea que quieras que parafrasee?

Custo: Gratuito com restrições de uso; pacotes pagos requerem que você entre em contato com o departamento de vendas.

Sistemas operativos compatibles: macOS, Linux, Windows y AWS.

DEIXE UMA RESPOSTA

Por favor digite seu comentário!
Por favor, digite seu nome aqui