Menu Docs
Página inicial do Docs
/
BI Connector
/

mongodrdl

Nesta página

  • Descrição
  • Sintaxe
  • Versão mínima padrão do TLS
  • Comandos
  • Opções
  • Exemplos de uso
  • Exemplo de Atlas do MongoDB

Observação

O MongoDB Connector for BI e os utilitários associados são compatíveis com todas as versões do servidor MongoDBatualmente suportadas pelo .

mongodrdl é uma ferramenta de gerenciamento de esquema relacional para o Conector MongoDB para BI. mongodrdlO binário mongodrdl pode:

  • Produce a schema com base no conteúdo de uma ou mais coleções do MongoDB e registre-as em .drdl arquivos usados pelo mongosqld.

  • Upload um esquema de arquivo .drdl para a implementação do MongoDB da qual o Connector BI está lendo.

  • Download esquemas armazenados de seu sistema do MongoDB.

  • Delete esquemas armazenados de seu sistema do MongoDB.

  • Name esquemas armazenados em seu sistema do MongoDB para facilitar o gerenciamento.

Você pode editar um arquivo .drdl manualmente para personalizar o esquema do connector BI. Para saber mais sobre o formato .drdl e a edição manual de arquivos .drdl, consulte Carregar um esquema de um arquivo DRDL.

Para saber mais sobre todas as opções de gerenciamento de esquema do connector BI, consulte Mapear esquemas relacionais para MongoDB.

Importante

Para aplicar as alterações feitas aos seus arquivos DRDL, você deve reiniciar o mongosqld.

mongodrdl usa a seguinte sintaxe:

mongodrdl [<command>] [<options...>]

Novidades na versão 2,6.

A versão mínima padrão do TLS é 1.1 para conexões de saída de mongodrdl para MongoDB.

Você pode ajustar esta configuração com a opção --minimumTLSVersion .

Novidades na versão 2,11.

O comportamento do mongodrdl é determinado por um dos seguintes comandos. Se nenhum comando for especificado, mongodrdl amostras do namespace especificado.

sample

Exemplos dos namespaces especificados pelo --db, --collectionopcional e outras opções de linha de comando para gerar um arquivo .drdl. O comando sample encapsula todo o comportamento mongodrdl anterior à versão 2.11.

mongodrdl sample --db <db-name> --collection <collection-name> --out <filename>.drdl
list-schema-ids

Lista a representação de string do ObjectId de cada esquema armazenado e a data em que foi criado.

list-schema-ids requer a seguinte opção:

Nome
Descrição
--schemaSource
Obrigatório. Especifica o banco de dados onde as informações do esquema são armazenadas.

Por exemplo, o seguinte comando lista as IDs de esquema no banco de dados do schemas:

mongodrdl list-schema-ids --schemaSource schemas

A saída se assemelha ao seguinte:

5d72ad695c23a9e3e26e3c85 2019-09-06T15:03:05.556Z
5d72adea5c23a9e44882a1ad 2019-09-06T15:05:14.349Z
list-schema-names

Lista o nome e a representação em string do ObjectId para cada esquema armazenado que tenha um nome.

Esquemas armazenados não são nomeados por padrão. Você pode fazer referência a um esquema nomeado usando a opção --name com os comandos download e delete. Utilize o comando name-schema para dar nome ou renomear um esquema.

list-schema-names requer a seguinte opção:

Nome
Descrição
Obrigatório. Especifica o banco de dados onde as informações do esquema são armazenadas.

Por exemplo, o seguinte comando retorna o nome e ObjectId para cada esquema nomeado no banco de dados do schemas:

mongodrdl list-schema-names --schemaSource schemas

A saída se assemelha ao seguinte:

movies 5d72ad695c23a9e3e26e3c85
theaters 5d72adea5c23a9e44882a1ad
upload

Carrega o esquema do arquivo .drdl especificado para o banco de dados especificado pela opção --schemaSource . Os esquemas são carregados na coleção schemas .

upload requer as seguintes opções:

