在現代分散式網頁應用中,將資料庫推向邊緣(Edge)以減少延遲已成為顯學。Turso 是一個基於 libSQL(SQLite 的分叉版本)的邊緣資料庫,它繼承了 SQLite 的輕量與快速,同時具備雲端同步與邊緣複製的能力。

為什麼說本地與雲端一致性極佳?

因為 Turso 基於 SQLite,我們可以在開發時完全使用本地的 SQLite 檔案(例如 local.db),而在部署上線時,無縫切換到 Turso 的雲端 URL。

本地端配置

在本地開發時,環境變數可以簡單設定:

DATABASE_URL=file:local.db

LibSQL 會在你的專案根目錄下建立一個名為 local.db 的檔案,所有的資料查詢與變更都會寫入該檔案。

生產環境配置

當你要部署到 Production 時,僅需要將環境變數切換為 Turso 的連線資訊:

DATABASE_URL=libsql://your-db-name-your-username.turso.io
DATABASE_AUTH_TOKEN=your-very-secure-auth-token

使用 SQL 語句驅動網誌

有了 SQLite,我們可以非常輕鬆地進行文章的分頁與分類篩選。

依分類查詢文章

SELECT p.*, c.name as category_name
FROM posts p
LEFT JOIN categories c ON p.category_id = c.id
WHERE c.slug = 'database'
ORDER BY p.published_at DESC
LIMIT 10 OFFSET 0;

這比起用 Javascript 在記憶體中對數百個 Markdown 檔案進行 filter 和 sort,在效能和記憶體使用上都要優秀得多!

在下一節,我們將實作同步腳本來自動將本地的寫作成果寫入資料庫中。