MangoDB è stato modernizzato e ora cambia in FerretDB

recentementeNei giorni scorsi è stata annunciata la notizia del lancio del progetto FerretDB, (precedentemente MangoDB), che consente di sostituire il DBMS orientato ai documenti di 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, consentendoti di utilizzare PostgreSQL come spazio di archiviazione effettivo.

FerretDB (ex MangoDB) è stata fondata per diventare il sostituto open source de facto di MongoDB. FerretDB è un proxy open source che converte le query del protocollo wire MongoDB in SQL, utilizzando PostgreSQL come motore di database.

La necessità di migrazione può sorgere a causa del passaggio di MongoDB a una licenza SSPL non libera, che si basa sulla licenza AGPLv3, ma non è open source, in quanto contiene un requisito discriminatorio di fornire con la licenza SSPL non solo l'applicazione del codice stesso, ma anche i codici sorgente di tutte le componenti coinvolte nella fornitura del servizio cloud.

Il pubblico di destinazione di FerretDB è costituito dagli utenti che non utilizzano le funzionalità avanzate di MongoDB nelle loro applicazioni, ma desiderano utilizzare uno stack software completamente aperto.

Nell'attuale fase di sviluppo, FerretDB supporta ancora solo una parte delle funzionalità di MongoDB che sono più spesso utilizzati nelle applicazioni tipiche. In futuro, intendono ottenere il supporto completo dei driver per MongoDB e fornire la possibilità di utilizzare FerretDB come sostituto trasparente di MongoDB.

Va ricordato questo MongoDB occupa una nicchia tra i sistemi veloci e scalabili che operano su dati in formato chiave/valore, e DBMS relazionali, funzionali e convenienti nella generazione di query.

La maggior parte degli utenti di MongoDB non ha bisogno di molte delle funzionalità avanzate offerte da MongoDB; tuttavia, hanno bisogno di una soluzione di database open source facile da usare. Riconoscendo questo, FerretDB è qui per colmare questa lacuna.

MongoDB supporta la memorizzazione 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 un'efficiente archiviazione binaria di oggetti di grandi dimensioni, supporta la registrazione delle operazioni per modificare e aggiungere dati al database, può funzionare secondo il paradigma Map/Reduce, supporta la replica e la costruzione di configurazioni fault-tolerant.

Nel rilascio di FerretDB 0.1.0 si nota che completamente riprogettato il modo in cui vengono recuperati i dati PostgreSQL. In precedenza, per ogni richiesta MongoDB in arrivo, veniva generata una query da SQL a PostgreSQL, utilizzando funzioni per lavorare con il formato JSON e filtrando i risultati sul lato PostgreSQL.

A causa delle differenze nella semantica delle funzioni json di PostgreSQL e MongoDB, c'era una discrepanza nel comportamento quando si confrontano e si ordinano tipi diversi. Per risolvere questo problema, viene ora estratto un campione di dati ridondanti da PostgreSQL e il filtraggio del risultato viene eseguito sul lato FerretDB, il che ha permesso di ripetere il comportamento di MongoDB nella maggior parte delle situazioni.

Il prezzo di una maggiore compatibilità era una penalizzazione delle prestazioni, che nelle versioni future dovrebbe essere compensato dal filtraggio selettivo sul lato FerretDB delle sole query per le quali esiste una divergenza comportamentale.

Ad esempio, la query "db.collection.find({_id: 'some-id-value'})" può essere completamente elaborata in PostgreSQL. L'obiettivo principale del progetto in questa fase di sviluppo è raggiungere la compatibilità con MongoDB e le prestazioni sono ancora relegate in secondo piano.

Tra le modifiche funzionali nella nuova versione, c'è il supporto per tutti gli operatori bit per bit, l'operatore di confronto "$e", così come gli operatori "$elemMatch" e "$bitsAllClear".

Infine per chi è interessato a saperne di più, dovrebbero sapere che il codice è scritto in Go ed è distribuito sotto la licenza Apache 2.0 e puoi controllare il suo codice nel seguente link.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.