Modo de esquema standalone (amostragem em cache)
Visão geral
Novidade na versão 2.3:
Por padrão, mongosqld
cada collection na instância conectada do MongoDB e gera uma representação relacional do esquema que então armazena em cache na memória.
Observação
Se você tiver authentication
habilitado, verifique se o usuário do MongoDB tem as permissões corretas. Consulte Permissões de usuário abaixo.
Por padrão, o mongosqld
não faz uma nova amostra dos dados automaticamente após gerar o esquema. Especifique a opção --schemaRefreshIntervalSecs
para direcionar mongosqld
para uma nova amostra automática dos dados e gerar novamente o esquema em um agendamento fixo.
Se o esquema criado pelo mongosqld
não atender às suas necessidades de volume de trabalho de BI, você poderá gerar manualmente um arquivo de esquema e editá-lo conforme necessário.
Para saber mais sobre os modos de amostragem, consulte o Gráfico de Referência do Modo de Amostragem.
Permissões de usuário para amostragem em cache
Se a instância do MongoDB usar autenticação e você quiser usar a amostragem em cache, a instância do BI Connector também deverá usar autenticação. O usuário administrador que se conecta ao MongoDB por meio do programa mongosqld
deve ter permissão para ler de todos os namespaces dos quais você deseja obter amostras de dados.
Amostra de todos os namespaces
Se você deseja amostrar todos os namespaces, o usuário administrador requer os seguintes privilégios:
listDatabases
no clusterlistCollections
em cada reconhecimento de data centerfind
em cada reconhecimento de data center
Como alternativa, crie um usuário com a função readAnyDatabase integrada :
use admin db.createUser( { user: "<username>", pwd: "<password>", roles: [ { "role": "readAnyDatabase", "db": "admin" } ] } )
Observação
Esteja ciente de todos os privilégios incluídos na função readAnyDatabase antes de concedê-la a um usuário.
Para obter uma amostra de todos os namespaces, inicie mongosqld
sem a opção --sampleNamespaces
.
mongosqld --auth --mongo-username <username> --mongo-password <password>
Amostra de namespaces específicos
Se você deseja amostrar namespaces específicos, o usuário administrador exige os seguintes privilégios:
listCollections
para cada reconhecimento de data center onde todas as collection são amostradasfind
em cada coleção ou cada banco de dados onde todas as coleções são amostradas
Como alternativa, crie um usuário com o role readAnyDatabase integrado . Para obter um exemplo de criação de um usuário com essa função, consulte a seção Amostra de todos os namespaces .
Observação
Esteja ciente de todos os privilégios incluídos na função readAnyDatabase antes de concedê-la a um usuário.
O exemplo a seguir cria uma função personalizada no shell mongo com os privilégios mínimos necessários para obter uma amostra de cada coleção no banco de dados test
:
Criar um novo usuário e atribuir o role recém-criado a ele
db.createUser( { user: "<username>", pwd: "<password>", roles: [ "samplingReader" ] } )
Observação
O usuário no exemplo acima não tem o privilégio listDatabases
, portanto, você deve especificar um banco de dados de dados para obter amostras de dados com a opção --sampleNamespaces
ao executar mongosqld
.
Iniciar mongosqld
com autenticação ativada
Execute o mongosqld
com autenticação habilitada e utilize a opção --sampleNamespaces
para dados de amostra de todas as collection no reconhecimento de data center do test
:
mongosqld --auth --mongo-username <username> --mongo-password <password> \ --sampleNamespaces 'test.*'