MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

O que há de novo no MongoDB 4.4

MongoDB 4.4 (atualmente em beta) está sendo lançado com a agenda principal de abordar sugestões de desenvolvedores da comunidade MongoDB. Esta versão foi lançada para aumentar a capacidade do banco de dados de operar em uma escala conveniente e confiável, portanto, desenvolvida sob o princípio de "engenharia orientada ao usuário" para permitir que ele forneça vários recursos aprimorados.

Recursos aprimorados no MongoDB 4.4

Leituras protegidas

O roteador de consulta MongoDB emite solicitações de leitura em paralelo a vários conjuntos de réplicas e os resultados de dados do nó mais eficiente são retornados, reduzindo assim a latência do aplicativo.

Chaves compartilhadas definíveis

Adicionar sufixos a uma chave de fragmentação após modificar a distribuição de dados durante o processo de dimensionamento.

Leituras espelhadas

Esse é um recurso que pré-aquece os caches de réplicas secundárias para reduzir as consequências das eleições primárias que podem resultar de manutenções planejadas ou interrupções.

Aprimoramentos de agregação

O aprimoramento de agregação tem vários aprimoramentos, incluindo definição e customização de expressões de agregação, combinação de dados de várias coleções de mongo em um único conjunto de resultados, manipulação de string e novos operadores no manuseio de array. A seguir estão algumas das melhorias:

$out

A operação $out foi aprimorada para gerar resultados de coleta para diferentes bancos de dados, em oposição a uma versão anterior que só poderia gerar uma coleção no mesmo banco de dados que a agressão.

$indexStats

$indexStats tem novas saídas de campo no MongoDB 4.4 que inclui campos:

construindo

É um sinalizador booleano, que indica o índice que está sendo construído.

especificação

Documento de especificação para cada índice

fragmento

O nome específico de um fragmento, se necessário

$merge

No MongoDB 4.4, o $merge foi aprimorado para gerar saída na mesma coleção que está sendo atualizada. Além disso, também é possível gerar uma coleção que aparece no pipeline, como $lookup.

Alterações de $planCacheStats

O estado $planCacheStats foi aprimorado para executar instâncias mongod e mongos no MongoDB 4.4. Além disso, $planCacheSTats possui um novo campo conhecido como campo host ao executar o mongo. PlanCache.list() é um wrapper para o estágio de agregação $planCacheStats.

Alterações de $collStats

$collStats foi feito para aceitar as estatísticas de execução de consulta durante a documentação de aumento. Além disso, a coleção verifica como campos com a seguinte descrição;

Nome do campo

Descrição

nãoTailble

Este é um inteiro de 64 bits que executa uma varredura de coleção em várias consultas que não usam cursor tailable.

total

Total é uma coleção de consultas realizadas varredura de coleção que não usa um cursor tailable.

$unionWith Aggregation

MongoDB adicionou $unionWith, um recurso que unifica conjuntos de coleções, ou seja, une resultados de um pipeline de várias coleções em um conjunto.

$unionCom Sintaxe

$unionWith tem a seguinte sintaxe geral:

cd{ $unionWith: { coll: "<collection>", pipeline: [ <stage1>, ... ] } }

$unionWith tem uma versão simplificada da sintaxe que é usada para incluir todos os documentos de uma coleção:

{ $unionWith: "<collection>" }  // include all documents from the specified collection

Agregação de $accumulator

$accumulator é outro novo recurso do MongoDB 4.4 que especifica um operador de acumulador personalizado. Acumuladores são operadores que não mudam de estado à medida que os documentos progridem ao longo do pipeline. Você pode usar um operador $accumulator para executar funções JavaScript que não são suportadas pelo MongoDB. $accumulator é encontrado nos três estágios de pipeline a seguir:

  1. Estágio do $bucket:apenas gera documentos que contenham pelo menos uma entrada de documento.
  2. $group stage:insere documentos por _id especificado e gera um documento para cada agrupamento específico
  3. Estágio $bucketAuto:classifica as entradas de documentos em números de grupos específicos conhecidos como buckets.

Sintaxe

