~/VibeHandbook
免費 PDF

Cloudflare

developers.cloudflare.com

D1

它是什麼

想像一張有整齊行列的電子表格,你的應用可以向它提出精確的問題,比如"列出 6 月所有已付款的訂單"。D1 就是 Cloudflare 基於 SQLite 構建的 serverless 資料庫——正是那個井然有序、可查詢的表格儲存。("serverless"意味著沒有需要你來搭建或持續執行的伺服器,這一切都由服務商打理。)SQL(結構化查詢語言,Structured Query Language)是向資料庫提問的標準語言。你建立一個數據庫,把它繫結到一個 Worker 或 Pages 專案,然後通過一套小巧的 JavaScript (應用程式程式設計介面,你所呼叫的一組命令)用純 SQL 查詢它。沒有需要調整規格的伺服器,也沒有需要管理的連線池——Cloudflare 負責儲存、複製和擴縮,你只為讀寫的行數付費。

優勢

  • 真正的 SQL(SQLite 方言)——熟悉的 SELECTJOIN、事務和索引。
  • Serverless:無需預置、沒有連線數限制、可縮容到零。
  • 通過單一繫結與 Workers 和 Pages 緊密整合。
  • 讀複製把副本放在靠近使用者處,實現低延遲讀取。
  • 對於典型應用負載成本低廉,並提供可用的免費額度。

取捨

  • SQLite 語義:超大數據集和極高的寫併發不是它的強項。
  • 單庫大小限制意味著非常大的資料可能需要分片(拆分到多個數據庫)或改用 R2(Cloudflare 的檔案儲存)。
  • 比 Postgres/MySQL 更新,因此工具鏈和生態仍在成熟中。
  • 最適合從邊緣訪問;從 Cloudflare 之外使用它則不那麼自然。

何時使用

在 Cloudflare 託管的專案中為應用資料選擇 D1:使用者記錄、內容、設定、會話後設資料——任何契合關係模型、並與你的 Workers 或 Pages 應用一同存在的資料。

Vibe coding 契合度

當一個 agent 已經在 Workers 上構建時,D1 是一個強力的預設選項,因為資料庫、schema 和查詢都在同一個專案裡。可以讓 agent 把遷移儲存在帶版本的 .sql 檔案中並用 Wrangler 應用它們,這樣 schema 就是可復現的。繫結讓在處理器內部查詢變成一行程式碼。

# wrangler.toml
[[d1_databases]]
binding = "DB"
database_name = "app-db"
database_id = "your-d1-id"
# Create a DB and run a migration
npx wrangler d1 create app-db
npx wrangler d1 execute app-db --file=./schema.sql