FerretDB 的第一個穩定版本,基於 PostgreSQL DBMS 的 MongoDB 實現

FerretDB 1.0 項目的發布已經發布,它允許您將面向文檔的數據庫管理系統 MongoDB 替換為 PostgreSQL,而無需更改應用程序代碼。 FerretDB 作為代理服務器實現,它將對 MongoDB 的調用轉換為對 PostgreSQL 的 SQL 查詢,這允許您使用 PostgreSQL 作為實際存儲。 1.0 版被標記為第一個可供一般使用的穩定版本。 代碼是用 Go 編寫的,並在 Apache 2.0 許可下分發。

FerretDB 的主要目標受眾是在其應用程序中不使用 MongoDB 高級功能但希望使用完全開放的軟件堆棧的用戶。 在當前的開發階段,FerretDB 支持典型應用程序中最常用的 MongoDB 功能的一個子集。 實施 FerretDB 的需要可能與 MongoDB 向非自由 SSPL 許可證的過渡有關,該許可證基於 AGPLv3 許可證,但不是開放的,因為它包含在 SSPL 許可證下提供的歧視性要求,不僅應用程序代碼本身,也是提供雲服務所涉及的所有組件的源代碼。

MongoDB 在操作鍵/值數據的快速和可擴展系統與功能強大且易於查詢的關係 DBMS 之間佔據一席之地。 MongoDB 支持以類似 JSON 的格式存儲文檔,具有相當靈活的生成查詢的語言,可以為各種存儲的屬性創建索引,有效地提供大型二進制對象的存儲,支持記錄更改和添加數據到數據庫的操作,可以按照 Map/Reduce 範式工作,支持複製和構建容錯配置。

FerretDB 1.0 的變化包括:

  • 實現了 createIndexes 和 dropIndexes 命令,用於創建一個或多個索引並將其刪除到集合中。
  • 已實現 getMore 命令以顯示從執行返回游標的命令(例如查找和聚合)中獲得的結果的新部分。
  • 添加了對 $sum 聚合運算符的支持以計算組值的總和。
  • 添加了對 $limit 和 $skip 運算符的支持,以在聚合時限制數量並跳過文檔。
  • 添加了對 $count 運算符的支持,用於在聚合時對文檔進行計數。
  • 添加了對 $unwind 運算符的支持,以解析傳入文檔中的數組字段,並為每個數組元素形成一個包含單獨文檔的列表。
  • 添加了對 collStats、dbStats 和 dataSize 命令的部分支持,以獲取收集和數據庫統計信息以及數據大小。

來源: opennet.ru

添加評論