A sintaxe para $accumulator é a seguinte:

{ $accumulator:{

init: <code>,

initArgs: <array expression>,    // Optional

accumulate: <code>,

accumulateArgs: <array expression>,

merge: <code>,

finalize: <code>, // Optional

lang: <string>

  }}

$function Agregação

A agregação de $function define uma função de agregação em JavaScript.

O operador $function pode ser usado para definir funções para usar comportamentos que não são suportados pelo MongoDB

A sintaxe para $função é a seguinte:

{

  $function: {

body: <code>,

args: <array expression>,

lang: "js"

  }

}

Outros recursos incluídos na versão mais recente do MongoDB 4.4 são:problemas de gravação, leituras globais, replicação de fluxo, sincronização inicial recuperável e fragmento de hash composto.

O que há de novo nos conjuntos de réplicas do MongoDB?

Sincronização inicial retomável

MongoDB 4.4 tem um recurso que tenta retomar um processo de sincronização interrompido.

Replicações de streaming

Nas versões anteriores do MongoDB, os secundários coletavam lotes de oplog por solicitação emitida para sincronização da fonte. Com o MongoDB 4.4, os processos de sincronização de fontes enviarão fluxos contínuos de entradas de oplog para os processos de sincronização secundários.

Diretório de reversão

No MongoDB 4.4 no rollback, o diretório de coleção recebe o nome de acordo com o UUID da coleção e o namespace da coleção.

Período mínimo de retenção de oplog

A partir do MongoDB 4.4, é possível especificar o menor número de horas que você deseja preservar uma entrada de oplog.

Alterações na reconfiguração do conjunto de réplicas

O MongoDB 4.4 tem um comando chamado replSetReconfig que permite a adição ou remoção de não mais de um votante por vez. Outro novo recurso no MongoDB 4.4 são as alterações no replSetGetConfig. O replSetConfig do MongoDB 4.4 pode estipular uma nova opção commitStatus.

Chaves de fragmentação com hash compostas

A partir do MongoDB 4.4, você pode fragmentar uma coleção usando uma chave de fragmentação composta com um único campo de hash. Antes da versão 4.4, o MongoDB não suportava chaves de fragmentação compostas com um campo de hash. A fragmentação com hash composta suporta recursos como fragmentação de zona, onde o prefixo (ou seja, o primeiro) campo ou campos sem hash suportam intervalos de zona, enquanto o campo com hash suporta mais distribuição dos dados fragmentados. Por exemplo, a operação a seguir fragmenta uma coleção em uma chave de fragmentação com hash composta compatível com fragmentação por zonas:

sh.shardCollection(

  "examples.compoundHashedCollection",

  { "fieldA" : 1, "fieldB" : 1, "fieldC" : "hashed" }

)

Melhorias gerais de clusters fragmentados

Verificações de consistência do índice

No MongoDB 4.4, o servidor de configuração essencialmente, por padrão, verifica irregularidades de arquivo sobre os fragmentos para coleções fragmentadas. O comando serverStatus retorna o campo shardedIndexConsistency para reportar irregularidades no arquivo quando executado no config server essencial. No MongoDB 4.4, você terá mais de uma operação removeShard antecipadamente. Em adaptações anteriores, removeShard retorna um erro caso outra operação removeShard seja antecipada.

Limite de chave de fragmentação

A partir do formulário 4.4, o MongoDB expele a restrição de 512 bytes na estimativa de chave de fragmento. Para MongoDB 4.2 e anteriores, uma chave de fragmentação não pode ultrapassar 512 bytes.

Atualização aprimorada do cache do catálogo

No MongoDB 4.4, caso haja um fragmento antigo, o cache do catálogo o revive para obter um fragmento que tenha o fragmento.

O MongoDB 4.4 tem o enableFinerGrainedCatalogCacheRefresh, que é um parâmetro para prejudicar a recuperação do cache do catálogo. enableFinerGrainedCatalogCacheRefresh se concentra no estilhaço e utiliza o comportamento de reativação do cache de catálogo mais experiente.

O parâmetro enableFinerGrainedCatalogCacheRefresh tem como padrão true.

