Descripción
Nota
El conector MongoDB para BI y las utilidades asociadas son compatibles con todas las versiones de servidor MongoDB admitidas actualmente.
mongodrdl Es una herramienta de gestión de esquemas relacionales para el Conector MongoDB para BI. El binario mongodrdl puede:
Produce a schemaen función del contenido de una o más colecciones de MongoDB y escribirlos en.drdlarchivos utilizados pormongosqld.Uploadun.drdlesquema de archivo a la implementación de MongoDB desde la que lee su Conector de BI.Downloadesquemas almacenados de su implementación de MongoDB.Deleteesquemas almacenados de su implementación de MongoDB.Nameesquemas almacenados en su implementación de MongoDB para una gestión más sencilla.
Puede editar .drdl manualmente un archivo para personalizar el esquema del Conector de BI. Para obtener más información sobre el .drdl formato y la edición manual .drdl de archivos, consulte Cargar un esquema desde un archivo DRDL.
Para obtener más información sobre todas las opciones de administración de esquemas de BI Connector, consulte Asignar esquemas relacionales a MongoDB.
Importante
Para aplicar cualquier cambio que realice en sus archivos DRDL, debe mongosqld reiniciar.
Sintaxis
mongodrdl utiliza la siguiente sintaxis:
mongodrdl [<command>] [<options...>]
Versión mínima de TLS predeterminada
Nuevo en la versión 2.6.
La versión mínima de TLS por defecto es 1.1 para conexiones salientes de mongodrdl a MongoDB.
Puede ajustar esta configuración con la --minimumTLSVersion opción.
Comandos
Nuevo en la versión 2.11.
El comportamiento de mongodrdl se determina mediante uno de los siguientes comandos. Si no se especifica ningún comando, mongodrdl muestrea el espacio de nombres especificado.
sampleMuestrea los espacios de nombres especificados por, el comando
--dbopcional--collectiony otras opciones de línea de comandos para generar un archivo .drdl. Elsamplecomando encapsula todo el comportamiento de anterior amongodrdlla 2 versión.11mongodrdl sample --db <db-name> --collection <collection-name> --out <filename>.drdl
list-schema-idsEnumera la representación de cadena del ObjectId de cada esquema almacenado y la fecha en que se creó.
list-schema-idsrequiere la siguiente opción:NombreDescripciónObligatorio. Especifica la base de datos donde se almacena la información del esquema.
Por ejemplo, el siguiente comando enumera los identificadores de esquema en la base de datos
schemas:mongodrdl list-schema-ids --schemaSource schemas La salida se parece a la siguiente:
5d72ad695c23a9e3e26e3c85 2019-09-06T15:03:05.556Z 5d72adea5c23a9e44882a1ad 2019-09-06T15:05:14.349Z
list-schema-namesEnumera el nombre y la representación de cadena del ObjectId para cada esquema almacenado que tiene un nombre.
Los esquemas almacenados no tienen nombre de forma predeterminada. Puede hacer referencia a un esquema con nombre usando la
--nameopción condownloaddeletelos comandos y. Use el comando para nombrar o renombrar unname-schemaesquema.list-schema-namesrequiere la siguiente opción:NombreDescripciónObligatorio. Especifica la base de datos donde se almacena la información del esquema.
Por ejemplo, el siguiente comando devuelve el nombre y ObjectId para cada esquema nombrado en la base de datos
schemas:mongodrdl list-schema-names --schemaSource schemas La salida se parece a la siguiente:
movies 5d72ad695c23a9e3e26e3c85 theaters 5d72adea5c23a9e44882a1ad
uploadCarga el esquema del
.drdlarchivo especificado a la base de datos especificada por la--schemaSourceopción. Los esquemas se cargan en laschemascolección.uploadrequiere las siguientes opciones:NombreDescripciónObligatorio. Especifica la base de datos donde se almacena la información del esquema.
--drdlObligatorio. Ruta al
.drdlarchivo para cargar.Por ejemplo, el siguiente comando carga el esquema del archivo
movies.drdla la base de datosschemas:mongodrdl upload --schemaSource schemas --drdl ./movies.drdl Se devuelve la representación de cadena del ObjectId del esquema cargado:
5d793f3f6a26a3ce66c304ea El siguiente paso es almacenar el esquema con un nombre que usted proporcione, utilizando el
name-schemacomando:mongodrdl name-schema --name movies --schemaSource schemas --schema 5d793f3f6a26a3ce66c304ea Para usar el esquema recién cargado que recibió un nombre específico, reinicia
mongosqldcon la base de datos del esquema especificada por la opción--schemaSourcey con el nombre del esquema especificado con--schemaName:mongosqld --schemaSource <schema-db> --schemaName movies Importante
Si carga un esquema personalizado, debe almacenarlo con su nombre especificado
name-schema() y luego especificar este nombre enmongosqld--schemaNamecon. Si no almacena el nombre del esquema al cargarlo, el nombre predeterminadodefaultSchemaserá. Si el nombre del esquema no existe, se generará un error de similar al siguiente: Esquema de MongoDB aún no disponible. Error al inicializarmongosqldel esquema: no se encontró ningún esquema para el nombre.
downloadDescarga un esquema especificado por su nombre o representación en cadena de la ObjectId y la imprime en la consola.
downloadacepta las siguientes opciones:NombreDescripciónObligatorio. Especifica la base de datos donde se almacena la información del esquema.
--nameEl nombre del esquema. Para obtener más información sobre cómo nombrar esquemas, consulte el
name-schemacomando.Obligatorio si
--schemano se especifica.--schemaLa representación de cadena del ObjectId del esquema.
Obligatorio si
--nameno se especifica.Por ejemplo, el siguiente comando imprime el esquema
moviesen la consola:mongodrdl download --schemaSource schemas --name movies Para almacenar el esquema en un archivo
.drdl, dirija la salida al archivo.drdldeseado:mongodrdl download --schemaSource schemas --name movies > ./movies.drdl
deleteElimina un esquema especificado por su nombre o representación de cadena del ObjectId.
deleteacepta las siguientes opciones:NombreDescripciónObligatorio. Especifica la base de datos donde se almacena la información del esquema.
--nameEl nombre del esquema. Para obtener más información sobre cómo nombrar esquemas, consulte el
name-schemacomando.Obligatorio si
--schemano se especifica.--schemaLa representación de cadena del ObjectId del esquema.
Obligatorio si
--nameno se especifica.Por ejemplo, el siguiente comando elimina el esquema con id
5d7941dc6a26a3d0fc397284en la base de datosschemas:mongodrdl delete --schemaSource schemas --schema 5d7941dc6a26a3d0fc397284
name-schemaCrea un nuevo nombre para un esquema o actualiza el nombre existente de un esquema.
Los esquemas almacenados no tienen nombre de forma predeterminada. Puede hacer referencia a un esquema con nombre usando la
--nameopción condownloaddeletelos comandos y. Use el comando para nombrar o renombrar unname-schemaesquema.name-schemarequiere las siguientes opciones:NombreDescripciónObligatorio. Especifica la base de datos donde se almacena la información del esquema.
Obligatorio. El nuevo nombre del esquema.
Obligatorio La representación de cadena del ObjectId del esquema.
Por ejemplo, el siguiente comando nombra el esquema
5d72adea5c23a9e44882a1aden la base de datosschemascomomovies:mongodrdl name-schema --name movies --schemaSource schemas --schema 5d72adea5c23a9e44882a1ad
opciones
Opciones principales
--helpDevuelve información sobre las opciones y el uso
mongodrdlde.
--versionDevuelve el
mongodrdlnúmero de versión.
--verbose <level>, -v <level>Especifica que
mongodrdldebe proporcionar una salida de registro más detallada. Inclúyelo varias veces para mayor nivel de verbosidad (p. ej.-vvvvv), o especifica un valor numérico (p. ej.--verbose=5).
--uri <mongodb-uri>Novedad en la versión 2.12.
Cadena de conexión URI de MongoDB.
Importante
Las siguientes opciones de línea de comandos no se pueden utilizar junto con la
--uriopción:--password(si la cadena de conexión URI también incluye la contraseña)
En su lugar, especifique estas opciones como parte de su
--uricadena de conexión.
--host <hostname><:port>, -h <hostname><:port>Por defecto: localhost:27017
Especifica un hostname resolvible para el
mongodal que conectar. Por defecto, elmongodrdlintenta conectarse a una instancia de MongoDB que se ejecuta en localhost en el puerto número27017.Para conectarse a un set de réplicas, especifica el
replSetNamey una lista de nodos iniciales de los miembros del set, tal como se muestra a continuación:<replSetName>/<hostname1><:port>,<hostname2><:port>,<...> Siempre puede conectarse directamente a una sola instancia de MongoDB especificando directamente el host y el número de puerto.
--port <port>Por defecto: 27017
Especifica el puerto TCP en el que la instancia de MongoDB escucha las conexiones de los clientes.
--db <database>, -d <database>Especifica una base de datos desde la cual generar un archivo de esquema
.drdl.
--collection <collection>, -c <collection>Especifica una colección a partir de la cual se generará un archivo de esquema
.drdl. Si no se especifica ninguna colección, esta opción utilizará todas las colecciones de la base de datos o instancia especificada.
--customFilterField <name>, -f <name>Especifica el nombre del campo que se añadirá a un filtro personalizado de MongoDB. Consulta Filtros personalizados para obtener más información.
--out <path>, -o <path>Predeterminado: Salida estándar.
Especifica la ruta donde escribirá el archivo de esquema. Para enviar el esquema a la salida estándar, especifique
mongodrdl"-" en lugar de una ruta.
--sampleSize <size>, -s <size>Por defecto: 1000
Especifica la cantidad de documentos a muestrear al generar el esquema de la colección.
--uuidSubtype3Encoding <old|csharp|java>, -b <old|csharp|java>Especifique la codificación utilizada para generar el subtipo binario UUID 3. Elija uno de los siguientes valores:
old: Antigua representación del subtipo binario BSONcsharp: La representación UUID heredada de C#/.NETjava:La representación UUID heredada de Java
--preJoinedGenerar tablas desenrolladas que incluyan columnas principales, lo que da como resultado una tabla "preunida".
--schema <db-id>Nuevo en la versión 2.11.
Obligatorio. Especifica la representación en string del ObjectId del esquema.
--name <db-name>Nuevo en la versión 2.11.
Especifica el nombre del esquema.
Importante
Si carga un esquema personalizado, debe almacenarlo con su nombre especificado
name-schema() y luego especificar este nombre enmongosqld--schemaNamecon. Si no almacena el nombre del esquema al cargarlo, el nombre predeterminadodefaultSchemaserá. Si el nombre del esquema no existe, se generará un error de similar al siguiente: Esquema de MongoDB aún no disponible. Error al inicializarmongosqldel esquema: no se encontró ningún esquema para el nombre.
--schemaSource <db-name>Nuevo en la versión 2.11.
Especifica la base de datos donde se almacena la información del esquema. El comando no utiliza esta opción.
sample
Opciones TLS/SSL
--sslPor defecto: False
Instruye a
mongodrdla usar TLS/SSL al conectarse a una instancia de MongoDB.
--sslCAFile <filename>Especifica el archivo
.pemde la instancia de MongoDB que contiene la cadena de certificados raíz de la autoridad de certificación. Especifique el nombre del archivo.pemmediante rutas relativas o absolutas.Advertencia
Para las conexiones SSL (
--ssl) amongodymongos, simongodrdlse ejecuta sin--sslCAFile,mongodrdlno intentará validar los certificados del servidor. Esto crea una vulnerabilidad para los certificadosmongodymongoscaducados, así como para los procesos externos que se hacen pasar por instanciasmongodomongosválidas. Asegúrese de especificar siempre el archivo de CA para validar los certificados del servidor en casos donde exista la posibilidad de intrusión.
--sslPEMKeyFile <filename>Especifica el
.pemarchivo que contiene el certificado TLS/SSL y la clave quemongosqldusará al conectarse a MongoDB. Puede especificar el nombre del.pemarchivo mediante una ruta relativa o absoluta.Esta opción es necesaria cuando se utiliza la opción
--sslpara conectarse a unmongodomongosque tieneCAFilehabilitado sinnet.ssl.allowConnectionsWithoutCertificates.
--sslPEMKeyPassword <password>Especifica la ruta a un archivo que contiene el certificado y la clave privada para conectarse a MongoDB.
--sslCRLFile <filename>Especifica el archivo
.pemque contiene la Lista de revocación de certificados. Especifica el nombre del archivo.pemcon rutas relativas o absolutas.
--sslAllowInvalidCertificatesPermite que la instancia de MongoDB presente un certificado SSL/TLS de servidor no válido. Al usar la configuración, MongoDB registra el uso del certificado no válido como
allowInvalidCertificatesadvertencia.
--sslAllowInvalidHostnamesDesactiva la validación de nombres de host en certificados TLS/SSL. Permite
mongodrdlque se conecte a instancias de MongoDB si el nombre de host de sus certificados no coincide con el especificado.
--sslFIPSModeIndica a que use el modo FIPS de la biblioteca OpenSSL instalada. Su
mongodrdl--sslFIPSModesistema debe tener una biblioteca OpenSSL compatible con FIPS para usar la opción.
Opciones de autenticación
--username <username>, -u <username>Especifica un nombre de usuario con el cual autenticarse en una base de datos MongoDB que requiere autenticación. Utilízalo en conjunto con las opciones
--passwordy--authenticationDatabase.
--password <password>, -p <password>Especifica una contraseña con la que autenticarse en una base de datos de MongoDB que requiere autenticación. Utilízalo en conjunto con las opciones
--usernamey--authenticationDatabase.
--authenticationDatabase <dbname>Especifica la base de datos donde se crea el usuario. Consulte Base de datos de autenticación.
--authenticationMechanism <name>Por defecto: SCRAM-SHA-1
Especifica el mecanismo de autenticación que
mongodrdlutiliza la instancia para autenticarse enmongodmongoso.ValorDescripciónMecanismo de autenticación de respuesta al desafío con sal estándarRFC que utiliza la 5802 1 función hash SHA.
Novedades en la versión 2.6: Mecanismo de autenticación de respuesta al desafío con sal estándarRFC que utiliza la 7677 2 función hash SHA.
PLAIN (SASL LDAP)
Autenticación externa mediante LDAP. También puede utilizar
PLAINpara autenticar a los usuarios de base de datos.PLAINtransmite las contraseñas en texto sin cifrar. Este mecanismo está disponible solo en MongoDB Enterprise.GSSAPI (Kerberos)
Autenticación externa utilizando Kerberos. Este mecanismo está disponible solo en MongoDB Enterprise.
Filtros personalizados
El Conector de BI utiliza una canalización de agregación de MongoDB para realizar consultas en una base de datos MongoDB. Puede agregar un campo especial a su esquema para pasar una cadena de consulta personalizada `$match` de MongoDB a su instancia de MongoDB.
Usa la opción --customFilterField con mongodrdl para nombrar un campo de filtro personalizado. Este campo pasa una etapa nativa de MongoDB $match para usar como la primera etapa del pipeline de agregación, que filtra cualquier resultado devuelto de MongoDB. El conector BI aplica esta etapa antes de que cualquier etapa adicional se aplique desde SQL.
La consulta puede hacer referencia a cualquier campo de la colección, incluso si los campos no están expuestos en el esquema relacional.
Para un ejemplo de uso de filtros personalizados, consulta Ejemplo de filtro personalizado.
Ejemplos de uso
Ejemplo de generación de esquemas
Dados documentos de la siguiente forma en la colección abc en la base de datos test:
{ "_id": ObjectId(), "close": 7.45, "detail": { "a": 2, "b": 3 } }
Ejecute para generar un esquema basado en esta mongodrdl colección:
mongodrdl -d test -c abc -o schema.drdl
El archivo de esquema generado (schema.drdl) se parece al siguiente:
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
Ejemplo de filtro personalizado
Para utilizar este campo, especifique el indicador --customFilterField con el nombre que desea que tenga este campo:
mongodrdl [ other options ] --customFilterField _MONGOFILTER -o schema.drdl
Su archivo DRDL schema.drdl incluirá el siguiente campo en cada tabla generada:
- Name: _MONGOFILTER MongoType: mongo.Filter SqlName: _MONGOFILTER SqlType: varchar
Para agregar la etapa de consulta especial de MongoDB a su SQL estándar, utilice la siguiente sintaxis 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"}}}'
El conector de BI traducirá el SQL anterior en la siguiente expresión de agregación de MongoDB:
db.users.aggregate([ {$match:{"addr":{"$elemMatch":{"city":"Springfield","state":"CA"}}}, {$match:{"active":true}}, {$project:{"name":1, "age":1}} ]);
Puede usar este filtro personalizado en cualquier herramienta de inteligencia empresarial filtrando por su campo especial y proporcionando el valor correspondiente como una cadena entre comillas simples que representa un JSON válido. Todas las comillas dentro del JSON deben ser dobles.
Ejemplo de autenticación
Si su servidor MongoDB se ejecuta con la autenticación habilitada, debe especificar un nombre de usuario, una contraseña y una base de datos de autenticación como opciones para su mongodrdl comando.
Para crear un archivo .drdl desde una instancia de mongod con autenticación habilitada, use el siguiente formato de comando:
mongodrdl --host myhost.example.net:27017 \ --username dbUser \ --password myPassword \ --db reports \ --collection FY2017 \ --authenticationDatabase admin \ --out schema.drdl
Ejemplo de Atlas de MongoDB
MongoDB Atlas es un servicio en la nube para ejecutar, supervisar y mantener implementaciones de MongoDB, incluida la provisionamineto de servidores dedicados para instancias de MongoDB.
Nota
MongoDB Atlas ofrece un Conector de BI alojado. No se puede usar la salida del archivo .drdl del comando mongodrdl en el Conector de BI alojado en Atlas. El Conector de BI de Atlas requiere un muestreo con un intervalo de actualización y un tamaño de muestra ajustables.
Para obtener más información sobre el conector de BI alojado en Atlas, consulte Conectarse a un clúster a través del conector de BI.
Si está ejecutando BI Connector localmente y desea crear un archivo .drdl desde una base de datos Atlas, utilice el siguiente 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