MangoDB é modernizado e agora muda para FerretDB

Faz poucos dias foi anunciada a notícia do lançamento do projeto FerretDB, (anteriormente MangoDB), que permite substituir o DBMS orientado a documentos do MongoDB pelo PostgreSQL sem fazer alterações no código do aplicativo.

O FerretDB é implementado como um servidor proxy que traduz chamadas para o MongoDB em consultas SQL ao PostgreSQL, permitindo que você use o PostgreSQL como armazenamento real.

O FerretDB (anteriormente MangoDB) foi fundado para se tornar o substituto de fato de código aberto para o MongoDB. O FerretDB é um proxy de código aberto que converte as consultas do protocolo Wire MongoDB em SQL, usando o PostgreSQL como mecanismo de banco de dados.

A necessidade de migração pode surgir devido à transição do MongoDB para uma licença SSPL não livre, que é baseada na licença AGPLv3, mas não é de código aberto, pois contém um requisito discriminatório de fornecer sob a licença SSPL não apenas o aplicativo do próprio código, mas também os códigos-fonte de todos os componentes envolvidos na prestação do serviço em nuvem.

O público-alvo do FerretDB são usuários que não usam os recursos avançados do MongoDB em seus aplicativos, mas querem usar uma pilha de software completamente aberta.

No atual estágio de desenvolvimento, o FerretDB ele ainda suporta apenas parte dos recursos do MongoDB que são mais frequentemente usados ​​em aplicações típicas. 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.

Lembre-se que MongoDB ocupa um nicho entre sistemas rápidos e escaláveis que operam sobre dados em formato chave/valor, e SGBD relacional, funcional e conveniente na geração de consultas.

A maioria dos usuários do MongoDB não precisa de muitos dos recursos avançados que o MongoDB oferece; no entanto, eles precisam de uma solução de banco de dados de código aberto fácil de usar. Reconhecendo isso, o FerretDB está aqui para preencher essa lacuna.

MongoDB suporta o armazenamento de documentos em um formato semelhante ao JSON, tem uma linguagem bastante flexível para gerar consultas, pode criar índices para vários atributos armazenados, fornece armazenamento de objetos grandes binários eficiente, suporte ao registro de operações para alterar e adicionar dados à base 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.

Na versão do FerretDB 0.1.0 nota-se que redesenhado completamente a maneira como os dados do PostgreSQL são recuperados. Anteriormente, para cada solicitação recebida do MongoDB, era gerada uma consulta SQL para PostgreSQL, usando funções para trabalhar com o formato JSON e filtrando os resultados no lado do PostgreSQL.

Devido às diferenças na semântica das funções json PostgreSQL e MongoDB, houve uma discrepância no comportamento ao comparar e ordenar diferentes tipos. Para resolver este 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.

O preço do aumento da compatibilidade era uma penalidade de desempenho, que em versões futuras deverá ser compensado pela filtragem seletiva no lado do FerretDB de apenas consultas para as quais há uma divergência de comportamento.

Por exemplo, a consulta "db.collection.find({_id: 'some-id-value'})" pode ser totalmente processada no PostgreSQL. O principal objetivo do projeto nesta fase de desenvolvimento é alcançar a compatibilidade com o MongoDB, e o desempenho ainda é relegado a segundo plano.

Das mudanças funcionais na nova versão, há suporte para todos os operadores bit a bit, o operador de comparação "$e", bem como os operadores "$elemMatch" e "$bitsAllClear".

Finalmente para aqueles interessados ​​em saber mais sobre isso, eles devem saber que o código está escrito em Go e é distribuído sob a licença Apache 2.0 e você pode verificar seu código no link a seguir.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.