Esta es una breve nota revisando las características del lenguaje MongoDB MQL destacadas en el blog de la versión: MongoDB 4.4: Ingeniería orientada al usuario. Listo para usted. La versión 4.4 de MongoDB ha añadido una serie de características para el lenguaje MQL. Couchbase lanza la versión 6.5 a principios de año con un importante número de funciones en N1QL, tanto para el servicio de consulta como para el servicio de análisis. Entremos en materia.
MongoDB 4.4 |
Couchbase 6.5 |
|
Publicado en |
GA: julio de 2020 |
GA: enero de 2020 |
¿Qué hay de nuevo? |
https://docs.couchbase.com/server/current/introduction/whats-new.html |
|
Operación UNION set |
Introduce $UnionWith etapa de canalización de agregación para doblar los datos en un único conjunto de resultados. Equivale aproximadamente a la operación de conjunto UNION ALL de SQL. https://docs.mongodb.com/master/reference/operator/aggregation/unionWith/#pipe._S_unionWith |
Admite todas las operaciones de conjunto SQL desde la versión inicial: UNION, UNION ALL, EXCEPT, EXCEPT ALL, INTERSECT, INTERSECT ALL. El modificador ALL devuelve documentos duplicados. El uso de la operación sin ALL evita la etapa de ordenación que hay que escribir en la canalización de agregación MQL. Se trata de operaciones de conjunto que pueden utilizarse en cualquier lugar donde se utilice la consulta SELECT (por ejemplo, subconsultas, tablas derivadas, etc.). https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/union.html Véase también el blog de Lukas Eder. https://blog.jooq.org/2015/10/06/you-probably-dont-use-sql-intersect-or-except-often-enough/ |
Expresiones de agregación personalizadas |
La característica más importante es $function, que permite a los usuarios escribir fragmentos de Javascript como parte de la cadena de agregación para personalizar el procesamiento. También puede crear agregaciones definidas por el usuario utilizando $accumulate, $function, $merge y $group. Este enfoque parece verboso y propenso a errores, ya que debe escribirse para cada consulta. En SQLUna vez creado un agregado definido por el usuario, se puede utilizar como cualquier otro agregado sin exponer la lógica. Otras mejoras son las funciones escalares simples. https://docs.mongodb.com/master/release-notes/4.4/#custom-aggregation-expressions |
Publicado el avance de Funciones SQL y Funciones Javascript en cualquier lugar se puede utilizar una expresión en N1QL. Éstas pueden formar parte de cualquier consulta compleja para el procesamiento de datos. Se espera que esta funcionalidad GA en la próxima versión importante. MongoDB sigue careciendo de funciones de ventana. Esto se lanzó en Couchbase 6.5 y tiene un gran impacto en productividad de los desarrolladores. Couchbase ha soportado la agregación basada en Javascript a través de vistas map-reduce pero es inaccesible vía N1QL. Couchbase Funciones de eventos también están escritas en Javascript. Proporcionan una infraestructura escalable y flexible para las aplicaciones modernas. |
Buscar en |
Introduce el texto completo 1TP4Búsqueda basado en Lucene, pero sólo para el servicio Atlas de MongoDB. El propio producto mongodb tiene funcionalidad de búsqueda limitada y no se basa en el Lucene. El $search viene con un conjunto habitual de restricciones en MongoDB: sólo se puede utilizar con la tubería de agregación (por ejemplo, no se puede utilizar en las actualizaciones o eliminaciones como un predicado). $search sólo puede estar en la primera etapa de cualquier pipeline. |
Presentación de Couchbase 6.5 Función SEARCH() y sus funciones de metadatos relacionadas. Puede realizar de búsqueda por cadenas a búsqueda de texto completo con conjuntos y disjuntos con una profunda integración con el optimizador N1QL en el servicio de consultas. |
Transacciones |
Introduce la capacidad de crear colecciones e índices dentro de una transacción no fragmentada. Algunas bases de datos permiten el uso de DDLs dentro de una transacción, pero es un caso raro. |
Publicado en transacciones distribuidas para SDK Java. Esto permite a las aplicaciones operar sobre múltiples documentos directamente utilizando las APIs get/set. Las transacciones distribuidas no son compatibles con las sentencias N1QL. |
Recursos: