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 MongoDB atualmente suportadas.
mongodrdl é uma ferramenta de gerenciamento de esquema relacional para o Conector MongoDB para BI. mongodrdlO binário mongodrdl pode:
Produce a schemabased on the contents of one or more MongoDB collections and write them out into.drdlfiles used bymongosqld.Uploada.drdlfile's schema to the MongoDB deployment your BI Connector is reading from.Downloadesquemas armazenados de seu sistema do MongoDB.Deleteesquemas armazenados de seu sistema do MongoDB.Nameesquemas 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.
The default minimum TLS version is 1.1 for outgoing connections from mongodrdl to MongoDB.
You can adjust this setting with the --minimumTLSVersion option.
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.
sampleSamples the namespaces specified by the
--db, optional--collection, and other command line options to output a .drdl file. Thesamplecommand encapsulates all themongodrdlbehavior prior to version 2.11.mongodrdl sample --db <db-name> --collection <collection-name> --out <filename>.drdl
list-schema-idsLista a representação de string do ObjectId de cada esquema armazenado e a data em que foi criado.
list-schema-idsrequer 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-namesLista o nome e a representação em string do ObjectId para cada esquema armazenado que tenha um nome.
Stored schemas are unnamed by default. You can refer to a named schema by using the
--nameoption with thedownloadanddeletecommands. Use thename-schemacommand to name or rename a schema.list-schema-namesrequer 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
uploadUploads the schema from the specified
.drdlfile to the database specified by the--schemaSourceoption. Schemas are uploaded to theschemascollection.uploadrequer as seguintes opções:NomeDescriçãoObrigatório. Especifica o banco de dados onde as informações do esquema são armazenadas.
--drdlObrigatório. Caminho para o arquivo
.drdla ser carregado.Por exemplo, o seguinte comando transfere o esquema no arquivo
movies.drdlpara o banco de dados doschemas:mongodrdl upload --schemaSource schemas --drdl ./movies.drdl A representação de string do ObjectId do esquema carregado é retornada:
5d793f3f6a26a3ce66c304ea The next step is to store the schema under a name you provide, using the
name-schemacommand:mongodrdl name-schema --name movies --schemaSource schemas --schema 5d793f3f6a26a3ce66c304ea Para utilizar o esquema recém-carregado que recebeu um nome especificado, reinicie o
mongosqldcom 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
If you upload a custom schema, you must store it with its specified name, using
name-schema, and then specify this name to themongosqldwith--schemaName. If you don't store the schema's name when you upload it, the schema name defaults todefaultSchema. If the schema's name doesn't exist, this results in an error frommongosqldsimilar to the following: MongoDB schema not yet available. Error initializing schema: no schema found for name.
downloadFaz o download de um esquema especificado por seu nome ou representação de string do ObjectId e o imprime no console.
downloadaceita as seguintes opções:NomeDescriçãoObrigatório. Especifica o banco de dados onde as informações do esquema são armazenadas.
--nameThe name of the schema. To learn more about naming schemas, see the
name-schemacommand.Obrigatório se
--schemanão for especificado.--schemaA representação de string do ObjectId do esquema.
Obrigatório se
--namenão for especificado.Por exemplo, o seguinte comando imprime o esquema
moviesno console:mongodrdl download --schemaSource schemas --name movies Para armazenar o esquema em um arquivo
.drdl, direcione a saída para o arquivo.drdldesejado:mongodrdl download --schemaSource schemas --name movies > ./movies.drdl
deleteExclui um esquema especificado por seu nome ou representação de string do ObjectId.
deleteaceita as seguintes opções:NomeDescriçãoObrigatório. Especifica o banco de dados onde as informações do esquema são armazenadas.
--nameThe name of the schema. To learn more about naming schemas, see the
name-schemacommand.Obrigatório se
--schemanão for especificado.--schemaA representação de string do ObjectId do esquema.
Obrigatório se
--namenão for especificado.Por exemplo, o seguinte comando exclui o esquema com id
5d7941dc6a26a3d0fc397284no banco de dados doschemas:mongodrdl delete --schemaSource schemas --schema 5d7941dc6a26a3d0fc397284
name-schemaCria um novo nome para um esquema ou atualiza o nome existente de um esquema.
Stored schemas are unnamed by default. You can refer to a named schema by using the
--nameoption with thedownloadanddeletecommands. Use thename-schemacommand to name or rename a schema.name-schemarequer 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
5d72adea5c23a9e44882a1adno banco de dadosschemascomomovies:mongodrdl name-schema --name movies --schemaSource schemas --schema 5d72adea5c23a9e44882a1ad
Opções
Opções principais
--helpRetorna informações sobre as opções e uso
mongodrdlde.
--versionRetorna o
mongodrdlnúmero de versão do.
--verbose <level>, -v <level>Specifies that
mongodrdlshould provide more detailed log output. Include multiple times for more verbosity (e.g.-vvvvv), or specify a numeric value (e.g.--verbose=5).
--uri <mongodb-uri>Novidades na versão 2.12.
Cadeia de conexão de URI do MongoDB.
Importante
The following command-line options cannot be used in conjunction with
--urioption:--password(se a cadeia de conexão do URI também incluir a senha)
Instead, specify these options as part of your
--uriconnection string.
--host <hostname><:port>, -h <hostname><:port>Padrão: localhost:27017
Specifies a resolvable hostname for the
mongodto which to connect. By default, themongodrdlattempts to connect to a MongoDB instance running on the localhost on port number27017.Para se conectar a um conjunto de réplicas, especifique o
replSetNamee uma lista de sementes de membros 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.
Specifies the path where
mongodrdlwill write the schema file. To send the schema to standard output, specify "-" instead of a path.
--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
--preJoinedGere 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
If you upload a custom schema, you must store it with its specified name, using
name-schema, and then specify this name to themongosqldwith--schemaName. If you don't store the schema's name when you upload it, the schema name defaults todefaultSchema. If the schema's name doesn't exist, this results in an error frommongosqldsimilar to the following: MongoDB schema not yet available. Error initializing schema: no schema found for name.
--schemaSource <db-name>Novidades na versão 2.11.
Specifies the database where the schema information is stored. This option is not used by the
samplecommand.
Opções TLS/SSL
--sslPadrão: falso
Instrui o para usar TLS/SSL ao conectar a uma instância MongoDB
mongodrdl.
--sslCAFile <filename>Especifica o arquivo
.pemda instância MongoDB contendo a cadeia de certificado raiz da Autoridade de certificação. Especifique o nome do arquivo.pemusando caminhos relativos ou absolutos.Aviso
Para conexões SSL (
--ssl) paramongodemongos, se omongodrdlexecutar sem o--sslCAFile,mongodrdlnão tentará validar os certificados do servidor . Isso cria uma vulnerabilidade para certificadosmongodemongosexpirados, bem como para processos externos que se fazem passar por instânciasmongodoumongosvá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
.pemque contém o certificado TLS/SSL e a chave paramongosqlda serem usados na conexão com o MongoDB. Você pode especificar o nome do arquivo.pemutilizando um caminho relativo ou absoluto.This option is required when using the
--ssloption to connect to amongodormongosthat hasCAFileenabled withoutallowConnectionsWithoutCertificates.
--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
.pemque contém a lista de certificados revogados. Especifique o nome do arquivo.pemusando caminhos relativos ou absolutos.
--sslAllowInvalidCertificatesPermite 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.
--sslAllowInvalidHostnamesDisables the validation of the hostnames in TLS/SSL certificates. Allows
mongodrdlto connect to MongoDB instances if the hostname their certificates do not match the specified hostname.
--sslFIPSModeDirects the
mongodrdlto use the FIPS mode of the installed OpenSSL library. Your system must have a FIPS compliant OpenSSL library to use the--sslFIPSModeoption.
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
--passworde--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
--usernamee--authenticationDatabase.
--authenticationDatabase <dbname>Especifica o banco de dados no qual o usuário é criado. Consulte o Banco de dados de autenticação.
--authenticationMechanism <name>Padrão: SCRAM-SHA-1
Especifica o mecanismo de autenticação que a instância do utiliza para autenticar
mongodrdlnomongodmongosou.ValorDescriçãoRFC 5802 Mecanismo de Autenticação de Resposta de Desafio Salted padrão usando a1 função de hash SHA.
Novidades na versão 2.6: RFC 7677 Mecanismo de Autenticação de Resposta de Desafio Salted padrão usando a2 função de hash SHA.
PLAIN (LDAP SASL)
Autenticação externa usando LDAP. Você também pode utilizar o
PLAINpara autenticar usuários do banco de dados.PLAINtransmite 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.
Filtros personalizados
O connector BI 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.
Use the --customFilterField option with mongodrdl to name a custom filter field. This field passes a native MongoDB $match stage to use as the first stage of the aggregation pipeline, which filters any results returned from MongoDB. The BI Connector applies this stage before any additional stages pushed down from 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 } }
Run mongodrdl to generate a schema based on this collection:
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
If your MongoDB server is running with authentication enabled, you must specify a username, password, and authentication database as options to your mongodrdl command.
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-se a um cluster por meio do BI Connector.
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