Nome
Descrição
Obrigatório. Especifica o banco de dados onde as informações do esquema são armazenadas.
--drdl
Obrigatório. Caminho para o arquivo .drdl a ser carregado.

Por exemplo, o seguinte comando transfere o esquema no arquivo movies.drdl para o banco de dados do schemas:

mongodrdl upload --schemaSource schemas --drdl ./movies.drdl

A representação de string do ObjectId do esquema carregado é retornada:

5d793f3f6a26a3ce66c304ea

A próxima etapa é armazenar o esquema com um nome fornecido por você, usando o comando name-schema :

mongodrdl name-schema --name movies --schemaSource schemas --schema 5d793f3f6a26a3ce66c304ea

Para utilizar o esquema recém-carregado que recebeu um nome especificado, reinicie o mongosqld com o banco de dados de esquema especificado pela opção --schemaSource, com o nome do esquema especificado com --schemaName:

mongosqld --schemaSource <schema-db> --schemaName movies

Importante

Se você carregar um esquema personalizado, deverá armazená-lo com seu nome especificado, usando name-schema e, em seguida, especificar esse nome para o mongosqld com --schemaName. Se você não armazenar o nome do esquema ao carregá-lo, o nome do esquema padrão será defaultSchema. Se o nome do esquema não existir, isso resultará em um erro de mongosqld semelhante ao seguinte: esquema do MongoDB ainda não disponível. Erro ao inicializar esquema: nenhum esquema encontrado para o nome.

download

Faz o download de um esquema especificado por seu nome ou representação de string do ObjectId e o imprime no console.

download aceita as seguintes opções:

Nome
Descrição
Obrigatório. Especifica o banco de dados onde as informações do esquema são armazenadas.
--name

O nome do esquema. Para saber mais sobre esquemas de nomenclatura, consulte o comando name-schema .

Obrigatório se --schema não for especificado.

--schema

A representação de string do ObjectId do esquema.

Obrigatório se --name não for especificado.

Por exemplo, o seguinte comando imprime o esquema movies no console:

mongodrdl download --schemaSource schemas --name movies

Para armazenar o esquema em um arquivo .drdl, direcione a saída para o arquivo .drdl desejado:

mongodrdl download --schemaSource schemas --name movies > ./movies.drdl
delete

Exclui um esquema especificado por seu nome ou representação de string do ObjectId.

delete aceita as seguintes opções:

Nome
Descrição
Obrigatório. Especifica o banco de dados onde as informações do esquema são armazenadas.
--name

O nome do esquema. Para saber mais sobre esquemas de nomenclatura, consulte o comando name-schema .

Obrigatório se --schema não for especificado.

--schema

A representação de string do ObjectId do esquema.

Obrigatório se --name não for especificado.

Por exemplo, o seguinte comando exclui o esquema com id 5d7941dc6a26a3d0fc397284 no banco de dados do schemas:

mongodrdl delete --schemaSource schemas --schema 5d7941dc6a26a3d0fc397284
name-schema

Cria um novo nome para um esquema ou atualiza o nome existente de um esquema.

Esquemas armazenados não são nomeados por padrão. Você pode fazer referência a um esquema nomeado usando a opção --name com os comandos download e delete. Utilize o comando name-schema para dar nome ou renomear um esquema.

name-schema requer as seguintes opções:

Nome
Descrição
Obrigatório. Especifica o banco de dados onde as informações do esquema são armazenadas.
Obrigatório. O novo nome do esquema.
Obrigatório A representação em string do ObjectID do esquema.

Por exemplo, o seguinte comando nomeia o esquema 5d72adea5c23a9e44882a1ad no banco de dados schemas como movies:

mongodrdl name-schema --name movies --schemaSource schemas --schema 5d72adea5c23a9e44882a1ad
--help

Retorna informações sobre as opções e uso do mongodrdl.

--version

Retorna o número de versão do mongodrdl.

--verbose <level>, -v <level>

Especifica que mongodrdl deve fornecer uma saída de log mais detalhada. Incluir várias vezes para maior verbosidade (por exemplo, -vvvvv) ou especificar um valor numérico (por exemplo, --verbose=5).

