iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0
Cloud Native

江湖在走,Cloudflare 要懂,懂得天天吃板橋湳雅夜市系列 第 15

第15天,Cloudflare Workers 與 D1:SQLite 資料庫 / 松記腿庫飯 | 30天板橋湳雅夜市

  • 分享至 

  • xImage
  •  

在上一篇我們介紹了 Workers KV,它適合做快取、設定、session 這類「Key-Value」型的資料儲存。但如果我們需要 更複雜的查詢,像是篩選、排序、關聯,單純的 KV 就不夠用了。
這時候,Cloudflare 推出的 D1 資料庫 就登場啦!

什麼是 D1?

D1 是 Cloudflare 推出的 Serverless SQL Database,基於 SQLite 打造。
它結合 Workers,讓我們可以在邊緣直接存取結構化資料,用熟悉的 SQL 查詢,卻不用管理伺服器。

簡單來說,D1 就是「SQLite as a Service」,幫你把 SQLite 放到全球的 Cloudflare 邊緣節點。

核心特性

  • SQL 查詢能力:支援 SELECTJOINORDER BYGROUP BY 等操作。
  • 與 Workers 整合:可以在 Workers 環境中直接呼叫 D1。
  • Serverless:不需要自己架資料庫,Cloudflare 幫你處理維運。
  • 複製與備份:支援快照、資料匯入/匯出。
  • 全球部署:雖然不像 KV 那樣完全分散,但依舊能在邊緣快速存取。

適用場景

  1. 小型應用的主要資料庫
    例如部落格、留言板、簡單電商後端。

  2. 查詢需求較高的應用
    需要 WHERE 條件、排序或關聯查詢。

  3. Workers + D1 全套應用
    不用額外找雲端 DB,Workers 處理邏輯,D1 負責資料。

  4. 原型開發
    不需要花時間建 MySQL / PostgreSQL,就能快速上線。

如何使用 D1

建立 D1 資料庫

在 Cloudflare 後台 D1 新增資料庫,並新增一個 Users 資料表,裡面有一個欄位 name
https://ithelp.ithome.com.tw/upload/images/20250929/20163416IcAaAJKxKo.png
https://ithelp.ithome.com.tw/upload/images/20250929/201634169f5cDyGqDD.png

在 Workers 使用 D1

將 Workers 與 D1 綁定,並使用以下程式碼
https://ithelp.ithome.com.tw/upload/images/20250929/20163416Zae71rKYwG.png

訪問 /add 就會在資料庫加上一筆 Alice,訪問 /list 查看清單

export default {
  async fetch(request, env) {
    const { pathname } = new URL(request.url);

 
    if (pathname === "/add") {
      await env.DB.prepare("INSERT INTO users (name) VALUES (?)")
        .bind("Alice")
        .run();
      return new Response("User added");
    }

    if (pathname === "/list") {
      const { results } = await env.DB.prepare("SELECT * FROM users").all();
      return new Response(JSON.stringify(results));
    }

    return new Response("D1 Demo");
  },
};

限制與注意事項

雖然 D1 很方便,但也有一些限制需要注意:

  • 欄位修改限制:建立資料表後,不能刪除或修改欄位,只能新增欄位
    若需要改 schema,建議做法是建立新表 → 匯入舊資料 → 捨棄舊表。
    例如要把 name 拆成 first_namelast_name,必須新建一張 users_new 表,再用 INSERT INTO ... SELECT 遷移資料。

  • 不是即時同步:D1 還在逐步擴展全球分佈,和 KV 的「最終一致性」不同,延遲模型需要關注。

  • 容量限制:目前單一資料庫大小上限為 2GB,不適合超大型系統。

  • 功能尚在發展:部分 SQLite Extension 尚未支援,需留意官方更新。

  • 計費:依照查詢次數與儲存大小收費,細節可參考 官方文件

Workers KV vs D1

特性 Workers KV D1 (SQLite)
資料型態 Key-Value SQL (表格、欄位)
查詢能力 只能用 Key 讀取 支援完整 SQL 查詢
延遲 全球邊緣、讀取快 邊緣存取,查詢稍高延遲
最適合用途 設定、快取、Session、Flag 主資料庫、需要複雜查詢的應用
容量上限 幾乎無上限(數十億筆) 2GB

小結

  • 如果你需要 簡單快取 / 設定檔 → 選 Workers KV
  • 如果你需要 結構化查詢 / 小型資料庫 → 選 D1

兩者搭配起來,能讓 Cloudflare Workers 應用更完整:
KV 負責快取與即時設定,D1 負責資料儲存與查詢。

松記腿庫飯

  • 店名:松記腿庫飯
  • 地址:新北市板橋區南雅東路16-3號
  • 營業時間:週三到一 09:30–15:30
  • Google Maps
  • 本系列地圖

https://ithelp.ithome.com.tw/upload/images/20250929/20163416qsvroT9DIh.jpg

這家雖然只開在白天,晚上夜市時段就沒開,不過卻是好吃的腿庫飯,值得來吃

https://ithelp.ithome.com.tw/upload/images/20250929/20163416WHdXobIrmW.jpg


上一篇
第14天,Cloudflare Workers 與 KV:NoSQL 資料庫 / 阿亮沙威瑪 | 30天板橋湳雅夜市
下一篇
第16天,Cloudflare Tunnel / 上海手撕雞小館 | 30天板橋湳雅夜市
系列文
江湖在走,Cloudflare 要懂,懂得天天吃板橋湳雅夜市18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言