Primo rilascio stabile di FerretDB, implementazione MongoDB basata su DBMS PostgreSQL

Pubblicata la release del progetto FerretDB 1.0 che permette di sostituire il DBMS orientato ai documenti MongoDB con PostgreSQL senza apportare modifiche al codice dell'applicazione. FerretDB è implementato come un server proxy che traduce le chiamate a MongoDB in query SQL a PostgreSQL, che consente di utilizzare PostgreSQL come archivio effettivo. La versione 1.0 è contrassegnata come la prima versione stabile pronta per l'uso generale. Il codice è scritto in Go e distribuito con licenza Apache 2.0.

Il principale target di riferimento per FerretDB sono gli utenti che non utilizzano le funzionalità avanzate di MongoDB nelle loro applicazioni, ma desiderano utilizzare uno stack software completamente aperto. Nella sua attuale fase di sviluppo, FerretDB supporta un sottoinsieme delle funzionalità MongoDB più comunemente utilizzate nelle applicazioni tipiche. La necessità di implementare FerretDB può sorgere in relazione alla transizione di MongoDB a una licenza SSPL non libera, che si basa sulla licenza AGPLv3, ma non è aperta, poiché contiene un requisito discriminatorio di fornire con la licenza SSPL non solo il codice dell'applicazione stesso, ma anche i codici sorgente di tutti i componenti coinvolti nella fornitura di servizi cloud.

MongoDB occupa una nicchia tra sistemi veloci e scalabili che operano su dati chiave/valore e DBMS relazionali che sono funzionali e facili da interrogare. MongoDB supporta l'archiviazione di documenti in un formato simile a JSON, ha un linguaggio abbastanza flessibile per la generazione di query, può creare indici per vari attributi archiviati, fornisce in modo efficiente l'archiviazione di oggetti binari di grandi dimensioni, supporta la registrazione delle operazioni per modificare e aggiungere dati al database, può lavorare secondo il paradigma Map/Reduce, supporta la replica e la creazione di configurazioni fault-tolerant.

Tra i cambiamenti in FerretDB 1.0:

  • Implementati i comandi createIndexes e dropIndexes per la creazione e l'eliminazione di uno o più indici in una raccolta.
  • Il comando getMore è stato implementato per visualizzare una nuova porzione del risultato ottenuto dall'esecuzione di comandi che restituiscono un cursore, come find e aggregate.
  • Aggiunto il supporto per l'operatore di aggregazione $sum per calcolare la somma dei valori di gruppo.
  • Aggiunto il supporto per gli operatori $limit e $skip per limitare il numero e ignorare i documenti durante l'aggregazione.
  • Aggiunto il supporto per l'operatore $count per il conteggio dei documenti durante l'aggregazione.
  • Aggiunto il supporto per l'operatore $unwind per analizzare i campi dell'array nei documenti in entrata e formare un elenco con un documento separato per ogni elemento dell'array.
  • Aggiunto il supporto parziale per i comandi collStats, dbStats e dataSize per ottenere statistiche di raccolte e database e dimensioni dei dati.

Fonte: opennet.ru

Aggiungi un commento