À propos du projet

bytdb est une base de données relationnelle intégrée, entièrement écrite en Go, conçue pour occuper la niche de SQLite tout en utilisant le dialecte Postgres. Elle fonctionne entièrement au sein du processus de l'application, sans nécessiter de serveur externe, de cgo ou de communication par socket. Les caractéristiques techniques principales incluent : - **Compatibilité Postgres** : Prend en charge le protocole filaire Postgres via `pgwire`, permettant à des outils comme `psql`, `pgx` et divers ORM (comme GORM) de se connecter directement. Elle implémente un sous-ensemble du dialecte Postgres, y compris les fonctions fenêtrées, les CTE, les jointures et la prise en charge de `jsonb`. - **Architecture intégrée** : Construite comme une couche relationelle sur `btypedb`, elle encode les tables, lignes et index secondaires dans un seul espace de clés ordonné. Cela permet des scans de clés efficaces et des opérations atomiques. - **Concurrence et transactions** : Fournit des transactions sérialisables par défaut. Elle offre également un mode de contrôle de concurrence optimiste (OCC) pour les charges de travail haute performance centrées sur les lectures. - **Types de données** : Prend en charge des types de qualité Postgres, notamment `timestamp[tz]`, `date`, `uuid`, `text[]` et `jsonb` avec une famille d'opérateurs complète. - **Durabilité et sécurité** : Dispose d'un journal de préinscription (WAL) pour la durabilité en cas de coupure de courant, d'un chiffrement AES-256-GCM optionnel au repos, et d'une réplication asynchrone vers des stockages objet compatibles S3 (similaire à Litestream). - **Gestion du schéma** : Prend en charge les valeurs de ligne dispersées, permettant des modifications de schéma basées uniquement sur les métadonnées, telles que `AddColumn` et `DropColumn`, sans réécriture complète de la table. La base de données peut être utilisée via un pilote standard `database/sql`, une API SQL directe ou en tant que serveur autonome via le protocole filaire Postgres.