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://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: