Sou um DBA do SQL Server por profissão, investigando o MongoDB para um projeto. Uma das convenções que usamos é armazenar informações de estilo de configuração em um banco de dados SQLDBA em cada servidor (limites de reconstrução de índice, exceções de backup etc.).
Eu estou querendo saber se esta mesma técnica seria útil aqui. Minha pergunta é:
- Devo/posso usar o administrador ou o banco de dados local para obter essas informações ou devo criar um novo banco de dados para armazenar essencialmente uma única coleção e documento?
- Isso mudaria em um ambiente fragmentado/conjunto de réplicas?
Com certeza, temos um servidor/banco de dados SQL de hub central, mas também armazenamos alguns dados de configuração localmente em cada servidor para conduzir determinados processos. Não queremos que eles falhem porque um servidor não conseguiu entrar em contato com o hub.
Como o MongoDB é um banco de dados distribuído, os nós tendem a fazer parte de uma implantação maior (conjunto de réplicas ou cluster fragmentado), onde as diferenças de configuração em nós individuais geralmente são gerenciadas externamente. Por exemplo, usando software de gerenciamento de configuração como Chef ou Puppet para gerar
mongod
emongos
configurar arquivos .Cada
mongod
nó tem umlocal
banco de dados que é usado para armazenar dados administrativos ou de registro específicos do nó, comostartup_log
(uma coleção limitada gravando o histórico de parâmetros e versões de inicialização) eoplog.rs
(o oplog de replicação).Você poderia armazenar informações específicas do nó no
local
banco de dados, mas acho que faria mais sentido usar uma coleção normal em sua implantação para coordenar as tarefas de manutenção e a disponibilidade. Além do backup, não há muitas tarefas de manutenção específicas do nó que devem ser executadas sem intervenção manual.Se você encontrar a necessidade de tarefas específicas do nó, imagino que seu banco de dados de manutenção teria mais do que uma única coleção e documento. Por exemplo, você pode ter um documento de configuração por nó e talvez outras coleções, como um histórico de tarefas de manutenção. As coleções limitadas podem ser úteis para armazenar um instantâneo contínuo da atividade "recente" usando uma alocação de armazenamento predefinida.
Supondo que os detalhes sejam específicos do nó, não haveria alteração em um ambiente fragmentado ou de conjunto de réplicas se você estivesse acessando dados no banco de
local
dados. O conteúdo do banco delocal
dados é excluído da replicação/sharding e você só deve acessar olocal
banco de dados conectando-se diretamente a ummongod
nó.Não tenho certeza se esse é o caminho 'certo' ou se estou entendendo a pergunta, mas onde trabalho, armazenamos as configurações em uma tabela parm.
Exemplo da seguinte forma:
Em seguida, digamos que queremos armazenar se queremos ou não que o aplicativo seja iniciado no modo de janela. Faríamos o seguinte:
E, em seguida, recupere esse parm específico. O problema é que todos os nossos aplicativos usam o mesmo banco de dados. Se este não for o caso ou não funcionar, você pode querer ir com o seguinte:
Configure um compartilhamento de rede, monte-o em cada servidor e tenha um arquivo .ini com todas as suas configurações. Você pode querer copiar regularmente o arquivo .ini para o diretório local. Este provavelmente seria o meu método ideal. Isso funcionaria no caso de o compartilhamento de rede estar inativo.