Microsoft ha annunciato l'apertura del codice del progetto DocumentDB, che può essere utilizzato come database NoSQL autonomo, come piattaforma per la creazione di sistemi di archiviazione personalizzati o come complemento per l'archiviazione di dati in formato BSON in un database PostgreSQL. Nella pratica, DocumentDB è utilizzato da Microsoft come base per il prodotto "Azure Cosmos DB for MongoDB", che fornisce un'interfaccia compatibile con il database orientato ai documenti MongoDB. Il codice del progetto è scritto in linguaggio C e distribuito sotto licenza MIT. Il motore DocumentDB è implementato come un'estensione del database PostgreSQL.
Come in MongoDB, DocumentDB utilizza un formato simile a JSON chiamato BSON (Binary JSON) per memorizzare documenti strutturati, consentendo di creare strutture gerarchiche in cui documenti e array possono essere incorporati in altri documenti e array. La principale differenza rispetto a JSON è l'uso di una rappresentazione binaria per la serializzazione dei dati. Il progetto offre sia operazioni NoSQL per la creazione, lettura, aggiornamento e cancellazione di dati nel formato BSON, sia un API standard per PostgreSQL (DocumentDB può essere considerato come una variante di PostgreSQL con supporto per BSON). Include anche funzionalità di ricerca full-text e operazioni su tipi di dati vettoriali e geospaziali.
Il progetto è composto da due componenti:
- pg_documentdb_core — un'estensione per PostgreSQL che implementa il tipo BSON e le operazioni per gestire i dati BSON in PostgreSQL.
- pg_documentdb — un API pubblica di DocumentDB con operazioni di base per lavorare con documenti nel formato BSON, elaborate query e gestione degli indici.
Il primo rilascio di DocumentDB offre supporto per operazioni CRUD (creazione, lettura, aggiornamento, eliminazione), indici per singoli campi BSON, indici per la ricerca full-text (compatibili con RUM), query vettoriali e geospaziali (compatibili con pg_vector e postgis), oltre a funzionalità per la costruzione di query e l'aggregazione di dati BSON.
Il progetto FerretDB ha già adottato DocumentDB, sviluppando l'implementazione del database MongoDB basato su PostgreSQL. FerretDB consente di sostituire il database documentale proprietario MongoDB con un stack software completamente aperto basato su PostgreSQL, senza modifiche al codice delle applicazioni. La necessità di sostituire MongoDB è motivata dal passaggio di questo database a una licenza SSPL, che si basa sulla licenza AGPLv3, ma non è considerata open source, poiché contiene requisiti discriminatori relativi alla fornitura sotto licenza SSPL, non solo del codice dell'applicazione, ma anche del testo sorgente di tutti i componenti coinvolti nella fornitura del servizio cloud.
Inizialmente, il lavoro di FerretDB consisteva nella traduzione delle richieste da MongoDB in query SQL per PostgreSQL, ma a partire dalla versione FerretDB 2.0, attualmente in fase di candidabilità per il rilascio, per implementare il supporto del formato BSON è stato utilizzato l'estensione DocumentDB per PostgreSQL. Il passaggio all'uso di DocumentDB ha consentito di aumentare la performance di FerretDB di oltre 20 volte per alcuni tipi di carico. Tra le altre novità di FerretDB 2.0 si segnalano un miglioramento della compatibilità con MongoDB, la possibilità di replica e il supporto per la ricerca vettoriale. Il codice di FerretDB è scritto in Go e distribuito con licenza Apache 2.0.
Fonte: opennet.ru
