FerretDB 0.3 has already been released, find out what's new in this MangoDB modernization

Some weeks ago we share here on the blog the news about changing the name of the MangoDB project which allows you to replace the document-oriented DBMS of MongoDB with PostgreSQL without making any changes to the application code.

The new project name is FerretDB and recently the release of version 0.3 of the project was announced. The FerretDB 0.3 version introduces the findAndModify command, which modifies a document but returns its original version, as well as field update operators, among other things.

For those who are still unaware of FerretDB, you should know that this is implemented as a proxy server that translates calls to MongoDB into SQL queries to PostgreSQL, which allows you to use PostgreSQL as real storage.

The need for migration 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, as it contains a discriminatory requirement to provide under the SSPL license not only the application code itself, but also the source codes of all the components involved in providing the cloud service.

The main target audience for FerretDB is users who do not use the advanced features of MongoDB in their applications, but want to use a completely open software stack.

At the current stage of development, FerretDB still supports only part of MongoDB features that are most often used in typical applications. In the future, they plan to achieve full driver support for MongoDB and provide the ability to use FerretDB as a transparent replacement for MongoDB.

MongoDB occupies a niche between fast and scalable systems that operate on key/value data and relational DBMSs that are functional and easy to query.

MongoDB supports storing documents in a JSON-like format, has a fairly flexible language for generating queries, can create indexes for various stored attributes, provides efficient storage of binary large objects, supports logging of operations to change and add data to the database, it can work according to the Map/Reduce paradigm, it supports replication and the construction of fault-tolerant configurations.

Due to the differences in the semantics of PostgreSQL and MongoDB json functions, there was a discrepancy in behavior when comparing and ordering different types. To solve this problem, a sample of redundant data is now extracted from PostgreSQL and the filtering of the result is done on the FerretDB side, which made it possible to repeat the behavior of MongoDB in most situations.

Main novelties of FerretDB 0.3

As mentioned at the beginning, the new version of FerretDB 0.3 stands out for introducing the findAndModify command, which modifies a document, but returns its original version.

Other changes that stand out is that negative zero handling has been improved, as well as support for ordering scalar data types was added.

Also highlighted are new field update operators implemented: $inc and $set, plus support for ordering scalar data types was added.

On the other hand, it is mentioned that various improvements have been made for the handling of PostgreSQL and MongoDB versions.

Besides that, it is also noted that the incorrect test for the $mod operator has been fixed, also that the test is issued on all ARM64 operating systems and that more visibility has been added for router/proxy error logging levels.

Of the other changes that stand out from this new version:

  • Update CODEOWNERS
  • Synchronize dummy controllers and pg
  • Rename OP_*constants to OpCode*constants
  • Improve gopkg.in/yaml.v3
  • Bump gopkg.in/yaml.v3 in tools
  • Make Type Path
  • Panic in unexpected order values
  • Add some comments to functions and variables
  • Remove dead code

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


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.