Overview
Nuevo en la versión 2.3:
Por defecto, mongosqld toma muestras de cada colección en la instancia MongoDB conectada y genera una representación relacional del esquema que luego almacena en caché en la memoria.
Nota
Si tienes authentication activado, asegúrate de que tu usuario de MongoDB tenga los permisos correctos. Vea Permisos de usuario a continuación.
Por defecto, mongosqld no vuelve a muestrear datos automáticamente después de generar el esquema. Especifica la opción --schemaRefreshIntervalSecs para dirigir mongosqld a volver a muestrear automáticamente los datos y regenerar el esquema en un cronograma fijo.
Si el esquema que mongosqld crea no satisface sus necesidades de carga de trabajo de BI, puede generar manualmente un archivo de esquema y editarlo según sea necesario.
Para obtener más información sobre los modos de muestreo, consulta el cuadro de referencia de modos de muestreo.
Permisos de usuario para muestreo en caché
Si su instancia de MongoDB usa autenticación y desea usar el muestreo en caché, su instancia de BI Connector también debe usar autenticación. El usuario administrador que se conecta a MongoDB mediante el programa debe tener permiso mongosqld para leer en todos los espacios de nombres de los que desea muestrear datos.
Muestra todos los namespaces
Si desea muestrear todos los espacios de nombres, el usuario administrador requiere los siguientes privilegios:
listDatabasesen el clusterlistCollectionsen cada base de datosfinden cada base de datos
Alternativamente, cree un usuario con la función readAnyDatabase incorporada:
use admin db.createUser( { user: "<username>", pwd: "<password>", roles: [ { "role": "readAnyDatabase", "db": "admin" } ] } )
Nota
Tenga en cuenta todos los privilegios incluidos con la función readAnyDatabase antes de otorgársela a un usuario.
Para samplear todos los namespaces, empieza mongosqld sin la opción --sampleNamespaces.
mongosqld --auth --mongo-username <username> --mongo-password <password>
Espacios de nombres específicos de muestra
Si deseás realizar una muestra de namespaces específicos, el usuario administrador requiere los siguientes privilegios:
listCollectionspara cada base de datos donde se muestrean todas las coleccionesfinden cada colección o en cada base de datos donde todas las colecciones son muestreadas
Como alternativa, cree un usuario con el rol integrado readAnyDatabase. Para ver un ejemplo de cómo crear un usuario con este rol, consulte la sección "Ejemplo de todos los espacios de nombres".
Nota
Tenga en cuenta todos los privilegios incluidos con la función readAnyDatabase antes de otorgársela a un usuario.
El siguiente ejemplo crea un rol personalizado en el mongosh con los privilegios mínimos requeridos para muestrear cada colección en la base de datos test:
Crea un nuevo usuario y asígnale el rol recién creado
db.createUser( { user: "<username>", pwd: "<password>", roles: [ "samplingReader" ] } )
Nota
El usuario del ejemplo anterior no tiene el privilegio listDatabases, por lo que deberás especificar una base de datos de la que se muestre la información utilizando la opción --sampleNamespaces al ejecutar mongosqld.
Iniciar mongosqld con la autenticación habilitada
Ejecute mongosqld con la autenticación habilitada y utilice la opción --sampleNamespaces para tomar muestras de datos de todas las colecciones en la base de datos test:
mongosqld --auth --mongo-username <username> --mongo-password <password> \ --sampleNamespaces 'test.*'