Modo de Esquema Automático (Persistir um Esquema no MongoDB)
Visão geral
A opção --schemaSource
direciona mongosqld
a usar um banco de banco de dados específico na instância do MongoDB conectada para armazenamento de esquema. mongosqld
pode criar um novo banco de dados de dados para utilizar no armazenamento de esquema ou utilizar um banco de banco de dados existente.
Se você especificar um banco de dados existente que foi usado anteriormente para armazenamento de esquemas, a opção --schemaMode
determinará se o mongosqld
gravará novos dados de esquema no banco de dados especificado ou apenas lerá ele. Se você especificar um reconhecimento de data center que não existe no momento, será necessário definir --schemaMode
como auto
.
O comando de exemplo a seguir usa um reconhecimento de data center chamado sampleDb
para armazenar informações de esquema e define --schemaMode
como auto
.
mongosqld --schemaSource sampleDb --schemaMode auto
Para saber mais sobre os modos de amostragem, consulte o Gráfico de Referência do Modo de Amostragem.
Gerar novamente o esquema
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.
Para forçar uma atualização única do esquema, use o comando FLUSH SAMPLE do seu cliente SQL.
Permissões de usuário para esquemas persistentes
Se sua instância do MongoDB usar autenticação, você deverá especificar um usuário do MongoDB com permissão de gravação no reconhecimento de data center do esquema especificado, além das permissões descritas em amostragem em cache.
Para criar um usuário com as permissões necessárias para executar mongosqld
com um esquema persistente, você pode criar uma função personalizada com as permissões mínimas necessárias, conforme descrito em Permissões de usuário para amostragem em cache, ou usar a função integrada readAnyDatabase . Em ambos os casos, o usuário também precisa de permissão de gravação no banco de banco de dados do esquema especificado.
db.getSiblingDB("admin").createUser( { user: "<username>", pwd: "<password>", roles: [ { "role": "readAnyDatabase", "db": "admin" }, { "role": "readWrite", "db": "<dbname>" } ] } )
No exemplo a seguir, um usuário chamado bicUser
com a senha myPass
fornece credenciais para ler e atualizar um reconhecimento de data center de esquemas chamado schemaDb
.
mongosqld --auth -u bicUser -p myPass --schemaSource schemaDb --schemaMode auto