Este tópico descreve os principais novos recursos do MongoDB 5.0.
Informações de contexto
O MongoDB 5.0 marca o início de um novo ciclo de lançamentos para entregar novos recursos aos usuários com maior rapidez. Por exemplo, recursos como a Versioned API e o live resharding simplificam futuras atualizações de banco de dados e atendem às necessidades empresariais em evolução. A plataforma nativa de dados de séries temporais permite que o MongoDB suporte uma gama mais ampla de workloads e casos de uso, enquanto o novo MongoDB Shell aprimora a experiência do usuário.
Plataforma nativa de séries temporais
O MongoDB 5.0 expande sua plataforma de dados de aplicações de uso geral para simplificar o tratamento de dados de séries temporais, ampliando seus casos de uso em áreas como IoT, análises financeiras e logística.
As coleções de séries temporais do MongoDB armazenam automaticamente dados de séries temporais em um formato altamente otimizado e compactado, reduzindo o tamanho de armazenamento e a E/S para melhorar o desempenho e a escala. Isso encurta o ciclo de desenvolvimento e permite criar rapidamente modelos otimizados para aplicações de séries temporais.
Exemplo de comando para criar uma coleção de séries temporais:
db.createCollection("collection_name",{ timeseries: { timeField: "timestamp" } } )
O MongoDB ajusta perfeitamente a frequência de ingestão e lida automaticamente com medições fora de ordem com base em partições de tempo geradas dinamicamente. O mais recente MongoDB Connector for Apache Kafka oferece suporte nativo para séries temporais. É possível criar automaticamente uma coleção de séries temporais diretamente a partir de mensagens de tópicos do Kafka, o que permite processar e agregar dados durante a ingestão, antes de gravá-los em uma coleção de séries temporais do MongoDB.
Uma coleção de séries temporais cria automaticamente um índice clusterizado ordenado por tempo, o que reduz a latência de consultas. A API de consulta do MongoDB também foi estendida com funções de janela, permitindo executar consultas analíticas, como médias móveis e somas cumulativas. Em sistemas de bancos de dados relacionais, essas funções são frequentemente chamadas de funções analíticas SQL e suportam janelas definidas por linhas (por exemplo, uma média móvel de três linhas). O MongoDB vai além ao adicionar funções poderosas de séries temporais, como média móvel exponencial (EMA), derivadas e integrais, que suportam janelas definidas por tempo (por exemplo, uma média móvel de 15 minutos). Use funções de janela para consultar tanto coleções de séries temporais quanto coleções regulares do MongoDB, fornecendo novas capacidades analíticas para vários tipos de aplicação. Além disso, o MongoDB 5.0 fornece novos operadores de data, incluindo $dateAdd, $dateSubtract, $dateDiff e $dateTrunc, para agregar e consultar dados em janelas de tempo personalizadas.
É possível localizar uma coleção de séries temporais no mesmo banco de dados que uma coleção regular do MongoDB. Não é necessário escolher um banco de dados especializado em séries temporais, incapaz de atender a qualquer outro tipo de aplicação, ou implementar integrações complexas para misturar séries temporais com outros dados. Ao fornecer uma plataforma unificada, o MongoDB permite criar aplicações de séries temporais eficientes e de alto desempenho, suportando simultaneamente outros casos de uso ou workloads. Isso elimina o custo e a complexidade de integrar e operar múltiplos bancos de dados distintos.
Live resharding
| Versão do banco de dados | Recursos | Método de implementação |
| Antes do MongoDB 5.0 | Antes do MongoDB 5.0, o resharding era um processo manual e complexo. |
|
| MongoDB 5.0 e posterior |
|
reshardCollectionAltere a shard key de uma coleção sob demanda conforme seus negócios crescem, sem tempo de inatividade do banco de dados ou migrações de dados complexas. Basta executar o comando no MongoDB Shell, selecione o banco de dados e a coleção para fazer o resharding e especifique a nova shard key.
Nota
|
Versioned API
-
Compatibilidade de aplicações
A partir do MongoDB 5.0, a Versioned API define um conjunto estável dos comandos e parâmetros mais comuns, que permanecem inalterados tanto nos Major Releases anuais quanto nos Rapid Releases trimestrais. Ao desacoplar os ciclos de vida da aplicação e do banco de dados, você pode fixar seu driver em uma versão específica da API do MongoDB. Isso garante que sua aplicação possa funcionar por anos sem alterações de código, mesmo durante atualizações e melhorias do banco de dados.
-
Flexibilidade para adicionar novos recursos e melhorias
A Versioned API permite que o MongoDB adicione flexivelmente novos recursos e melhorias ao banco de dados em cada lançamento, mantendo a compatibilidade com versões anteriores. Quando for necessário alterar a API, introduza uma nova versão da API para executar no mesmo servidor junto com as APIs versionadas existentes. À medida que o MongoDB acelera seu cronograma de lançamentos, a Versioned API permite adotar os recursos mais recentes do MongoDB de forma mais rápida e fácil.
Write Concern padrão definido como nível Majority
A partir do MongoDB 5.0, o nível padrão de
write concern
é
majority
. Uma operação de gravação só é reconhecida como bem-sucedida após ser aplicada ao nó primário e persistida no journal da maioria dos nós secundários, fornecendo garantias mais fortes de durabilidade de dados prontamente para uso.
O
write concern
é totalmente ajustável. Personalize o
write concern
para equilibrar o desempenho da aplicação e a durabilidade dos dados.
Otimizações de gerenciamento de conexões
Por padrão, cada conexão de cliente corresponde a um thread no servidor MongoDB de backend quando você configura net.serviceExecutor como synchronous. Criar, alternar e destruir threads são operações que consomem muitos recursos. Quando o número de conexões é muito alto, os threads consomem recursos significativos do servidor.
Uma tempestade de conexões é um número elevado de conexões ou uma taxa descontrolada de criação de conexões. Esse problema pode ter várias causas e geralmente ocorre quando o desempenho do serviço já está degradado.
Para lidar com essas situações, o MongoDB 5.0 introduz as seguintes medidas:
Limita o número de conexões que os drivers podem criar de uma só vez, oferecendo uma maneira simples e eficaz de evitar sobrecarga do servidor de banco de dados.
Reduz a frequência com que os drivers verificam o pool de conexões, dando tempo para que nós de servidor sem resposta ou sobrecarregados se recuperem.
Os direcionam workloads para servidores mais rápidos com pools de conexões mais saudáveis, em vez de selecionar aleatoriamente entre os servidores disponíveis.
Essas medidas, combinadas com melhorias na camada de roteamento de consultas do mongos de versões anteriores, aprimoram ainda mais a capacidade do MongoDB de lidar com cargas de alta concorrência.
Consultas snapshot de longa duração
Consultas snapshot de longa duração aumentam a versatilidade e a resiliência da aplicação. Execute consultas com duração padrão de 5 minutos (ou ajuste para um comprimento personalizado) mantendo o isolamento de snapshot consistente com um banco de dados transacional ativo. Também é possível realizar consultas snapshot em um nó secundário, o que permite executar diferentes workloads em um único cluster e escaloná-las horizontalmente entre diferentes shards.
O MongoDB implementa consultas snapshot de longa duração por meio de um recurso no mecanismo de armazenamento subjacente chamado Durable History, introduzido no MongoDB 4.4. O Durable History armazena um snapshot de todos os valores de campo que foram alterados desde o início de uma consulta. Ao usar o Durable History, as consultas mantêm o isolamento de snapshot mesmo quando os dados mudam. O Durable History também ajuda a reduzir a pressão sobre o cache do mecanismo de armazenamento, permitindo maior throughput de consultas em cenários com altas cargas de gravação.
Novo MongoDB Shell
Para oferecer uma melhor experiência ao usuário, o MongoDB 5.0 introduz o MongoDB Shell (mongosh) completamente redesenhado. Ele oferece uma experiência moderna de linha de comando, recursos de usabilidade aprimorados e um ambiente de script poderoso. O novo MongoDB Shell é agora o shell padrão para a plataforma MongoDB. Inclui recursos como realce de sintaxe, autocompletar inteligente, ajuda contextual e mensagens de erro úteis para uma experiência intuitiva e interativa.
-
Experiência do usuário aprimorada
-
Escreva consultas e agregações com mais facilidade e obtenha resultados mais legíveis.
O novo MongoDB Shell suporta realce de sintaxe, facilitando a distinção entre campos, valores e tipos de dados para evitar erros de sintaxe. Se ocorrer um erro, o novo MongoDB Shell identifica o problema e sugere uma solução.
-
Insira consultas e comandos mais rapidamente.
O novo MongoDB Shell suporta autocompletar inteligente. Ele fornece sugestões de métodos, comandos e expressões MQL com base na versão do MongoDB que você está usando.
Exemplo: Se você não conseguir lembrar a sintaxe de um comando, consulte-a rapidamente diretamente no MongoDB Shell.
secondary [direct: secondary] sample_mflix → db.movies.createIndex db.movies.createIndexes db.movies.createIndex secondary [direct: secondary] sample_mflix → db.movies.createIndex.help() db.coll.createIndex({ category: 1 }, { name: 'index-1' }): Creates one index on a collection For more information on usage: https://docs.mongodb.com/manual/reference/method/db.collection.createIndex secondary [direct: secondary] sample_mflix →
-
-
Ambiente de script avançado
O ambiente de script do novo MongoDB Shell é construído no REPL (Read-Eval-Print Loop) do Node.js. Use todas as APIs do Node.js e quaisquer módulos do npm em seus scripts. Carregue e execute scripts do sistema de arquivos e continue usando
load()eeval()para executar scripts, assim como no shell legado. -
Extensibilidade e plugins
O novo MongoDB Shell é altamente extensível, permitindo usar todos os recursos do MongoDB para melhorar sua produtividade.
No novo MongoDB Shell, instale plugins Snippets. O shell pode carregar automaticamente Snippets e usar todas as APIs do Node.js e pacotes npm. O MongoDB também mantém um repositório de Snippets com recursos úteis, como um plugin para analisar o esquema de uma coleção especificada. Configure o MongoDB Shell para usar plugins de sua escolha.
NotaPlugins são atualmente um recurso experimental no MongoDB Shell.
PyMongoArrow e ciência de dados
Com a nova API PyMongoArrow, use Python para executar análises complexas e machine learning no MongoDB. O PyMongoArrow converte rapidamente resultados simples de consultas do MongoDB em formatos de dados populares, como Pandas DataFrame ou array NumPy, para agilizar seus fluxos de trabalho de ciência de dados.
Melhorias na validação de esquema
A validação de esquema é uma maneira de impor controles de governança de dados no MongoDB. No MongoDB 5.0, a validação de esquema é mais simples e amigável. Quando uma operação falha na validação, o MongoDB gera uma mensagem de erro descritiva. Essa mensagem ajuda a entender qual documento não estava em conformidade com as regras do validador da coleção e por quê, permitindo identificar e corrigir rapidamente o código que viola as regras.
Criações de índice retomáveis
No MongoDB 5.0, uma criação de índice em andamento retoma automaticamente de onde parou após a reinicialização de um nó. Isso reduz o impacto nos negócios de ações de manutenção planejada. Por exemplo, ao reiniciar ou atualizar um nó de banco de dados, não é mais necessário se preocupar com a falha de uma criação de índice em andamento em uma coleção grande.
Alterações no modelo de lançamento
Como o MongoDB suporta muitas versões e plataformas, cada lançamento deve ser validado em mais de 20 plataformas suportadas. Esse extenso trabalho de validação retardava a entrega de novos recursos. Portanto, a partir do MongoDB 5.0, os lançamentos são divididos em Major Releases e Rapid Releases. Os Rapid Releases estão disponíveis para download para fins de desenvolvimento e teste, mas não são recomendados para ambientes de produção.
Mais recursos
Para obter mais informações sobre os recursos do MongoDB 5.0, consulte Notas de lançamento do MongoDB 5.0.