Modos de conversão de tipos
Nesta página
Novidades na versão 2,6.
O MongoDB Connector for BI tenta converter queries SQL emagregação pipelines do MongoDB . Quando o BI Connector não pode converter uma query em um pipeline de agregação , ele executa a query na memória, resultando em maior latência. Antes da versão 2.6, mongosqld
não conseguia converter conversões de tipo em expressões de agregação , o que impedia a tradução de qualquer query que dependesse de conversões de tipo.
A partir da versão 2.6, o modo de conversão de tipo mongosql
envia todas as conversões de tipo para o MongoDB Server que executam a versão 4.0 ou posterior para melhorar a expressão de desempenho. Esse modo é habilitado por padrão, mas você pode configurá-lo por sessão definindo a variável de sessão type_conversion_mode
para um dos seguintes valores:
Modo | Descrição |
---|---|
mongosql | Padrão. Envia todas as conversões de tipo para o MongoDB Server executando a versão 4.0 ou posterior. Para versões do MongoDB anteriores à 4.0, o BI Connector executa conversões de tipos na memória. |
mysql | Instrui o BI Connector a corresponder à semântica de conversão de tipo do MySQL o mais próximo possível. Se o BI Connector puder reproduzir o comportamento de conversão de tipo do MySQL na linguagem de aggregation, ele enviará a expressão para o MongoDB Server para execução. Caso contrário, mongosqld executa a expressão na memória. |
O exemplo a seguir define a variável type_conversion_mode
como mysql
:
SET SESSION type_conversion_mode = 'mysql';
Importante
mongosql
é o modo de conversão de tipo recomendado, a menos que você exija uma replicação próxima do comportamento do MySQL. O exemplo acima define o modo de conversão do tipo mysql
porque mongosql
é o padrão e não precisa ser explicitamente definido.
O modo de conversão de tipo se aplica a ambos:
Conversões de tipo explícitas. Por exemplo:
CAST("123" AS unsigned) Conversões de tipo implícitas. Por exemplo,
"123" + 456
Tabela de comparação de modos
A tabela a seguir fornece uma visão geral de como o comportamento de conversão de tipo do MySQL difere do comportamento de conversão de tipo padrão do Connector BI (modo mongosql
):
Do tipo | Para digitar | Comportamento do MySQL | mongosql -mode Comportamento |
---|---|---|---|
Varchar | Numérico | Analise o número de uma string em uma variedade de formatos diferentes. Para obter mais informações, consulte os literais numéricos do MySQL documentação. | Analise o número de uma string no formato decimal com o caractere de sinal opcional opcional. |
Varchar | Timestamp | Analise a data de uma string em uma variedade de formatos diferentes. Para obter mais informações, consulte os literais de data e hora MySQL . | Analise a data de uma string no formato "%Y-%m-%dT%H:%M:%S.%LZ" . |
Int | Timestamp | Tenta analisar a data a partir da representação varchar do int. Por exemplo, o número inteiro 20180809183456 se torna a data 2018-08-09 18:34:56.000000 . | Trata a entrada como milissegundos desde a Era UNIX. Por exemplo, 1533839696000 . |
Timestamp | Long | Analise o carimbo de data/hora como um longo no formato YYYYMMDDHHMMSS . Por exemplo, 20180701123400 . | Analise o carimbo de data/hora como um longo representando os milissegundos desde a Era UNIX. Por exemplo, 1530448440000 . |
Timestamp | Varchar | Analise o carimbo de data/hora como um varchar no formato YYYY-MM-DD HH:MM:SS.MMMMMM . Por exemplo, “2018-07-01 12:34:00.000000” . | Analise o carimbo de data/hora como um varchar no formato YYYY-MM-DDTHH:MM:SS:MMMZ . Por exemplo, “2018-07-01T12:34:00.000Z” . |
Observação
mongosql
é o modo de conversão de tipo recomendado, a menos que seja necessária uma replicação próxima do comportamento do MySQL.