Dependencia de la caché de SQL Server
Hay varios mecanismos en NCache para mantener los datos sincronizados en la memoria caché. Puede haber un escenario en el que el usuario desee mantener los datos sincronizados con la base de datos, por lo que cada actualización de la base de datos notifica al caché. De esta manera, los datos en la memoria caché permanecen actualizados y las operaciones se realizan en el conjunto de datos actualizado.
NCache proporciona la característica de dependencia de SQL para sincronizar el caché con Microsoft SQL Server 2005 en adelante. Se agrega un elemento con SqlCacheDependency (proporcionado por NCache), especificando una declaración SQL que representa un conjunto de resultados de consulta en la base de datos. NCache luego establece un vínculo con la base de datos contra el conjunto de resultados. Si una aplicación se actualiza, SQL Server activa notificaciones de eventos, que NCache captura y elimina el elemento correspondiente de la memoria caché distribuida.
Antes de utilizar la dependencia de SQL, configure el entorno de SQL Server. Para crear una dependencia SQL:
- Habilitar servicio de intermediario
- Habilitar permisos de base de datos
Para obtener más detalles, consulte el Configuración del entorno del servidor SQL sección de la Guía del administrador.
Requisitos previos para utilizar la dependencia de caché de SQL Server
- Configurar entorno para usar la dependencia de SQL.
- Para obtener información sobre los requisitos previos estándar necesarios para trabajar con todos NCache características del lado del cliente, consulte la página proporcionada en Requisitos previos de la API del lado del cliente.
- Para obtener detalles de la API, consulte: Dolor, Artículo de caché, Dependencia, SqlCacheDependency.
- Asegurar que el corredor está habilitado.
- Asegúrese de que el los permisos están habilitados para usar NCache Dependencia de caché de SQL.
Agregar datos con dependencia de SQL Server a través de API
Para agregar datos en el caché usando la dependencia SQL, NCache proporciona SqlCacheDependency
clase. Esto agrega elementos al caché con dependencia de SQL.
El siguiente ejemplo agrega dependencia SQL a un elemento y luego agrega el elemento al caché usando el Insert
método. los Insert
El método agrega un nuevo elemento con dependencia y, si estos datos ya existen en el caché, los sobrescribe.
// Creating connection string to get connected with database.
string connectionString = "your_connection_string_here";
// Getting products from database.
List<Product> products = FetchProductFromDB();
foreach (Product product in products)
{
string productKey = $"Product: {product.ProductID}";
// Creating an SQL dependency on the UnitPrice of product. Whenever the UnitPrice changes, the product is removed from the cache.
string query = $"SELECT UnitPrice FROM dbo.Products WHERE ProductID = {product.ProductID}";
// Creating dependency.
SqlCacheDependency dependency = new SqlCacheDependency(connectionString, query);
CacheItem productItem = new CacheItem(product);
// Adding Dependency to product item
productItem.Dependency = dependency;
// Adding CacheItem in cache
_cache.Add(productKey, productItem);
}
Note
Para garantizar que la operación sea a prueba de fallas, se recomienda manejar cualquier posible excepción dentro de su aplicación, como se explica en Manejo de fallas.
Agregar datos con dependencia de SQL mediante el procedimiento almacenado
NCache le permite proporcionar una dependencia SQL en un elemento mediante un procedimiento almacenado. También puede especificar los parámetros que se pasarán junto con este procedimiento utilizando el SqlCacheDependency
método.
El siguiente ejemplo agrega un elemento al caché con dependencia SQL a través del procedimiento almacenado usando el recuadro método. los Insert
El método agrega un nuevo elemento con dependencia y, si estos datos ya existen en el caché, sobrescribe sus propiedades.
// Creating connection string to get connected with database.
string connectionString = "your_connection_string_here";
string spGetUnitPriceByProductID = "sp_GetUnitPriceByProductID";
// Getting products from database.
List<Product> products = FetchProductFromDB();
// Creating dictionary of CacheItems.
Dictionary<string, CacheItem> cacheItems = new Dictionary<string, CacheItem>();
foreach (Product product in products)
{
string productKey = $"Product: {product.ProductID}";
// Creating Param to be passed in stored procedure dictionary.
SqlCmdParams paramProductID = new SqlCmdParams
{
Type = CmdParamsType.Int,
Value = product.ProductID
};
// Creating stored procedure params.
Dictionary<string, SqlCmdParams> parameters = new Dictionary<string, SqlCmdParams>();
parameters.Add("@ProductID", paramProductID);
CacheItem productItem = new CacheItem(product);
// Creating an SQL dependency on the UnitPrice of product. Whenever the UnitPrice changes, the product is removed from the cache.
SqlCacheDependency dependency = new SqlCacheDependency(connectionString, spGetUnitPriceByProductID, SqlCommandType.StoredProcedure, parameters);
// Adding Dependency to product item
productItem.Dependency = dependency;
cacheItems.Add(productKey, productItem);
}
// Adding CacheItems in cache
_cache.AddBulk(cacheItems);
Importante:
- En un entorno donde el usuario tiene un acceso más restringido a la base de datos, se supone que los usuarios deben crear un servicio SQL y una cola por NCache proceso marcando el “Utilice el modo de notificación de SQL personalizado"Casilla de verificación en el Opciones ficha en el NCache Centro de Gestión.
- También puede crear el servicio SQL y la cola necesarios mediante un script. NCacheServicioQueue.sql situado en %NCHOME%\bin\recursos.
Recursos adicionales
NCache proporciona una aplicación de ejemplo para la dependencia de SQL en GitHub.
Vea también
.NETO: Alachisoft.NCache.Dependencias.de.tiempo de ejecución espacio de nombres
Java: com.alachisoft.ncache.dependencias.de.tiempo de ejecución espacio de nombres
Nodo.js: SqlCacheDependency clase.
Pitón: ncache.dependencias.de.tiempo de ejecución clase.