今天在 Hacker News 看到一篇討論 FerretDB: A truly open-source MongoDB alternative 覺得很有趣就看了一下。
FerretDB
FerretDB 看起來是為了 MongoDB 衍生出來的新資料庫,而為什麼會有這個資料庫呢?
MongoDB 在演進的過程中把 License 改成了 Server Side Public License (SSPL) v1,大家其實對這個 License 有一些聲音,這邊就不討論它。
而 FerretDB 改善了它使用了 Apache License 2.0 來開發可以看到在 GitHub 上的 License 聲明 https://github.com/FerretDB/FerretDB/blob/main/LICENSE
所以就官網的說法 “A truly Open Source MongoDB alternative” 感覺它想要成為真正開源的 MongoDB
FerretDB 使用 docker-compose 啟動
在啟動上可以看一下它的 docker-compose 文件
version: "3" services: postgres: image: postgres:14 container_name: postgres ports: - 5432:5432 environment: - POSTGRES_USER=user - POSTGRES_DB=ferretdb - POSTGRES_HOST_AUTH_METHOD=trust postgres_setup: image: postgres:14 container_name: postgres_setup restart: on-failure entrypoint: ["sh", "-c", "psql -h postgres -U user -d ferretdb -c 'CREATE SCHEMA IF NOT EXISTS test'"] ferretdb: image: ghcr.io/ferretdb/ferretdb:latest container_name: ferretdb restart: on-failure ports: - 27017:27017 command: ["-listen-addr=:27017", "-postgresql-url=postgres://user@postgres:5432/ferretdb"]
使用 PostgreSQL 引擎
它底層用了 PostgreSQL 引擎在上層實作一個 proxy 介面來介接讓 mongosh
指令可以使用,我覺得這個做法滿有趣的不過在實際使用上 NoSQL 通常是為了改善效能所使用的,今天在底層又使用了 RDBMS 作為引擎這邊就讓我覺得不太理解,但是用起來好不好用或是效能如何的詳細資訊可能要真正使用才會知道,這邊就以一個新專案的角度來看它可能可以成為一個 MongoDB 的選擇。
《AWS CDK 完全學習手冊:打造雲端基礎架構程式碼 IaC》
第 12 屆 iT 邦幫忙鐵人賽 DevOps 組冠的《用 CDK 定 義 AWS 架構》
第 11 屆 iT 邦幫忙鐵人賽《LINE bot 好好玩 30 天玩轉 LINE API》
一個熱愛分享的雲端工程師!