Cache-Datenabhängigkeit auf Oracle-Datenbank
NCache bietet OracleCache-Abhängigkeit für benachrichtigungsbasierte Abhängigkeiten mit Oracle. Im Inneren, NCache verwendet OracleDependency
um Datenänderungsbenachrichtigungen beim Oracle-Datenbankserver zu registrieren. Daher müssen Sie die Einschränkungen und Arbeitsmechanismen von verstehen OracleDependency
, während diese Abhängigkeit verwendet wird. Weitere Einzelheiten finden Sie in der folgenden Oracle-Dokumentation.
NCache stellt eine Oracle-Abhängigkeit bereit, um den Cache mit der Oracle-Datenbank zu synchronisieren. Cache-Elemente verfallen, wenn ein Befehl zu einer Änderung in der Datenbank führt. Oracle-Abhängigkeit ist für Oracle-Datenbank 11g oder höher verfügbar. Installieren Sie außerdem Oracle Data Providers für .NET (Version 10.1.0.2.0+).
Die Datenbankänderungsbenachrichtigungen sind objektbasiert und lösen bei jeder Objektzeilenänderung Änderungsbenachrichtigungen aus. Überprüfen Sie daher ROWID, um zu bestätigen, ob es sich bei der geänderten Zeile um die Zeile handelt, für die das Ereignis registriert wurde. ROWIDs können nur abgerufen werden, wenn sie explizit in der Abfrage enthalten sind. Daher muss der Benutzer ROWID ausdrücklich in die Abfrage aufnehmen, bei der er registriert wird OracleDependency
Andernfalls wird die Änderungsbenachrichtigung ausgelöst, wenn eine Zeile in der Tabelle geändert wird.
Wenn ROWID in einer Abfrage enthalten ist, wie zum Beispiel: SELECT ROWID, UnitPrice FROM Products WHERE ProductID = {product.ProductID}
- NCache speichert die ROWIDs der Zeilen, für die die Änderungsbenachrichtigung registriert ist. Wenn eine Änderungsbenachrichtigung eingeht, NCache vergleicht die ROWIDs, um festzustellen, ob die geänderte Zeile diejenige ist, für die die ROWID registriert ist. Ansonsten, NCache hat keine Möglichkeit, dies zu überprüfen, und Elemente mit einer registrierten Änderungsbenachrichtigung werden entfernt, wenn sich eine Zeile in der Tabelle ändert.
Note
Richten Sie vor der Verwendung von Oracle Dependency die Oracle-Datenbankumgebung ein, indem Sie auf Folgendes verweisen Richten Sie die Oracle-Datenbankumgebung ein Abschnitt im Administratorhandbuch.
Voraussetzungen: Cache-Datenabhängigkeit von der Oracle-Datenbank
- Datenbankumgebung einrichten bevor Sie Oracle-Abhängigkeit verwenden.
- Lernen Sie die Standardvoraussetzungen kennen, die für die Arbeit mit allen erforderlich sind NCache Weitere Informationen zu clientseitigen Funktionen finden Sie auf der angegebenen Seite Clientseitige API-Voraussetzungen.
- Einzelheiten zur API finden Sie unter: ICache, CacheItem, Abhängigkeit, OracleCache-Abhängigkeit.
Hinzufügen von Daten mit Oracle-Datenbankabhängigkeit
Wenn Sie Daten nach dem Hinzufügen mit Oracle Dependency ändern, werden sie aus dem Cache entfernt. OracleCacheDependency
wird verwendet, um die Abhängigkeitskriterien anzugeben, und dann wird das Element mithilfe von zum Cache hinzugefügt Add
or Insert
Methode.
Im folgenden Beispiel werden Daten mit hinzugefügt OracleCacheDependency
Verwendung der Insert
Methode. Das Insert
Die Methode fügt ein neues Element mit Abhängigkeit hinzu und überschreibt ihre Eigenschaften, wenn diese Daten bereits im Cache vorhanden sind.
// 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
Um sicherzustellen, dass der Vorgang ausfallsicher ist, wird empfohlen, alle potenziellen Ausnahmen in Ihrer Anwendung zu behandeln, wie in erläutert Umgang mit Fehlern.
Hinzufügen von Daten mit Oracle-Abhängigkeit mithilfe von Stored Procedures
NCache Mit dieser Option können Sie mithilfe einer gespeicherten Prozedur eine Oracle-Abhängigkeit für ein Element bereitstellen. Sie können auch die Parameter angeben, die zusammen mit der gespeicherten Prozedur übergeben werden sollen OracleCacheDependency
Methode.
Im folgenden Beispiel werden mithilfe der gespeicherten Prozedur Elemente mit Oracle-Abhängigkeit zum Cache hinzugefügt Insert
Methode. Das Insert
Die Methode fügt ein neues Element mit Abhängigkeit hinzu und überschreibt ihre Eigenschaften, wenn diese Daten bereits im Cache vorhanden sind.
// 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);
}
Weitere Informationen
NCache stellt eine Beispielanwendung für die Oracle-Abhängigkeit bereit GitHub.
Siehe auch
.NETZ: Alachisoft.NCache.Laufzeitabhängigkeiten Namespace.
Java: com.alachisoft.ncache.Laufzeitabhängigkeiten Namespace.
Node.js: OracleCache-Abhängigkeit Klasse.
Python: ncache.Laufzeitabhängigkeiten Klasse.