Projet open source
NikolayS/PGSimCity avatar
NikolayS/PGSimCity

Explorer les comportements PostgreSQL dans une simulation interactive

Ce projet transforme « An explorable 3D city that shows how Postgres actually works. PGSimCity An explorable 3D city that shows how PostgreSQL actually works.** PGSimCity turns a PostgreSQL cluster into a city you can inspect, walk through, and break. » en une solution open source exploitable, avec une chaîne d’outils réutilisable et des moyens d’intégration pour des cas d’usage concrets.

750 étoiles61 forksTypeScriptApache-2.0

En bref

De quoi s’agit-il ?
Ce dossier examine PGSimCity, son entrée documentée, ses réglages visibles et les limites que le README permet réellement d’établir.
À qui s’adresse-t-il ?
PGSimCity convient aux lecteurs dont le besoin correspond aux entrées documentées et qui peuvent contrôler Cache thrash, work_mem cliff, Non-HOT UPDATE, WebGL2. Il ne convient pas à ceux qui exigent une garantie absente du README.
Puis-je l’utiliser commercialement ?
Oui. Apache-2.0 est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 3 jours.
En quel langage est-il écrit ?
Principalement TypeScript, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 14 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

PGSimCity : Dessiner un cluster PostgreSQL comme une ville

PGSimCity est une ville 3D explorable qui mappe un cluster PostgreSQL à des bâtiments, quartiers et commandes. Le README la présente comme une façon de montrer comment PostgreSQL fonctionne réellement, destinée aux ingénieurs qui n'ont jamais administré de base de données. C'est une visualisation éducative indépendante et non commerciale, sans lien avec Electronic Arts ni avec le projet PostgreSQL, et elle ne contient aucun code, asset ou contenu de jeu SimCity. Une ville en ligne est disponible à https://nikolays.github.io/PGSimCity/ sans installation. La ville est un modèle, pas un émulateur : aucun code source PostgreSQL n'y est exécuté, et les nombres sont mis à l'échelle pour être observables par un humain.

Pour vérifier PGSimCity, créez d’abord un espace de test contenant uniquement les entrées documentées. Relevez la version, la commande npm install && npm test et chaque clé Cache thrash, work_mem cliff, Non-HOT UPDATE, WebGL2, puis conservez la sortie complète. Un lancement réussi ne suffit pas : comparez le fichier produit, le journal et l’état attendu dans le README. Si une étape dépend d’un service, d’un GPU, d’un dépôt Nix ou d’un compte de jeu, notez séparément cette dépendance et son effet sur le résultat. Le matériau disponible ne fournit pas de matrice exhaustive de performance ou de compatibilité ; ces points restent à établir dans votre environnement.

Dans ce projet, l’observation utile porte sur Cache thrash, work_mem cliff, Non-HOT UPDATE, WebGL2. Ne transformez pas une absence de précision dans le README en promesse implicite : consignez plutôt le comportement constaté, le système utilisé et le chemin exact du résultat. Cette méthode permet de distinguer la fonction annoncée de ce que votre installation démontre réellement.

PGSimCity : De quel niveau de confiance dispose la simulation

Le README qualifie le projet de 0.x et précoce. Il cible la ligne majeure PostgreSQL 18, avec PostgreSQL 18.4 comme version de référence revue ; les affirmations sur les mécanismes suivent REL_18_STABLE. Une simplification divulguée : l'échantillon de tampon TypeScript utilise un anneau fixe de 32 images, ce que le README précise n'être pas la règle de dimensionnement d'anneau de PostgreSQL 18. Quatre cycles de relecture ont eu lieu : trois revues spécialisées ont comparé le comportement de PostgreSQL avec la documentation et le code source, et un audit séparé a traité les bâtiments, adjacences et animations comme des affirmations. La suite déterministe épingle certaines approximations, et un test rouge fait échouer le CI. Limite connue : les commandes tactiles n'ont été vérifiées que dans l'émulation mobile de Chrome. Le projet accepte des corrections via un modèle et des pull requests.

PGSimCity : Lire la ville : quartiers et couleurs

