Skip to main content

FerretDB releases v1.18.0 with OpLog Support!

· 3 min read
Alexander Fashakin

FerretDB releases v.1.18.0

We are starting the new year with a major feature addition! The latest version of FerretDB v1.18.0 has just been released with support for basic OpLog functionality, along with other exciting features.

OpLog (operations log) functionality has been one of our most requested features, and it would make it possible for developers to build real-time applications using the Meteor framework. We made this a priority in the last quarter and are super excited that it's now available. We can't wait to see what you build with FerretDB!

In addition to OpLog functionality, we've also added support for capped collections and tailable cursors.

FerretDB is on a mission to add MongoDB compatibility to other database backends, including Postgres and SQLite. All the new features in this release will help us improve compatibility with more applications,and use cases.

New features

In this release, we've added support for capped collection, along with max and size parameters.

For example, to create a capped collection testcollection with a maximum size of 512MB, run:

db.createCollection('testcollection', { capped: true, size: 536870912 })

This release also includes support for tailable cursors; both tailable and awaitData parameters are included.

Most importantly, we released support for a basic OpLog functionality. We've had many requests for this feature especially for Meteor OpLog tailing and we're thrilled to have it finally available for our users.

note

At the moment, only basic OpLog tailing is supported. Replication is not supported yet.

The functionality is not available by default. To enable it, manually create a capped collection named oplog.rs in the local database.

// use local
db.createCollection('oplog.rs', { capped: true, size: 536870912 })

You may also need to set the replica set name using --repl-set-name flag / FERRETDB_REPL_SET_NAME environment variable:

docker run -e FERRETDB_REPL_SET_NAME=rs0 ...

To query the OpLog:

db.oplog.rs.find()

To query OpLog for all the operations in a particular namespace (test.foo), run:

db.oplog.rs.find({ ns: 'test.foo' })

If something does not work correctly or you have any question on the OpLog functionality, please inform us here.

Thanks for all the support!

None of this would be possible without all the support we've received in the past year from our growing community and the open source community at large. In this release, we had two new contributors: @yonarw and @sachinpuranik. Thank you for your support!

Last year was an amazing one for everyone at FerretDB, and we can't wait to see what the new year unfolds. We will continue on our goal to provide an open source MongoDB alternative that enables more database backends run MongoDB workloads. Work is still ongoing on adding support for MySQL and SAP Hana backends, and we hope to have more information for you soon.

If you have questions or feedback on FerretDB, contact us on our community channels.