mongodrdl
Nesta página
Descrição
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. mongodrdl
O 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 pelomongosqld
.Upload
um esquema de arquivo.drdl
para a implementação do MongoDB da qual o BI Connector 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
.
Sintaxe
mongodrdl
usa a seguinte sintaxe:
mongodrdl [<command>] [<options...>]
Versão mínima padrão do TLS
Novidades na versão 2,6.
A versão TLS mínima padrão é 1.1 para conexões de saída de mongodrdl
para MongoDB.
Você pode ajustar esta configuração com a opção --minimumTLSVersion
.
Comandos
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
,--collection
opcional e outras opções de linha de comando para gerar um arquivo .drdl. O comandosample
encapsula todo o comportamentomongodrdl
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:NomeDescriçãoObrigató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 comandosdownload
edelete
. Utilize o comandoname-schema
para dar nome ou renomear um esquema.list-schema-names
requer a seguinte opção:NomeDescriçãoObrigató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 de dados especificado pela opção--schemaSource
. Os esquemas são carregados na coleçãoschemas
.upload
requer as seguintes opções:NomeDescriçãoObrigató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 doschemas
: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 omongosqld
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 demongosqld
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:NomeDescriçãoObrigató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
name-schema
comando.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:NomeDescriçãoObrigató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
name-schema
comando.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 doschemas
: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 comandosdownload
edelete
. Utilize o comandoname-schema
para dar nome ou renomear um esquema.name-schema
requer as seguintes opções:NomeDescriçãoObrigató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 dadosschemas
comomovies
:mongodrdl name-schema --name movies --schemaSource schemas --schema 5d72adea5c23a9e44882a1ad
Opções
Opções principais
--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
).
--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
:--password
(se a cadeia de conexão do URI também incluir a senha)
Em vez disso, especifique essas opções como parte de sua string de conexão
--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úmero27017
.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 BSONcsharp
: A representação legada de UUID em C#/.NETjava
: 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 omongosqld
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 demongosqld
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 de dados onde as informações do esquema são armazenadas. Esta opção não é utilizada pelo comando
sample
.
Opções TLS/SSL
--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
) paramongod
emongos
, se omongodrdl
executar sem o--sslCAFile
,mongodrdl
não tentará validar os certificados do servidor. Isso cria uma vulnerabilidade para certificadosmongod
emongos
expirados, bem como para processos externos que se fazem passar por instânciasmongod
oumongos
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 paramongosqld
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 ummongod
oumongos
que tenhaCAFile
habilitado semnet.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
.
Opções de autenticação
--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 nomongod
oumongos
.ValorDescriçãoRFC 5802 Mecanismo de Autenticação de Resposta do Desafio Salgado padrão usando a função com hash SHA1.
Novidades na versão 2.6: Salted Challenge Response Authentication Mechanism RFC 7677 padrão usando a função de hash SHA2.
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 apenas no MongoDB Enterprise.GSSAPI (Kerberos)
Autenticação externa usando Kerberos. Esse mecanismo está disponível somente no MongoDB Enterprise.
Filtros personalizados
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 da 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.
Exemplos de uso
Exemplo de geração de esquema
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
Exemplo de filtro personalizado
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.
Exemplo de autenticação
Se seu servidor MongoDB estiver executando com autenticação habilitada, você deverá especificar um nome de usuário, senha e banco de 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
Exemplo de Atlas do MongoDB
O MongoDB Atlas é um serviço de nuvem para executar, monitorar e manter implantações do MongoDB, incluindo o provisionamento de servidores dedicados para instâncias do MongoDB.
Observação
O MongoDB Atlas oferece um BI Connector hospedado. Você não pode usar a saída de arquivo .drdl
mongodrdl
no BI Connector 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 BI Connector hospedado no Atlas, consulte Conectar via BI Connector 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