# 擴展與資料庫評估 ## 搜尋基準 FTS5 索引由 `posts_fts` 與 SQLite trigger 維護。可在部署前後以相同關鍵字比較查詢計畫與平均時間: ```bash ./scripts/benchmark-search.sh "關鍵字" 100 ``` 輸出中的 `queryPlan` 應包含 FTS 虛擬表掃描,而不是 `posts` 的全表 `LIKE` 掃描。請記錄貼文數量、硬體、SQLite 版本與平均查詢時間,作為升級決策依據。 ## 何時由 SQLite 遷移到 PostgreSQL SQLite 仍適合單一主機、單一磁碟與低至中等寫入量。當出現以下任一情況時,先在 staging 驗證 PostgreSQL: - 需要跨多台主機同時執行 Web/Worker,或需要跨區高可用。 - 寫入鎖定持續造成同步佇列延遲,或 WAL 檔案/備份窗口已難以控制。 - FTS、稽核或貼文資料量使查詢基準無法滿足服務目標。 遷移步驟:停止寫入、使用 v0.7 以後的 JSON 匯出建立內容快照、以 migration 建立 PostgreSQL schema、匯入 users/sources/posts/互動與同步工作、在 staging 驗證計數與抽樣內容、切換唯讀短暫維護窗口、最後更新 `DATABASE_URL` 及備份/監控設定。SQLite 與 PostgreSQL 的雙寫不列為預設策略;除非有完整一致性驗證,避免長期雙寫。