Indexación para una búsqueda de caché mejorada
El propósito de utilizar un índice es optimizar la velocidad y el rendimiento en la búsqueda de datos relevantes en comparación con la búsqueda en caché. Para fines de búsqueda, todos los atributos buscables deben estar indexados. Sin un índice, la búsqueda escanearía todos los datos, lo que requeriría un tiempo y una potencia informática considerables. El almacenamiento informático adicional necesario para almacenar el índice, así como el aumento considerable del tiempo necesario para que se realice una actualización, se compensan con el tiempo ahorrado durante la recuperación de la información.
NCache Utiliza internamente la indexación en diferentes módulos para mejorar el rendimiento de las operaciones internas.
Índice de búsqueda de caché
NCache proporciona el índice de búsqueda de caché para impulsar la ejecución de consultas en el caché. Para fines de búsqueda, todo lo que se necesita hacer es simplemente indexar todos los atributos buscables. NCache no buscará el atributo no indexado del caché porque tiene que recorrer todo el caché para encontrar datos relacionados que afectarán el rendimiento del caché.
Además, los índices se definen según los tipos de datos reales de los elementos almacenados en caché. A través de la indexación, NCache sabe qué tipo de datos se almacenarán y los almacenará de forma que se puedan realizar búsquedas.
NCache proporciona dos formas de definir índices.
- Índice predefinido (índice estático)
- Índice de tiempo de ejecución (Índice dinámico)
Índice predefinido (índice estático)
Note
Esta característica también está disponible en NCache Professional.
Note
Se recomienda evitar la indexación de campos innecesarios, ya que la indexación tiene una sobrecarga de memoria y rendimiento.
Para buscar objetos de clase personalizados en una caché agrupada, los índices de consulta para esa clase deben definirse de antemano. De esta manera, el caché guardará esos datos en un formulario donde se puedan consultar fácilmente. Puede definir índices a través de lo siguiente proceso de configuración. Los índices se pueden configurar para los miembros de datos primitivos públicos, privados y protegidos.
Note
Los índices solo se admiten en tipos de valor. Los tipos de referencia no se pueden indexar.
Los índices se pueden definir mediante la configuración antes del inicio del caché. En caso de que desee definir nuevos índices a través de la configuración, primero debe detener el caché y reiniciarlo después de las modificaciones para implementar los cambios. Los datos relevantes añadidos posteriormente a la caché se indexan automáticamente. Estos datos se podrán consultar fácilmente en el futuro.
advertencia
Marcar explícitamente un tipo de referencia como indexable generará una excepción.
Índice de tiempo de ejecución (Índice dinámico)
Si hay atributos en una aplicación que se definen y utilizan en tiempo de ejecución, entonces se debe utilizar la indexación en tiempo de ejecución. Por ejemplo, puede haber algunos valores calculados asignados a un producto relacionados con sus ventas. Cuando un cliente compra un producto, los detalles de la venta se guardan en el caché para generar informes diarios de tendencias de ventas a través de valores almacenados en caché más adelante. Este valor se define en tiempo de ejecución, por lo que es el atributo de tiempo de ejecución del producto.
NCache creará automáticamente índices para los datos agregados por el cliente de caché. Significa que no es necesario configurar los índices antes de usarlos para los atributos de tiempo de ejecución.
Al definir índices mediante programación, las clases o campos se pueden marcar como indexables mediante atributos personalizados en el código de la aplicación. Una vez marcadas, todas las propiedades y campos primitivos se indexan automáticamente. Dado que es posible que no necesite indexar todos los campos, también puede excluirlos de la indexación. Además de indexar toda la clase, también tiene la flexibilidad de definir índices de forma selectiva solo para los campos deseados.
El índice de tiempo de ejecución se puede clasificar en los siguientes tipos:
- Índice de grupo
- Índice de etiquetas
- Índice de etiquetas con nombre
Índice de grupo
Los elementos se pueden categorizar en el caché usando grupos. NCache le permite consultar datos en el caché en función de grupos, por lo que los grupos también deben indexarse. Cuando se agregan datos a un grupo que aún no existe en la caché, se crea un nuevo índice para el grupo. Todos los datos que pertenecen a este grupo se asignan al mismo índice para realizar la búsqueda.
Índice de etiquetas
Se pueden asociar una o más marcas de identificación con elementos de caché. Estas marcas de identificación se llaman etiquetas. A través de etiquetas, el usuario puede asociar palabras clave con elementos de caché. Se puede encontrar y eliminar una colección de elementos almacenados en caché especificando también etiquetas. Sólo se permiten etiquetas en formato de cadena. Para cada etiqueta nueva, se creará una nueva entrada de etiqueta en el índice de etiquetas y todos los elementos almacenados en caché relacionados se asociarán con ese índice.
Índice de etiquetas con nombre
Si es necesario utilizar un alto nivel de etiquetado donde las etiquetas pueden tener diferentes tipos de datos o nombres y el requisito es consultar datos relacionados con un tipo específico de etiqueta, entonces se deben usar etiquetas con nombre.
"Etiquetas con nombre" es la mejora de "Etiquetas". Las etiquetas con nombre permiten al usuario almacenar información adicional (de cualquier tipo) necesaria para consultar el objeto almacenado como una cadena. Por ejemplo, la etiqueta con nombre "Tiempo de venta más alto" con Se puede almacenar un valor de tiempo cuando la venta de cualquier producto es la más alta en todo un día. Las etiquetas con nombre permiten indexar los datos de acuerdo con los atributos requeridos en el tiempo de ejecución. Más adelante, se puede construir una consulta utilizando etiquetas con nombre para obtener el conjunto de resultados deseado. Se pueden asociar varias etiquetas con nombre a un elemento almacenado en caché y viceversa.
Cuando se agregan datos con una etiqueta con nombre que no existe en la memoria caché, se crea un nuevo índice para esta nueva etiqueta con nombre. Todos los datos relacionados se asignarán a ese índice para su búsqueda.
A diferencia de Tag, el índice de etiqueta con nombre se puede definir para todos los tipos primitivos, cadenas y fecha y hora. Por lo tanto, hay más flexibilidad para agregar una amplia gama de datos de búsqueda con diferentes tipos de datos.
Si hay varias aplicaciones que comparten el mismo caché y se supone que todas deben agregar etiquetas con nombre, asegúrese de que las mismas etiquetas con nombre tengan tipos de datos homogéneos, por ejemplo, si un cliente agrega la etiqueta con nombre "ProductID" con String tipo de datos, entonces todos los demás clientes deben agregar valores de "ProductID" en formato de cadena, no en entero u otro para el mismo caché.
Índice de desalojo
El desalojo es una característica útil en NCache, donde cuando el caché está lleno decide desalojar sus datos existentes para dar cabida a los datos entrantes. En este escenario, el desalojo puede suavizar las operaciones de caché y al mismo tiempo mantener el límite de tamaño de caché eliminando un porcentaje configurado de datos.
NCache proporciona diferentes políticas para el desalojo. Estas políticas deciden qué datos serán desalojados cuando el caché esté lleno. NCache proporciona las siguientes políticas para el desalojo:
- Desalojo Basado en Prioridad
Note
Esta característica también está disponible en NCache Professional.
Para el desalojo basado en prioridad, el índice se mantiene según la prioridad de mayor a menor y cuando el caché está lleno, el subproceso de desalojo selecciona claves del índice con baja prioridad y las expulsa del caché.
- Menos usados recientemente (LRU)
Para el uso menos reciente (LRU), el índice de desalojo se mantiene durante el tiempo de uso de las claves y cuando el caché está lleno, el subproceso de desalojo selecciona las claves del índice que se usaron menos recientemente y las expulsa del caché.
- Uso menos frecuente (LFU)
Para el uso menos frecuente (LFU), el índice de desalojo se mantiene para la cantidad de uso de claves y cuando el caché está lleno, el subproceso de desalojo selecciona las claves del índice que se usan con menos frecuencia y las expulsa del caché.
Note
Para realizar el Desalojo, NCache mantiene el índice de desalojo de los datos de caché para el desalojo.
Índice de caducidad
La caducidad es una propiedad adjunta a cada elemento que se almacena en caché. Esta propiedad se adjunta con cada objeto para que cada objeto de caché pueda evaluarse según su edad; esta edad del objeto decidirá su tiempo de vencimiento. Cuando ese objeto de caducidad se invalida, el elemento asociado se elimina de la caché.
NCache mantiene el DateTime
índice de caducidad para las claves de caché con el fin de eliminarlas de manera eficiente al vencimiento. El administrador de caducidad caduca los elementos después del intervalo de limpieza.
Intervalo de limpieza es el intervalo periódico después del cual los elementos caducados se eliminan de la memoria caché. El intervalo de limpieza de un caché se puede cambiar en los ajustes de configuración.
Una vez transcurrido un intervalo de limpieza, el administrador de caducidad obtiene las claves del índice y los elementos caducados se eliminan de la caché. Después de eliminar los elementos caducados del caché, el subproceso de caducidad duerme durante el "intervalo de limpieza" especificado en la configuración del caché. NCache proporciona dos tipos de vencimientos explicados en Estrategias de invalidación de datos:
- Caducidad absoluta
- Caducidad móvil
Vea también
Configurar índices de consulta
Eliminar-QueryIndex
Desalojos
Intercambio de datos en tiempo de ejecución