FerretDB:一个真正的开源 MongoDB 替代品

大家好,又见面了,我是 GitHub 精选君!

背景介绍

在我们的开发过程中,我们经常遇到使用 MongoDB 的问题。MongoDB 曾经是一项令人惊叹的技术,让我们开发人员能够比使用关系型数据库更快地构建应用程序。然而,随着时间的推移,MongoDB 放弃了它的开源本质,将许可证更改为 SSPL,这使得许多开源项目和早期商业项目无法使用它。大多数 MongoDB 用户并不需要 MongoDB 提供的高级功能,但他们需要一个易于使用的开源文档数据库解决方案。为了填补这个空白,FerretDB 应运而生。

FerretDB 在 GitHub 有超过 7.3k Star,用一句话介绍该项目就是:“A truly Open Source MongoDB alternative”。

项目介绍

FerretDB 将 MongoDB 6.0+ 的协议查询转换为 SQL,使用 PostgreSQL 或 SQLite 作为数据库引擎。它旨在成为 MongoDB 的事实开源替代品。FerretDB 兼容 MongoDB 驱动程序和流行的 MongoDB 工具,在许多情况下可以作为 MongoDB 6.0+ 的即插即用替代品。它不断添加功能以进一步提高兼容性和性能。FerretDB 欢迎所有贡献者,你可以在我们的公共路线图、与 MongoDB 的已知差异列表以及贡献指南中获取更多信息。

如何使用

要使用 FerretDB,请按照以下步骤进行安装:

1、使用以下命令以 PostgreSQL 后端启动 FerretDB:

docker run -d --rm --name ferretdb -p 27017:27017 ghcr.io/ferretdb/all-in-one

或者,使用以下命令以 SQLite 后端启动 FerretDB:

docker run -d --rm --name ferretdb -p 27017:27017 \
  -v ./data:/data/ -e FERRETDB_HANDLER=sqlite -e FERRETDB_SQLITE_URL=file:/data/ \
  ghcr.io/ferretdb/all-in-one

请注意,这些命令启动的容器中包含了 FerretDB、PostgreSQL 和 MongoDB Shell,方便进行快速测试和实验。然而,这些命令并不适用于生产环境,因为容器在关闭时会丢失所有数据。要了解不会出现这些问题的指令,请参阅项目的 Docker 快速入门指南。

2、当容器运行时,你可以通过以下方式使用 FerretDB:

  • 使用任何支持 MongoDB 的客户端应用程序,使用 MongoDB URI mongodb://127.0.0.1:27017/ 进行连接。

  • 使用 MongoDB Shell 进行连接,只需运行 mongosh 命令。如果你没有在本地安装,可以使用如下 Docker 命令

docker exec -it ferretdb mongosh

以下是该项目 Star 趋势图(代表项目的活跃程度):

更多项目详情请查看如下链接。

开源项目地址:https://github.com/FerretDB/FerretDB

开源项目作者:FerretDB

以下是参与项目建设的所有成员:

关注我们,一起探索有意思的开源项目。


更多精彩请扫码关注如下公众号。

Written on July 6, 2023