--quiet

Oculta todas as saídas de registro.

--uri <mongodb-uri>

Novidades na versão 2.12.

Cadeia de conexão de URI do MongoDB.

Importante

As seguintes opções de linha de comando não podem ser utilizadas em conjunto com a opção --uri :

Em vez disso, especifique essas opções como parte de sua connection string --uri .

--host <hostname><:port>, -h <hostname><:port>

Padrão: localhost:27017

Especifica um nome de host resolvível para o mongod ao qual se conectar. Por padrão, mongodrdl tenta se conectar a uma instância do MongoDB em execução no host local na porta número 27017.

Para se conectar a um conjunto de réplicas, especifique o replSetName e uma lista de sementes de nós do conjunto, como a seguir:

<replSetName>/<hostname1><:port>,<hostname2><:port>,<...>

Você sempre pode se conectar diretamente a uma única instância MongoDB especificando o número do host e da porta diretamente.

--port <port>

Padrão: 27017

Especifica a porta TCP na qual a instância do MongoDB escuta conexões de cliente.

--db <database>, -d <database>

Especifica um banco de dados do qual gerar um arquivo de esquema do .drdl.

--collection <collection>, -c <collection>

Especifica uma coleção a partir da qual gerar um arquivo de esquema do .drdl. Se você não especificar uma coleção, esta opção utilizará todas as coleções no banco de dados ou instância especificada.

--customFilterField <name>, -f <name>

Especifica o nome do campo a ser adicionado para um filtro MongoDB personalizado. Consulte Filtros personalizados para obter mais detalhes.

--out <path>, -o <path>

Padrão: Padrão para fora.

Especifica o caminho em que mongodrdl gravará o arquivo de esquema. Para enviar o esquema para a saída padrão, especifique "-" em vez de um caminho.

--sampleSize <size>, -s <size>

Padrão: 1000

Especifica o número de documentos a serem amostrados ao gerar o esquema da coleção.

--uuidSubtype3Encoding <old|csharp|java>, -b <old|csharp|java>

Especifique a codificação usada para gerar o subtipo binário UUID 3. Escolha um dos seguintes valores:

  • old: Representação antiga do subtipo binário BSON

  • csharp: A representação legada de UUID em C#/.NET

  • java: A representação legada de UUID em Java

--preJoined

Gere tabelas desenroladas, incluindo colunas principais, resultando em uma tabela "pré-unida ".

--schema <db-id>

Novidades na versão 2,11.

Obrigatório. Especifica a representação de string do ObjectId do esquema.

--name <db-name>

Novidades na versão 2,11.

Especifica o nome do esquema.

Importante

Se você carregar um esquema personalizado, deverá armazená-lo com seu nome especificado, usando name-schema e, em seguida, especificar esse nome para o mongosqld com --schemaName. Se você não armazenar o nome do esquema ao carregá-lo, o nome do esquema padrão será defaultSchema. Se o nome do esquema não existir, isso resultará em um erro de mongosqld semelhante ao seguinte: esquema do MongoDB ainda não disponível. Erro ao inicializar esquema: nenhum esquema encontrado para o nome.

--schemaSource <db-name>

Novidades na versão 2,11.

Especifica o banco de dados onde as informações do esquema são armazenadas. Esta opção não é utilizada pelo comando sample .

--ssl

Padrão: falso

Instrui o mongodrdl para usar TLS/SSL ao conectar a uma instância MongoDB.

--sslCAFile <filename>

Especifica o arquivo .pem da instância MongoDB contendo a cadeia de certificado raiz da Autoridade de certificação. Especifique o nome do arquivo .pem usando caminhos relativos ou absolutos.

Aviso

Para conexões SSL (--ssl) para mongod e mongos, se o mongodrdl executar sem o --sslCAFile, mongodrdl não tentará validar os certificados do servidor. Isso cria uma vulnerabilidade para certificados mongod e mongos expirados, bem como para processos externos que se fazem passar por instâncias mongod ou mongos válidas. Certifique-se de sempre especificar o arquivo de autoridade de certificação para validar os certificados do servidor nos casos em que a intrusão é uma possibilidade.

