Sobre o projeto

bytdb é um banco de dados relacional embutido, escrito em Go puro, projetado para ocupar o nicho do SQLite enquanto fala o dialeto Postgres. Ele opera inteiramente dentro do processo da aplicação, não exigindo servidor externo, cgo nem comunicação por socket. Principais recursos técnicos incluem: - **Compatibilidade com Postgres**: Suporta o protocolo de rede do Postgres via `pgwire`, permitindo que ferramentas como `psql`, `pgx` e vários ORMs (como GORM) se conectem diretamente. Ele implementa um subconjunto do dialeto Postgres, incluindo funções de janela, CTEs, joins e suporte a `jsonb`. - **Arquitetura embutida**: Construído como uma camada relacional sobre `btypedb`, codifica tabelas, linhas e índices secundários em um único espaço de chaves ordenado. Isso permite varreduras de chaves eficientes e operações atômicas. - **Concorrência e transações**: Fornece transações serializáveis por padrão. Também oferece um modo de Controle de Concorrência Otimista (OCC) para cargas de trabalho com muitas leituras e alto desempenho. - **Tipos de dados**: Suporta tipos de nível Postgres, incluindo `timestamp[tz]`, `date`, `uuid`, `text[]` e `jsonb` com uma família completa de operadores. - **Durabilidade e segurança**: Possui um log de escrita antecipada (WAL) para durabilidade contra perda de energia, criptografia AES-256-GCM opcional em repouso e replicação assíncrona para armazenamentos de objetos compatíveis com S3 (semelhante ao Litestream). - **Gerenciamento de esquema**: Suporta valores de linha esparsos, permitindo alterações de esquema somente de metadados, como `AddColumn` e `DropColumn`, sem reescritas completas da tabela. O banco de dados pode ser usado por meio de um driver `database/sql` padrão, uma API SQL direta ou como servidor autônomo via protocolo de rede do Postgres.