Foi lançado o projeto FerretDB 0.7, permitindo substituir o banco de dados orientado a documentos MongoDB pelo PostgreSQL sem alterações no código das aplicações. O FerretDB é implementado como um servidor proxy, traduzindo chamadas para MongoDB em consultas SQL para PostgreSQL, permitindo usar o PostgreSQL como o armazenamento real. O código é escrito na linguagem Go e distribuído sob a licença Apache 2.0.
A necessidade de migração pode surgir devido à transição do MongoDB para uma licença não livre, SSPL, que se baseia na licença AGPLv3, mas não é aberta, pois contém uma exigência discriminatória de fornecimento sob a licença SSPL não apenas do código do próprio aplicativo, mas também dos textos-fonte de todos os componentes envolvidos na prestação do serviço em nuvem.
O principal público-alvo do FerretDB são os usuários que não utilizam em seus aplicativos as funcionalidades avançadas do MongoDB, mas desejam usar uma pilha de software completamente aberta. Neste estágio de desenvolvimento, o FerretDB suporta apenas parte das funcionalidades do MongoDB mais comumente usadas em aplicativos típicos. No futuro, planejam alcançar a plena compatibilidade com os drivers do MongoDB e oferecer a possibilidade de usar o FerretDB como uma substituição transparente do MongoDB.
O MongoDB ocupa um nicho entre sistemas rápidos e escaláveis que operam dados em formato chave/valor e SGBDs relacionais, funcionais e convenientes para formar consultas. O MongoDB suporta o armazenamento de documentos em formato semelhante ao JSON, possui uma linguagem bastante flexível para formar consultas, pode criar índices para vários atributos armazenados, garante efetivamente o armazenamento de grandes objetos binários, suporta o registro de operações de alteração e adição de dados no BD, pode operar de acordo com a paradigma Map/Reduce e suporta replicação e construção de configurações tolerantes a falhas.
As mudanças no FerretDB 0.7 incluem:
- Implementada a comando de diagnóstico msg_explain, necessária para a plataforma Tigris.
- A equipe listCollections agora suporta filtros (opção 'filter').
- O uso do símbolo '-' é permitido nos nomes de bancos de dados.
- Aumentado o número de parâmetros suportados no comando find.
- No pacote wire, que implementa o protocolo 'wire' (protocolo para interação com MongoDB), foi adicionada a capacidade de verificação de documentos. A versão mínima do protocolo wire foi reduzida para 13, correspondente ao MongoDB 5.0.
Fonte: opennet.ru
