網誌

為何每個 Mythex 應用程式都有自己的資料庫

當你在 Mythex 上建構的應用程式需要儲存資料——註冊、預約、訂單——Mythex 會替該專案提供它自己的 Postgres 資料庫。不是共用資料庫中的一張表,也不是與別人並排的一個結構描述(schema):而是一個獨立的資料庫,按需建立,無人使用時便會休眠。以下說明我們為何這樣建構,以及它的代價。

你會得到什麼

當你要求資料(「儲存候補名單電郵」、「儲存預約」)或使用 /database 指令時,Mythex 會:

  • 為專案建立專用的 Postgres 資料庫(目前為 Postgres 17),
  • 把連線資料以環境變數的形式注入你的工作區和已發佈的應用程式,因此它們永遠不會出現在你的程式碼中,並且
  • 讓代理替你建立資料表,以及讀寫資料。

即時預覽和已發佈的應用程式使用的是同一個資料庫。它閒置五分鐘後會休眠,並在下一次查詢時喚醒。新的資料庫起初規模很小,負載增加時可以擴展,並設有上限,因此失控的查詢不會無限制地增長。詳情見資料庫文件。

為何不用一個大型共用資料庫?

共用資料庫中加入一欄,標明每列屬於哪個應用程式,會比較便宜,操作也較簡單。我們不採用這個做法,原因有四。

1. 無需信任的隔離

AI 撰寫的程式碼會出錯。在共用資料庫中,某個應用程式的一條查詢如果漏掉了 WHERE app_id = …,就可能讀取或覆寫另一位客戶的資料。而採用每個應用程式一個資料庫,便沒有其他客戶的資料可以觸及——錯誤會留在它自己的應用程式之內。

2. 它是真正的 Postgres,而不是專有的一層

你的應用程式以一般的 Postgres 連線字串與資料庫溝通。任何與 Postgres 配合的函式庫、ORM 或工具,在這裡都能運作。如果你匯出專案到別處運行,它期望的是 Postgres 資料庫——每個託管服務商都提供的東西——而不是 Mythex 專有的 API。

3. 每個應用程式可以依其所需而塑造

一個應用程式需要一張 bookings 表,並對時段設定唯一約束;另一個則需要對產品進行全文搜尋。有了自己的資料庫,每個應用程式的結構描述與遷移都由它自己負責,無需遷就一個最低公分母的設計。

4. 成本跟隨用量

由於每個資料庫各自休眠,沒有人使用的應用程式幾乎零成本,而繁忙應用程式的成本會以其自己的一行顯示。已發佈的資料庫用量,是根據資料庫實際量得的數據計費——這種計費方式如何運作。

取捨

這個設計並非沒有代價:

  • 冷啟動。 休眠的資料庫在一段安靜時間之後的第一次查詢時,需要一點時間才能喚醒。對大多數應用程式來說幾乎察覺不到;但對於必須隨時即時回應的應用程式,這就需要考慮。
  • 保持喚醒的成本。 只要有東西在查詢,資料庫就會保持喚醒。一個每隔幾秒就輪詢資料庫的應用程式,會全天候令它保持喚醒,費用比按需查詢的應用程式更高。如果你的用量比預期高,通常就是這個原因——請要求 AI 停止輪詢,改為在需要時才載入資料。
  • 我們這一方要承擔更多運作。 建立、追蹤和清理數以千計的資料庫,比管理一個要多得多。這是我們的責任,不是你的。

如果你對資料庫還不熟悉

資料庫是應用程式保存需要記住的東西的地方。如果這個概念對你來說是新的,可以先看什麼是資料庫和什麼是 Postgres。當你準備好建構一個需要儲存資料的東西時,如何用 AI 建構應用程式會逐步說明如何加入它。

Mythex · Pricing · 用 AI 建造任何嘢 · 網站及應用程式範本 · Mythex 比較 · AI 應用程式開發詞彙表 · 免費 AI 應用程式開發工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(台灣)