FerretDB 是一個開源代理(proxy),將 MongoDB 5.0+ 的線路協議(wire protocol)查詢轉換為 SQL,並使用 PostgreSQL 或 SQLite 作為後端資料庫引擎。它允許開發者使用熟悉的 MongoDB 驅動程式、工具和查詢語言,同時保持開源特性,避免 MongoDB 的 SSPL(Server Side Public License)許可限制。FerretDB 的目標是為需要 MongoDB 相容性的開源專案和早期商業應用提供易於使用的文件資料庫解決方案。
主要特點
- MongoDB 相容性:
- 支援 MongoDB 5.0+ 的驅動程式和工具(如 MongoDB Compass、Studio 3T),無需更改現有程式碼即可作為 MongoDB 的直接替代品。
- 使用相同的 MongoDB 查詢語法,降低學習曲線。
- 開源與靈活性:
- 採用 Apache 2.0 許可證,完全開源,避免供應商鎖定(vendor lock-in)。
- 支援 PostgreSQL(主要後端)和 SQLite,未來可能支援更多後端(如 SAP HANA)。
- 後端儲存:
- MongoDB 資料庫映射到 PostgreSQL 模式(schemas),集合(collections)映射到表格,文件(documents)儲存在 JSONB 欄位中。
- 利用 PostgreSQL 的穩定性、ACID 相容性和成熟工具生態系統。
- 高可用性與擴展性:
- FerretDB 2.0 引入複製(replication)功能,支援主從架構,通過 PostgreSQL 的串流複製實現高可用性和容錯能力,適合讀取密集型應用。
- 可通過 Docker、Kubernetes 或 Neon 等平台輕鬆部署和管理。
- 性能與優化:
- 雖然相較原生 MongoDB 可能因代理層而有性能開銷,但 FerretDB 持續優化 SQL 查詢並計劃推動更多計算到後端以提升性能。
- FerretDB 2.0 聲稱性能提升 20 倍,並新增向量搜尋等功能。
使用場景
- 開源專案:需要 MongoDB 相容性但希望避免 SSPL 許可限制的開發者。
- 企業環境:已經使用 PostgreSQL 的組織可將 FerretDB 整合到現有基礎設施,統一管理。
- 避免供應商鎖定:希望保持資料庫靈活性和控制權的團隊。
- 新創公司:尋求成本效益高且易於使用的文件資料庫解決方案。
與 MongoDB 的比較
- 優勢:
- 開源,無許可費用,適合預算有限的專案。
- 利用 PostgreSQL 的穩定性和工具生態,減少學習新系統的成本。
- 支援現有 MongoDB 工作負載,遷移成本低。
- 限制:
- 並非所有 MongoDB 功能都完全實現,某些進階功能可能尚未支援。
- 性能可能不如原生 MongoDB,需針對具體工作負載進行測試。
如何開始
- 安裝:可通過 Docker 快速部署 FerretDB,並搭配 PostgreSQL 或 SQLite 後端。官方提供生產用 Docker 映像和詳細文件。
- 連線:使用 MongoDB Shell(mongosh)或任何 MongoDB 相容客戶端連線,無需更改程式碼。
- 文件與支援:
總結
FerretDB 是一個強大的開源 MongoDB 替代方案,結合 MongoDB 的開發者友好體驗與 PostgreSQL 的穩定性和開源靈活性。它特別適合需要 MongoDB 相容性但希望避免許可限制或供應商鎖定的開發者和組織。雖然仍在持續開發中,但其活躍的社群和快速的功能更新使其成為值得關注的資料庫解決方案。
Post Views: 99