Descripción
Nota
El conector de MongoDB para BI y las utilidades asociadas son compatibles con todas las versiones actualmente soportadas del servidor MongoDB.
mongodrdl es una herramienta de gestión de esquemas relacionales para el MongoDB Connector for BI. El binario mongodrdl puede:
Produce a schemasegún el contenido de una o varias colecciones de MongoDB y escribirlos en.drdlarchivos utilizados pormongosqld.Uploadal esquema de un archivo.drdlen la implementación de MongoDB del que el BI Connector está leyendo.Downloadesquemas almacenados de tu implementación de MongoDB.Deleteesquemas almacenados de tu implementación de MongoDB.Nameesquemas almacenados en su implementación de MongoDB para una gestión más fácil.
Puede editar manualmente un archivo .drdl para personalizar el esquema del Conector de BI. Para obtener más información sobre el formato .drdl y la edición manual de archivos .drdl, consulta Cargar un esquema a partir de un archivo DRDL.
Para aprender más sobre todas las opciones de gestión de esquemas de BI Connector, consulta Mapear esquemas relacionales a MongoDB.
Importante
Para aplicar cualquier cambio que realices en tus archivos DRDL, debes reiniciar mongosqld.
Sintaxis
mongodrdl utiliza la siguiente sintaxis:
mongodrdl [<command>] [<options...>]
Versión mínima de TLS por defecto
Novedad 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.
Puedes ajustar esta configuración con la opción --minimumTLSVersion.
Comandos
Novedad en la versión 2.11.
El comportamiento de mongodrdl está determinado por uno de los siguientes comandos. Si no se especifica un comando, mongodrdl muestrea el namespace especificado.
sampleMuestra los espacios de nombres especificados por el
--db,--collectionopcional y otras opciones de línea de comando para generar un .drdl archivo. El comandosampleresume todo el comportamientomongodrdlanterior a la versión 2.11.mongodrdl sample --db <db-name> --collection <collection-name> --out <filename>.drdl
list-schema-idsEnumera la representación en forma de string del ObjectId de cada esquema almacenado y la fecha en que se creó.
list-schema-idsrequiere la siguiente opción:NombreDescripciónRequerido. Especifica la base de datos donde se almacena la información del esquema.
Por ejemplo, el siguiente comando lista los ids de los esquemas en la base de datos
schemas:mongodrdl list-schema-ids --schemaSource schemas La salida es similar 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 en string del ObjectId para cada esquema almacenado que tenga un nombre.
Los esquemas almacenados no tienen nombre por defecto. Puede hacer referencia a un esquema nombrado usando la opción
--namecon los comandosdownloadydelete. Utiliza el comandoname-schemapara nombrar o renombrar un esquema.list-schema-namesrequiere la siguiente opción:NombreDescripciónRequerido. Especifica la base de datos donde se almacena la información del esquema.
Por ejemplo, el siguiente comando devuelve el nombre y el ObjectId de cada esquema nombrado en la base de datos
schemas:mongodrdl list-schema-names --schemaSource schemas La salida es similar a la siguiente:
movies 5d72ad695c23a9e3e26e3c85 theaters 5d72adea5c23a9e44882a1ad
uploadCarga el esquema desde el archivo especificado
.drdla la base de datos especificada por la opción--schemaSource. Los esquemas se suben a la colecciónschemas.uploadrequiere las siguientes opciones:NombreDescripciónRequerido. Especifica la base de datos donde se almacena la información del esquema.
--drdlObligatorio. Ruta al archivo
.drdlpara cargar.Por ejemplo, el siguiente comando carga el esquema en el archivo
movies.drdla la base de datosschemas:mongodrdl upload --schemaSource schemas --drdl ./movies.drdl Se devuelve la representación en string del ObjectId del esquema subido:
5d793f3f6a26a3ce66c304ea El siguiente paso es almacenar el esquema bajo un nombre que usted proporcione, utilizando el comando
name-schema: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 cargas un esquema personalizado, debes almacenarlo con su nombre especificado, usando
name-schema, y luego especificar ese nombre en elmongosqldcon--schemaName. Si no almacenas el nombre del esquema al subirlo, el nombre del esquema se establece por defecto endefaultSchema. Si el esquema de nombre no existe, esto resulta en un error demongosqldsimilar al siguiente: El esquema de MongoDB aún no está disponible. Error al inicializar el esquema: no se encontró un 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ónRequerido. Especifica la base de datos donde se almacena la información del esquema.
--nameEl nombre del esquema. Para aprender más sobre el nombramiento de esquemas, consulte el comando
name-schema.Requerido si
--schemano está especificado.--schemaLa representación en string del ObjectId del esquema.
Requerido si
--nameno está especificado.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 la representación en string de la ObjectId.
deleteacepta las siguientes opciones:NombreDescripciónRequerido. Especifica la base de datos donde se almacena la información del esquema.
--nameEl nombre del esquema. Para aprender más sobre el nombramiento de esquemas, consulte el comando
name-schema.Requerido si
--schemano está especificado.--schemaLa representación en string del ObjectId del esquema.
Requerido si
--nameno está especificado.Por ejemplo, el siguiente comando borra 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 por defecto. Puede hacer referencia a un esquema nombrado usando la opción
--namecon los comandosdownloadydelete. Utiliza el comandoname-schemapara nombrar o renombrar un esquema.name-schemarequiere las siguientes opciones:NombreDescripciónRequerido. Especifica la base de datos donde se almacena la información del esquema.
Obligatorio. El nuevo nombre del esquema.
Obligatorio La representación de string 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 de
mongodrdl.
--versionDevuelve el número de versión de la
mongodrdl.
--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 pueden utilizarse junto con la opción
--uri:--password(si la cadena de conexión URI también incluye la contraseña)
En su lugar, especifica estas opciones como parte de tu cadena de conexión
--uri.
--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 única 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 a partir de la cual generar un archivo de esquema
.drdl.
--collection <collection>, -c <collection>Especifica una colección de la cual generar un archivo de esquema
.drdl. Si no especifica una colección, esta opción utilizará todas las colecciones en la base de datos o instancia especificada.
--customFilterField <name>, -f <name>Especifica el nombre del campo que se va a añadir para un filtro personalizado de MongoDB. Consulta Filtros personalizados para obtener más detalles.
--out <path>, -o <path>por defecto: Salida estándar.
Especifica la ruta donde
mongodrdlguardará el archivo del esquema. Para enviar el esquema a la salida estándar, especifica “-” en lugar de una ruta.
--sampleSize <size>, -s <size>Por defecto: 1000
Especifica la cantidad de documentos que se deben 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 subtip Binario UUID 3. Elija uno de los siguientes valores:
oldReprensentación anterior del subtipo binario BSONcsharp: La representación UUID heredada de C#/.NETjavaLa representación heredada UUID de Java
--preJoinedGenerar tablas desglosadas incluyendo columnas ascendentes, lo que da como resultado una tabla "preunida".
--schema <db-id>Novedad en la versión 2.11.
Obligatorio. Especifica la representación en string del ObjectId del esquema.
--name <db-name>Novedad en la versión 2.11.
Especifica el nombre del esquema.
Importante
Si cargas un esquema personalizado, debes almacenarlo con su nombre especificado, usando
name-schema, y luego especificar ese nombre en elmongosqldcon--schemaName. Si no almacenas el nombre del esquema al subirlo, el nombre del esquema se establece por defecto endefaultSchema. Si el esquema de nombre no existe, esto resulta en un error demongosqldsimilar al siguiente: El esquema de MongoDB aún no está disponible. Error al inicializar el esquema: no se encontró un esquema para el nombre.
--schemaSource <db-name>Novedad en la versión 2.11.
Especifica la base de datos donde se almacena la información del esquema. Esta opción no es utilizada por el comando
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 certificadora. Especifique el nombre del archivo.pemutilizando rutas relativas o absolutas.Advertencia
Para las conexiones SSL (
--ssl) amongodymongos, si elmongodrdlse ejecuta sin el--sslCAFile,mongodrdlno intentará validar los certificados del servidor. Esto crea una vulnerabilidad frente a la caducidad de los certificadosmongodymongos, así como ante procesos externos que se hacen pasar por instancias válidas demongodomongos. Asegúrate de siempre especificar el archivo CA para validar los certificados del servidor en casos donde exista la posibilidad de intrusión.
--sslPEMKeyFile <filename>Especifica el archivo
.pemque contiene tanto el certificado como la clave TLS/SSL para quemongosqlduse al conectarse a MongoDB. Puede especificar el nombre del archivo.pemutilizando una ruta relativa o absoluta.Esta opción es necesaria al usar la opción
--sslpara conectarse amongodomongosque tengan habilitadoCAFilesinallowConnectionsWithoutCertificates.
--sslPEMKeyPassword <password>Especifica la ruta hacia el archivo que contiene el certificado y 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 inválido. Al utilizar la configuración
allowInvalidCertificates, MongoDB registra el uso del certificado no válido como una advertencia.
--sslAllowInvalidHostnamesDesactiva la validación de los nombres de host en los certificados TLS/SSL. Permite que
mongodrdlse conecte a instancias de MongoDB si el nombre de host de sus certificados no coincide con el nombre de host especificado.
--sslFIPSModeIndica al
mongodrdlque utilice el modo FIPS de la librería OpenSSL instalada. Su sistema debe contar con una librería OpenSSL compatible con FIPS para utilizar la opción--sslFIPSMode.
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 en la que se crea el usuario. Consulta la base de datos de autenticación.
--authenticationMechanism <name>Por defecto: SCRAM-SHA-1
Especifica el mecanismo de autenticación que la instancia de
mongodrdlusa para autenticarse enmongodomongos.ValorDescripciónRFC 5802 mecanismo estándar de autenticación de respuesta a desafío basado en sal (Salted Challenge Response Authentication Mechanism) utilizando la función hash SHA1.
Nuevo en la versión 2.6: RFC 7677 mecanismo estándar de autenticación por desafío con salt (SCRAM) mediante la función de hash SHA2.
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
BI Connector utiliza una pipeline de agregación de MongoDB para realizar consultas a una base de datos MongoDB. Puedes añadir un campo especial a tu esquema para pasar una string del query de MongoDB $match personalizada a tu 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 query puede hacer referencia a cualquier campo en 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 esquema
Dados los documentos con la siguiente estructura en la colección abc de la base de datos test:
{ "_id": ObjectId(), "close": 7.45, "detail": { "a": 2, "b": 3 } }
Ejecute mongodrdl para crear un esquema basado en esta colección:
mongodrdl -d test -c abc -o schema.drdl
El archivo de esquema generado (schema.drdl) es similar 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, especifica la bandera --customFilterField con el nombre que desees 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 especial de la query de MongoDB a tu SQL estándar, utiliza 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 BI Connector traducirá el SQL anterior a 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 utilizar este filtro personalizado en cualquier herramienta de business intelligence filtrando en su campo especial y proporcionando el valor a coincidir como una string entre comillas simples que represente un JSON válido. Todas las comillas dentro del JSON deben ser double quotes.
Ejemplo de autenticación
Si su servidor MongoDB está ejecutándose con autenticación habilitada, debe especificar un nombre de usuario, contraseña y base de datos de autenticación como opciones para su comando mongodrdl.
Para crear un .drdl archivo de una instancia 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 MongoDB Atlas
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 puedes usar la salida de archivo .drdl del comando mongodrdl en el Atlas-hosted BI Connector. Atlas BI Connector requiere un muestreo que tenga un intervalo de actualización de muestra ajustable y un tamaño de muestra ajustable.
Para obtener más información sobre el Conector BI alojado en Atlas, consulta Conéctate a un clúster a través del Conector BI.
Si estás ejecutando el BI Connector localmente y deseas crear un .drdl archivo desde una base de datos Atlas, utiliza 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