O MongoDB é de longe a escolha mais popular no mundo NoSQL, pois sua arquitetura distribuída permite mais escalabilidade e seu modelo de dados de documentos oferece boa flexibilidade aos desenvolvedores. Quase todos os anos, a versão principal do MongoDB é lançada e 2018 não é exceção. O MongoDB 4.0 foi lançado em julho de 2018, seguido por alguns outros lançamentos menores também. Com o MongoDB versão 4.0, transações de vários documentos e conversões de tipo são suportadas agora. O MongoDB introduziu uma nova ferramenta chamada MongoDB charts (beta) e adicionou suporte ao construtor de pipeline de agregação na bússola do MongoDB também em 2018. Neste artigo, veremos alguns recursos interessantes do MongoDB que foram lançados em 2018.
Transações ACID de vários documentos
Esse foi o recurso mais esperado no MongoDB. A partir da versão 4.0, as transações ácidas de vários documentos contra conjuntos de réplicas estão prontas para produção e suportadas pelo MongoDB. Todas as transações do MongoDB agora estendem as propriedades ACID que garantem a integridade dos dados. É muito fácil adicionar transações de ácido em qualquer aplicativo que precise delas e elas não afetam outras operações que não as exigem. Com suporte para transações ácidas de vários documentos, qualquer operação de gravação realizada dentro da transação não será visível fora da transação. Aqui estão alguns comandos úteis para adicionar transações ácidas de vários documentos dentro de seu aplicativo.
Função | Descrição |
---|---|
Session.startTransaction() | Iniciar uma nova transação |
Session.commitTransaction() | Confirma a transação |
Session.abortTransaction() | Aborta a transação |
Aqui está um pequeno exemplo de adição de operações de transação usando o shell Mongo:
akashk:PRIMARY> use mydb
akashk:PRIMARY> db.createCollection(“newColl”)
akashk:PRIMARY> session = db.getMongo().startSession()
akashk:PRIMARY> session { "id" : UUID("62525323-1cd1-4ee8-853f-b78e593b46ba") }
akashk:PRIMARY> session.startTransaction()
akashk:PRIMARY> session.getDatabase("mydb").newColl.insert({name : 'hello'})
akashk:PRIMARY> WriteResult({ "nInserted" : 1 })
akashk:PRIMARY> session.commitTransaction()
Todas as transações fornecem uma visão consistente dos dados em uma ou várias coleções no banco de dados usando o isolamento de instantâneo. O MongoDB não enviará nenhuma alteração não confirmada para nós/réplicas secundários. Depois que uma transação for confirmada, todas as alterações serão aplicadas aos nós secundários.
Existem muitos exemplos em que podemos usar transações ácidas de vários documentos do MongoDB, como
- Transferência de fundos entre contas bancárias
- Sistema de pagamento
- Sistema de negociação
- Sistema de cadeia de suprimentos
- Sistema de cobrança
Aspectos a serem considerados ao adicionar transações
- O MongoDB abortará qualquer transação que seja executada por mais de 60 segundos.
- Não devem ser alterados mais de 1.000 documentos em uma única transação. Sem limite para operações de leitura.
- Qualquer transação deve ter tamanho inferior a 16 MB, pois o MongoDb armazena qualquer transação como uma única entrada no oplog.
- Quando você abortar qualquer transação, todas as alterações serão revertidas.
Novos operadores de conversão de tipo no pipeline de agregação
Para obter insights em tempo real de dados e escrever consultas complexas, os desenvolvedores do MongoDB geralmente preferem criar um pipeline de agregação. Na versão MongoDB 4.0, alguns novos operadores de conversão de tipo de agregação foram adicionados para consultar dados sem limpar campos individuais.
Operador de agregação | Descrição |
---|---|
$converter | Converte o valor para um tipo especificado |
$toDate | Converte valor em data |
$toDecimal | Converte valor em decimal |
$toDouble | Converte valor em Duplo |
$toLong | Converte o valor para Longo |
$toInt | Converte valor para inteiro |
$toObjectId | Converte o valor em ObjectId |
$toString | Converte valor em String |
$ltrim | Remova caracteres desnecessários do início da string |
$rtrim | Remova caracteres desnecessários do final da string |
$trim | Remova caracteres desnecessários de ambos os lados da string |
Funcionalidade estendida de fluxos de mudança
A funcionalidade de fluxos de mudança que fornece atualizações de mudanças de dados em tempo real sem nenhuma configuração complexa foi introduzida na versão 3.6. Com a versão 4.0, os fluxos de mudança podem rastrear alterações de todo o banco de dados ou cluster em vez de apenas uma única coleção agora. Além disso, agora, os fluxos de mudança também retornam o registro de data e hora do cluster associado a um evento que pode ser útil para os aplicativos do servidor.
Migrações de dados mais rápidas
Quando seu banco de dados é fragmentado no cluster, adicionar e remover nós elasticamente de um cluster fragmentado pode ser demorado às vezes. O balanceador de cluster sharded que é responsável por distribuir os dados em todos os shards, recebeu grande atualização na versão 4.0. Agora, ele pode concluir a migração de dados a uma taxa 40% mais rápida.
Leituras secundárias sem bloqueio
Anteriormente, o MongoDB costumava bloquear todas as leituras secundárias quando as entradas do oplog estavam sendo aplicadas aos nós secundários. Isso estava causando latência variável de leituras secundárias. A partir do MongoDB 4.0, as leituras secundárias tornaram-se não bloqueantes devido ao aumento da taxa de transferência do conjunto de réplicas e às latências de leitura aprimoradas.
Construtor de pipeline de agregação na bússola
A bússola do MongoDB é a ferramenta GUI para o MongoDB visualizar e consultar dados. Este ano, a bússola do MongoDB recebeu um novo recurso de pipeline de agregação. Ele fornece editor de consulta visual para criar pipelines de agregação de vários estágios. Aqui está o instantâneo disso:
Construtor de consulta de agregação no Compass
Além desse recurso, o compass também tem a capacidade de exportar suas consultas para qualquer idioma de código nativo de sua escolha agora.
Gráficos MongoDB
MongoDB Charts é a nova ferramenta que permite ao usuário criar rapidamente visualizações em tempo real dos dados do MongoDB. Esta ferramenta foi desenvolvida para modelos de dados de documentos com suporte para manipulação de tipos, reduções de array e documentos aninhados também. Esta ferramenta permite ao usuário criar painéis de gráficos e compartilhá-los com outros usuários. Os gráficos do MongoDB agora estão totalmente integrados ao MongoDB Atlas.
Outros novos recursos do MongoDB
- MongoDB Stitch:plataforma sem servidor para desenvolvimento de aplicativos cliente que pode acessar os serviços do Mongo com segurança.
- MongoDB Kubernetes:para implantar o MongoDB no cluster Kubernetes.
- MongoDB Mobile:oferece flexibilidade e poder do MongoDB em um formato compacto para que possa ser usado em dispositivos IOT.
- MongoDB Monitoring Cloud Service:para enviar metadados de monitoramento para a nuvem de monitoramento MongoDB gratuitamente.
O futuro do MongoDB
O MongoDB também planeja lançar alguns novos recursos com sua versão 4.2, que inclui,
- Mecanismo WiredTiger mais extenso
- Gerente de transações
- Transações em uma implantação fragmentada
- Leituras globais de ponto no tempo