À propos du projet

Neon est présenté comme une plateforme de base de données Postgres serverless open source. Il sépare le stockage et le calcul et remplace la couche de stockage de PostgreSQL en redistribuant les données sur un cluster de nœuds. Le guide de démarrage rapide du README suggère d'utiliser l'offre gratuite (Free Tier) de Neon pour créer une instance Postgres serverless et de s'y connecter avec un client Postgres tel que psql ou dbeaver, ou d'utiliser le SQL Editor en ligne. Il indique également que le projet peut être compilé et exécuté localement. Aperçu de l'architecture : une installation Neon se compose de nœuds de calcul et du moteur de stockage Neon. Les nœuds de calcul sont des nœuds PostgreSQL sans état (stateless) adossés au moteur de stockage. Le moteur de stockage comprend deux composants majeurs : Pageserver, un backend de stockage extensible pour les nœuds de calcul ; et Safekeepers, un service WAL redondant qui reçoit le WAL des nœuds de calcul et le stocke de manière durable jusqu'à ce que le pageserver le traite et le télécharge vers un stockage cloud. La documentation pour les développeurs se trouve dans docs/SUMMARY.md. Développement local : le README fournit des instructions d'installation des dépendances pour les distributions Linux telles qu'Ubuntu ou Debian, Fedora et Arch, ainsi que pour macOS, incluant protobuf-compiler 3.15+, Rust, le client PostgreSQL et les outils de build. La compilation crée neon et un postgres patché, et le dépôt utilise un fichier rust-toolchain. Après un clonage récursif et une compilation avec make, les utilisateurs exécutent cargo neon init, cargo neon start, cargo neon tenant create --set-default, cargo neon endpoint create main, et cargo neon endpoint start main. Des exemples montrent l'exécution de psql sur l'endpoint local et la création d'une branche avec cargo neon timeline branch --branch-name migration_check, puis la création et le démarrage d'un endpoint PostgreSQL sur cette branche. Le README précise que la branche commence avec les données de main tandis que les modifications ultérieures restent isolées. Tests et nettoyage : les tests unitaires Rust utilisent cargo-nextest ; les tests d'intégration nécessitent des dépendances et s'exécutent via ./scripts/pytest, avec des options pour sélectionner la version de Postgres et le type de build. Des flamegraphs peuvent être générés avec flamegraph-rs ou flamegraph.pl. Le nettoyage utilise make clean et make distclean, et la suppression du répertoire .neon efface la base de données locale. La documentation inclut docs/sourcetree.md et rustdoc. Le README renvoie vers des articles de blog, une vidéo, un glossaire Neon, un glossaire PostgreSQL, CONTRIBUTING.md, et demande aux contributeurs de lire les documents relatifs au style de code et à la structure de l'arborescence du code source.