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 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 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 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
Novedades 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
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 de cadena 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 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ó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
.drdlarchivo para 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 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ó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 de cadena 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 de cadena 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 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ó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
mongodrdlde.
--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 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 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>Predeterminado: 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#/.NETjava:La representación UUID heredada 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 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>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 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 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 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) 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 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 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 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 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 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 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 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á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