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 do SQL desde a versão inicial: UNION, UNION ALL, EXCEPT, EXCEPT ALL, INTERSECT, INTERSECT ALL. O modificador ALL retorna duplicatas documentos. O uso da operação sem ALL evita a etapa de classificação necessária em o pipeline de agregação MQL. Essas operações de conjunto podem ser usadas em qualquer lugar onde um A consulta SELECT é usada (subconsultas, tabelas derivadas, etc.). https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/union.html https://blog.jooq.org/2015/10/06/you-probably-dont-use-sql-intersect-or-except-often-enough/ |
| Expressões de agregação personalizadas |
Introduz $function, permitindo trechos de JavaScript dentro da agregação para personalizar o processamento. Agregações definidas pelo usuário podem ser criadas usando $accumulate, $function, $merge e $group. Essa abordagem é detalhada e deve ser reescrito para cada consulta. No SQL, uma vez que um agregado definido pelo usuário é criado, ele pode ser reutilizado como qualquer outro agregado. Outros aprimoramentos incluem funções escalares simples. https://docs.mongodb.com/master/release-notes/4.4/#custom-aggregation-expressions |
Versão prévia de funções SQL e funções JavaScript que podem ser usadas em qualquer lugar são permitidas no N1QL. Elas podem fazer parte de consultas complexas e são espera-se que seja GA na próxima versão principal. O MongoDB ainda não possui funções de janela, que foram lançadas no Couchbase 6.5 e melhorar significativamente a produtividade do desenvolvedor. O Couchbase oferece suporte à agregação baseada em JavaScript por meio de exibições de redução de mapas, embora eles não são acessíveis por meio do N1QL. As funções do Couchbase Eventing também são escritas em JavaScript e fornecem um infraestrutura dimensionável para aplicativos modernos. |
| Pesquisa |
Apresenta o $search de texto completo baseado no Lucene, disponível somente no MongoDB Atlas. O próprio MongoDB tem funcionalidade de pesquisa limitada e não é baseado em Lucene. $search só pode ser usado como o primeiro estágio de um pipeline de agregação e não pode ser usado em atualizações ou exclusões. |
O Couchbase 6.5 introduziu a função SEARCH() e as funções de metadados relacionadas. Ele oferece suporte à pesquisa simples de strings e à pesquisa de texto completo com profunda integração no otimizador N1QL. |
| Transações |
Apresenta a capacidade de criar coleções e índices em um transação não fragmentada. O uso de DDLs dentro de transações ainda é raro. |
Lançou transações distribuídas para SDKs Java, permitindo que os aplicativos para operar em vários documentos usando APIs get/set. Distribuído não são compatíveis com os comandos N1QL. |
Recursos: