FerretDB:真正开源的MongoDB数据库替代品,sechema-less数据库
FerretDB的成立是为了成为MongoDB事实上的开源替代品。 FerretDB是一个开源代理,将MongoDB 6.0+线协议查询转换为SQL - 使用 PostgreSQL 或 SQLite 作为数据库引擎。
为什么我们需要FerretDB数据库?
MongoDB最初是我们许多开发人员大开眼界的技术, 使我们能够比使用关系数据库更快地构建应用程序。 在早期,其易于使用和文档齐全的驱动程序使MongoDB成为最简单的数据库解决方案之一。 然而,随着时间的推移,MongoDB放弃了它的开源根源; 将许可证更改为 SSPL - 使其无法用于许多开源和早期商业项目。
大多数MongoDB用户不需要MongoDB提供的任何高级功能; 但是,他们需要一个易于使用的开源文档数据库解决方案。 认识到这一点,FerretDB在这里填补了这一空白。
范围和当前状态
FerretDB与MongoDB驱动程序和流行的MongoDB工具兼容。 在许多情况下,它可以作为MongoDB 6.0+的直接替代品。 不断添加功能以进一步提高兼容性和性能。
我们欢迎所有贡献者。 请参阅我们的公共路线图, 与MongoDB的已知差异列表, 和贡献指南。
快速入门
运行以下命令以使用 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 快速入门指南 没有这些问题。
运行该容器后,您可以:
- 使用MongoDB URI与任何MongoDB客户端应用程序连接它。
mongodb://127.0.0.1:27017/
- 使用MongoDB Shell连接到它,只需运行. 如果未在本地安装它,则可以运行 .
mongosh
docker exec -it ferretdb mongosh
- 对于 PostgreSQL 后端,请通过运行 来连接到它。 FerretDB对MongoDB数据库使用PostgreSQL模式。 因此,如果您使用任何MongoDB客户端在数据库中创建了一些集合, 您可以通过运行查询切换到它 并通过运行命令查看 PostgreSQL 表的列表。
docker exec -it ferretdb psql -U username ferretdb
test
SET search_path = 'test';
\d
psql
- 对于 SQLite 后端,将在目录中的主机上创建数据库文件。 您可以通过在某些数据插入 FerretDB 后运行来访问它们。
data
sqlite3 data/<filename>.sqlite
您可以使用 停止容器。docker stop ferretdb
我们还为各种 Linux 发行版提供二进制文件和软件包, 以及将 FerretDB 嵌入到应用程序中的 Go 库包。 有关更多详细信息,请参阅我们的文档。
建筑和包装
我们强烈建议用户不要自己构建 FerretDB。 相反,请使用我们提供的二进制文件、Docker 映像或 / 包。.deb
.rpm
如果要为您的操作系统或发行版打包 FerretDB, 构建二进制文件的推荐方法是使用任务; 有关更多详细信息,请参阅我们的贡献者说明。 FerretDB也可以像任何其他Go程序一样构建, 但是一些生成的文件和构建标记可能会影响它。 有关更多详细信息,请参阅此处。build-release
云提供商的托管FerretDB数据库
文档
社区
- Github地址: FerretDB/FerretDB:真正的开源MongoDB替代品 (github.com)
- 网站和博客:https://ferretdb.io。
- 推特:@ferret_db。
- Mastodon:@ferretdb@techhub.social 。
- Slack chat: 用于提问快速获取答复。
- GitHub 讨论以获取更长的主题。
- GitHub 错误和缺失功能的问题。
- 每周一 18:00 UTC 在 Google Meet 上开放办公时间会议。
如果您想联系FerretDB Inc.,请使用此表格。