- Notifications
You must be signed in to change notification settings - Fork450
A truly Open Source MongoDB alternative
License
FerretDB/FerretDB
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Tip
Looking for FerretDB v1?It isthere.
FerretDB is an open-source alternative to MongoDB.It is a proxy that converts MongoDB 5.0+ wire protocol queries to SQLand uses PostgreSQL withDocumentDB extension as a database engine.
flowchart LR A["Any application<br>Any MongoDB driver"] F{{FerretDB}} P[(PostgreSQL<br>DocumentDB extension)] A -- "MongoDB protocol<br>BSON" --> F F -- "PostgreSQL protocol<br>SQL" --> P
MongoDB was originally an eye-opening technology for many of us developers,empowering us to build applications faster than using relational databases.In its early days, its ease-to-use and well-documented drivers made MongoDB one of the simplest database solutions available.However, as time passed, MongoDB abandoned its open-source roots;changing the license toSSPL - making it unusable for many open-source and early-stage commercial projects.
Most MongoDB users do not require any advanced features offered by MongoDB;however, they need an easy-to-use open-source document database solution.Recognizing this, FerretDB is here to fill that gap.
FerretDB is compatible with MongoDB drivers and popular MongoDB tools.It functions as a drop-in replacement for MongoDB 5.0+ in many cases.Features are constantly being added to further increase compatibility and performance.
We welcome all contributors.See ourpublic roadmap,lists ofknown differences and supported commands,andcontributing guidelines.
Run this command to start FerretDB with PostgreSQL, make sure to update<username>
and<password>
:
docker run -d --rm --name ferretdb -p 27017:27017 \ -e POSTGRES_USER=<username> \ -e POSTGRES_PASSWORD=<password> \ ghcr.io/ferretdb/ferretdb-eval:2
This command will start a container with FerretDB, pre-packaged PostgreSQL with DocumentDB extension, and MongoDB Shell for quick testing and experiments.However, it is unsuitable for production use cases because it keeps all data inside and loses it on shutdown.See ourinstallation guides for instructionsthat don't have those problems.
With that container running, you can:
- Connect to it with any MongoDB client application using the MongoDB URI
mongodb://<username>:<password>@127.0.0.1:27017/
. - Connect to it using the MongoDB Shell by just running
mongosh
.If you don't have it installed locally, you can rundocker exec -it ferretdb mongosh
. - For PostgreSQL, connect to it by running
docker exec -it ferretdb psql -U <username> postgres
.
You can stop the container withdocker stop ferretdb
.
We also provide binaries and packages for various Linux distributions.as well asGo library packagethat embeds FerretDB into your application.Seeour documentation for more details.
Note
We advise users not to build FerretDB themselves.Instead, use binaries, Docker images, or packages provided by us.
FerretDB could be built as any other Go program,but a few generated files and build tags could affect it.Seethere for more details.
- Website:https://www.ferretdb.com/.
- Blog:https://blog.ferretdb.io/.
- Documentation:https://docs.ferretdb.io/.
- X (Twitter):@ferret_db.
- Mastodon:@ferretdb@techhub.social.
- Slack chat for quick questions.
- GitHub Discussions for longer topics.
- GitHub Issues for bugs and missing features.
- Open Office Hours meetingevery Monday at 17:00 UTC atGoogle Meet.
If you want to contact FerretDB Inc., please usethis form.
About
A truly Open Source MongoDB alternative
Topics
Resources
License
Code of conduct
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.