E foi lançado o FerretDB 1 como a primeira versão estável. Confira as novidades dessa importante atualização.
O FerretDB (anteriormente MangoDB) foi fundado para se tornar o substituto de código aberto do MongoDB. O FerretDB é um proxy de código aberto, convertendo as consultas do protocolo MongoDB 5.0+ em SQL – usando o PostgreSQL como mecanismo de banco de dados.
FerretDB é implementado como um servidor proxy que traduz chamadas para o MongoDB em consultas SQL para o PostgreSQL, permitindo que você use o PostgreSQL como o armazenamento real.
A necessidade de migração pode surgir em conexão com a transição do MongoDB para uma licença SSPL não livre, que é baseada na licença AGPLv3, mas não é aberta, pois contém uma exigência discriminatória de fornecer sob a licença SSPL não apenas o aplicativo código em si, mas também os códigos-fonte de todos os componentes envolvidos no fornecimento do serviço em nuvem.
O principal público-alvo do FerretDB são os usuários que não usam os recursos avançados do MongoDB em seus aplicativos, mas desejam usar uma pilha de software completamente aberta.
No estágio atual de desenvolvimento, o FerretDB ainda suporta apenas uma parte dos recursos do MongoDB que são usados com mais frequência em aplicativos típicos.
No futuro, eles planejam obter suporte total ao driver para o MongoDB e fornecer a capacidade de usar o FerretDB como um substituto transparente para o MongoDB.
O MongoDB ocupa um nicho entre sistemas rápidos e escaláveis que operam em dados de chave/valor e DBMSs relacionais que são funcionais e fáceis de consultar.
O MongoDB suporta o armazenamento de documentos em um formato semelhante ao JSON, possui uma linguagem bastante flexível para gerar consultas, pode criar índices para vários atributos armazenados, fornece armazenamento eficiente de objetos binários grandes, suporta log de operações para alterar e adicionar dados ao banco de dados, pode funcionar de acordo com o paradigma Map/Reduce, suporta a replicação e a construção de configurações tolerantes a falhas.
Devido a diferenças na semântica das funções json do PostgreSQL e do MongoDB, houve uma discrepância no comportamento ao comparar e ordenar diferentes tipos.
Para resolver esse problema, uma amostra de dados redundantes agora é extraída do PostgreSQL e a filtragem do resultado é feita no lado do FerretDB, o que possibilitou repetir o comportamento do MongoDB na maioria das situações.
Dito isso, o lançamento da versão 1 do projeto foi anunciado recentemente.
Novidades do FerretDB 1
Nesta nova versão que se apresenta, destaca-se que foram implementados os comandos createIndexes e dropIndexes para criar e colocar um ou mais índices em uma coleção, além do comando getMore estar sendo implementado para mostrar uma nova parcela do resultado obtido de a execução de comandos que retornam um cursor, como localizar e adicionar.
Outra das mudanças que se destacam na nova versão foi adicionado o suporte ao operador de agregação $sum para calcular a soma dos valores do grupo, bem como adicionado suporte aos operadores $limit e $skip para limitar o número e pular documentos em adicionar e adicionado suporte para o operador $count para contar documentos ao adicionar.
Além disso, também é observado que o suporte para o operador $unwind foi adicionado para analisar os campos do array em documentos recebidos e formar uma lista com um documento separado para cada elemento do array e também foi adicionado suporte parcial para os comandos collStats, dbStats e dataSize para obter estatísticas de coleta e banco de dados e o tamanho dos dados.
Das outras mudanças que se destacam nesta nova versão:
- Iteradores agora são usados para `sort`, `limit`, `skip` e `projection`
- dependências de colisão
- Aprimoramentos de rastreamento de recursos
- Adicionados testes para o argumento `skip` de `find` e `count`
- Feche o iterador corretamente
- Melhorias na inicialização de grandes números em dados de teste
Para saber mais sobre essa versão do FerretDB, acesse a nota de lançamento.
Como instalar o e experimentar o FerretDB
A melhor maneira de testar o FerretDB é modificá-lo e executá-lo no host (Linux, macOS ou Windows) com PostgreSQL e outras dependências em execução nos contêineres do Docker por meio do Docker Compose.
No Linux, o docker deve ser instalado no host. No macOS e no Windows, deve-se usar o Docker Desktop, enquanto no Windows, ele deve ser configurado para usar o WSL 2 sem nenhuma distribuição; todos os comandos devem ser executados no host.