Aprimoramentos de consulta e fragmentação no MongoDB 4.4

O MongoDB tem a tradição de escalar continuamente por meio da distribuição de dados em vários nós ou por meio de fragmentação. Uma chave de fragmentação contém um documento porque a chave de fragmentação de um determinado documento só pode ser alterada antes de uma atribuição e não após uma atribuição.

A evolução do MongoDB tornou um desafio recalibrar fragmentos de um conteúdo fornecido no MongoDB. Para habilitar o rebalanceamento, a versão 4.4 do MongoDB introduziu chaves de fragmentação refináveis ​​que permitem que chaves fragmentadas de documentos sejam modificadas.

As chaves de fragmento refináveis ​​permitem que uma alteração nas chaves de fragmento do documento seja alterada, permitindo que os documentos pertencentes a um fragmento alterem seus requisitos e, portanto, sejam reequilibrados dinamicamente.

O rebalanceamento pode ser feito de forma programática ou agressiva, dependendo de como o usuário o vê ao longo do tempo.

Outras melhorias

Agregação da coleção do MongoDB quando diferentes conjuntos de dados permitem consultas por meio de Uniões. Esse recurso permite o tratamento de dados de forma diferente e não como um ETL separado.

Os dados podem ser movidos e consolidados no servidor e passados ​​para o cliente, e o processo não requer várias viagens para gerenciar um resultado completo.

A função $ está entre as Agregações personalizadas que permitem a execução de agregações mais complexas no lado do servidor e aprimoram o processo de processamento de dados.

Vários procedimentos personalizados de versão aparecem no MongoDB 4.4 lançado. Os recursos personalizados foram associados ao aumento do desempenho da versão beta. No entanto, a função $ só é invocada quando outros recursos personalizados e embutidos não são suficientes no processo em andamento.

Linguagem e drivers de consulta do MongoDB

  1. As aparências de agregação personalizadas têm a função de proprietários estendendo o MongoDB como parte do pipeline de execução de agregação.
  2. O Union Aggregation tem uma análise e exploração mais aprofundadas por meio da combinação de dados de várias coleções no pipeline do Union Aggregation.
  3. Escreva preocupações e leitura global para gravar a durabilidade e configurar o isolamento de leitura do cluster.
  4. Drivers rápidos e New Rust
  5. Flexibilidade e desempenho escalonados
  6. A replicação de streaming e a indexação simultânea reduzem o atraso da réplica para fornecer dados aos usuários no MongoDB 4.4.
  7. Os resultados são retornados o mais rápido possível devido às leituras protegidas que minimizam as latências de p65 e p99 enviando uma solicitação de leitura para várias réplicas de dados no MongoDB.
  8. Reter a localidade de dados como chaves de hash composto são distribuídas uniformemente em vários estilhaços com sua chave de estilhaço.
  9. Nenhum sistema é centralizado ao definir e refinar a chave de fragmentação a qualquer momento.

Resiliência e Segurança

  1. A autenticação no MongoDB 4.4 beta é 50% mais rápida e é TLS 1.3.
  2. A conexão com o MongoDB Atlas requer AWS IASM Authentication, que simplifica a segurança nativa da nuvem ao reutilizar credenciais temporárias do Amazon IAM e regular existente.
  3.  Recupera nós por sincronização inicial recuperável que facilita o processo de expansão adicionando novas réplicas. Impacto reduzido das eleições primárias por leituras espelhadas aquecendo os caches das secundárias após manutenção planejada ou interrupção.

Conclusão

O MongoDB 4.4 liberou uma melhor experiência em um banco de dados não relacional baseado em documentos, melhorando os recursos de desempenho em seu sistema. As melhorias permitiram aplicativos analíticos, operacionais e transacionais mais rápidos com o MongoDB 4.4.

O MongoDB 4.4 também permitiu Flexibilidade ao definir a distribuição de dados conforme os requisitos de operação mudam. A melhoria feita no MongoDB 4.4 o tornou mais confiável em termos de latência, sofisticação e controle de segurança ao usar o Mongo Atlas, que é a nuvem.