Menu Docs
Página inicial do Docs
/
BI Connector
/

Modo de esquema standalone (amostragem em cache)

Nesta página

  • Visão geral
  • Permissões de usuário para amostragem em cache

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.

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.

Se você deseja amostrar todos os namespaces, o usuário administrador requer os seguintes privilégios:

  • listDatabases no cluster

  • listCollections em cada reconhecimento de data center

  • find 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>

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 amostradas

  • find 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 :

1
use admin
db.createRole(
{
role: "samplingReader",
privileges: [
{
resource: {
db: "test",
collection: ""
},
actions: [ "find", "listCollections" ]
}
],
roles: []
}
)
2
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.

3

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.*'

Dica

Veja também:

Voltar

Mapear Esquemas Relacionais para MongoDB