Blog/

為什麼選擇嵌入式資料庫 — 災難現場不需要資料庫管理員

在災難醫療的場景中,資料庫不能有任何外部依賴、不能需要專人維護、不能在斷電後損壞。嵌入式資料庫不是妥協,而是唯一符合這些條件的選擇。

一個被忽略的問題

在醫院裡,資料庫有專人維護。有 IT 部門負責安裝、設定、監控、備份、升級。出了問題,打電話給 DBA。

在災難現場,沒有 IT 部門。沒有 DBA。操作者是護理師和醫師。「設定資料庫」不在任何人的能力範圍內。

所以,xGrid 的資料庫選型不是從「功能最強」出發,而是從一個不同的問題開始:

這個資料庫能不能在零配置、零維護、零專業知識的情況下穩定運作?

零的意義

傳統的醫院級資料庫需要什麼?

  1. 安裝資料庫伺服器
  2. 建立使用者帳號和密碼
  3. 設定連線認證
  4. 調校效能參數
  5. 設定自動啟動
  6. 監控是否存活
  7. 定期備份和升級

七個步驟,每一個都可能出錯。每多一個步驟,就多一個讓系統無法啟動的原因。

xGrid 用的嵌入式資料庫需要什麼?

一個檔案。 就這樣。

不需要安裝任何額外軟體。不需要設定任何帳號。不需要開啟任何額外的服務。系統啟動時自動連接這個檔案,就開始工作了。

護理師不需要知道什麼是「資料庫」。她只需要開機。

讀寫並行:15 台手機同時使用

災難現場的醫療站可能有 10–15 台手機同時連線。護理師查詢病患資料、藥師確認庫存、醫師查看血庫狀態——這些讀取操作必須即時回應。

同時,另一個護理師正在登錄新的檢傷結果——這是寫入操作。

xGrid 的資料庫採用寫前日誌機制,讓讀取和寫入可以同時進行。15 台手機同時查詢,不會被一筆正在進行的寫入卡住。

而寫入操作則是排隊執行的:同一時間只有一筆寫入在進行。這聽起來像是限制,但在醫療場景中反而是優勢——排隊確保每一筆寫入都是完整的、有序的、不會互相衝突。一筆檢傷記錄不會因為另一筆同時寫入而被破壞。

41 次資料庫升級,護理師不需要知道

xGrid 的資料庫結構經過 41 次升級——從最初的基本庫存表,到後來的血庫、手術追蹤、藥局調劑、全文搜尋。

每次升級都是自動的。系統啟動時,會自動檢查是否有需要執行的升級。如果有,靜默完成。如果某次升級失敗,自動還原,不影響已完成的部分。

護理師看到的只是:重啟服務後,系統多了新功能。她不需要跑任何指令、不需要看任何提示、不需要做任何決定。

斷電安全

在用行動電源供電的環境中,斷電不是假設,而是日常。

如果資料庫在寫入過程中斷電,資料會損壞嗎?

xGrid 的資料庫設定在「安全」和「速度」之間取了一個平衡點:不是每一次寫入都等磁碟確認(那太慢),而是在每個檢查點強制寫入磁碟。這樣即使中途斷電,最多損失最後一個檢查點之後的操作——不會損壞整個資料庫。

備份就是複製一個檔案

傳統資料庫的備份需要專用工具、特殊格式、和可能長達數分鐘的匯出過程。

嵌入式資料庫的備份就是複製一個檔案。

xGrid 的備份機制會:

  1. 複製資料庫檔案
  2. 比對原始檔和備份檔的大小
  3. 驗證備份的資料完整性

緊急撤離時,甚至可以一鍵把整個資料庫打包帶走。因為資料庫就是一個檔案,「帶走所有資料」就跟「複製一個檔案」一樣簡單。

容量實測

一台 xGrid 邊緣裝置能處理多少?

  • 500 位病患/天:臨床系統的處理量
  • 10–15 台同時連線:護理站手機上限
  • 超過 15 台:需要部署第二台裝置分流

對於災難醫療的規模——每個站點通常 100–300 位病患/天——這個容量綽綽有餘。

限制即是特性

別人眼中的限制

  • 不需要伺服器
    不能做複雜的連線池管理
  • 一次一筆寫入
    高並發場景吞吐量有限
  • 單一檔案
    不能跨多台伺服器擴展
  • 沒有帳號管理
    不能做細粒度權限控制

災難醫療眼中的特性

  • 不需要伺服器
    少一個會當機的東西
  • 一次一筆寫入
    天然防止資料互相覆蓋
  • 單一檔案
    備份 = 複製,撤離 = 打包
  • 沒有帳號管理
    少一件要設定的事

在災難現場,最可靠的系統不是功能最強的,而是移動零件最少的。


延伸閱讀:「離線優先」不是「離線堪用」 · 閃人測試 — 如果開發團隊明天消失,你的系統還能活嗎?