La ville est organisée en quartiers : le ciel client pour les connexions entrantes, le postmaster, une rangée de 16 backends, le pool de tampons avec shared_buffers et wal_buffers, l'excavation comme répertoire de données, le stockage avec fichiers de tas et arbres B, le quartier WAL, la cour de maintenance, les serveurs de secours, le quartier de continuité, et un laboratoire de requêtes au-dessus des backends. La couleur porte du sens partout : WAL est ambre, pages sales rouges, pages propres bleues, vacuum violet, checkpoints rose, écrivain d'arrière-plan sarcelle, réplication orange, stockage vert, index aqua, verrous rouges. Chaque inspecteur nomme les simplifications matérielles là où elles comptent.

PGSimCity : Visites guidées, scénarios et commandes

La touche T lance une visite guidée en 14 chapitres qui suit une connexion à travers le plan, le cache, le WAL, les checkpoints, le vacuum et la réplication. Entrée ouvre le traçage de requête, avec un exemple Non-HOT UPDATE. Les scénarios incluent Cache thrash (qui règle shared_buffers à 16 MiB), The work_mem cliff, Long-running transaction, Checkpoint storm, synchronous_commit désactivé, et Slow replay. Les contrôles caméra et clavier sont étendus, avec mode vol, marche et palette de commandes. Accessibilité : les leçons PostgreSQL ont des parcours clavier et texte d'abord, mais la scène 3D et la marche à la première personne n'ont pas d'équivalent non visuel, selon ACCESSIBILITY.md.

PGSimCity : Architecture et pile technique

Le code source est réparti entre src/core, sim, world, engine, ui, observability, et un répertoire machine séparé. Trois règles le maintiennent : world/layout.ts est la source unique de vérité pour la géographie ; la simulation n'importe jamais three.js et le world ne mute jamais la simulation, ils se rencontrent dans SimState ; le rendu porte du sens différemment selon le thème. La pile est three.js r185, TypeScript et Vite, sans framework, three.js étant la seule dépendance d'exécution groupée. Le flux de requêtes et Machine peuvent charger PGlite en différé après opt-in. window.PGSIMCITY expose sim, registry, bus, rig, gfx et flows pour piloter la ville de l'extérieur.

PGSimCity : Exécution locale et vie privée

Pour exécuter en local, il faut Node.js ^20.19.0 ou >=22.12.0 et un navigateur avec WebGL2. Les commandes du README : npm install, npm run dev (http://localhost:5173), npm test, npm run typecheck, npm run build, npm run preview (http://localhost:4173). Il n'y a pas de serveur applicatif ; le build est un bundle statique. L'analytique Plausible est le seul service externe, agrégé et sans cookie ; il enregistre les pages vues, visiteurs uniques et interactions comme démarrer la visite ou tracer une requête. Il n'envoie aucune donnée personnelle ni empreinte. Bloquer plausible.io arrête la mesure sans affecter l'application.

PGSimCity : Licence et feuille de route

Le projet est sous licence Apache-2.0, copyright 2026 Nikolay Samokhvalov, avec un fichier NOTICE. Le texte de licence accorde une licence de droit d'auteur perpétuelle, mondiale, non exclusive, gratuite et irrévocable pour reproduire, préparer des œuvres dérivées, exposer publiquement, exécuter, sous-licencier et distribuer. Il ne dit rien sur la garantie, le support ou la posture de sécurité. Le README renvoie à ROADMAP.md, qui liste ce qui est en cours, ce qui est connu comme erroné et ce qui est délibérément non fait, et fournit un modèle de correction et un lien vers les pull requests. Marques : PostgreSQL est une marque de la PostgreSQL Community Association of Canada, SimCity une marque d'Electronic Arts.

Conclusion éditoriale

PGSimCity convient aux lecteurs dont le besoin correspond aux entrées documentées et qui peuvent contrôler Cache thrash, work_mem cliff, Non-HOT UPDATE, WebGL2. Il ne convient pas à ceux qui exigent une garantie absente du README. Commencez par npm install && npm test, observez le résultat propre à ce projet, puis décidez sur cette preuve.

Sources officielles

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Notes de la communauté

Notes de la communauté