"Sqlite"
- 規模演進
可插拔 Storage Backend 架構 — SQLite 預設、PostgreSQL 觸發切換、時間序列 DB 長期演進
- 功能分層與 Backend 選擇
SQLite 層和 PostgreSQL 層各自承載哪些功能 — 分界線是查詢模式而非資料量、觸發升級的是功能需求而非規模成長
- 從 collector 資料做基礎 funnel 分析
SQLite 層能做什麼程度的 funnel、PostgreSQL 層提供什麼進階能力、JSONL 匯出後的臨時分析
- SQLite Backend 效能基準
寫入吞吐 / 查詢延遲 / 資源消耗的量化預期 — 不同硬體環境下 SQLite 能撐多少、邊界在哪、怎麼實測
- Container 部署設計
Docker 部署 collector 的設計 — SQLite 在 overlay filesystem 的 I/O 考量、volume mount、graceful shutdown、資源限制
- 1000 本書、1001 次 SQL — N+1 查詢藏在 async mapper 裡
N+1 查詢由兩個各自合理的函式組合而成:單筆轉換函式順便查關聯(mapper 做 IO)、列表方法用 Future.wait 把它乘以 N。修法是 IO 上移——一次批次 IN 查詢、記憶體組裝、轉換函式變純。mapper 簽名是 async 就是訊號;開發期資料量小、惡化是上線後隨資料成長的乘法。
- SQLite 只吃三種型別 — value object 在持久化邊界的序列化契約
把 value object 直接塞給 sqflite 會炸 Invalid argument——SQLite 只接受 num / String / Uint8List,VO 必須在 repository 邊界拆成基本型別、讀回時重建。用 toString/fromString 當轉換通道是權宜:它依賴兩者對稱這條沒人強制的隱性契約,正解是語意明確的序列化方法。
- 功能「完成」、測試全過、資料從未落地 — 持久化迴圈是驗收的盲區
domain 功能的測試可以全綠、而它的資料從未被序列化、資料庫沒有對應的表——單元測試都在記憶體內驗證行為、沒有一條測試走「存進去、重建、讀出來」的迴圈。驗收定義要含 roundtrip;entity 欄位與 schema 欄位的差集是靜默資料失真的清單。
- 遷移計畫有寫入、有消費、缺讀出 — read-path 缺口與 fixture 假綠
資料模型遷移的通路要三段齊:寫入 backfill、讀取路徑、消費端 API。缺讀出那段時,新 API 拿到的永遠是空集合——而消費端測試的 fixture 自己建物件、不走真實讀取路徑,測試全綠掩蓋 runtime 靜默失效。依賴圖只列「誰先做」不列語意前提時,dashboard 的 ready 是假訊號。
- PostgreSQL to SQLite Simplification
PostgreSQL 降低操作成本轉向 SQLite 的適用條件、資料責任縮小、export/import、runbook 與 no-go condition
- SQLite Backup Restore Drill
SQLite .backup、VACUUM INTO、restore validation、sidecar file handling 與 RPO / RTO note 的操作說明
- SQLite D1 / Turso / libSQL Comparison
Cloudflare D1、Turso、libSQL 與 local SQLite 在 edge、replication、consistency、migration 與 vendor boundary 的比較
- SQLite D1 / Turso Preview Lab
SQLite local DB 匯出到 Cloudflare D1 或 Turso preview environment 的 compatibility、latency 與 rollback 操作說明
- SQLite file lifecycle 與 backup boundary
把 SQLite 單檔案正式狀態拆成 WAL、backup API、restore drill、corruption recovery 與操作責任邊界
- SQLite Litestream / LiteFS Replication
Litestream、LiteFS、SQLite backup replication、read replica、failover 與 restore route
- SQLite Local File Quickstart
SQLite local .db file、schema、seed data、PRAGMA baseline、query sample 與 cleanup 的操作說明
- SQLite Local-first Sync Boundary
SQLite local-first app、multi-device sync、server authority、conflict resolution、delete propagation 與 offline-first trade-off
- SQLite Migration Fixture Lab
SQLite user_version、table rebuild migration、fixture snapshot、rollback note 與 CI evidence 的操作說明
- SQLite Mobile / Desktop Embedded Store
SQLite 在 mobile、desktop、CLI、browser profile 與 embedded device 中承擔 local formal state 的資料責任、backup、privacy 與 sync boundary
- SQLite Observability and Runbook
SQLite production runbook、backup evidence、WAL growth、busy errors、disk usage、restore drill 與 incident route
- SQLite PRAGMA Tuning and Performance
SQLite journal_mode、synchronous、busy_timeout、wal_autocheckpoint、cache_size、mmap_size、auto_vacuum 與 performance evidence 的操作判準
- SQLite Schema Migration and Versioning
SQLite schema migration、user_version、table rebuild、ALTER TABLE 限制、app release compatibility 與 migration evidence
- SQLite SQL Dialect and Index Limits
SQLite type affinity、NULL / date handling、constraint、index、query planner 與 PostgreSQL / MySQL 差異
- SQLite Teaching Structure
SQLite 服務章節群的大綱:從 embedded formal state、WAL、backup、test fixture、local-first、edge SQLite 到遷移路由
- SQLite Test Fixture Best Practice
SQLite 作為 test fixture、repository contract test、production dialect gap、seed data、fixture snapshot 與 CI evidence 的操作判準
- SQLite to D1 / Turso Migration
SQLite 轉向 Cloudflare D1、Turso / libSQL 的 edge driver、compatibility audit、data movement 與 rollback
- SQLite to PostgreSQL Migration
SQLite 升級到 PostgreSQL 的 driver、schema diff、data copy、dual run、cutover、rollback 與 cleanup
- SQLite WAL Busy Reproduction
SQLite long transaction、SQLITE_BUSY、busy_timeout、checkpoint growth 與 writer queue 的操作說明
- SQLite WAL Concurrency and Locking
SQLite WAL mode 如何降低 reader / writer 衝突、保留 single writer boundary,並用 SQLITE_BUSY、WAL growth、checkpoint 訊號判斷 production 上限