--sslPEMKeyFile <filename>

Especifica o arquivo .pem que contém o certificado TLS/SSL e a chave para mongosqld a serem usados na conexão com o MongoDB. Você pode especificar o nome do arquivo .pem utilizando um caminho relativo ou absoluto.

Esta opção é exigida ao utilizar a opção --ssl para conectar a um mongod ou mongos que tenha CAFile habilitado sem net.ssl.allowConnectionsWithoutCertificates.

--sslPEMKeyPassword <password>

Especifica o caminho para um arquivo que contém o certificado e a chave privada para se conectar ao MongoDB.

--sslCRLFile <filename>

Especifica o arquivo .pem que contém a lista de certificados revogados. Especifique o nome do arquivo .pem usando caminhos relativos ou absolutos.

--sslAllowInvalidCertificates

Permite que a instância MongoDB apresente um certificado SSL/TLS de servidor inválido. Ao usar a configuração allowInvalidCertificates, o MongoDB registra o uso do certificado inválido como um aviso.

--sslAllowInvalidHostnames

Desabilita a validação dos nomes de host em certificados TLS/SSL. Permite que mongodrdl se conectem a instâncias do MongoDB se o nome do host seus certificados não corresponderem ao nome de host especificado.

--sslFIPSMode

Direciona o mongodrdl para utilizar o modo FIPS da biblioteca OpenSSL instalada. Seu sistema deve ter uma biblioteca OpenSSL compatível com FIPS para usar a opção --sslFIPSMode .

--minimumTLSVersion <TLS1_0|TLS1_1|TLS1_2>

Padrão: TLS1_1

Especifica a versão mínima necessária do TLS para que mongodrdl se conecte a uma instância mongod ou mongos. O valor padrão TLS1_1 corresponde à versão 1.1 do TLS.

--username <username>, -u <username>

Especifica um nome de usuário com o qual autenticar em um banco de dados MongoDB que usa autenticação. Use em conjunto com as opções --password e --authenticationDatabase.

--password <password>, -p <password>

Especifica uma senha com a qual autenticar em um banco de dados MongoDB que usa autenticação. Use em conjunto com as opções --username e --authenticationDatabase.

--authenticationDatabase <dbname>

Especifica o banco de dados no qual o usuário é criado. Consulte Banco de dados de autenticação.

--authenticationMechanism <name>

Padrão: SCRAM-SHA-1

Especifica o mecanismo de autenticação que a instância do mongodrdl utiliza para autenticar no mongod ou mongos.

Valor
Descrição
RFC 5802 Mecanismo de Autenticação de Resposta do Desafio Salgado padrão usando a função com hash SHA1.
Novidades 2 na versão .6: RFC 7677 Mecanismo de autenticação de resposta de desafio2 salgado padrão usando a função de hash SHA .
PLAIN (LDAP SASL)
Autenticação externa usando LDAP. Você também pode utilizar o PLAIN para autenticar usuários do banco de dados. PLAIN transmite senhas em texto simples. Esse mecanismo está disponível somente no MongoDB Enterprise.
GSSAPI (Kerberos)
Autenticação externa usando Kerberos. Esse mecanismo está disponível somente no MongoDB Enterprise.
--gssapiServiceName <service-name>

Padrão: mongodb

Nome do serviço a ser usado ao autenticar usando GSSAPI/Kerberos.

--gssapiHostName <hostname>

Padrão: endereço do servidor remoto

Nome de host a ser usado ao autenticar usando GSSAPI/Kerberos.

O BI Connector usa um pipeline de agregação do MongoDB para executar queries em um banco de dados do MongoDB. Você pode adicionar um campo especial ao seu esquema para passar uma string de query personalizada do MongoDB $match para sua instância do MongoDB.

Utilize a opção --customFilterField com mongodrdl para nomear um campo de filtro personalizado. Esse campo passa um estágio $match nativo do MongoDB para ser usado como o primeiro estágio do pipeline de agregação, que filtra todos os resultados retornados do MongoDB. O BI Connector aplica esse estágio antes de qualquer estágio adicional enviado do SQL.

