刺客 ⚡️ - 殺死緩慢的網頁
Assassin 致力於殺死阻塞 UI 的資料庫事務。
資料庫操作可能會很慢,但是現有的資料庫都沒有以明顯的方式解決這個問題:將困難的任務外包給網路工作者。
我想建立一個資料庫:
- 開源
- 有回應
- 去中心化
- 針對網路工作者進行了最佳化
- 專為私人瀏覽設計
這就是我使用 JavaScript 建立自己的資料庫的原因。
特徵 ?
? 輕量級:客戶端程式碼少於 100 行。
⚖️ 去中心化:您的資料庫沒有單點故障。如果伺服器發生故障,您的資料也可以輕鬆檢索。
? 適用於隱私瀏覽:我研究了 LevelDB、PouchDB 和 Gun 等資料庫,它們依賴 IndexedDB 進行客戶端儲存。我希望這些資料庫有效,但我最終創建了這個資料庫,部分原因是 IndexedDB 在隱私瀏覽中被停用,這意味著這些資料庫都不適合我。
方法:
-
Killer.connect(url) - 連接到伺服器。
-
Killer.create(key,value) - 新增一個項目給資料庫。
-
Killer.update(key,new value) - 更新資料庫中某個鍵的值。
-
Killer.delete(key) - 刪除資料庫中的項目。
-
讀取資料庫 - 在 Web Worker 或主執行緒中,您可以透過名為 database 的變數存取資料庫。
建築學:
-
資料模型:Assassin 是一個鍵/值存儲,支援將鍵映射到對應的值。
-
系統架構:DAT 協定在多台電腦之間分發和託管數據,因此沒有一個儲存資料的位置。 Assassin 依靠 DAT 協定進行資料持久化。鍵值對的元資料儲存在分散式 trie 結構中。
-
隔離等級:隔離等級由資料庫的最終使用者決定。 Assassin 被設計為具有較低的隔離等級。
-
儲存模型:Assassin 將資料傳送到伺服器,然後伺服器將元資料儲存在基於 DAT 協定建構的分散式檔案系統 Hyperdrive 中。資料本身在多個對等點之間分發和託管。
-
高度可用:Assassin 高度可用且最終一致。當發生衝突時,Assassin 總是保存對資料庫所做的最後編輯。此 CRDT 稍後可能會變更。
為什麼叫刺客?
- 我的個人網站目前使用 Gun 資料庫。
- Gun有很多我喜歡的功能,而且創辦人也很nice。
- 槍對我沒效了。
- Gun 的儲存適配器 RAD 依賴 IndexedDB,它在隱私瀏覽中被停用。
- Gun 透過 WebRTC 點對點同步數據,在 Web Worker 中不起作用。
- Assassin 有點(說真的,非常小)像 Gun,但適用於網路工作者。
-
槍手=刺客?
用 建構?
-
Hyperdrive - 感謝您在 DAT 協定之上建立抽象層!
- HTML - 用於建立網路示範
- CSS - 用於設定 Web 示範的樣式
- JavaScript - 用於邏輯
-
Node.js - 服務邏輯
請務必分享您的意見:
如果你真的想幫助 Assassin 變得更好,請為 GitHub 儲存庫做出貢獻!
Assassin 是開源的,而且永遠都是。
支持我:
在 GitHub 上為儲存庫加註星標,發推文,並在您的朋友、團隊和聯絡人之間分享!
以上是Assassin ⚡️ - 一個開源、免費的資料庫,用於殺死緩慢的網頁的詳細內容。更多資訊請關注PHP中文網其他相關文章!