È stato pubblicato il rilascio del progetto FerretDB 0.3, che consente di sostituire il database NoSQL MongoDB con PostgreSQL senza modifiche al codice delle applicazioni. FerretDB è implementato come un server proxy che traduce le richieste da MongoDB in query SQL per PostgreSQL, consentendo di utilizzare PostgreSQL come effettivo archivio. Il codice è scritto in Go e distribuito sotto licenza Apache 2.0.
Può sorgere la necessità di migrazione a causa della transizione di MongoDB a una licenza non libera SSPL, che si basa sulla licenza AGPLv3 ma non è open source, poiché contiene una richiesta discriminatoria di fornitura sotto licenza SSPL non solo del codice dell'applicazione ma anche dei codici sorgente di tutti i componenti coinvolti nella fornitura del servizio cloud.
Il principale pubblico target di FerretDB è costituito da utenti che non utilizzano nelle proprie applicazioni le funzionalità avanzate di MongoDB, ma desiderano impiegare un intero stack software open source. Attualmente, FerretDB supporta solo una parte delle funzionalità di MongoDB, le più frequentemente utilizzate nelle applicazioni standard. In futuro si prevede di raggiungere la completa compatibilità con i driver per MongoDB e di consentire l'uso di FerretDB come sostituto trasparente di MongoDB.
MongoDB occupa una nicchia tra sistemi rapidi e scalabili che operano dati in formato chiave/valore e database relazionali, funzionali e comodi nella formulazione delle query. MongoDB supporta l'archiviazione di documenti in formato JSON-simile, ha un linguaggio abbastanza flessibile per la formulazione delle query, può creare indici per diversi attributi archiviati, gestisce in modo efficace l'archiviazione di grandi oggetti binari, supporta il logging delle operazioni di modifica e aggiunta di dati nel DB, può operare secondo il paradigma Map/Reduce, supporta la replicazione e la costruzione di configurazioni a tolleranza agli errori.
Nella versione 0.3 di FerretDB è stata implementata la funzione findAndModify che modifica un documento, restituendo però la sua versione originale. Sono stati implementati gli operatori di aggiornamento dei campi: $inc e $set. È stato aggiunto il supporto per l'ordinamento dei tipi di dati scalari.
Fonte: opennet.ru
