# 儲存知識 (Storage Knowledge) 知識合約指南 ## 概述 `storage-knowledge` 是知識合約,用來提供儲存技術選擇的原則與框架。涵蓋關聯式、寬列式、文件式與鍵值式儲存,並提供 Use-When 與 Avoid-When 判斷標準。供 `design-architecture` 在做儲存決策時參考。 ## 核心原則 儲存選擇必須由 PRD 中識別的查詢模式、寫入模式、一致性需求與規模預期驅動。不要因為熟悉、時尚或覺得可能需要就選擇儲存技術。 ## 儲存選擇標準 選擇儲存前,必須先回答: 1. 主要查詢模式是什麼?(按鍵、按範圍、按複雜過濾、全文搜索) 2. 寫入模式是什麼?(寫入為主、更新為主、僅附加) 3. 需要什麼一致性?(Strong、Eventual、Tunable) 4. 預期規模是多少?(每天列數、總列數、生長率) 5. 存取延遲需求是什麼?(毫秒、秒、最終一致) 6. 與其他實體的關係是什麼?(外鍵、嵌套文件、圖形遍歷) ## 儲存類型 - **Relational (PostgreSQL)**:強一致性、複雜 JOIN、交易完整性 - **Wide-Column (Cassandra)**:高寫入吞吐量、查詢優先建模、線性水平擴展 - **Document (MongoDB)**:文件中心資料、Schema 彈性、豐富查詢能力 - **Key-Value (Redis)**:快取、速率限制、Idempotency Keys、工作階段 ## 知識合約職責 - 提供各儲存技術的比較與選擇框架 - 不替 PRD 做最終儲存選擇 ## 不應做的事 - 不替系統選擇特定儲存技術 - 不基於時尚或流行選擇儲存 - 不假設某種儲存適合所有場景