published the project Ferretdb 0.3 , which allows you to replace the document-oriented Mongodb DBMS with postgreSQL without amendments to the application code. Ferretdb is implemented as a proxy server broadcasting to Mongodb calls to SQL checks to PostgreSQL, which allows you to use PostgreSQL as an actual storage. The code is written in the language of Go and spreads under the license Apache 2.0.
The need for migration may arise due SSPL, which is based on the AGPLV3 license, but is not open, since it contains a discriminatory requirement to supply SSPL under the SSPL license, but also the initial texts of all components involved in the provision of cloud service.
The main target audience of Ferretdb are users who do not use the expanded capabilities of Mongodb in their applications, but want to use a fully open software stack. At the current stage of development, Ferretdb so far supports only part of the Mongodb capabilities, most often used in typical applications. In the future, they plan to achieve full compatibility with drivers for Mongodb and provide the opportunity to use Ferretdb as a transparent replacement of mongodb.
Mongodb occupies a niche between quick and scalable systems that operate the key/value in the key/value format, and relational DBMSs, functional and convenient in the formation of requests. Mongodb supports the storage of documents in a JSON-like format, has a fairly flexible language for forming queries, can create indices for various stored attributes, effectively ensures storage of large binary objects, supports journaling operations to change and add data to the database, and can work in accordance with the paradigm MAP/REDUCE, supports replication and construction of failure -resistant configurations.
The release of Ferretdb 0.3 has a command findandmodify a change in the document, but a returning its original version. Implemented field renewal operators – $ Inc and dollars . Added support for sorting scalar data types.