Saltar a contenido

Índices Personalizados

A veces necesitamos definir índices personalizados para acelerar las consultas a nuestros campos personalizados y/o código de plugin.

Clarive habilita esto permitiendo a los desarrolladores de plugins crear un archivo de índice especial bajo la estructura de carpetas del plugin (o feature).

Pasos para crear un archivo de índice

  1. Si aún no tiene uno, cree un plugin o feature (ej. myplugin) bajo CLARIVE_BASE/plugins/myplugin o CLARIVE_BASE/features/myfeature

  2. Cree el directorio etc/index/ donde residirán los índices bajo el plugin o feature, ie CLARIVE_BASE/plugins/myplugin/etc/index/

  3. Cree un archivo de índice YAML. Un archivo es suficiente para todos sus índices. Por ejemplo CLARIVE_BASE/plugins/myplugin/etc/index/indexes.yaml (lo mismo aplica al feature).

Contenido del archivo de índice

El archivo YAML de índice debe seguir una estructura con un hash/objeto donde cada clave es una colección donde residirán sus campos indexados:

collection_name:
  - [ { field1: 1, field2: 1 }, { ...Mongo index options...} ]
  # or
  - [ [ field1, 1, field2, 1 ], { ...Mongo index options...} ]

Aquí hay algunos ejemplos:

topic:
  - [ [ 'id_category', 1, 'title', 1 ] ]
  - [ [ 'myfield', 1, 'anotherfield', -1 ], { unique: 1 } ]
master_doc:
  - [ [ 'myfield', 1, 'anotherfield', 1 ], { name: 'my index', background: 1 } ]
mycoll:
  - [ { foo: 1 } ]   # with just one field, use hashes

Al crear índices compuestos, la tupla field_name, 1 sigue un orden que tiene que ver con la forma en que Mongo indexa archivos en la base de datos.

En el marcador de opciones, puede enviar a Mongo cualquier opción de índice permitida, tales como:

  • { unique: 1 } - hacer el índice único, verificando ids únicos - ¡tenga cuidado!
  • { background: 1 } - crear el índice en segundo plano, sin interrumpir el uso normal de la DB
  • { name: "my index name" } - poner un nombre a su índice

Hay más opciones disponibles, lea la documentación de MongoDB para más información:

https://www.mongodb.com/docs/manual/indexes/