O MongoDB 7.0 torna vários recursos de prévia geralmente disponíveis e introduz novas funcionalidades para sharding, criptografia e agregação. Esta página apresenta os principais destaques para usuários do ApsaraDB for MongoDB.
Para consultar o changelog completo da versão upstream, acesse Release Notes for MongoDB 7.0.
Novidades em resumo
|
Categoria |
Recurso ou alteração |
|
Novos recursos |
Queryable Encryption (GA) |
|
Verificação de consistência de metadados de shard ( |
|
|
Análise de chave de shard ( |
|
|
AutoMerger |
|
|
Sharding |
Parâmetro |
|
Segurança |
Key Management Interoperability Protocol (KMIP) V1.0 e V1.1; OpenSSL 3.0 e OpenSSL FIPS |
|
Agregação |
Operadores bit a bit; |
|
Séries temporais |
Restrições de DELETE flexibilizadas; suporte a COMPACT |
|
Outros |
Índices wildcard compostos; |
Queryable Encryption
A Queryable Encryption, disponível como prévia no MongoDB 6.0, agora tem disponibilidade geral no MongoDB 7.0.
Para obter detalhes sobre a implementação, consulte Queryable Encryption.
Verificação de consistência de metadados de shard
Inconsistências de metadados entre shards podem causar erros sutis de roteamento difíceis de diagnosticar posteriormente. O comando checkMetadataConsistency, adicionado no MongoDB 7.0, permite detectar proativamente essas inconsistências antes que afetem o tráfego de produção.
Execute o comando no nível do banco de dados:
// Check metadata consistency for the current database
db.runCommand({
checkMetadataConsistency: 1,
checkIndexes: true
})
Use também os helpers do mongosh para verificar em diferentes escopos:
// Check the current database
db.checkMetadataConsistency()
// Check a specific collection
db.collection.checkMetadataConsistency()
// Check all databases in the sharded cluster
sh.checkMetadataConsistency()
Inclua esta verificação em sua rotina de operações e manutenção (O&M) para identificar inconsistências antecipadamente. Para a referência completa do comando, consulte checkMetadataConsistency.
Análise de chave de shard (analyzeShardKey)
Escolher uma chave de shard inadequada resulta em hotspots, distribuição desigual de dados e degradação no desempenho de consultas. Corrigir esses problemas após o sharding da coleção é custoso. O comando analyzeShardKey avalia uma chave candidata com base em consultas reais amostradas e permite tomar uma decisão fundamentada antes da implementação definitiva.
db.adminCommand({
analyzeShardKey: "<db>.<collection>",
key: <shardKey>,
keyCharacteristics: <bool>,
readWriteDistribution: <bool>,
sampleRate: <double>,
sampleSize: <int>
})
|
Parâmetro |
Descrição |
|
|
Namespace da coleção a ser analisada, no formato |
|
|
Chave de shard candidata para avaliação. |
|
|
Se definido como |
|
|
Quando |
|
|
Fração de documentos a serem amostrados, representada por um valor entre 0 e 1. |
|
|
Quantidade total de documentos para amostragem. |
Este comando não bloqueia leituras ou gravações na coleção. Para minimizar o impacto nas cargas de trabalho de produção, use a preferência de leitura secondary ou secondaryPreferred. Em um cluster com sharding, o mongos define automaticamente a preferência de leitura como secondaryPreferred.
Para configurar a amostragem de consultas antes de executar a análise, consulte configureQueryAnalyzer. Para a referência completa do comando, acesse analyzeShardKey.
AutoMerger
À medida que um cluster com sharding evolui — por meio de migração de dados, exclusões de intervalos e gravações contínuas — o número de chunks pode crescer além do necessário. Isso causa distribuição desigual de dados e lentidão no balancer. O AutoMerger, introduzido no MongoDB 7.0, resolve esse problema ao mesclar chunks automaticamente quando há desequilíbrio na distribuição de dados ou índices, excesso de chunks ou durante migrações de dados.
O AutoMerger vem ativado por padrão no MongoDB 7.0. O comando configureCollectionBalancing, presente em versões anteriores para definir configurações do balancer em coleções com sharding, também oferece suporte ao AutoMerger:
db.adminCommand({
configureCollectionBalancing: "<db>.<collection>",
chunkSize: <num>,
defragmentCollection: <bool>,
enableAutoMerger: <bool>
})
Para acionar manualmente a mesclagem de todos os chunks mescláveis em um shard específico, execute:
db.adminCommand({ mergeAllChunksOnShard: "db.coll", shard: "Shard0" })
Otimizações de sharding
Além do AutoMerger, o MongoDB 7.0 traz as seguintes alterações relacionadas a sharding:
Parâmetro
rangeDeleterHighPriority: Determina se a exclusão de documentos órfãos tem prioridade sobre as operações de exclusão da aplicação. O valor padrão éfalse, o que significa que as operações da aplicação têm precedência.Remoção de
operationsBlockedByRefresh: O documentooperationsBlockedByRefreshfoi removido doserverStatus. Os contadores incrementavam nos nósmongospara cada operação que usava informações de roteamento de coleção, mesmo sem atualização do cache de catálogo, tornando as métricas enganosas.Métricas de resharding: Novas métricas de monitoramento foram adicionadas para operações de resharding.
Comando
addShard: A opçãomaxSizedeixou de ser suportada.Validação de tamanho de chunk: Ao ajustar o tamanho do chunk na coleção
config.settings, o MongoDB agora valida se o valor está dentro do intervalo suportado, de 1 a 1.024.Atualizações na política do balancer (a partir do MongoDB 6.0.3): O balancer passou a distribuir dados com base no volume, e não mais na contagem de chunks. O particionamento ocorre por intervalo em vez de por chunk, e a divisão automática acontece apenas durante a migração de dados entre shards.
Segurança
Suporte a KMIP: As versões V1.0 e V1.1 do Key Management Interoperability Protocol (KMIP) agora são suportadas para gerenciamento externo de chaves.
OpenSSL: O MongoDB 7.0 agora suporta OpenSSL 3.0 e OpenSSL FIPS.
Agregação
O MongoDB 7.0 adiciona seis novos operadores de agregação.
Operadores bit a bit
Quatro operadores executam aritmética bit a bit em valores int e long:
|
Operador |
Descrição |
|
|
AND bit a bit |
|
|
NOT bit a bit (inversão bit a bit) |
|
|
OR bit a bit |
|
|
XOR bit a bit |
Operadores de percentil
Dois operadores calculam percentis estatísticos em valores agrupados:
|
Operador |
Descrição |
|
|
Retorna o 50º percentil (mediana aproximada). |
|
|
Retorna um percentil especificado. |
Exemplo — cálculo da mediana e do 90º percentil por categoria:
db.sales.aggregate([
{
$group: {
_id: "$category",
medianRevenue: { $median: { input: "$revenue", method: "approximate" } },
p90Revenue: { $percentile: { input: "$revenue", p: [0.90], method: "approximate" } }
}
}
])
Coleções de séries temporais
Restrições de DELETE flexibilizadas: Use o comando
DELETEem coleções de séries temporais sem a maioria das restrições aplicáveis em versões anteriores. A única limitação restante é queDELETEnão pode ser executado dentro de uma transação multidocumento.Suporte a COMPACT: O comando
COMPACTagora funciona com coleções de séries temporais.
Outras alterações
Campos no log de consultas lentas: Novos campos, incluindo
catalogCacheIndexLookupDurationMillis, foram adicionados às entradas de log de consultas lentas. Consulte Logging slow operations.Concorrência automática do mecanismo de armazenamento: O MongoDB ajusta automaticamente a concorrência de transações do mecanismo WiredTiger. Antes do ajuste automático, o valor padrão era de 128 tickets. Veja Concurrent storage engine transactions (read and write tickets).
Métricas de amostragem de consultas em
currentOp: Campos relacionados à amostragem de consultas agora constam na saída docurrentOp. Acesse currentOp metrics.Índices wildcard compostos: O MongoDB 7.0 suporta índices wildcard compostos, que combinam um campo wildcard com um ou mais campos padrão. Saiba mais em Compound wildcard indexes.
Operador
$changeStreamSplitLargeEvent: Divide eventos de change stream que excedem o limite de 16 MB para documentos BSON em múltiplos eventos menores. Detalhes em Large change stream events.Melhorias no motor Slot-Based Execution (SBE): O mecanismo de execução de consultas SBE recebeu otimizações para melhorar o desempenho das consultas.
Métricas de migração de chunks: Novas estatísticas de sharding para migrações de chunks foram incluídas. Confira em New sharding statistics for chunk migrations.
Variável de sistema
USER_ROLES: Retorna as funções atribuídas ao usuário atual.Novos parâmetros globais: Foram adicionados parâmetros para
analyzeShardKey,balancerequeryAnalyzers.Alterações na saída do
serverStatus: Campos adicionais foram incorporados à saída doserverStatus. Consulte serverStatus output change.