Byl vydán projekt FerretDB 1.0, který umožňuje nahradit dokumentově orientovanou DB MongoDB PostgreSQL bez úprav aplikací. FerretDB funguje jako proxy server, který převádí dotazy na MongoDB na SQL dotazy k PostgreSQL, což umožňuje používat PostgreSQL jako skutečné úložiště. Verze 1.0 je označena jako první stabilní vydání, připravené k širokému použití. Kód je napsán v Go a je distribuován pod licencí Apache 2.0.
Hlavní cílovou skupinou FerretDB jsou uživatelé, kteří ve svých aplikacích nevyužívají pokročilé funkce MongoDB, ale chtějí používat plně otevřený softwarový stack. V současné fázi vývoje FerretDB podporuje podmnožinu funkcí MongoDB, které jsou nejčastěji využívány v typických aplikacích. Potřeba implementace FerretDB může vzniknout v souvislosti s přechodem MongoDB na neotevřenou licenci SSPL, která je založena na licenci AGPLv3, ale není otevřená, protože obsahuje diskriminační požadavek na dodávku pod licencí SSPL nejen kódu samotné aplikace, ale i zdrojových textů všech komponent, které se podílejí na poskytování cloudové služby.
MongoDB okupuje mezery mezi rychlými a škálovatelnými systémy, které manipulují s daty ve formátu klíč/hodnota, a relačními DB, které jsou funkční a snadné na formulaci dotazů. MongoDB podporuje ukládání dokumentů v JSON-podobném formátu, má dostatečně flexibilní jazyk pro formulaci dotazů, může vytvářet indexy pro různé uložené atributy, efektivně zajišťuje ukládání velkých binárních objektů, podporuje logování operací při změnách a přidávání dat do DB, může fungovat podle paradigmatu Map/Reduce, podporuje replikaci a budování odolných konfigurací.
Mezi změnami v FerretDB 1.0:
- Byly implementovány příkazy createIndexes a dropIndexes pro vytváření a odstraňování jednoho nebo více indexů ke kolekci.
- Byl implementován příkaz getMore pro výpis nové dávky výsledků získaných při provádění příkazů vracejících kurzor, jako jsou find a aggregate.
- Byla přidána podpora agregujícího operátoru $sum pro výpočet součtu hodnot skupiny.
- Byla přidána podpora operátorů $limit a $skip pro omezení počtu a přeskočení dokumentů při agregaci.
- Byla přidána podpora operátoru $count pro počítání dokumentů při agregaci.
- Byla přidána podpora operátoru $unwind pro zpracování polí pole v příchozích dokumentech a vytvoření seznamu s jednotlivým dokumentem pro každý prvek pole.
- Byla přidána částečná podpora příkazů collStats, dbStats a dataSize pro získání statistik o kolekci a databázi, stejně jako velikosti dat.
Zdroj: opennet.ru
