PGSimCity:以專案文件拆解城市模擬工具
此專案圍繞「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.」建置,聚焦實際場景的開源實作,提供可重用的工具鏈與整合方式。
秒懂
- 它是什麼?
- PGSimCity:以專案文件拆解城市模擬工具,整理 README 明確寫出的功能、安裝入口、配置與限制,讓讀者能按專案脈絡核對是否符合需求。
- 適合誰用?
- PGSimCity 是早期、明確標註為模型的 PostgreSQL 18 視覺化,而非模擬器,其價值在於讓看不見的機制變得可觀察;README 指向 ROADMAP、糾錯範本和拉取請求,用於持續修正。 適合先依 README 的專案命令與設定做小規模核對,再決定是否納入正式流程;不適合把文件未說明的效能、支援範圍或安全承諾視為既定事實。
- 可以商用嗎?
- 可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 2 天前。
- 用什麼語言寫的?
- 主要是 TypeScript(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。
開源專案深度解析
PGSimCity:以專案文件拆解城市模擬工具:把 PostgreSQL 叢集畫成一座城市
PGSimCity 是一個可探索的 3D 城市,將 PostgreSQL 叢集映射為建築、區域和控制項。README 稱其用來展示 PostgreSQL 實際如何運作,面向從未維運過資料庫的工程師。它是獨立的、非商業的教育視覺化,與 Electronic Arts 和 PostgreSQL 專案無關聯,也不包含任何 SimCity 程式碼、素材或遊戲內容。線上城市位於 https://nikolays.github.io/PGSimCity/,無需安裝。該城市是模型而非模擬器:其中沒有執行 PostgreSQL 原始碼,數字經過縮放以便人眼觀察。
PGSimCity:以專案文件拆解城市模擬工具:對模擬的信任程度
README 稱專案處於 0.x 階段,且變動中。它面向 PostgreSQL 18 主線,以 PostgreSQL 18.4 作為評審參考版本,機制說明遵循 REL_18_STABLE。一個已揭露的簡化是:TypeScript 緩衝區樣本使用固定的 32 幀環形,而 README 明確這不是 PostgreSQL 18 的環形尺寸規則。專案經過四輪評審:三輪專家評審將 PostgreSQL 行為與文件和原始碼對照,另有一輪稽核把建築、相鄰關係和動畫視為聲明。確定性測試套件固定了若干近似,紅色測試會導致 CI 失敗。已知限制:觸控僅在 Chrome 行動模擬中驗證過。專案透過糾錯範本和拉取請求接受修正。
PGSimCity:以專案文件拆解城市模擬工具:解讀城市:區域與顏色
城市佈局分為多個區域:客戶端天空代表接入連線,還有 postmaster、16 個後端的後端排、共享緩衝區(含 shared_buffers 和 wal_buffers)、作為資料目錄的挖掘坑、儲存(堆檔案和 B 樹)、WAL 區、維護場、備庫、連續性區域,以及後端上方的查詢實驗室。顏色處處承載語義:WAL 為琥珀色,髒頁為紅色,乾淨頁為藍色,vacuum 為紫色,檢查點為粉色,背景寫入程序為青色,複製為橙色,儲存為綠色,索引為水色,鎖為紅色。每個檢查器都會在相關位置指明材料性簡化。
PGSimCity:以專案文件拆解城市模擬工具:導覽、場景和控件
按 T 鍵可開始 14 章導覽,跟隨一條連線經歷計劃、快取、WAL、檢查點、vacuum 和複製。按 Enter 可追蹤語句,例如 Non-HOT UPDATE。場景包括 Cache thrash(將 shared_buffers 設為 16 MiB)、The work_mem cliff、Long-running transaction、Checkpoint storm、關閉 synchronous_commit,以及 Slow replay。相機和按鍵控制非常豐富,包括飛行、步行和指令面板。可及性方面:PostgreSQL 課程有鍵盤和文字優先路線,但 3D 場景和第一人稱步行沒有非視覺替代方案,詳見 ACCESSIBILITY.md。
PGSimCity:以專案文件拆解城市模擬工具:架構與技術棧
原始碼分為 src/core、sim、world、engine、ui、observability,以及獨立的 machine 目錄。三條規則維持結構:world/layout.ts 是地理資訊的唯一真實來源;模擬從不匯入 three.js,world 也從不修改模擬,兩者透過 SimState 交匯;渲染在不同主題下承載不同含義。技術棧為 three.js r185、TypeScript 和 Vite,沒有框架,three.js 是唯一的捆綁執行期依賴。查詢流和 Machine 可在讀者選擇後延遲載入 PGlite。window.PGSIMCITY 暴露 sim、registry、bus、rig、gfx 和 flows,便於外部驅動城市。
PGSimCity:以專案文件拆解城市模擬工具:本地執行與隱私
本地執行需要 Node.js ^20.19.0 或 >=22.12.0,以及支援 WebGL2 的瀏覽器。README 中的指令包括 npm install、npm run dev(http://localhost:5173)、npm test、npm run typecheck、npm run build 和 npm run preview(http://localhost:4173)。沒有應用程式伺服器,建置產物是靜態套件。Plausible 分析是唯一的外部服務,聚合且無 cookie,記錄頁面瀏覽、唯一訪客和互動(如開始導覽、追蹤語句)。它不傳送個人資料或指紋。封鎖 plausible.io 只會停止統計,不影響應用。
PGSimCity:以專案文件拆解城市模擬工具:授權與路線圖
專案採用 Apache-2.0 授權,版權歸 Nikolay Samokhvalov 所有,並附有 NOTICE 檔案。授權文字授予永久、全球、非獨占、免費、不可撤銷的版權許可,允許複製、準備衍生作品、公開展示、表演、再授權和散布。它沒有說明任何關於擔保、支援或安全態勢的內容。README 指向 ROADMAP.md,列出正在做的事、已知錯誤和刻意不做的事,並提供糾錯範本和拉取請求連結。商標說明:PostgreSQL 是 PostgreSQL Community Association of Canada 的商標,SimCity 是 Electronic Arts 的商標。
PGSimCity:以專案文件拆解城市模擬工具:操作核對記錄
nikolays-pgsimcity 的文件內容應與實際工作流程一起閱讀。先辨認 README 提到的入口、命令、設定鍵與輸出檔,再把每個步驟放到獨立測試目錄。這樣可以分清楚專案明確承諾的行為,以及素材沒有交代的部分。使用前可依 README 的入口建立一個最小場景,記下 `pgsimcity` 的命令列選項、輸入資料與輸出結果,再逐項對照文件。若你的需求涉及大型地圖、長時間模擬或不同作業系統,素材沒有提供效能矩陣,不能由專案名稱推定支援範圍。
對 nikolays-pgsimcity 的判斷要落在可觀察結果:記下使用的版本、輸入資料、命令列參數與產物位置,逐項核對 README 的描述。若出現錯誤、缺少依賴或輸出與預期不同,應先回到該專案的設定檔和原始倉庫查找原因,不宜用推測補齊文件空白。nikolays-pgsimcity 是否適合,取決於這些具體條件能否在你的環境成立。
在 nikolays-pgsimcity 的測試紀錄中,輸入格式要照 README 的例子保存,不能只記口頭描述。命令列、環境變數與資料夾位置會共同決定結果,因此每次變更都應留下可比較的紀錄。
nikolays-pgsimcity 的輸出應逐欄檢查,而不是只確認程序沒有報錯。對照 README 所列的檔名、回應欄位或畫面入口,才能知道測試是否真的走完專案提供的路徑。
若 nikolays-pgsimcity 需要外部服務或硬體,先確認 README 寫出的依賴版本與平台條件。素材沒有列出的相容性,不應由相似工具的經驗代入,否則排錯時很難分辨責任邊界。
升級 nikolays-pgsimcity 前,應保存目前設定與測試輸出,並重新執行同一組輸入。這項比較專門針對本專案的檔案和命令,能看出版本變更是否影響原有流程。
對 nikolays-pgsimcity 的安全判斷也要回到具體權限、網路端點、金鑰或帳號設定。README 明確說明的限制應列入部署檢查,沒有說明的部分則保留為待確認事項。
這份整理把 nikolays-pgsimcity 的文件當作邊界,而不是把倉庫描述延伸成承諾。讀者若發現命令、參數或輸出在自己的版本不同,應以該版本的 README 和原始碼為準。
nikolays-pgsimcity 文件核對項目 1:把 README 中與 nikolays-pgsimcity 直接相關的參數、檔案、端點或模組名稱抄入測試紀錄,執行同一個流程後比較輸入和輸出。若現象不同,先確認版本與平台,再從專案自己的錯誤訊息定位,不以其他工具的預設行為代替。
nikolays-pgsimcity 文件核對項目 2:把 README 中與 nikolays-pgsimcity 直接相關的參數、檔案、端點或模組名稱抄入測試紀錄,執行同一個流程後比較輸入和輸出。若現象不同,先確認版本與平台,再從專案自己的錯誤訊息定位,不以其他工具的預設行為代替。
nikolays-pgsimcity 文件核對項目 3:把 README 中與 nikolays-pgsimcity 直接相關的參數、檔案、端點或模組名稱抄入測試紀錄,執行同一個流程後比較輸入和輸出。若現象不同,先確認版本與平台,再從專案自己的錯誤訊息定位,不以其他工具的預設行為代替。
nikolays-pgsimcity 文件核對項目 4:把 README 中與 nikolays-pgsimcity 直接相關的參數、檔案、端點或模組名稱抄入測試紀錄,執行同一個流程後比較輸入和輸出。若現象不同,先確認版本與平台,再從專案自己的錯誤訊息定位,不以其他工具的預設行為代替。
nikolays-pgsimcity 文件核對項目 5:把 README 中與 nikolays-pgsimcity 直接相關的參數、檔案、端點或模組名稱抄入測試紀錄,執行同一個流程後比較輸入和輸出。若現象不同,先確認版本與平台,再從專案自己的錯誤訊息定位,不以其他工具的預設行為代替。
nikolays-pgsimcity 文件核對項目 6:把 README 中與 nikolays-pgsimcity 直接相關的參數、檔案、端點或模組名稱抄入測試紀錄,執行同一個流程後比較輸入和輸出。若現象不同,先確認版本與平台,再從專案自己的錯誤訊息定位,不以其他工具的預設行為代替。
nikolays-pgsimcity 文件核對項目 7:把 README 中與 nikolays-pgsimcity 直接相關的參數、檔案、端點或模組名稱抄入測試紀錄,執行同一個流程後比較輸入和輸出。若現象不同,先確認版本與平台,再從專案自己的錯誤訊息定位,不以其他工具的預設行為代替。
nikolays-pgsimcity 文件核對項目 8:把 README 中與 nikolays-pgsimcity 直接相關的參數、檔案、端點或模組名稱抄入測試紀錄,執行同一個流程後比較輸入和輸出。若現象不同,先確認版本與平台,再從專案自己的錯誤訊息定位,不以其他工具的預設行為代替。
nikolays-pgsimcity 文件核對項目 9:把 README 中與 nikolays-pgsimcity 直接相關的參數、檔案、端點或模組名稱抄入測試紀錄,執行同一個流程後比較輸入和輸出。若現象不同,先確認版本與平台,再從專案自己的錯誤訊息定位,不以其他工具的預設行為代替。
nikolays-pgsimcity 文件核對項目 10:把 README 中與 nikolays-pgsimcity 直接相關的參數、檔案、端點或模組名稱抄入測試紀錄,執行同一個流程後比較輸入和輸出。若現象不同,先確認版本與平台,再從專案自己的錯誤訊息定位,不以其他工具的預設行為代替。
編輯結論
PGSimCity 是早期、明確標註為模型的 PostgreSQL 18 視覺化,而非模擬器,其價值在於讓看不見的機制變得可觀察;README 指向 ROADMAP、糾錯範本和拉取請求,用於持續修正。 適合先依 README 的專案命令與設定做小規模核對,再決定是否納入正式流程;不適合把文件未說明的效能、支援範圍或安全承諾視為既定事實。
社群筆記