- PostgreSQL के connection/backend/shared memory/WAL/storage/checkpoint/autovacuum/replication को इमारतों और ज़ोन्स के रूप में दिखाने वाला 3D शैक्षिक सिमुलेशन है, जिसमें हर इमारत और animation वास्तविक database mechanism से मेल खाता है
shared_buffersका clock-sweep replacement, WAL write और flush, checkpoint pacing, xmin horizon और table bloat जैसे internal operations को धीमे time scale पर देखने के लिए संख्याओं और scale को छोटा किया गया है- यह वास्तविक PostgreSQL code चलाने वाला emulator नहीं, बल्कि हाथ से लिखा गया model है; PostgreSQL docs और source के आधार पर तीन expert reviews और अलग visual audit से गुज़रा है, और 210 tests से मुख्य calculations और limit values को fixed रखा गया है
- buffer shortage, long-running transaction, checkpoint storm,
synchronous_commit=off, slow replication replay जैसे scenarios चलाकर operational settings का latency/bloat/durability/replication lag पर असर सीधे देखा जा सकता है - यह three.js/TypeScript/Vite से बना static WebGL2 application है, और भविष्य में वास्तविक WebAssembly PostgreSQL के query execution results और plans को मौजूदा internal model से जोड़ने वाली hybrid architecture की दिशा भी विचाराधीन है
PostgreSQL को शहर के रूप में दिखाने का तरीका
- PGSimCity PostgreSQL की internal structure को चलकर explore करने योग्य independent/non-commercial educational visualization project है
- central plaza
shared_buffersको दिखाता है; 1,024 page frames की ऊंचाई clock-sweepusage_countऔर रंग वास्तविक buffer state को दर्शाते हैं - पूर्व की नारंगी zone WAL है, plaza के नीचे excavation data directory है, और दक्षिण का शहर standby server को दिखाता है जो primary server से भेजे गए WAL को थोड़ी देरी से replay करता है
- इसे उन engineers को नीचे दिए गए phenomena समझाने के लिए design किया गया है जिन्होंने database को सीधे operate नहीं किया है
- checkpoints latency को अचानक क्यों बढ़ा देते हैं
- खत्म न हुआ transaction table bloat को कैसे जारी रखता है
synchronous_commitcommit के समय कौन-सी cost लगाता है
Model की accuracy और limits
- PGSimCity अभी 0.x stage का model है और PostgreSQL emulator नहीं है
- PostgreSQL source code execute नहीं करता
- इंसानों को बदलाव दिख सकें, इसके लिए numbers और time scale को adjust करता है
- SQL parse नहीं करता या वास्तविक query results calculate नहीं करता
- PostgreSQL behavior की accuracy को
postgresql.org/docsऔर source code से मिलाने के लिए तीन expert reviews हुए हैं, और हर finding को counter-check करने के लिए assigned अलग reviewer ने फिर verify किया है - building layout/adjacency/animations से implicit रूप से बनने वाले claims का भी अलग audit हुआ है
- इसमें 210 tests शामिल हैं; कोई test fail होने पर CI build रुक जाता है
- WAL-based checkpoint start point:
max_wal_size / (1 + checkpoint_completion_target) - cache hit ratio:
blks_hit / (blks_hit + blks_read) - clock-sweep
usage_countmaximum value: 5
- WAL-based checkpoint start point:
- मिले हुए errors और fixes की प्रक्रिया commit history में दर्ज है
- touch operations अभी केवल Chrome mobile emulation में verified हैं
- simplified behavior हर component के inspector में स्पष्ट किया गया है
वास्तविक engine से जोड़ने की संभावना
- फिलहाल clock-sweep द्वारा frame-by-frame victim page चुनने जैसी PostgreSQL के बाहर expose न होने वाली internal steps दिखाने के लिए कस्टम-written simulation इस्तेमाल होता है
- PGlite की तरह वास्तविक PostgreSQL को WebAssembly में चलाने पर query results और execution plans को वास्तविक engine पर छोड़ा जा सकता है
- browser में वास्तविक engine जो information दे सकता है, वह catalog,
pg_stat_*views,EXPLAINआदि PostgreSQL द्वारा externally exposed scope तक सीमित है - एक hybrid तरीका भी संभव है जिसमें वास्तविक execution और plans model के भीतर movements को drive करें, लेकिन यह कोई confirmed development commitment नहीं, बल्कि future direction है
शहर के zones और components
- Client sky: application layer से आने वाले connections
- Postmaster: supervision process जो हर connection के लिए backend process बनाता है, लेकिन user data को सीधे access नहीं करता
- Backend row: 16 backend processes, जिनमें lights
idle in transactionसहित current state दिखाती हैं - Shared memory plaza
shared_bufferswal_buffers- ProcArray
- lock table
- CLOG
- buffer mapping table
- The excavation: memory area और disk area की boundary
- Storage
- 8KiB pages से बनी heap file
- वास्तविक tree-shape वाला B-tree
- TOAST
- FSM
- visibility map
- operating system page cache
- disk
- WAL district: walwriter →
pg_walsegments → archiver → walsender - Maintenance yard: checkpointer/background writer/autovacuum launcher और worker
- Standby: walreceiver/WAL replay करने वाला startup process/दो processes के बीच lag
- Query lab: चुने गए backend के statement को parse → rewrite → plan → execute stages में खोलकर दिखाता है
रंग और visual meaning
- रंग सजावट नहीं, बल्कि state और mechanism बताते हैं
- WAL: नारंगी
- dirty page: लाल
- clean page: नीला
- vacuum: बैंगनी
- checkpoint: गुलाबी
- background writer: हरा-नीला
- replication: orange
- storage: हरा
- index: aqua
- lock: लाल
- structures matte हैं, meaning वाले elements neon में दिखाए गए हैं, और सिर्फ emissive materials को bloom threshold से ऊपर जाने के लिए configure किया गया है
खुद चलाकर देखने योग्य scenarios
shared_buffersको 64 pages तक घटानाusage_countटूटता है और clock hand तेजी से घूमता है- हटाने के लिए clean pages कम पड़ने लगते हैं, तो backends अपनी dirty pages को खुद write करना शुरू करते हैं
- Long-running transaction activate करना
- ProcArray का xmin horizon नीचे जाता है और लाल हो जाता है
- autovacuum worker लगातार घूमता रहता है, लेकिन साफ किए जाने वाले tuples हटा नहीं पाता
sessionstable bloat होती है और recover नहीं होती
- Checkpoint storm चलाना
- checkpointer तेज होता है और fsync stage डगमगाती है
- इसके बाद full-page writes WAL zone में बड़ी मात्रा में आने लगते हैं
synchronous_commit=offsetting- backend
commit_waitमें इंतज़ार नहीं करता - immediate response के बदले में मिली durability condition भी साथ में देखी जा सकती है
- backend
- Slow replay activate करना
- standby server के sent/written/flushed/applied LSN एक-दूसरे से दूर होने लगते हैं
- यह अंतर
pg_stat_replicationमें दिखने वाले replication lag से मेल खाता है
Gkey दबाने पर 1.7m ऊंचाई वाले walking viewpoint पर उतरकर buffers और buildings को eye level से देखा जा सकता है
Navigation और controls
- mouse और touch controls
- left drag: map को पकड़कर खिसकाने जैसा movement
- right drag: शहर के चारों ओर rotate
- wheel: cursor position के आधार पर zoom in/out
- one finger: move
- two fingers: zoom in/out, rotate, tilt change
- movement mode
W/A/S/Dया arrow keys: moveSpace/E: ऊपर जानाC/Q: नीचे जानाShift: fast moveAlt: precise move
- main keys
F: flight/orbit camera switchG: ground walkingH: initial overview पर लौटनाT: पूरे शहर की 14-chapter guided tour/याCtrl-K: components/settings/scenarios search?: keyboard map और color legendKयाP: pause/resume,/.: 0.1×~5× speed control1~8: clients/backends/shared buffers/WAL/storage/checkpointer/autovacuum/standby zones में जाना
License और trademarks
- Apache-2.0 license के तहत distributed है
- इसमें SimCity का code/assets/art/logo/characters/audio/game content शामिल नहीं है
- यह Electronic Arts और PostgreSQL project से affiliated/sponsored/approved नहीं, बल्कि independent educational project है
1 टिप्पणियां
Hacker News की राय
यहां जिस दिशा में कोशिश की जा रही है, वह मुझे सच में पसंद है, लेकिन टूर फीचर में noise बहुत ज्यादा है। स्क्रीन पर ढेरों बॉक्स और elements लगातार बदलते रहते हैं, जिससे समझना मुश्किल हो जाता है कि हो क्या रहा है, और अगले topic पर अपने-आप जाने के बजाय इसे user के हाथ से आगे बढ़ने वाला बनाना चाहिए।
एक साथ बरसती जानकारी को बस passive तरीके से देखते रहना उलझन पैदा करता है। तकनीक के अंदरूनी कामकाज को दिखाने वाला approach अपने-आप में उपयोगी है, लेकिन data, graphs और info boxes जोड़ने के बजाय focus को संकरा करने की जरूरत है।
इंसानी दिमाग की सीमाएं developer और user दोनों के लिए समान हैं। LLM से complex चीजें बनाई जा सकती हैं, लेकिन सजावटी complexity यानी greeble एक स्तर से आगे चली जाए तो वह दूसरे इंसान के अनुभव के लिए design की हुई नहीं लगती।
अगर इसे LLM के बिना बनाया गया होता, तो developer खुद पूरा mental model दिमाग में नहीं रख पाता और complexity कम कर देता; user की भी वही सीमाएं हैं। animation और चमकती lights वाले metaphor को समझने की कोशिश करें तो भी meaning दब जाता है।
समझ नहीं आता कि नया process pipe से होकर building तक पहुंचने वाला rectangle क्यों है, और उसके बाद pinball switch लाल क्यों चमकता है। किसी चीज पर click करने पर
"sessions is the victim"वाला छोटा popup एक paragraph के साथ थोड़ी देर दिखकर गायब हो जाता है, जिससे उलझन और बढ़ती है।हो सकता है यह educational न हो, या मेरी जानकारी कम हो; लेकिन इसे बस एक अनोखी creation मानें तो काफी cool है।
पहला screen देखते ही मुझे उम्मीद थी कि query डालने पर input parsing से result return होने तक पूरा flow step by step दिखेगा, और query से अलग parallel में हमेशा चलने वाले autonomous processes भी समझ आ जाएंगे।
कोशिश अपने-आप में बढ़िया है, लेकिन कहां से शुरू करूं और कहां खत्म करूं, समझ नहीं आता।
Tदबाकर देखो।database के अंदर scheduling समझने के लिए पहले ढेरों architecture diagrams की जरूरत पड़ती थी। PGSimCity जिस तरह complex technical implementation process को दिलचस्प रूप में दिखाता है, वह हैरान करने वाला है।
open source होने के कारण यही idea cloud computing या Kubernetes जैसे दूसरे domains में भी reuse किया जा सकता है।
gdb से program debug करते हुए deep focus में मेरे दिमाग में जो तस्वीर बनती है, यह उससे बहुत मिलता-जुलता है। अगर ऐसे graphics के साथ VR debugging का अनुभव मिल सके, तो codebase सीखने का इससे बेहतर तरीका शायद नहीं होगा।
arbitrary code से 3D map generate करने पर कितना अच्छा experience बनाया जा सकता है, यह जानने की उत्सुकता है।
अगर यह 48 घंटे से भी कम समय की vibe coding का परिणाम है, तो संदेह है कि content सच में accurate है या नहीं। क्या इससे गलत निष्कर्षों या आधे-अधूरे ज्ञान की ओर जाने का खतरा नहीं है?
"Rendering The First Frame..."का"Reticulating Splines..."न होना यकीन करना मुश्किल है। UI cool है।मुझे Postgres internals काफी अच्छी तरह पता हैं, फिर भी यह उलझाने वाला लगा। screen बहुत busy है, समझना मुश्किल है, और कम से कम speed कम करने वाला button हो तो अच्छा होगा।
transactions/sमें भी देखा।देखने में सच में शानदार है। कुछ हफ्ते पहले से मैंने Beam VM के लिए Beam वाला Doom vibe coding करना शुरू किया है, जिसमें factory floor की तरह घूमते हुए modules और functions के connections, execution load और चिंगारियां छोड़ती errors देखी जा सकें।
अभी बहुत ज्यादा नहीं बना पाया हूं, लेकिन VR headset खरीदने का बहाना बनाने के लिए इसे आगे develop करते रहना चाहता हूं।
लगता है यह AI की मदद से बनाया गया है। मैंने भी AI का इस्तेमाल करके catastrophic forgetting समझाने वाला मिलता-जुलता vibe coding project किया था।
अब अगर सच में कुछ सीखना हो, तो AI की मदद कभी भी मिल सकती है—यह संतोषजनक है। पहले अच्छा material ढूंढना मुश्किल था, लेकिन अब bottleneck material नहीं, बल्कि व्यक्ति की focus और initiative बन गया है।