Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2022-11-07 GMT+08:00

Reglas de diseño

Nombramiento

  • El nombre de un objeto de base de datos (nombre de base de datos, nombre de tabla, nombre de campo o nombre de índice) debe comenzar con una letra minúscula y debe ir seguido de una letra o un dígito. La longitud del nombre no puede exceder los 32 bytes.
  • El nombre de la base de datos no puede contener caracteres especiales ("".\$/*?~#:?|") ni caracteres nulos (\0). El nombre de la base de datos no puede ser el nombre de la base de datos del sistema, como admin, local y config.
  • El nombre de la colección de base de datos solo puede contener letras y guiones bajos (_). El nombre no puede tener el prefijo "system". La longitud total de <Nombre de la base de datos>.<Nombre de la colección> no puede exceder de 120 caracteres.

Índice

Puede utilizar índices para evitar análisis completos de tablas y mejorar el rendimiento de las consultas.

  • Un índice de columna puede tener hasta 512 bytes, un nombre de índice puede tener hasta 64 caracteres y un índice compuesto puede tener hasta 16 columnas.
  • La longitud total de <Nombre de la base de datos>.<Nombre de colección>.$<Nombre de índice> no puede exceder de 128 caracteres.
  • Cree índices para campos con alta selectividad. Si crea índices para campos selectivos bajos, es posible que se devuelvan conjuntos de resultados grandes. Esto debe evitarse.
  • Las operaciones de escritura en una colección activarán más operaciones de E/S en los índices de la colección. Asegúrese de que el número de índices de una colección no exceda de 32.
  • No cree índices que no se utilizarán. Los índices no utilizados cargados en la memoria causarán un desperdicio de memoria. Además, los índices inútiles generados debido a cambios en la lógica de servicio deben eliminarse de manera oportuna.
  • Los índices deben crearse en segundo plano en lugar de en primer plano.
  • Se debe crear un índice para la clave de ordenación. Si se crea un índice compuesto, la secuencia de columnas del índice debe ser la misma que la de la clave de ordenación. De lo contrario, no se utilizará el índice.
  • No cree un índice basado en la columna de borde inicial de un índice compuesto. Si la columna de borde delantero de un índice compuesto es la columna utilizada en otro índice, se puede eliminar el índice más pequeño. Por ejemplo, se puede usar un índice compuesto basado en "nombre" y "apellido" para consultas sobre "nombre". En este caso, no es necesario crear otro índice basado en el nombre de pila.

Particionamiento

Puede particionar colecciones de para maximizar el rendimiento del clúster. Para obtener más información, consulte Sharding una colección.

Sugerencias para las colecciones de particionamiento:

  • En escenarios en los que el volumen de datos es grande (más de un millón de filas) y la relación de escritura/lectura es alta, se recomienda el particionamiento si el volumen de datos aumenta con el volumen de servicio.
  • Si particiona una colección utilizando una clave de partición con hash, dividir previamente los chunkd de la colección particionada puede ayudar a reducir el impacto del equilibrio y la división automáticos en la ejecución del servicio.
  • Si desea realizar una consulta de ordenación basada en la clave de partición y los datos nuevos se distribuyen uniformemente según la clave de partición, puede utilizar particionamiento a disancia. En otros escenarios, puedes usar particionamiento con hash.
  • Diseñe correctamente las claves de partición para evitar que una gran cantidad de datos utilicen la misma clave de partición.
  • Si se utiliza un clúster con shard, debe ejecutar flushRouterConfig después de ejecutar dropDatabase. Para obtener más información, consulte ¿Cómo evito el problema de caché de Mongos?
  • La solicitud de actualización del servicio debe coincidir con la clave del partición. Cuando se utiliza una tabla particionada, se informará de un error para la solicitud de actualización y "Un upsert en una colección de fragmentos debe contener la clave de partición y tener la simple intercalación" se devolverá en los siguientes escenarios:
    • El campo de filtro de la solicitud de actualización no contiene el campo de clave de partición y el valor de multi es false.
    • El campo set no contiene la clave de fragmento y el valor de upsert es true.