The release of FerretDB 0.7 has been published, allowing for the replacement of the document-oriented DBMS MongoDB with PostgreSQL without modifying application code. FerretDB is implemented as a proxy server that translates MongoDB requests into SQL queries for PostgreSQL, enabling the use of PostgreSQL as the actual storage. The code is written in Go and is distributed under the Apache 2.0 license.
The need for migration may arise due to MongoDB's transition to a non-free SSPL license, which is based on the AGPLv3 license but is not open as it includes a discriminatory requirement to supply not only the application code but also the source texts of all components involved in providing the cloud service under the SSPL license.
The primary target audience for FerretDB consists of users who do not utilize the advanced features of MongoDB in their applications but wish to use a fully open software stack. At the current stage of development, FerretDB only supports part of the capabilities of MongoDB that are most commonly used in typical applications. Future plans aim to achieve full compatibility with MongoDB drivers and provide the option to use FerretDB as a seamless replacement for MongoDB.
MongoDB occupies a niche between fast and scalable systems that operate with key/value data and relational database management systems that are functional and convenient for query formation. MongoDB supports document storage in a JSON-like format, has a sufficiently flexible query language, can create indexes for various stored attributes, efficiently manages large binary objects, supports logging of operations for data changes and additions in the database, can operate according to the Map/Reduce paradigm, and supports replication and building fault-tolerant configurations.
Changes in FerretDB 0.7 include:
- The diagnostic command msg_explain has been implemented, which is necessary for the Tigris platform.
- Support for filters (the 'filter' option) has been added to the listCollections command.
- The use of the '-' symbol in database names is now permitted.
- The number of parameters supported in the find command has been increased.
- In the wire package implementing the 'wire' protocol (the protocol for interacting with MongoDB), the ability to validate documents has been added. The minimum supported version of the wire protocol has been lowered to 13, which corresponds to MongoDB 5.0.
Source: opennet.ru
