Nuevo en la versión 2.6.
El Conector MongoDB para BI intenta convertir consultas SQL en canales de agregación de MongoDB. Cuando el Conector de BI no puede convertir una consulta en un canal de agregación, la ejecuta en memoria, lo que aumenta la latencia. Antes de la 2.6 versión, mongosqld No se pudieron traducir las conversiones de tipo a expresiones de agregación, lo que impidió la traducción de cualquier consulta que dependiera de conversiones de tipo.
A partir de la versión 2.6, el modo de conversión de tipos mongosql transfiere todas las conversiones de tipos a los servidores MongoDB con la versión 4.0 o posterior para mejorar el rendimiento de las expresiones. Este modo está habilitado por defecto, pero puede configurarlo por sesión estableciendo la variable de sesión type_conversion_mode con uno de los siguientes valores:
Modo | Descripción |
|---|---|
| Predeterminado. Envía todas las conversiones de tipos a los servidores MongoDB con la versión 4.0 o posterior. Para versiones de MongoDB anteriores a 4.0 la, el Conector de BI realiza las conversiones de tipos en memoria. |
| Indica al Conector de BI que se ajuste lo más posible a la semántica de conversión de tipos de MySQL. Si el Conector de BI puede reproducir el comportamiento de conversión de tipos de MySQL en el lenguaje de agregación, enviará la expresión al servidor MongoDB para su ejecución. De lo contrario, la ejecuta en |
El siguiente ejemplo establece la variable type_conversion_mode en mysql:
SET SESSION type_conversion_mode = 'mysql';
Importante
mongosql Es el modo de conversión de tipos recomendado, a menos que se requiera una réplica exacta del comportamiento de MySQL. El ejemplo anterior establece el modo de conversión de tipos mysql porque mongosql es el predeterminado y no necesita configurarse explícitamente.
El modo de conversión de tipos se aplica a ambos:
Conversiones de tipos explícitas. Por ejemplo:
CAST("123" AS unsigned) Conversiones de tipos implícitas. Por ejemplo,
"123" + 456
Tabla de comparación de modos
La siguiente tabla proporciona una descripción general de cómo el comportamiento de conversión de tipo de MySQL difiere del comportamiento de conversión de tipo predeterminado del Conector de BI (modo mongosql):
Del tipo | Para escribir | Comportamiento de MySQL | mongosql-modo Comportamiento |
|---|---|---|---|
Varchar | Numeric | Analiza el número de una cadena en diversos formatos. Para más información, consulte Literales numéricos de MySQL. documentación. | Analizar el número de una cadena en formato decimal con un carácter de signo inicial opcional. |
Varchar | Marca de tiempo | Analiza la fecha de una cadena en diversos formatos. Para más información, consulta los literales de fecha y hora de MySQL. | Analizar la fecha de una cadena en formato |
Int | Marca de tiempo | Intenta analizar la fecha a partir de la representación varchar del entero. Por ejemplo, el entero | Trata la entrada como milisegundos desde la época Unix. Por ejemplo, |
Marca de tiempo | Long | Analiza la marca de tiempo como un valor largo en formato | Analiza la marca de tiempo como un valor long que representa los milisegundos transcurridos desde la época Unix. Por ejemplo, |
Marca de tiempo | Varchar | Analiza la marca de tiempo como un varchar en el formato | Analiza la marca de tiempo como un varchar en el formato |
Nota
mongosql es el modo de conversión de tipos recomendado a menos que se requiera una replicación cercana del comportamiento de MySQL.