Skip to content

hanzoai/documentdb

DocDB

Tip

Looking for DocDB v1? It is there.

Go Reference

Go codecov

Security Packages Docs

DocDB is an open-source alternative to MongoDB. It is a proxy that converts MongoDB 5.0+ wire protocol queries to SQL and uses PostgreSQL with DocumentDB extension as a database engine.

flowchart LR
  A["Any application<br>Any MongoDB driver"]
  F{{DocDB}}
  P[(PostgreSQL<br>DocumentDB extension)]

  A -- "MongoDB protocol<br>BSON" --> F
  F -- "PostgreSQL protocol<br>SQL" --> P
Loading

Why do we need DocDB?

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 to SSPL - 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, DocDB is here to fill that gap.

Scope and current state

DocDB 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 our public roadmap, lists of known differences and supported commands, and contributing guidelines.

Quickstart

Run this command to start DocDB with PostgreSQL, make sure to update <username> and <password>:

docker run -d --rm --name docdb -p 27017:27017 \
  -e POSTGRES_USER=<username> \
  -e POSTGRES_PASSWORD=<password> \
  ghcr.io/hanzoai/docdb-eval:2

This command will start a container with DocDB, 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 our installation guides for instructions that 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 run docker exec -it docdb mongosh.
  • For PostgreSQL, connect to it by running docker exec -it docdb psql -U <username> postgres.

You can stop the container with docker stop docdb.

We also provide binaries and packages for various Linux distributions. as well as Go library package that embeds DocDB into your application. See our documentation for more details.

Building and packaging

Note

We advise users not to build DocDB themselves. Instead, use binaries, Docker images, or packages provided by us.

DocDB could be built as any other Go program, but a few generated files and build tags could affect it. See there for more details.

Managed DocDB at cloud providers

Community

If you want to contact DocDB Inc., please use this form.

About

MongoDB-compatible document database

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors