Usando transações MongoDB em Node.js

Transações MongoDB

Introdução de negócios

No MongoDB, as operações em um único documento são atômicas. Essa atomicidade de documento único elimina a necessidade de vários documentos, já que você pode usar documentos e matrizes incorporados para capturar relacionamentos entre dados em uma única estrutura de documento, em vez de normalizar vários documentos e coleções.

Para casos em que são necessárias leituras e gravações atômicas em vários documentos (em uma única ou em várias coleções), o MongoDB oferece suporte a transações de vários documentos. Para transações distribuídas, as transações podem ser usadas em diversas operações, coleções, bancos de dados, documentos e fragmentos.

Transações e atomicidade

Transações distribuídas e transações multidocumentos são usadas como sinônimos desde o MongoDB 4.2. As transações distribuídas referem-se a transações de vários documentos em clusters fragmentados e conjuntos de réplicas. Transações de vários documentos (seja em clusters fragmentados ou conjuntos de réplicas) também são conhecidas como transações distribuídas a partir do MongoDB 4.2. Para casos em que são necessárias leituras e gravações atômicas em vários documentos (em uma única ou em várias coleções), o MongoDB oferece suporte a transações de vários documentos:

A partir da versão 4.0, o MongoDB oferece suporte a transações de vários documentos em conjuntos de réplicas.

Na versão 4.2, o MongoDB introduziu transações distribuídas, que adicionou suporte para transações de vários documentos em clusters fragmentados e se fundiu com o suporte existente para transações de vários documentos em conjuntos de réplicas.

Para usar transações em implantações do MongoDB 4.2 (conjuntos de réplicas e clusters fragmentados), os clientes devem usar os drivers do MongoDB atualizados para o MongoDB 4.2.

As transações com vários documentos são atômicas (ou seja, fornecem a proposição "nada"):

Quando uma transação é confirmada, todas as alterações de dados feitas na transação são salvas e visíveis fora da transação. Ou seja, uma transação não confirma algumas de suas alterações e reverte outras.

As alterações de dados feitas em uma transação não são visíveis fora da transação até que a transação seja confirmada.

No entanto, quando uma transação grava em vários fragmentos, nem todas as operações de leitura externas precisam aguardar que os resultados da transação confirmada fiquem visíveis nos fragmentos. Por exemplo, se uma transação for confirmada, a gravação 1 é visível no fragmento A, mas a gravação 2 ainda não está visível no fragmento B, uma leitura externa "local" em uma leitura pode ler o resultado da gravação 1, enquanto vê menos do que a gravação 2.

Quando uma transação é abortada, todas as alterações de dados feitas na transação são descartadas sem se tornarem visíveis. Por exemplo, se qualquer operação dentro de uma transação falhar, a transação será abortada e todas as alterações de dados feitas na transação serão descartadas sem se tornarem visíveis.

Preparação

O pré-requisito para o MongoDB usar transações é que a versão do MongoDB seja superior a 4.0, e o modo de trabalho do MongoDB precisa ser configurado como um conjunto de réplicas.Um único nó do MongoDB não é suficiente para suportar transações, porque as transações do MongoDB requerem pelo menos dois nós . Um deles é o nó mestre, responsável por tratar as solicitações dos clientes, e os demais são nós escravos, responsáveis ​​por replicar os dados no nó mestre. Os métodos de colocação comuns de cada nó do mongodb são: um mestre e um escravo, um mestre e vários escravos. O nó mestre registra todas as operações oplog nele, e o nó escravo pesquisa periodicamente o nó mestre para obter essas operações e, em seguida, executa essas operações em sua própria cópia de dados, de modo a garantir que os dados do nó escravo sejam consistentes com o nó mestre.

implantar Versão de compatibilidade de recursos
conjunto de réplicas 4,0
Cluster fragmentado 4.2


Link: https://juejin.cn/post/6844904089612992520
 

おすすめ

転載: blog.csdn.net/zdwzzu2006/article/details/132672857