Dépendance du cache SQL Server
Il existe différents mécanismes dans NCache pour garder les données synchronisées dans le cache. Il peut y avoir un scénario dans lequel l'utilisateur souhaite conserver les données synchronisées avec la base de données, de sorte que chaque mise à jour de la base de données informe le cache. De cette façon, les données du cache restent à jour et les opérations se produisent sur l'ensemble de données mis à jour.
NCache fournit la fonctionnalité de dépendance SQL pour synchroniser le cache avec Microsoft SQL Server 2005 et versions ultérieures. Un élément est ajouté avec SqlCacheDependency (fourni par NCache), spécifiant une instruction SQL représentant un jeu de résultats de requête dans la base de données. NCache établit ensuite un lien avec la base de données avec l'ensemble de résultats. Si une application est mise à jour, SQL Server déclenche des notifications d'événements, ce qui NCache intercepte et supprime l'élément correspondant du cache distribué.
Avant d'utiliser la dépendance SQL, configurez l'environnement SQL Server. Pour créer une dépendance SQL :
- Activer le service de courtage
- Activer les autorisations de base de données
Pour plus de détails, veuillez consulter le Configurer l'environnement SQL Server du Guide de l'administrateur.
Conditions préalables à l'utilisation de la dépendance du cache SQL Server
- Configurer l'environnement pour utiliser la dépendance SQL.
- 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, SqlCacheDependency.
- Assurez-vous que le courtier est activé.
- Assurez-vous que le les autorisations sont activées pour utiliser NCache Dépendance du cache SQL.
Ajouter des données avec la dépendance SQL Server via l'API
Pour ajouter des données dans le cache à l'aide de la dépendance SQL, NCache Fournit le SqlCacheDependency
classe. Cela ajoute des éléments au cache avec la dépendance SQL.
L'exemple suivant ajoute une dépendance SQL à un élément, puis ajoute l'élément au cache à l'aide de l'option 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 les écrase.
// 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);
}
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 SQL à l'aide d'une procédure stockée
NCache vous permet de fournir une dépendance SQL sur un élément à l'aide d'une procédure stockée. Vous pouvez également spécifier les paramètres à transmettre avec cette procédure à l'aide du SqlCacheDependency
méthode.
L'exemple suivant ajoute un élément au cache avec une dépendance SQL via la procédure stockée à l'aide de l'attribut insérer 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();
// 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);
Important
- Dans un environnement où l'utilisateur a un accès plus restreint à la base de données, les utilisateurs sont censés créer un service SQL et une file d'attente par NCache processus en cochant la case «Utiliser le mode de notification SQL personnalisé” case à cocher dans le Options onglet dans l' NCache Centre de gestion.
- Vous pouvez également créer le service SQL et la file d'attente requis à l'aide d'un script NCacheServiceQueue.sql situé à %NCHOME%\bin\ressources.
Ressources additionnelles
NCache fournit un exemple d'application pour la dépendance SQL 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 : SqlCacheDependency classe.
python: ncache.dépendances.d'exécution classe.