First stable release of FerretDB, MongoDB implementation based on PostgreSQL DBMS

The release of the FerretDB 1.0 project has been published, which allows you to replace the document-oriented DBMS MongoDB with PostgreSQL without making changes to the application code. FerretDB is implemented as a proxy server that translates calls to MongoDB into SQL queries to PostgreSQL, which allows you to use PostgreSQL as the actual storage. Version 1.0 is marked as the first stable release ready for general use. The code is written in Go and distributed under the Apache 2.0 license.

The main target audience for FerretDB are users who do not use MongoDB advanced features in their applications, but want to use a completely open software stack. At its current stage of development, FerretDB supports a subset of the MongoDB features 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, since it contains a discriminatory requirement to supply under the SSPL license not only the application code itself, but also the source codes of all components involved in provision of cloud services.

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, efficiently provides storage of large binary objects, supports logging of operations to change and add data to the database, can work in accordance with the paradigm Map/Reduce, supports replication and building fault-tolerant configurations.

Among the changes in FerretDB 1.0:

  • Implemented createIndexes and dropIndexes commands for creating and dropping one or more indexes to a collection.
  • The getMore command has been implemented to display a new portion of the result obtained from the execution of commands that return a cursor, such as find and aggregate.
  • Added support for the $sum aggregation operator to calculate the sum of group values.
  • Added support for the $limit and $skip operators to limit the number and skip documents when aggregating.
  • Added support for the $count operator for counting documents when aggregating.
  • Added support for the $unwind operator to parse array fields in incoming documents and form a list with a separate document for each array element.
  • Added partial support for collStats, dbStats and dataSize commands to get collection and database statistics and data size.

Source: opennet.ru

Add a comment