Visão geral
Esta seção descreve as opções de conexão e autenticação do MongoDB disponíveis no driver Ruby. Você pode configurar sua conexão usando o URI de conexão (também chamado de string de conexão) ou passando argumentos para o construtor Mongo::Client.
Como utilizar o URI de conexão
Se você passar um URI de conexão para o construtor Mongo::Client, poderá incluir opções de conexão na cadeia de caracteres como pares <name>=<value>. No exemplo a seguir, o URI de conexão contém a opção connectTimeoutMS com um valor de 60000 e a opção tls com um valor de true:
uri = "mongodb://<hostname>:<port>/?connectTimeoutMS=60000&tls=true"client = Mongo::Client.new(uri)Usando um Mongo::Client
Você pode passar as opções de conexão como argumentos para o construtor Mongo::Client em vez de incluí-las em seu URI de conexão. Ao configurar sua conexão dessa forma, é mais fácil para você alterar as configurações no tempo de execução e detectar erros durante a compilação. O exemplo seguinte mostra como utilizar o construtor Mongo::Client para configurar opções de conexão:
uri = "mongodb://<hostname>:<port>"client = Mongo::Client.new(uri, connect_timeout: 60000, ssl: true)Opções de conexão
As seções a seguir descrevem as opções de conexão disponíveis no driver Ruby.
Compactação de rede
Opção de conexão | Descrição |
|---|---|
:compressors | Uma lista de compressores em potencial para usar, em ordem de preferência. O driver escolhe o primeiro compressor que também é compatível com o servidor. Atualmente, o driver só oferece suporte a |
:zlib_compression_level | O nível de compactação zlib a ser usado, se estiver usando compactação. Esta opção aceita um valor inteiro entre |
Tempo limite
Opção de conexão | Descrição |
|---|---|
:connect_timeout | O número de segundos para aguardar para estabelecer uma conexão de soquete antes de gerar uma exceção. Esse tempo limite também é usado para resolução de registro DNS SRV. |
:timeout_ms | O número de milissegundos para aguardar a execução de uma operação antes de gerar uma exceção. |
Seleção do Servidor
Opção de conexão | Descrição |
|---|---|
:load_balanced | Se deve esperar para se conectar a um balanceador de carga. |
:server_monitoring_mode | O protocolo de monitoramento do servidor a ser usado. Quando essa opção é definida como Tipo de dados: |
:server_selection_timeout | A quantidade máxima de tempo, em segundos, que o driver aguarda o sucesso da seleção do servidor antes de lançar uma exceção. |
Para obter mais informações sobre a seleção de servidor, consulte o guia Seleção de Servidor.
Autenticação
Opção de conexão | Descrição |
|---|---|
:auth_mech | O mecanismo que o driver Ruby usa para autenticar o aplicativo. |
:auth_mech_properties | Opções específicas para o mecanismo de autenticação. Esta opção não é necessária para todos os mecanismos de autenticação. |
:auth_source | O banco de dados para autenticar. |
: user | O nome de usuário para autenticação. Quando essa opção é incluída em um URI de conexão, você deve codificá-la em porcentagem. |
:password | A senha para autenticação. Quando essa opção é incluída em um URI de conexão, você deve codificá-la em porcentagem. |
Operações de leitura e escrita
Opção de conexão | Descrição |
|---|---|
:replica_set | Especifica o nome do conjunto de réplicas ao qual se conectar. |
:direct_connection | Se deve conectar diretamente ao hospedar especificado |
:enable_overload_tartargeting | Se o driver desprioriza um servidor que retorna um erro de sobrecarga, reduzindo a probabilidade de tentar novamente no mesmo servidor sobrecarregado. |
:max_adaptive_retry | O número máximo de tentativas a serem feitas quando o driver encontrar erros de sobrecarga. |
:read | As opções de preferência de leitura. Para obter mais informações, consulte preferência de leitura no manual do MongoDB Server. |
:read_concern | Especifica as opções de read concern. Para obter mais informações, consulte read concern no manual do MongoDB Server. |
:write_concern | Especifica a write concern do cliente. Para obter mais informações, consulte Write Concern no manual do MongoDB Server. |
:local_threshold | A janela de latência, em segundos, para a elegibilidade de um nó do conjunto de réplicas. Se o ping de ida e volta de um nó demorar mais do que o tempo de ping de ida e volta do servidor mais rápido mais esse valor, o servidor não estará qualificado para seleção. |
Pool de Conexões
Opção de conexão | Descrição |
|---|---|
:max_pool_size | O número máximo de conexões simultâneas que o pool mantém. Se o número de conexões em uso com um servidor atingir o valor especificado, a próxima solicitação para esse servidor aguardará até que uma conexão fique disponível. Definir esta opção como |
:max_connecting | O número máximo de conexões que cada pool pode estabelecer simultaneamente. |
:min_pool_size | O número mínimo de conexões simultâneas que o pool mantém. |
:max_idle_time | O número máximo de segundos que uma conexão pode permanecer ociosa no pool. |
Para obter mais informações sobre pools de conexões, consulte o guia pools de conexões.
Observação
Descarte de carga no Intelligent Gerenciamento de Carga de Trabalho (IWM)
Se erros com os rótulos SystemOverloadedError ou RetryableError estiverem causando falhas em seu aplicativo ou aparecendo em seus logs de aplicativo, o Load Shedding pode estar ativo em seu cluster e seu driver pode não ter sido atualizado para uma versão que o suporte. Recomendamos atualizar seu driver do MongoDB para Ruby para a versão 2.24 ou posterior. Se você continuar a ver esses erros após a atualização, poderá resolvê-los por meio de alterações no lado do servidor, como revisar sua configuração de Load Shedding, ou por meio de alterações no lado do aplicativo, como implementar tratamento de erros personalizado ou limitação de solicitação do lado do cliente. Dependendo da sua situação, as alterações no lado do aplicativo podem ser preferíveis ou necessárias.
O Load Shedding é um recurso do IWM e ajuda a gerenciar a carga do servidor rejeitando operações em excesso durante a sobrecarga sustentada. Este recurso está disponível no MongoDB 9.0 e posterior.
Para obter mais informações sobre IWM ou como lidar com erros de sobrecarga, consulte a página Gerenciamento inteligente de carga de trabalho ou a página Erros de sobrecarga na documentação do Atlas.
Documentação da API
Para obter mais informações sobre as opções de Mongo::Client para o driver Ruby, consulte a documentação da API do Mongo::Client.