Sobre el proyecto
bytdb es una base de datos relacional embebida y escrita puramente en Go, diseñada para ocupar el nicho de SQLite mientras utiliza el dialecto de Postgres. Funciona enteramente dentro del proceso de la aplicación, sin necesidad de un servidor externo, sin cgo y sin comunicación por sockets.
Las características técnicas clave incluyen:
- **Compatibilidad con Postgres**: Soporta el protocolo de red de Postgres a través de `pgwire`, lo que permite que herramientas como `psql`, `pgx` y varios ORM (como GORM) se conecten directamente. Implementa un subconjunto del dialecto de Postgres, incluyendo funciones de ventana, CTEs, joins y soporte para `jsonb`.
- **Arquitectura Embebida**: Construida como una capa relacional sobre `btypedb`, codifica tablas, filas e índices secundarios en un único espacio de claves ordenado. Esto permite escaneos de claves eficientes y operaciones atómicas.
- **Concurrencia y Transacciones**: Proporciona transacciones serializables por defecto. También ofrece un modo de Control de Concurrencia Optimista (OCC) para cargas de trabajo con alta demanda de lectura.
- **Tipos de Datos**: Soporta tipos de grado Postgres, incluyendo `timestamp[tz]`, `date`, `uuid`, `text[]` y `jsonb` con una familia completa de operadores.
- **Durabilidad y Seguridad**: Cuenta con un registro de escritura anticipada (WAL) para durabilidad ante pérdida de energía, cifrado opcional AES-256-GCM en reposo y replicación asíncrona a almacenes de objetos compatibles con S3 (similar a Litestream).
- **Gestión de Esquemas**: Soporta valores de fila dispersos, lo que permite cambios de esquema de solo metadatos como `AddColumn` y `DropColumn` sin reescrituras completas de la tabla.
La base de datos se puede utilizar a través de un controlador `database/sql` estándar, una API SQL directa o como un servidor independiente a través del protocolo de red de Postgres.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.