Dépendance des données de cache sur la base de données Oracle
NCache fournit OracleCacheDependencyOracleCacheDependency pour les dépendances basées sur les notifications avec Oracle. Intérieurement, NCache Usages OracleDependency
pour enregistrer les notifications de modification de données auprès du serveur de base de données Oracle. Par conséquent, vous devez comprendre les limites et les mécanismes de fonctionnement de OracleDependency
, tout en utilisant cette dépendance. Consultez la documentation Oracle suivante pour plus de détails.
NCache fournit une dépendance Oracle pour synchroniser le cache avec la base de données Oracle. Les éléments du cache expirent si une commande entraîne une modification dans la base de données. Oracle Dependency est disponible pour la base de données Oracle 11g ou version ultérieure. Installez également les fournisseurs de données Oracle pour .NET (version 10.1.0.2.0+).
Les notifications de modification de la base de données sont basées sur les objets et déclenchent des notifications de modification lors de toute modification de ligne d'objet. Par conséquent, vérifiez ROWID pour confirmer si la ligne modifiée est celle pour laquelle l'événement a été enregistré. Les ROWID ne peuvent pas être récupérés à moins d'être explicitement inclus dans la requête. Ainsi, l'utilisateur doit spécifiquement inclure ROWID dans la requête enregistrée auprès de OracleDependency
, sinon, la notification de modification sera déclenchée si une ligne est modifiée dans le tableau.
Lorsque ROWID est inclus dans une requête telle que : SELECT ROWID, UnitPrice FROM Products WHERE ProductID = {product.ProductID}
- NCache enregistrera les ROWID des lignes pour lesquelles la notification de modification est enregistrée. Lorsqu'il reçoit une notification de changement, NCache comparera les ROWID pour déterminer si la ligne modifiée est celle pour laquelle le ROWID est enregistré. Sinon, NCache n'aura aucun moyen de vérifier cela, et les éléments avec une notification de modification enregistrée sont supprimés si une ligne du tableau change.
Notes
Avant d'utiliser Oracle Dependency, configurez Oracle Database Environment en vous référant au Configurer l'environnement de base de données Oracle du Guide de l'administrateur.
Conditions préalables : Dépendance des données en cache sur la base de données Oracle
- Configurer l'environnement de la base de données avant d'utiliser Oracle Dependency.
- Pour en savoir plus sur les prérequis standard requis pour travailler avec tous NCache fonctionnalités côté client, veuillez vous référer à la page donnée sur Prérequis de l'API côté client.
- Pour plus de détails sur l'API, reportez-vous à : ICache, CacheItem, Dépendance, OracleCacheDependencyOracleCacheDependency.
Ajout de données avec la dépendance de base de données Oracle
La modification des données après leur ajout avec Oracle Dependency les supprimera du cache. OracleCacheDependency
est utilisé pour spécifier les critères de dépendance, puis l'élément est ajouté au cache à l'aide du Add
or Insert
méthode.
L'exemple suivant ajoute des données avec OracleCacheDependency
utilisant l' Insert
méthode. le Insert
La méthode ajoute un nouvel élément avec dépendance, et si ces données existent déjà dans le cache, elle écrase ses propriétés.
// 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);
}
Notes
Pour garantir la sécurité de l'opération, il est recommandé de gérer toutes les exceptions potentielles au sein de votre application, comme expliqué dans Gestion des échecs.
Ajouter des données avec une dépendance Oracle à l'aide d'une procédure stockée
NCache vous permet de fournir une dépendance Oracle sur un élément à l'aide d'une procédure stockée. Vous pouvez également spécifier les paramètres à transmettre avec la procédure stockée, à l'aide de l'option OracleCacheDependency
méthode.
L'exemple suivant ajoute des éléments au cache avec Oracle Dependency via la procédure stockée à l'aide de l'attribut Insert
méthode. le Insert
La méthode ajoute un nouvel élément avec dépendance, et si ces données existent déjà dans le cache, elle écrase ses propriétés.
// 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);
}
Ressources additionnelles
NCache fournit un exemple d'application pour la dépendance d'Oracle sur GitHub.
Voir aussi
.RAPPORTER: Alachisoft.NCache.Dépendances.d'exécution espace de noms.
Java: com.alachisoft.ncache.dépendances.d'exécution espace de noms.
Node.js : OracleCacheDependencyOracleCacheDependency classe.
python: ncache.dépendances.d'exécution classe.