Comportamiento y uso de estructuras de datos en caché
NCache admite las estructuras de pares clave-valor donde la clave es un tipo de cadena frente a un valor que puede ser cualquier tipo primitivo, objeto personalizado, Artículo de caché, or a data structure. Grupos, Etiquetas, Vencimiento, Cerraduras, Dependencias, y se pueden asignar más a estos valores.
Note
Esta función solo está disponible en el NCache Enterprise.
Sin embargo, actualizar cualquier valor dentro de una estructura de datos, digamos una lista, requería obtenerlo del caché, actualizarlo y luego agregarlo nuevamente al caché. Esto resultó en llamadas adicionales a través de la red. NCache ahora ha eliminado esta restricción al proporcionar soporte exclusivo para agregar/actualizar estructuras de datos mediante la manipulación de datos directamente sobre el servidor. Por lo tanto, mejorar el rendimiento general.
NCache proporciona soporte explícito para las siguientes estructuras de datos:
- Lista
- Cola
- Conjunto de hash
- Diccionario
- Para contrarrestar
Además de las funciones proporcionadas por las interfaces de estructura de datos nativos, NCache amplía su funcionalidad proporcionando la opción de especificar metadatos utilizando un CacheItem
. Esto significa que las estructuras de datos pueden tener etiquetas, caducidad y dependencia, al igual que los demás objetos de la caché.
Importante:
Toda la estructura de datos residirá en un nodo de una caché agrupada. Por ejemplo, si crea un diccionario de 100 elementos, todo el diccionario de 100 elementos existirá en un nodo y no se distribuirá entre otros nodos.
La siguiente figura muestra las diversas estructuras de datos con sus respectivas claves de caché que residen en una caché agrupada de 3 nodos:
Comportamiento inteligente
Almacenamiento
Cualquier elemento almacenado dentro de una estructura de datos se serializa en JSON para admitir operaciones nativas en el servidor, como
Contains
.Las estructuras de datos tienen su propio tamaño junto con los metadatos, lo que afecta el tamaño de la caché.
Anotación de campo primario
[Campoprimario] La anotación se puede utilizar en clases de modelo de usuario para las estructuras de datos, incluidas la Lista y la Cola. Las operaciones de búsqueda en las estructuras de datos, como Contains
, se puede utilizar para serializar y enviar solo ese atributo/propiedad en lugar de serializar y transferir todo el objeto al servidor. Solo el PrimaryField
El atributo se enviará al servidor y se comparará en el lado del servidor, lo que disminuirá el costo de la operación.
Por ejemplo, la directriz Customer
la clase contiene la propiedad CustomerId
, que es único. Esto se puede marcar como el PrimaryField
, y en lugar de comparar el objeto completo, digamos Contains
, comparando solo el PrimaryField
puede completar la operación.
class Customer
{
[PrimaryField]
public string CustomerId { get; set; }
public string Name { get; set; }
public string Address { get; set; }
}
Claves de caché
Las estructuras de datos en NCache tienen nombre, es decir, se almacenarán en una clave de caché como los demás objetos en NCache. Si existe una clave de caché para un CacheItem
, no se puede utilizar contra una estructura de datos.
Funciones de búsqueda
Los atributos de búsqueda como grupos, etiquetas y etiquetas con nombre se pueden especificar en una estructura de datos durante su creación. UN CacheItem
y una estructura de datos puede pertenecer al mismo grupo/etiqueta/etiqueta con nombre. Para obtener más detalles, consulte Configurar atributos de búsqueda.
Funciones de invalidación de datos
Desalojos
Toda la estructura de datos se expulsa de la memoria caché si se incluye en la categoría "para ser desalojada". La creación de la estructura de datos no solo conduce al posible desalojo, sino que cualquier operación de escritura en la estructura de datos también puede desencadenar el desalojo. Por ejemplo, se agrega un artículo a la lista de manera que se cumplan los criterios de desalojo.
Vencimiento
Las estructuras de datos se pueden invalidar del caché después de un intervalo de tiempo específico, al igual que un CacheItem
. Las estructuras de datos soportan ambos, Caducidad absoluta y Caducidad móvil.
Dependencias de caché
Las estructuras de datos admiten todas las dependencias de la caché. Para dependencias basadas en claves, una lista puede depender de un CacheItem
y viceversa. Para obtener más detalles, consulte Configurar atributos de invalidación.
Consultas sobre estructuras de datos
Las estructuras de datos se pueden consultar en el caché si tienen atributos de búsqueda configurado. Los atributos buscables incluyen:
- Grupos
- Etiquetas
- Etiquetas con nombre
Para más detalles, consulte Consulta sobre estructuras de datos.
Proveedores de fuentes de respaldo
Leer de parte a parte
Esto es sólo a nivel de colección. Las estructuras de datos se pueden leer directamente desde una fuente de datos si no se encuentran en el caché. Los elementos individuales de una estructura de datos no se leerán desde la fuente de datos. Por lo tanto, se debe obtener la lista completa de elementos de la fuente de datos.
Escriba por medio de
La escritura simultánea se activa en dos casos:
- Tras la creación de la estructura de datos dentro del caché (nivel de colección).
- Tras la adición de datos a una estructura de datos ya existente (nivel de elemento).
Cargador de caché y actualización
Puede cargar estructuras de datos en la caché al iniciarla automáticamente, utilizando la función Cache Startup Loader. Esto requiere implementar una interfaz ICacheLoader
con sus métodos. Asimismo, si existe algún cambio o actualización en los datos, Cache Refresher
se utiliza para actualizar los datos. Para obtener más detalles, consulte Cargador de caché y actualización.
Caché de cliente
La estructura de datos no se almacena en la memoria caché del cliente. Ninguna Recibe la operación lo obtendrá del caché principal pero no lo almacenará en el caché del cliente. Para obtener más detalles, consulte Caché de cliente. Por ejemplo, cuando bloqueamos un diccionario, todo el diccionario se bloquea y no se realizan más operaciones.
Cerraduras
El NCache proporciona un mecanismo de bloqueo eficiente para la sincronización de datos y la integridad dentro del almacén de caché que actualizan diferentes clientes paralelos. NCacheEl bloqueo interno garantiza la coherencia de las estructuras de datos en todo el clúster de caché para cada actualización de la misma estructura de datos. Por ejemplo, entera diccionario se bloquea cuando bloqueamos un diccionario.
Notificaciones de eventos
Los eventos a nivel de caché y los eventos basados en claves se admiten junto con los eventos a nivel de estructura de datos y se pueden registrar juntos en una estructura de datos. Por ejemplo:
Se crea una lista en el caché. Esto desencadena la
ItemAdded
Evento de nivel de caché y no el evento de estructura de datos.Se agrega un elemento a esta lista. Esto desencadena la
ItemUpdated
Evento de nivel de caché ya que la lista se ha actualizado y elItemAdded
evento de estructura de datos como un nuevo elemento se ha agregado a la lista.
Limitaciones
- Las estructuras de datos anidadas aún no son compatibles.
- El
CacheItem
no se puede almacenar dentro de una estructura de datos. Por ejemplo, una lista deCacheItems
aún no es compatible. - Los objetos personalizados en HashSet aún no son compatibles.
- Una clave de diccionario solo puede ser de tipo cadena.
Comportamiento inteligente de topología
Topología de espejo
Topología de espejo, las operaciones se realizan en el nodo activo. Estas operaciones luego se replican en el nodo pasivo.
Topología replicada
Topología replicada, las operaciones se realizan en el nodo al que está conectado el cliente, que luego replica las operaciones en todos los nodos.
Topología particionada
In Topología particionada, toda la estructura de datos existe en el mismo nodo. Se distribuye en función de la clave. Esto significa que no importa cuán grande sea el diccionario, existirá en un nodo; el propio diccionario no se dividirá en nodos.
Topología de partición-réplica
In Topología de partición-réplica, las operaciones se comportan igual que en la topología particionada. La estructura de datos se distribuye según la clave de caché y residirá en el mismo nodo. Su réplica existirá en el otro nodo.
Vea también
Comportamiento y uso de listas en caché
Comportamiento y uso de la cola en caché
Establecer comportamiento y uso en caché
Comportamiento y uso del diccionario en caché
Comportamiento y uso del contador en caché