iT邦幫忙

2026 iThome 鐵人賽

DAY 30
0
Build on Google AI

將考國際證照的應用程式變成開源系列 第 42

ADR-001-multi-database-architecture.md

  • 分享至 

  • xImage
  •  

ADR-001: 多重資料庫架構 (Multi-Database Architecture)

狀態: 已接受 (Accepted)

日期: 2026-08-02

背景 (Context)

認證考試應用程式需要處理各種資料類型,從即時使用者狀態和進度,到複雜的關聯資料 (如訂閱和使用者角色)、大型非結構化題庫,以及離線同步功能。單一資料庫解決方案無法在維持供應商獨立性和離線支援的同時有效滿足所有這些限制。

決策 (Decision)

我們決定實作多重資料庫架構,使用 4 種不同的資料庫,並透過儲存庫工廠模式 (Repository Factory pattern) 進行抽象化:

  1. Firebase RTDB: 用於即時狀態、簡單使用者資料和快速同步。
  2. Supabase PostgreSQL: 用於關聯資料、結構化使用者角色和複雜查詢。
  3. MongoDB Atlas: 用於非結構化考試題庫和類文件資料。
  4. PowerSync (SQLite): 用於本機離線優先 (offline-first) 功能。

考慮過的替代方案 (Alternatives Considered)

  • 單一資料庫 (僅 Firebase):
    • 優點:實作簡單,生態系統良好。
    • 缺點:對複雜關聯的查詢能力差,供應商綁定 (vendor lock-in)。
  • 雙資料庫 (Firebase + Supabase):
    • 優點:平衡了即時性和關聯性需求。
    • 缺點:處理非結構化文件資料不如 MongoDB 高效。
  • 自訂後端 (Custom backend):
    • 優點:極致的彈性。
    • 缺點:維護成本高,需要專屬後端團隊。

後果 (Consequences)

  • 正面影響: 高彈性、供應商獨立性、針對不同資料類型最佳化儲存。
  • 負面影響: 資料同步的複雜度增加、多個 SDK 依賴、除錯更加困難。

相關文件 (Related Documents)


上一篇
GOOGLE_PLAY_STORE_LISTINGS_MANAGEMENT_GUIDE.md
下一篇
ADR-002-offline-first-sync-strategy.md
系列文
將考國際證照的應用程式變成開源51
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言