MangoDB 已現代化,現在更改為 FerretDB

最近s天公佈了項目啟動的消息 FerretDB(以前稱為 MangoDB),它允許您將 MongoDB 的面向文檔的 DBMS 替換為 PostgreSQL,而無需對應用程序代碼進行任何更改。

FerretDB 被實現為代理服務器,它將對 MongoDB 的調用轉換為對 PostgreSQL 的 SQL 查詢,允許您使用 PostgreSQL 作為實際存儲。

FerretDB(前身為 MangoDB)的成立是為了成為 MongoDB 的事實上的開源替代品。 FerretDB 是一個開源代理,它使用 PostgreSQL 作為數據庫引擎,將 MongoDB 有線協議查詢轉換為 SQL。

由於 MongoDB 過渡到基於 AGPLv3 許可證但不是開源的非自由 SSPL 許可證,可能需要遷移,因為它包含在 SSPL 許可證下不僅提供應用程序的歧視性要求代碼本身,以及提供雲服務所涉及的所有組件的源代碼。

FerretDB 的目標受眾是不使用 MongoDB 高級功能的用戶 在他們的應用程序中,但希望使用完全開放的軟件堆棧。

在目前的發展階段,FerretDB 它仍然只支持部分 MongoDB 功能 最常用於典型應用的。 未來,他們計劃實現對 MongoDB 的完整驅動程序支持,並提供使用 FerretDB 作為 MongoDB 透明替代品的能力。

應該記住的是 MongoDB 在快速且可擴展的系統中佔有一席之地 以鍵/值格式對數據進行操作,以及關係型 DBMS,在生成查詢時功能強大且方便。

大多數 MongoDB 用戶不需要 MongoDB 提供的許多高級功能。 但是,他們需要一個易於使用的開源數據庫解決方案。 認識到這一點,FerretDB 來填補這一空白。

MongoDB的 支持以類似 JSON 的格式存儲文檔,具有相當靈活的生成查詢語言,可以為各種存儲屬性創建索引,提供高效的二進制大對象存儲, 支持記錄操作以更改和添加數據 對於數據庫,它可以根據 Map/Reduce 範式工作,它支持複製和容錯配置的構建。

在 FerretDB 0.1.0 的發布中,注意到 完全重新設計了 PostgreSQL 數據的檢索方式. 以前,對於每個傳入的 MongoDB 請求,都會生成一個 SQL 到 PostgreSQL 查詢,使用函數來處理 JSON 格式並在 PostgreSQL 端過濾結果。

由於差異 在 PostgreSQL 和 MongoDB json 函數的語義中, 有出入 在比較和訂購不同類型時的行為。 為了解決這個問題,現在從 PostgreSQL 中提取了一個冗餘數據樣本,並在 FerretDB 端完成了結果的過濾,這使得在大多數情況下重複 MongoDB 的行為成為可能。

提高兼容性的代價是性能損失, 在未來的版本中,預計將通過在 FerretDB 端對存在行為分歧的查詢進行選擇性過濾來抵消。

例如,查詢“db.collection.find({_id: 'some-id-value'})”可以在 PostgreSQL 中完全處理。 該項目現階段開發的主要目標是實現與MongoDB的兼容,性能仍然退居幕後。

在新版本的功能更改中,支持所有位運算符、“$e”比較運算符以及“$elemMatch”和“$bitsAllClear”運算符。

終於 對於那些有興趣了解更多信息的人,他們應該知道代碼是用 Go 編寫的,並且是在 Apache 2.0 許可下分發的,並且 您可以在以下鏈接中查看其代碼。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責資料:AB Internet Networks 2008 SL
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。