Dependência de dados de cache no banco de dados Oracle
NCache fornece OracleCacheDependência para dependências baseadas em notificação com Oracle. Internamente, NCache usos OracleDependency
para registrar notificações de alteração de dados no servidor de banco de dados Oracle. Portanto, você precisa entender as limitações e mecanismos de funcionamento do OracleDependency
, ao usar esta dependência. Consulte a seguinte documentação da Oracle para obter mais detalhes.
NCache fornece uma dependência Oracle para sincronizar o cache com o banco de dados Oracle. Os itens de cache expiram se um comando resultar em uma alteração no banco de dados. Oracle Dependency está disponível para banco de dados Oracle 11g ou posterior. Além disso, instale o Oracle Data Providers for .NET (versão 10.1.0.2.0+).
As notificações de alteração do banco de dados são baseadas em objetos, disparando notificações de alteração após qualquer modificação de linha do objeto. Portanto, verifique ROWID para confirmar se a linha alterada é aquela para a qual o evento foi registrado. ROWIDs não podem ser recuperados, a menos que sejam explicitamente incluídos na consulta. Portanto, o usuário deve incluir especificamente o ROWID na consulta que está sendo registrada OracleDependency
, caso contrário, a notificação de alteração será acionada se alguma linha for modificada na tabela.
Quando ROWID é incluído em uma consulta como: SELECT ROWID, UnitPrice FROM Products WHERE ProductID = {product.ProductID}
- NCache salvará os ROWIDs das linhas para as quais a notificação de alteração está registrada. Quando recebe qualquer notificação de alteração, NCache comparará os ROWIDs para determinar se a linha alterada é aquela para a qual o ROWID está registrado. De outra forma, NCache não haverá como verificar isso e os itens com uma notificação de alteração registrada serão removidos se alguma linha da tabela for alterada.
Note
Antes de usar o Oracle Dependency, configure o Oracle Database Environment consultando o Configurar ambiente de banco de dados Oracle seção no Guia do Administrador.
Pré-requisitos: Dependência de dados de cache no banco de dados Oracle
- Configurar ambiente de banco de dados antes de usar o Oracle Dependency.
- Para aprender sobre os pré-requisitos padrão necessários para trabalhar com todos os NCache recursos do lado do cliente, consulte a página fornecida em Pré-requisitos da API do lado do cliente.
- Para obter detalhes da API, consulte: ICache, Item de cache, Dependência, OracleCacheDependência.
Adicionando dados com dependência de banco de dados Oracle
Alterar os dados após a adição com o Oracle Dependency irá removê-los do cache. OracleCacheDependency
é usado para especificar os critérios de dependência e, em seguida, o item é adicionado ao cache usando o comando Add
or Insert
método.
O exemplo a seguir adiciona dados com OracleCacheDependency
usando o Insert
método. o Insert
O método adiciona um novo item com dependência e, se esses dados já existirem no cache, ele sobrescreve suas propriedades.
// 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 garantir que a operação seja à prova de falhas, é recomendável lidar com possíveis exceções em seu aplicativo, conforme explicado em Como lidar com falhas.
Adicionar dados com dependência do Oracle usando o procedimento armazenado
NCache permite fornecer uma dependência Oracle em um item usando um procedimento armazenado. Você também pode especificar os parâmetros a serem passados junto com o procedimento armazenado, usando o comando OracleCacheDependency
método.
O exemplo a seguir adiciona itens ao cache com Oracle Dependency por meio do procedimento armazenado usando o método Insert
método. o Insert
O método adiciona um novo item com dependência e, se esses dados já existirem no cache, ele sobrescreve suas propriedades.
// 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 adicionais
NCache fornece um aplicativo de exemplo para dependência do Oracle em GitHub.
Veja também
.INTERNET: Alachisoft.NCache.Runtime.Dependências espaço para nome.
Java: com.alachisoft.ncache.runtime.dependencies espaço para nome.
Node.js: OracleCacheDependência classe.
Pitão: ncache.runtime.dependencies classe.