Foi lançada a versão do banco de dados orientado a documentos MongoDB 5.0, que ocupa um espaço entre sistemas rápidos e escaláveis que operam com dados em formato chave/valor e bancos de dados relacionais, que são funcionais e fáceis de usar para formar consultas. O código do MongoDB é escrito em C++ e é distribuído sob a licença SSPL, que é baseada na licença AGPLv3, mas não é aberta, pois contém uma exigência discriminatória de que a entrega sob a licença SSPL se aplique não apenas ao código do próprio aplicativo, mas também ao código-fonte de todos os componentes envolvidos na prestação de serviços em nuvem.
O MongoDB suporta o armazenamento de documentos em um formato semelhante ao JSON, possui uma linguagem bastante flexível para a formação de consultas, pode criar índices para vários atributos armazenados, fornece eficientemente o armazenamento de grandes objetos binários, suporta o registro de operações de modificação e adição de dados ao banco de dados, pode operar de acordo com a paradigma Map/Reduce, e suporta replicação e a construção de configurações tolerantes a falhas.
O MongoDB possui ferramentas integradas para garantir o particionamento (distribuição do conjunto de dados entre servidores com base em uma chave específica), que, juntamente com a replicação, permitem a construção de um cluster de armazenamento horizontalmente escalável, no qual não há um único ponto de falha (a falha de qualquer nó não impacta o funcionamento do banco de dados), suportando recuperação automática após falhas e redistribuição de carga de um nó que falhou. A expansão do cluster ou a transformação de um servidor em cluster é realizada sem interromper o funcionamento do banco de dados, simplesmente adicionando novas máquinas.
Características do novo lançamento:
- Coleções para dados em forma de séries temporais foram adicionadas, otimizadas para armazenar fatias de valores de parâmetros gravados em intervalos de tempo específicos (tempo e um conjunto de valores correspondentes a esse tempo). A necessidade de armazenar esses dados surge em sistemas de monitoramento, plataformas financeiras e sistemas de pesquisa de estados de sensores. O trabalho com dados de séries temporais é realizado da mesma forma que com coleções normais de documentos, mas os índices e o método de armazenamento são otimizados com base no tempo, o que permite reduzir significativamente o uso de espaço em disco, diminuir as latências durante a execução de consultas e possibilitar a análise de dados em tempo real.
O MongoDB considera essas coleções como visões não materializadas disponíveis para gravação, criadas a partir de coleções internas e que agrupam automaticamente os dados de séries temporais em um formato de armazenamento otimizado ao serem inseridos. Cada registro vinculado ao tempo é tratado como um documento separado durante a consulta. Os dados são automaticamente ordenados e indexados por tempo (não há necessidade de criar explicitamente índices de tempo).
- Adicionada a suporte a operadores de janela (funções analíticas), permitindo executar ações sobre um determinado conjunto de documentos em uma coleção. Ao contrário das funções de agregação, as funções de janela não compactam o conjunto agrupado, mas realizam agregação com base no conteúdo da "janela", que inclui um ou mais documentos do conjunto de resultados. Para manipulação de um subconjunto de documentos, foi proposta uma nova etapa $setWindowFields, que permite, por exemplo, determinar diferenças entre dois documentos em uma coleção, calcular classificações de vendas e analisar informações em séries temporais complexas.
- Adicionada a suporte à versionamento de API, permitindo vincular o aplicativo a um estado específico da API e eliminar riscos associados à possível quebra de compatibilidade ao migrar para novas versões do SGBD. O versionamento da API separa o ciclo de vida do aplicativo do ciclo de vida do SGBD, permitindo que os desenvolvedores façam alterações no aplicativo quando surgirem novas necessidades, em vez de somente quando ocorrer a migração para uma nova versão do SGBD.
- Adicionada a suporte ao mecanismo de Live Resharding, que permite alterar em tempo real as chaves de segmentação utilizadas (shard key) sem interromper o SGBD.
- Expandido as capacidades de criptografia de campos do lado do cliente (Client-Side Field Level Encryption). Agora é possível reconfigurar filtros de auditoria e rotação de certificados x509 sem interromper o funcionamento do SGBD. Adicionada a suporte à configuração de conjuntos de cifras para TLS 1.3.
- Proposta uma nova interface de linha de comando do MongoDB Shell (mongosh), que se desenvolve como um projeto separado, escrita em JavaScript utilizando a plataforma Node.js e distribuída sob a licença Apache 2.0. O MongoDB Shell permite conectar-se ao SGBD, alterar configurações e enviar consultas. É suportada a completude inteligente de entrada para métodos, comandos e expressões MQL, destacando a sintaxe, sugestões contextuais, análise de mensagens de erro e a possibilidade de expandir a funcionalidade através de extensões. A antiga interface CLI "mongo" foi descontinuada e será removida na próxima versão.

- Novos operadores foram adicionados: $count, $dateAdd, $dateDiff, $dateSubtract, $sampleRate e $rand.
- Os índices estão sendo usados ao empregar os operadores $eq, $lt, $lte, $gt e $gte dentro da expressão $expr.
- Nas funções aggregate, find, findAndModify, update, delete e nos métodos db.collection.aggregate(), db.collection.findAndModify(), db.collection.update() e db.collection.remove(), foi implementado o suporte à opção "let" para definir uma lista de variáveis, tornando os comandos mais legíveis ao separar as variáveis do texto da consulta.
- As operações find, count, distinct, aggregate, mapReduce, listCollections e listIndexes não estão mais bloqueadas se uma operação que impõe um bloqueio exclusivo na coleção de documentos estiver sendo executada simultaneamente.
- No âmbito da iniciativa para eliminar termos politicamente incorretos, a equipe isMaster e o método db.isMaster() foram renomeados para hello e db.hello().
- Foi alterado o esquema de numeração de lançamentos e implementado um cronograma previsível para a formação de lançamentos. Uma versão significativa será lançada uma vez por ano (5.0, 6.0, 7.0), lançamentos intermediários com novas funcionalidades a cada três meses (5.1, 5.2, 5.3), e atualizações corretivas para correção de erros e vulnerabilidades, conforme necessário (5.1.1, 5.1.2, 5.1.3). As funcionalidades para o próximo lançamento significativo serão formadas nos lançamentos intermediários, ou seja, nas versões MongoDB 5.1, 5.2 e 5.3, novas funcionalidades para o lançamento MongoDB 6.0 serão formadas.
Fonte: opennet.ru

