Dependencia de datos de caché en la base de datos de Oracle
NCache proporciona un OracleCacheDependencyOracleCacheDependency para dependencias basadas en notificaciones con Oracle. Internamente, NCache usos OracleDependency
para registrar notificaciones de cambio de datos con el servidor de base de datos Oracle. Por lo tanto, es necesario comprender las limitaciones y los mecanismos de funcionamiento de OracleDependency
, mientras usa esta dependencia. Consulte la siguiente documentación de Oracle para obtener más detalles.
- Consideraciones especiales sobre el uso de notificaciones de consulta
- OracleDependencyOracleDependency
NCache proporciona una dependencia de Oracle para sincronizar el caché con la base de datos de Oracle. Los elementos de la caché caducan si un comando produce un cambio en la base de datos. Oracle Dependency está disponible para la base de datos Oracle 11g o posterior. Además, instale Oracle Data Providers para .NET (versión 10.1.0.2.0+).
Las notificaciones de cambios de la base de datos se basan en objetos y activan notificaciones de cambios ante cualquier modificación de la fila del objeto. Por lo tanto, verifique ROWID para confirmar si la fila modificada es aquella para la cual se registró el evento. Los ROWID no se pueden recuperar a menos que se incluyan explícitamente en la consulta. Por lo tanto, el usuario debe incluir específicamente ROWID en la consulta que se está registrando. OracleDependency
De lo contrario, se activará la notificación de cambio si se modifica alguna fila en la tabla.
Cuando ROWID se incluye en una consulta como: SELECT ROWID, UnitPrice FROM Products WHERE ProductID = {product.ProductID}
- NCache guardará los ROWID de las filas para las que está registrada la notificación de cambio. Cuando recibe cualquier notificación de cambio, NCache comparará los ROWID para determinar si la fila modificada es aquella para la cual está registrado el ROWID. De lo contrario, NCache no tendrá forma de comprobarlo y los elementos con una notificación de cambio registrada se eliminarán si cambia alguna fila de la tabla.
Note
Antes de utilizar la dependencia de Oracle, configure el entorno de base de datos Oracle consultando la Configuración del entorno de la base de datos de Oracle sección de la Guía del administrador.
Requisitos previos: dependencia de datos de caché en la base de datos Oracle
- Configurar el entorno de la base de datos antes de usar Oracle Dependency.
- 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, OracleCacheDependencyOracleCacheDependency.
Agregar datos con dependencia de la base de datos Oracle
La modificación de los datos después de agregarlos con Oracle Dependency los eliminará del caché. OracleCacheDependency
se utiliza para especificar los criterios de dependencia y luego el elemento se agrega al caché utilizando el Add
or Insert
método.
El siguiente ejemplo agrega datos con OracleCacheDependency
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é, sobrescribe sus propiedades.
// 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 Oracle dependency on the UnitPrice of product. Whenever the UnitPrice changes, the product is removed from the cache.
string query = $"SELECT ROWID, UnitPrice FROM Products WHERE ProductID = {product.ProductID}";
// Creating dependency on fetched products.
OracleCacheDependency dependency = new OracleCacheDependency(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 Oracle mediante el procedimiento almacenado
NCache le permite proporcionar una dependencia de Oracle en un elemento mediante un procedimiento almacenado. También puede especificar los parámetros que se pasarán junto con el procedimiento almacenado, utilizando el OracleCacheDependency
método.
El siguiente ejemplo agrega elementos al caché con dependencia de Oracle a través del procedimiento almacenado utilizando el Insert
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();
foreach (Product product in products)
{
string productKey = $"Product: {product.ProductID}";
// Creating Param to be passed in stored procedure dictionary.
OracleCmdParams paramProductID = new OracleCmdParams
{
Type = OracleCmdParamsType.Int32,
Value = product.ProductID
};
// Creating stored procedure params.
Dictionary<string, OracleCmdParams> parameters = new Dictionary<string, OracleCmdParams>();
parameters.Add("@ProductID", paramProductID);
CacheItem productItem = new CacheItem(product);
// Creating an Oracle dependency on the UnitPrice of product. Whenever the UnitPrice changes, the product is removed from the cache.
OracleCacheDependency dependency = new OracleCacheDependency(connectionString, spGetUnitPriceByProductID, OracleCommandType.StoredProcedure, parameters);
// Adding Dependency to product item
productItem.Dependency = dependency;
// Adding CacheItem in cache
cache.Add(productKey, productItem);
}
Recursos adicionales
NCache proporciona una aplicación de ejemplo para la dependencia de Oracle 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: OracleCacheDependencyOracleCacheDependency clase.
Pitón: ncache.dependencias.de.tiempo de ejecución clase.