Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/
Document Database Service/
Guia de usuário/
Sugestões de uso do DDS/
Regras de design
Atualizado em 2025-08-07 GMT+08:00
Regras de design
Nomeação
- O nome de um objeto de banco de dados (nome do banco de dados, nome da tabela, nome do campo ou nome do índice) deve começar com uma letra minúscula e deve ser seguido por uma letra ou dígito. O comprimento do nome não pode exceder 32 bytes.
- O nome do banco de dados não pode conter caracteres especiais ("".$\/*?~#:|") nem caracteres nulos (\0). O nome do banco de dados não pode ser um nome de banco de dados do sistema, como admin, local e config.
- O nome da coleção do banco de dados só pode conter letras e sublinhados (_). O nome não pode ser prefixado com "system". O comprimento total de <Database name>.<Collection name> não pode exceder 120 caracteres.
Índice
Você pode usar índices para evitar varreduras de tabela completa e melhorar o desempenho da consulta.
- Um índice de coluna pode ter até 512 bytes, um nome de índice pode ter até 64 caracteres e um índice composto pode ter até 16 colunas.
- O comprimento total de <Database name>.<Collection name>.$<Index name> não pode exceder 128 caracteres.
- Crie índices para campos com alta seletividade. Se você criar índices para campos seletivos baixos, conjuntos de resultados grandes podem ser retornados. Isso deve ser evitado.
- As operações de gravação em uma coleção dispararão mais operações de I/O em índices na coleção. Certifique-se de que o número de índices em uma coleção não exceda 32.
- Não crie índices que não serão usados. Índices não utilizados carregados na memória causarão um desperdício de memória. Além disso, os índices inúteis gerados devido a mudanças na lógica do serviço devem ser excluídos em tempo hábil.
- Os índices devem ser criados em segundo plano em vez de em primeiro plano.
- Um índice deve ser criado para a chave de classificação. Se um índice composto for criado, a sequência de colunas do índice deve ser a mesma da chave de classificação. Caso contrário, o índice não será usado.
- Não crie um índice com base na coluna de ponta de um índice composto. Se a coluna de borda principal de um índice composto for a coluna usada em outro índice, o índice menor poderá ser removido. Por exemplo, um índice composto baseado em "firstname" e "lastname" pode ser usado para consultas em "firstname". Nesse caso, a criação de outro índice baseado em primeiro nome é desnecessária.
- A criação de índices consome muitos recursos de I/O e computação. É aconselhável criar índices fora do horário de pico. Não crie mais de cinco índices simultaneamente. Se você precisar criar vários índices para uma determinada coleção, execute o comando createIndexes para entregar vários índices por vez a fim de reduzir a perda de desempenho.
Fragmentação
Você pode fragmentar coleções para maximizar o desempenho do cluster. Para obter detalhes, consulte Fragmentação de uma coleção.
Sugestões para fragmentar coleções:
- Em cenários em que o volume de dados é grande (mais de um milhão de linhas) e a taxa de gravação/leitura é alta, a fragmentação é recomendada se o volume de dados aumentar com o volume de serviço.
- Se você fragmentar uma coleção usando uma chave de partição com hash, a divisão prévia dos blocos da coleção fragmentada pode ajudar a reduzir o impacto do balanceamento e divisão automáticos na execução do serviço.
- Se a fragmentação estiver ativada para coleções não vazias, a janela de tempo para ativar o balanceador deve ser definida durante as horas fora de pico. Caso contrário, conflitos podem ocorrer durante o balanceamento de dados entre os fragmentos e o desempenho do serviço será afetado.
- Se você quiser executar uma consulta de classificação com base na chave de partição e novos dados são distribuídos uniformemente com base na chave de partição, você pode usar fragmentação à distância. Em outros cenários, você pode usar fragmentação de hash.
- Projete corretamente chaves de fragmento para evitar que uma grande quantidade de dados use a mesma chave de fragmento, o que pode levar a jumbo chunks.
- Se um cluster fragmentado for usado, você deverá executar flushRouterConfig após executar dropDatabase. Para obter detalhes, consulte Como evitar o problema de cache do dds mongos?
- A solicitação de atualização do serviço deve corresponder à chave de fragmento. Quando uma tabela fragmentada é usada, um erro será relatado para a solicitação de atualização e "An upsert on a sharded collection must contain the shard key and have the simple collation" será retornado nos seguintes cenários:
- O campo filter da solicitação de atualização não contém o campo de chave de fragmento e o valor de multi é false.
- O campo set não contém a chave de fragmento e o valor de upsert é true.
Tópico principal: Sugestões de uso do DDS
Feedback
Esta página foi útil?
Deixar um comentário
Obrigado por seus comentários. Estamos trabalhando para melhorar a documentação.
O sistema está ocupado. Tente novamente mais tarde.