FerretDB 1.0 has already been released and these are its news

FerretDB

FerretDB was founded to become the de facto open source replacement for MongoDB.

The launch of the new version of the FerretDB 1.0 project, which allows you to replace MongoDB's document-oriented DBMS with PostgreSQL without making any changes to your application code. FerretDB is implemented as a proxy server that translates MongoDB calls in SQL queries to PostgreSQL, allowing you to use PostgreSQL as actual storage.

Version 1.0 is marked as the first stable release ready for general use. FerretDB's primary target audience is users who do not use the advanced features of MongoDB in their applications, but want to use a completely open software stack.

At its current stage of development, FerretDB supports a subset of MongoDB features that are most commonly used in typical applications. The need to implement FerretDB may arise in connection with the transition of MongoDB to a non-free SSPL license, which is based on the AGPLv3 license, but is not open source, as it contains a discriminatory requirement to supply under the SSPL license not only the application code itself, but also the source codes of all the components involved in the provision of cloud services.

MongoDB occupies a niche between fast and scalable systems that operate on key/value data and DBMSs relational databases that are functional and easy to query. MongoDB supports storing documents in a JSON-like format, has a fairly flexible language for building queries, can create indexes for various stored attributes, provides efficient storage of binary large objects, supports logging operations for changing and adding data to the database, can work according to the Map/Reduce paradigm, supports replication and building fault-tolerant configurations.

Main novelties of FerretDB 1.0

In this new version that is presented, it is highlighted that the createIndexes and dropIndexes commands have been implemented to create and place one or more indices on a collection, in addition to the command getMore was implemented to display a new slice of the fetched result from executing commands that return a cursor, such as find and add.

Another of the changes that stands out from the new version added support for the $sum aggregation operator to compute the sum of group values, as well as what was added support for the $limit and $skip operators to limit the number and skip documents when adding and that support for the $count operator was added to count documents when adding.

In addition to this, it is also noted that support for the $unwind operator was added to parse the array fields in incoming documents and form a list with a separate document for each element of the array and also added partial support for the commands collStats , dbStats , and dataSize to get collection and database statistics and the size of the data.

Of the other changes that stand out of the new version:

  • Iterators are now used for `sort`, `limit`, `skip` and `projection`
  • bump dependencies
  • Resource Tracking Enhancements
  • Added tests for the `skip` argument of `find` and `count
  • Close the iterator properly
  • Improvements to initializing large numbers in test data

Finally if you are interested in knowing more about it, you can check the details In the following link.

For those interested in the code, you should know that it is written in Go and is distributed under the Apache 2.0 license.

And they should know that the best way to test FerretDB is to modify it and run it on the host (Linux, macOS, or Windows) with PostgreSQL and other dependencies running inside Docker containers via Docker Compose.

On Linux, docker must be installed on the host. On macOS and Windows, Docker Desktop must be used, while on Windows, it must be configured to use WSL 2 without any distribution; all commands must be executed on the host.


Be the first to comment

Leave a Comment

Your email address will not be published. Required fields are marked with *

*

*

  1. Responsible for the data: AB Internet Networks 2008 SL
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.