A query pode referir-se a qualquer campo da collection, mesmo que os campos não estejam expostos no esquema relacional.

Para ver um exemplo de uso de filtro personalizado, consulte Exemplo de filtro personalizado.

Documentos fornecidos da seguinte forma na coleção abc no banco de dados test:

{
"_id": ObjectId(),
"close": 7.45,
"detail": { "a": 2, "b": 3 }
}

Execute o mongodrdl para gerar um esquema baseado nesta coleção:

mongodrdl -d test -c abc -o schema.drdl

O arquivo de esquema gerado (schema.drdl) parece semelhante ao seguinte:

schema:
- db: test
tables:
- table: abc
collection: abc
pipeline: []
columns:
- Name: _id
MongoType: bson.ObjectId
SqlName: _id
SqlType: varchar
- Name: close
MongoType: float64
SqlName: close
SqlType: numeric
- Name: detail.a
MongoType: float64
SqlName: detail.a
SqlType: numeric
- Name: detail.b
MongoType: float64
SqlName: detail.b
SqlType: numeric

Para utilizar este campo, especifique a bandeira --customFilterField com o nome que pretende que este campo tenha:

mongodrdl [ other options ] --customFilterField _MONGOFILTER -o schema.drdl

Seu arquivo DRDL schema.drdl incluirá o seguinte campo em cada tabela gerada:

- Name: _MONGOFILTER
MongoType: mongo.Filter
SqlName: _MONGOFILTER
SqlType: varchar

Para adicionar o estágio de query MongoDB especial ao seu SQL padrão, use a seguinte sintaxe SQL:

SELECT <normal>
FROM <tablename>
WHERE <normal conditions> AND
_MONGOFILTER='{ <json string that represents query to use> }'
SELECT name,age
FROM users
WHERE active='t' AND
_MONGOFILTER='{"addr":{"$elemMatch":{"city":"Springfield","state":"CA"}}}'

O BI Connector traduzirá o SQL acima para a seguinte expressão de agregação MongoDB:

db.users.aggregate([
{$match:{"addr":{"$elemMatch":{"city":"Springfield","state":"CA"}}},
{$match:{"active":true}},
{$project:{"name":1, "age":1}}
]);

Você pode usar esse filtro personalizado em qualquer ferramenta de business intelligence filtrando seu campo especial e fornecendo o valor a ser correspondido como uma única string entre aspas representando um JSON válido. Todas as aspas dentro do JSON devem ser aspas duplas.

Se seu servidor MongoDB estiver executando com autenticação habilitada, você deverá especificar um nome de usuário, senha e banco de dados de autenticação como opções para seu comando mongodrdl .

Para criar um arquivo .drdl de uma instância do mongod com a autenticação ativada, use o seguinte formato de comando:

mongodrdl --host myhost.example.net:27017 \
--username dbUser \
--password myPassword \
--db reports \
--collection FY2017 \
--authenticationDatabase admin \
--out schema.drdl

O MongoDB Atlas é um serviço de nuvem para executar, monitorar e manter sistemas do MongoDB, incluindo o provisionamento de servidores dedicados para instâncias do MongoDB.

Observação

O MongoDB Atlas oferece um Connector BI hospedado. Você não pode usar a saída de arquivo .drdl mongodrdl no Connector BI hospedado no Atlas. O Atlas BI Connector requer amostragem que tenha um intervalo de atualização de amostra e tamanho de amostra ajustáveis.

Para obter mais informações sobre o Connector BI hospedado no Atlas, consulte Conectar via Connector BI for Atlas.

Se você estiver executando o Connector BI localmente e desejar criar um .drdl de um banco de dados do Atlas, utilize o seguinte formato de comando:

mongodrdl --host <domain0>.mongodb.net:27017,<domain1>.mongodb.net:27017,... \
--username <username> \
--password <password> \
--ssl \
--authenticationDatabase admin \
--db <database> \
--out schema.drdl

Voltar

mongosqld

Próximo

mongotranslate