- ignite/
- Ignite 了解缓存键、索引、分区和关联w.r.t读写
Ignite 了解缓存键、索引、分区和关联w.r.t读写
Ignite 了解缓存键、索引、分区和关联w.r.t读写,ignite,partition,gridgain,affinity,Ignite,Partition,Gridgain,Affinity,我是ApacheIgnite新手,来自数据仓库背景。
所以,如果我试图通过DBMS术语与Ignite联系起来,请原谅。
我已经通过论坛,但我仍然不清楚的一些基本知识
我还想知道我稍后发布的场景的具体答案
1.)缓存模式=已分区
a、 )当一个缓存被声明为分区时,数据是否得到同样的处理
默认情况下是否跨所有节点进行分区
b、 )是否有提供“分区键”的选项,该键是数据的基础
会分布在节点上吗?这就是我们所说的亲和力吗
钥匙
c、 )分区与关联有何不同?缓存可以同时具有这两种功能吗
分区和关联密钥
2
我是ApacheIgnite新手,来自数据仓库背景。
所以,如果我试图通过DBMS术语与Ignite联系起来,请原谅。
我已经通过论坛,但我仍然不清楚的一些基本知识
我还想知道我稍后发布的场景的具体答案
1.)缓存模式=已分区
a、 )当一个缓存被声明为分区时,数据是否得到同样的处理
默认情况下是否跨所有节点进行分区
b、 )是否有提供“分区键”的选项,该键是数据的基础
会分布在节点上吗?这就是我们所说的亲和力吗
钥匙
c、 )分区与关联有何不同?缓存可以同时具有这两种功能吗
分区和关联密钥
2)亲和力概念
定义了关联键后,当我将数据(使用loadCache())加载到分区缓存中时,源行将被发送到它们所属的节点还是集群上的所有节点
3.)如果我在缓存上创建一个索引,默认情况下它会成为分区吗/
还有亲和力密钥吗?在这种情况下,分区与索引有何不同
SCNEARIO说明
我想使用loadCache()将数据从持久层加载到暂存缓存(假设~2B)。缓存位于4节点群集上。
a、 )如何加载数据,使每个节点只需处理0.5B条记录?
是通过使用分区缓存模式并定义关联键实现的吗
然后我想以事务原子模式从暂存缓存中读取事务,查找目标缓存并执行一些操作
b、 )在对目标缓存执行查找时,如何确保仅在数据所在的节点上执行查找,而不在目标缓存所在的所有节点上执行查找?
这会使用AffinityKeyMapper API吗?如果是,如何进行
c、 )假设我想查找非关联键列的键,在查找列上创建索引是否有帮助?在这种情况下,我会扫描所有节点吗
暂存缓存
客户ID
客户邮件
客户电话
目标缓存
序号
客户ID
客户邮件
客户电话
起始日期
EndDate这在Apache Ignite用户论坛上得到了回答:
Ignite使用AffinityFunction[1]进行数据分发。AF实现了两个映射:键->分区和分区->节点。
键->分区映射肯定是分区的映射项。它不需要备份,只需要在分区上进行数据配置\分布。
通常,entry键(实际上是hashcode)用于计算分区条目所属的分区。
但您可以使用AffinityKey[2],它将用于管理数据配置。另请参见“org.apache.ignite.cache.affinity.AffinityKey”javadoc
分区->节点映射确定分区的主节点和备份节点。它不需要数据配置,只需要备份和节点之间的分区分布
loadCache只是让所有节点调用localLoadCache方法。它调用CacheStore.loadCache。因此,每个网格节点都将从缓存存储中加载所有数据,然后丢弃该节点的非本地数据
如果使用备份,相同的数据可能驻留在多个节点上。AffinityKey应该是entry key的一部分,如果配置了AffinityKey映射,则AffinityKey将代替entry key用于entry->partition映射
AffinityKey将被传递给AffinityFunction
索引总是和数据驻留在同一个节点上
a。要实现这一点,您应该实现CacheStore.loadCache方法来加载特定分区的数据。例如,您可以为数据库中的每一行存储分区ID。
然而,若您更改了AF或分区号,那个么也应该为数据库中的条目更新分区ID
相反。如果可行,您可以在单个节点中加载所有数据,然后将其他节点添加到网格中。数据将自动在节点上重新平衡
b。如果AffinityKey应该是entry键的一部分,则始终使用AffinityKey。因此,查找将始终发生在数据所在的节点上
c。我不明白这个问题。请您澄清一下它是否仍然是真实的吗?这在Apache Ignite用户论坛上得到了回答:
Ignite使用AffinityFunction[1]进行数据分发。AF实现了两个映射:键->分区和分区->节点。
键->分区映射肯定是分区的映射项。它不需要备份,只需要在分区上进行数据配置\分布。
通常,entry键(实际上是hashcode)用于计算分区条目所属的分区。
但您可以使用AffinityKey[2],它将用于管理数据配置。另请参见“org.apache.ignite.cache.affinity.AffinityKey”javadoc
分区->节点映射确定分区的主节点和备份节点。它不需要数据配置,只需要备份和节点之间的分区分布
loadCache只是让所有节点调用localLoadCache方法。它调用CacheStore.loadCache。因此,每个网格节点都将从缓存存储中加载所有数据,然后丢弃该节点的非本地数据
如果使用备份,相同的数据可能驻留在多个节点上。AffinityKey应该是entry key的一部分,如果配置了AffinityKey映射,则AffinityKey将代替entry key用于entry->partition映射
AffinityKey将被传递给AffinityFunction
索引总是和数据驻留在同一个节点上
a。要实现这一点,您应该实现CacheStore.loadCache方法来加载特定分区的数据。例如,您可以为数据库中的每一行存储分区ID。
然而,若您更改了AF或分区号,那个么也应该为数据库中的条目更新分区ID
相反。如果是我