Blocklet Store 現已改用 SQLite 作為資料庫

隨著生態系中的 Blocklet 數量持續增加,使用者體驗與效能始終是團隊最重視的事項。根據我們從 Test Store 獲得的一些經驗,我們已將 Blocklet Store 的預設資料庫從 NeDB 改為 SQLite。這項變更改善了記憶體用量與資料安全性。歡迎你親自試用並分享意見。
為什麼選擇 SQLite
降低 RAM 使用量
NeDB 會將所有資料載入記憶體來提供查詢功能。隨著資料量增加,這種方式會消耗大量執行期間的記憶體,可能導致效能問題,甚至造成服務當機。
遷移至 SQLite 後,資料庫會使用索引,不再需要大量占用記憶體,因此大幅降低伺服器運作時的記憶體用量。如下所示,實際運作資料顯示,遷移後的記憶體使用量明顯下降,進而提升效能穩定性。

資料遺失風險
近期一次異常的服務當機,導致 Test Store 在短時間內發生資料遺失。這段期間,使用者無法存取 Test Store Blocklet。這次服務當機的原因是 NeDB:NeDB 採用非同步方式進行資料持久化,因此服務當機時,資料未能及時寫入磁碟,最終造成資料遺失。
遷移至 SQLite 後,資料庫採用交易機制及 WAL(預寫式記錄)模式,確保資料的一致性與安全性。即使系統發生異常或當機,未完成的交易也不會影響資料庫檔案的完整性,大幅降低資料遺失風險。
其他優點
- 更強大的查詢能力:SQLite 支援標準 SQL 查詢,包括複雜的多資料表聯結、子查詢及視窗函式,可滿足更廣泛的使用情境與應用程式功能。
- 更佳的擴充能力:SQLite 能有效處理小型至中型資料集,並在資料量成長時維持高效能。
- 豐富的工具與生態系支援:SQLite 擁有廣泛的工具支援,例如 DB Browser for SQLite,以及活躍的社群生態系,讓除錯與管理更加容易。它在 Node.js 中進行批次寫入及處理高併發情境時,表現尤其出色。
注意事項
如果你正在使用我們的 Blocklet Store,我們已在升級流程中設定自動遷移指令碼,會自動將資料庫從 NeDB 移轉至 SQLite。此外,我們也會檢查是否有任何資料遺失並嘗試復原。若復原失敗,你可以透過 /api/console/blocklets/meilisearch_sync_failed 介面查看復原失敗的 Blocklet。啟動 Blocklet Store 後,你也可以檢查是否有任何資料遺失。如果遇到任何問題或需要協助,歡迎隨時聯絡我們,我們很樂意提供協助。
聲明:遺失的資料已透過技術手段復原。
社群回饋:
- Blocklet Store 列表與詳細資料頁的下載次數不一致 fatych CrypThor
- Test Store-我的 Blocklet 有 1/3 遭到刪除的錯誤 CrypThor
- 複製安裝 URL 的示範圖片長寬比變形 Zhu Liang
- 應以正確的主機呈現 Blocklet Shijun Wang
- 如果變更記錄太長,僅顯示近期項目 Shijun Wang
協助我們持續改善
使用全新的商店體驗時,若有任何需求、建議或問題,請前往社群提供回饋。
本頁涉及
產品
-
Blocklet Store
sunset
Blocklet 曾經在這裡發布、被找到和被安裝。ARC 用另一種方式處理這件事,所以不再需要它。