如何配置 Ignite 作为一个完整的分布式数据库?
How to configure Ignite to work as a full distributed database?
我正在尝试围绕大量部分数据库实例管理分散式数据库。每个实例都有整个数据的 子集 并且它们都是节点和客户端,因此要求一些数据查询必须传播到每个(组)实例并且哪个有它会 return 数据。
为了避免在一个实例出现故障时丢失数据,我发现他们必须将其内容复制到其他实例中。如何使用 Ignite 配置此场景?
假设我有一个 table,其中包含分布式应用程序中用户的姓名和上次访问日期时间,例如 ...
class UserLogOns
{
string UserName;
DateTime LastAccess;
}
现在,当程序启动时,我准备将 Ingite 作为去中心化数据库工作......
static void Main(string[] args)
{
TcpCommunicationSpi commSpi = new TcpCommunicationSpi();
// Override local port.
commSpi.LocalPort = 44444;
commSpi.LocalPortRange = 0;
IgniteConfiguration cfg = new IgniteConfiguration();
// Override default communication SPI.
cfg.CommunicationSpi = commSpi;
using (var ignite = Ignition.Start(cfg))
{
var cfgCache = new CacheConfiguration("mio");
cfgCache.AtomicityMode = CacheAtomicityMode.Transactional;
var cache = ignite.GetOrCreateCache<string, UserLogOns>(cfgCache);
cache.Put(Environment.MachineName, new UserLogOns { UserName = Environment.MachineName, LastAccess = DateTime.UtcNow });
}
}
现在...我想获得其他 "computerB" 的 LastAccess 时..
这是正确的吗?如何实施?
这取决于您要实施的确切用例。总的来说,Ignite 开箱即用地提供了您在此处提到的所有内容。
这是开始在 Ignite 中使用 SQL 的好方法:https://apacheignite-sql.readme.io/docs
使用 "template=partitioned" 而不是 "replicated" 创建 table,如示例所示:https://apacheignite-sql.readme.io/docs/getting-started#section-creating-tables,配置备份数和 select字段作为亲和键(用于将特定条目映射到集群节点的字段)和 运行 一些查询。
如果要使用本机持久性,还请检查基线拓扑的概念:https://apacheignite.readme.io/docs/baseline-topology。
内存模式将在每次服务器拓扑更改时自动触发节点之间的重新平衡(可以存储数据的节点in/out)。
我正在尝试围绕大量部分数据库实例管理分散式数据库。每个实例都有整个数据的 子集 并且它们都是节点和客户端,因此要求一些数据查询必须传播到每个(组)实例并且哪个有它会 return 数据。
为了避免在一个实例出现故障时丢失数据,我发现他们必须将其内容复制到其他实例中。如何使用 Ignite 配置此场景?
假设我有一个 table,其中包含分布式应用程序中用户的姓名和上次访问日期时间,例如 ...
class UserLogOns
{
string UserName;
DateTime LastAccess;
}
现在,当程序启动时,我准备将 Ingite 作为去中心化数据库工作......
static void Main(string[] args)
{
TcpCommunicationSpi commSpi = new TcpCommunicationSpi();
// Override local port.
commSpi.LocalPort = 44444;
commSpi.LocalPortRange = 0;
IgniteConfiguration cfg = new IgniteConfiguration();
// Override default communication SPI.
cfg.CommunicationSpi = commSpi;
using (var ignite = Ignition.Start(cfg))
{
var cfgCache = new CacheConfiguration("mio");
cfgCache.AtomicityMode = CacheAtomicityMode.Transactional;
var cache = ignite.GetOrCreateCache<string, UserLogOns>(cfgCache);
cache.Put(Environment.MachineName, new UserLogOns { UserName = Environment.MachineName, LastAccess = DateTime.UtcNow });
}
}
现在...我想获得其他 "computerB" 的 LastAccess 时..
这是正确的吗?如何实施?
这取决于您要实施的确切用例。总的来说,Ignite 开箱即用地提供了您在此处提到的所有内容。
这是开始在 Ignite 中使用 SQL 的好方法:https://apacheignite-sql.readme.io/docs
使用 "template=partitioned" 而不是 "replicated" 创建 table,如示例所示:https://apacheignite-sql.readme.io/docs/getting-started#section-creating-tables,配置备份数和 select字段作为亲和键(用于将特定条目映射到集群节点的字段)和 运行 一些查询。
如果要使用本机持久性,还请检查基线拓扑的概念:https://apacheignite.readme.io/docs/baseline-topology。
内存模式将在每次服务器拓扑更改时自动触发节点之间的重新平衡(可以存储数据的节点in/out)。