Esta é uma breve nota que analisa os recursos da linguagem MQL do MongoDB destacados no blog de lançamento: MongoDB 4.4: Engenharia orientada ao usuário. Pronto para você. A versão 4.4 do MongoDB adicionou vários recursos para a linguagem MQL. O Couchbase lançou a versão 6.5 no início do ano com um número significativo de recursos no N1QL, tanto para o serviço de consulta quanto para o serviço de análise. Vamos nos aprofundar no assunto.

MongoDB 4.4

Couchbase 6.5 

Liberado

GA: julho de 2020

GA: janeiro de 2020

O que há de novo?

https://www.mongodb.com/collateral/mongodb-4.4-guide

https://docs.couchbase.com/server/current/introduction/whats-new.html

Operação do conjunto UNION

Introduz o estágio de pipeline de agregação $UnionWith para dobrar os dados em um único conjunto de resultados. Aproximadamente equivalente à operação de conjunto UNION ALL no SQL.

https://docs.mongodb.com/master/reference/operator/aggregation/unionWith/#pipe._S_unionWith

Oferece suporte a todas as operações de conjunto de SQL desde a versão inicial: UNION, UNION ALL, EXCEPT, EXCEPT ALL, INTERSECT, INTERSECT ALL. O modificador ALL retorna documentos duplicados. Usar a operação sem ALL evita o estágio de classificação que você precisa escrever no pipeline de agregação MQL. Essas são operações de conjunto que podem ser usadas em qualquer lugar em que a consulta SELECT seja usada (por exemplo, subconsulta, tabelas derivadas etc.).

https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/union.html

Consulte também o blog de Lukas Eder. https://blog.jooq.org/2015/10/06/you-probably-dont-use-sql-intersect-or-except-often-enough/

Expressões de agregação personalizadas

O recurso importante aqui é o $function, que permite que os usuários escrevam trechos de Javascript como parte do pipeline de agregação para personalizar o processamento. Ele também pode criar agregação definida pelo usuário usando $accumulate, $function, $merge e $group. Essa abordagem parece prolixa e propensa a erros, pois precisa ser escrita para cada consulta. Em SQLSe você criar um agregado definido pelo usuário, ele poderá ser usado como qualquer outro agregado sem expor a lógica.

Outros aprimoramentos são funções escalares simples.

https://docs.mongodb.com/master/release-notes/4.4/#custom-aggregation-expressions

Lançou a prévia de Funções SQL e Funções Javascript em qualquer lugar onde uma expressão possa ser usada no N1QL. Elas podem fazer parte de qualquer consulta complexa para processamento de dados. Espera-se que essa funcionalidade seja GA na próxima versão principal.

O MongoDB ainda carece de recursos críticos para os negócios funções da janela. Isso foi lançado no Couchbase 6.5 e tem um grande impacto sobre produtividade do desenvolvedor.

O Couchbase oferece suporte à agregação baseada em Javascript por meio de visualizações de redução de mapas mas é inacessível via N1QL.

Couchbase Funções de eventos também são escritos em Javascript. Eles fornecem uma infraestrutura dimensionável e flexível para aplicativos modernos.

Pesquisa

Introduz o texto completo $search baseado no Lucene, mas somente para o serviço MongoDB Atlas.

O próprio produto mongodb tem funcionalidade de pesquisa limitada e não se baseia no Lucene.

O $search vem com um conjunto usual de restrições no MongoDB: só pode ser usado com pipeline de agregação (por exemplo, não pode ser usado em atualizações ou exclusões como um predicado). O $search só pode estar no primeiro estágio de qualquer pipeline.

Apresentação do Couchbase 6.5 Função SEARCH() e suas funções de metadados relacionadas. Ele pode fazer simples pesquisa por string para pesquisa de texto completo com conjunções e disjunções com profunda integração com o otimizador N1QL no serviço de consulta.

Transações

Apresenta a capacidade de criar coleções e índices em uma transação sem sharded. Alguns bancos de dados permitem o uso de DDLs em uma transação, mas esse é um caso raro.

Liberado transações distribuídas para SDKs Java. Isso permite que os aplicativos operem em vários documentos diretamente usando as APIs get/set. As transações distribuídas não são compatíveis com as instruções N1QL.

Recursos:

  1. Documentos do Couchbase
  2. Tutorial N1QL
  3. Documentos do MongoDB

Autor

Postado por Keshav Murthy

Keshav Murthy é vice-presidente de P&D da Couchbase. Anteriormente, ele trabalhou na MapR, IBM, Informix e Sybase, com mais de 20 anos de experiência em design e desenvolvimento de bancos de dados. Ele liderou a equipe de P&D de SQL e NoSQL na IBM Informix. Recebeu dois prêmios President's Club na Couchbase e dois Outstanding Technical Achievement Awards na IBM. Keshav é bacharel em Ciência da Computação e Engenharia pela Universidade de Mysore, Índia, detém dez patentes nos EUA e tem três patentes pendentes nos EUA.

Deixar uma resposta