如何在 apache ignite .NET 中配置 oracle 数据库
How to configure an oracle database in apache ignite .NET
我正在尝试使用 Oracle 数据库配置 apache Ignite 的直写和直读属性。我在很多地方搜索过,比如 Ignite 官方文档,也在 GitHub 上的 Ignite 示例中,
但是没有太多信息或用 C# 编码的示例是我开发应用程序的语言。
我想要的是从持久存储(在本例中为 Oracle 数据库)中检索缓存 (Ignite) 中尚未加载的特定数据。以类似的方式,我需要我对缓存的所有更改都反映在数据库中。
我绑定了创建和 spring.xml 数据库配置(ip、端口、用户名、密码、数据库),但如果这是应该完成的方式,我无法让它工作.
提前致谢,对不起我的英语。
1) 实现 ICacheStore
接口(或继承 CacheStoreAdapter
助手 class)
public class OracleStore : CacheStoreAdapter
{
public override object Load(object key)
{
using (var con = new OracleConnection
{
ConnectionString = "User Id=<username>;Password=<password>;Data Source=<datasource>"
})
{
con.Open();
var cmd = con.CreateCommand();
cmd.CommandText = "SELECT * FROM MyTable WHERE ID=@id";
cmd.Parameters.Add("@id", OracleType.Int32);
cmd.Parameters["@id"].Value = key;
using (var reader = cmd.ExecuteReader())
{
// Read data, return as object
}
}
}
public override void Write(object key, object val)
{
oracleDb.UpdateRow(key, val);
}
public override void Delete(object key)
{
oracleDb.DeleteRow(key);
}
}
2) 实现商店工厂:
public class OracleStoreFactory : IFactory<OracleStore>
{
public OracleStore CreateInstance()
{
return new OracleStore();
}
}
3) 配置缓存以使用存储:
using (var ignite = Ignition.Start())
{
var cacheCfg = new CacheConfiguration
{
ReadThrough = true,
WriteThrough = true,
KeepBinaryInStore = false, // Depends on your case
CacheStoreFactory = new OracleStoreFactory()
};
var cache = ignite.CreateCache<int, MyClass>(cacheCfg);
cache.Get(1); // OracleStore.Load is called.
}
Ignite.NET 的文档(在 C# 中):https://apacheignite-net.readme.io/docs/persistent-store
C# 示例在完整下载包中可用:https://ignite.apache.org/download.cgi#binaries(单击 apache-ignite-fabric-1.9.0-bin.zip,下载、解压缩、打开 platforms\dotnet\examples\Apache。Ignite.Examples.sln)
博客 post 解释 C# 中的缓存存储实现:
https://ptupitsyn.github.io/Entity-Framework-Cache-Store/
在 .NET 中使用 Oracle 数据库:Connecting to Oracle Database through C#?
我正在尝试使用 Oracle 数据库配置 apache Ignite 的直写和直读属性。我在很多地方搜索过,比如 Ignite 官方文档,也在 GitHub 上的 Ignite 示例中, 但是没有太多信息或用 C# 编码的示例是我开发应用程序的语言。
我想要的是从持久存储(在本例中为 Oracle 数据库)中检索缓存 (Ignite) 中尚未加载的特定数据。以类似的方式,我需要我对缓存的所有更改都反映在数据库中。
我绑定了创建和 spring.xml 数据库配置(ip、端口、用户名、密码、数据库),但如果这是应该完成的方式,我无法让它工作.
提前致谢,对不起我的英语。
1) 实现 ICacheStore
接口(或继承 CacheStoreAdapter
助手 class)
public class OracleStore : CacheStoreAdapter
{
public override object Load(object key)
{
using (var con = new OracleConnection
{
ConnectionString = "User Id=<username>;Password=<password>;Data Source=<datasource>"
})
{
con.Open();
var cmd = con.CreateCommand();
cmd.CommandText = "SELECT * FROM MyTable WHERE ID=@id";
cmd.Parameters.Add("@id", OracleType.Int32);
cmd.Parameters["@id"].Value = key;
using (var reader = cmd.ExecuteReader())
{
// Read data, return as object
}
}
}
public override void Write(object key, object val)
{
oracleDb.UpdateRow(key, val);
}
public override void Delete(object key)
{
oracleDb.DeleteRow(key);
}
}
2) 实现商店工厂:
public class OracleStoreFactory : IFactory<OracleStore>
{
public OracleStore CreateInstance()
{
return new OracleStore();
}
}
3) 配置缓存以使用存储:
using (var ignite = Ignition.Start())
{
var cacheCfg = new CacheConfiguration
{
ReadThrough = true,
WriteThrough = true,
KeepBinaryInStore = false, // Depends on your case
CacheStoreFactory = new OracleStoreFactory()
};
var cache = ignite.CreateCache<int, MyClass>(cacheCfg);
cache.Get(1); // OracleStore.Load is called.
}
Ignite.NET 的文档(在 C# 中):https://apacheignite-net.readme.io/docs/persistent-store
C# 示例在完整下载包中可用:https://ignite.apache.org/download.cgi#binaries(单击 apache-ignite-fabric-1.9.0-bin.zip,下载、解压缩、打开 platforms\dotnet\examples\Apache。Ignite.Examples.sln)
博客 post 解释 C# 中的缓存存储实现: https://ptupitsyn.github.io/Entity-Framework-Cache-Store/
在 .NET 中使用 Oracle 数据库:Connecting to Oracle Database through C#?