E foi lançado o FerretDB 0.3 com manipulação de zero negativo aprimorada, e muito mais. Confira as novidades dessa 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 0.3 do projeto foi anunciado recentemente.
Novidades do FerretDB 0.3
A versão 0.3 do FerretDB apresenta o comando findAndModify, que modifica um documento, mas retorna sua versão original, bem como operadores de atualização de campo, entre outras coisas.
Outras mudanças que se destacam é que a manipulação de zero negativo foi aprimorada, assim como a adição de suporte para ordenação de tipos de dados escalares.
Também dignos de nota são os novos operadores de atualização de campo implementados: $inc e $set, além de suporte para ordenar tipos de dados escalares.
Por outro lado, foi mencionado que várias melhorias foram feitas para o manuseio das versões do PostgreSQL e MongoDB.
Além disso, também destaca que o teste incorreto para o operador $mod foi corrigido, o teste é emitido em todos os sistemas operacionais ARM64 e foi adicionada mais visibilidade para os níveis de log de erros do roteador/proxy.
Das outras mudanças que se destacam nesta nova versão:
- Atualizar CODEOWNERS
- Sincronize controladores fictícios e pg
- Renomeie OP_*constants para OpCode*constants
- Melhore gopkg.in/yaml.v3
- Coloque gopkg.in/yaml.v3 em ferramentas
- Faça o caminho do tipo
- Pânico em valores de pedidos inesperados
- Adicione alguns comentários a funções e variáveis
- Remover código morto
Para saber mais sobre essa versão do FerretDB, acesse a nota de lançamento.