跳到主要內容

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

Pengfei Zhu
Blocklet Store產品發布

隨著生態系中的 Blocklet 數量持續增加,使用者體驗與效能始終是團隊最重視的事項。根據我們從 Test Store 獲得的一些經驗,我們已將 Blocklet Store 的預設資料庫從 NeDB 改為 SQLite。這項變更改善了記憶體用量與資料安全性。歡迎你親自試用並分享意見。

Blocklet Store

為什麼選擇 SQLite

降低 RAM 使用量

NeDB 會將所有資料載入記憶體來提供查詢功能。隨著資料量增加,這種方式會消耗大量執行期間的記憶體,可能導致效能問題,甚至造成服務當機。

遷移至 SQLite 後,資料庫會使用索引,不再需要大量占用記憶體,因此大幅降低伺服器運作時的記憶體用量。如下所示,實際運作資料顯示,遷移後的記憶體使用量明顯下降,進而提升效能穩定性。

image.png

資料遺失風險

近期一次異常的服務當機,導致 Test Store 在短時間內發生資料遺失。這段期間,使用者無法存取 Test Store Blocklet。這次服務當機的原因是 NeDB:NeDB 採用非同步方式進行資料持久化,因此服務當機時,資料未能及時寫入磁碟,最終造成資料遺失。

遷移至 SQLite 後,資料庫採用交易機制及 WAL(預寫式記錄)模式,確保資料的一致性與安全性。即使系統發生異常或當機,未完成的交易也不會影響資料庫檔案的完整性,大幅降低資料遺失風險。

其他優點

  1. 更強大的查詢能力:SQLite 支援標準 SQL 查詢,包括複雜的多資料表聯結、子查詢及視窗函式,可滿足更廣泛的使用情境與應用程式功能。
  2. 更佳的擴充能力:SQLite 能有效處理小型至中型資料集,並在資料量成長時維持高效能。
  3. 豐富的工具與生態系支援:SQLite 擁有廣泛的工具支援,例如 DB Browser for SQLite,以及活躍的社群生態系,讓除錯與管理更加容易。它在 Node.js 中進行批次寫入及處理高併發情境時,表現尤其出色。

注意事項

如果你正在使用我們的 Blocklet Store,我們已在升級流程中設定自動遷移指令碼,會自動將資料庫從 NeDB 移轉至 SQLite。此外,我們也會檢查是否有任何資料遺失並嘗試復原。若復原失敗,你可以透過 /api/console/blocklets/meilisearch_sync_failed 介面查看復原失敗的 Blocklet。啟動 Blocklet Store 後,你也可以檢查是否有任何資料遺失。如果遇到任何問題或需要協助,歡迎隨時聯絡我們,我們很樂意提供協助。

聲明:遺失的資料已透過技術手段復原。

社群回饋:

  1. Blocklet Store 列表與詳細資料頁的下載次數不一致 fatych CrypThor
  2. Test Store-我的 Blocklet 有 1/3 遭到刪除的錯誤 CrypThor
  3. 複製安裝 URL 的示範圖片長寬比變形 Zhu Liang
  4. 應以正確的主機呈現 Blocklet Shijun Wang
  5. 如果變更記錄太長,僅顯示近期項目 Shijun Wang

協助我們持續改善

使用全新的商店體驗時,若有任何需求、建議或問題,請前往社群提供回饋。

ArcBlock Community

本頁涉及

產品

  • Blocklet Store sunset

    Blocklet 曾經在這裡發布、被找到和被安裝。ARC 用另一種方式處理這件事,所以不再需要它。