在 Apache Ignite 中加入查询
Join Query in Apache Ignite
PARTITIONED模式下节点间的空间连接查询是如何进行的?由于 Ignite 使用 Rendezvous Affinity hashing 在节点之间对数据(默认 1024)进行分区,如何在分区之间执行连接操作?假设我在缓存中有两个空间数据集(pCache 和 qCache),每个包含 10 个分区(1,..,10)。 ignite 如何对这两个数据集执行连接操作?是pCache的partition1和qCache的partition1吗?
我的第二个问题:在分布式连接的情况下,ignite如何执行相同的操作?
不同缓存的分区之间没有对应关系。如果你 运行 一个连接操作,那么默认情况下只有本地查找 performed.If 数据没有并置,那么这种方法可能会给你一个部分结果。
当执行all-to-all映射时,每个节点都必须与其他每个节点通信,所以
个消息在集群中被完全发送,其中
是消息的数量节点。在缓存查询 API.
的情况下,这称为 distributed joins, and it affects performance significantly. It may be enabled either in the connection string in case of JDBC driver, or by using SqlFieldsQuery#setDistributedJoins(...) 方法
推荐的连接方式是以某种方式并置数据,不需要分布式连接。 Ignite 有一个名为 affinity collocation 的功能,专门为此目的而设计。您可以指定一个对象的字段,该字段将用于计算亲和力函数。该字段的值不必是唯一的,但它应该是键的一部分。所以,如果你想对两个表进行连接,你可以通过亲和力来配置它们,这样就不需要分布式连接了。
PARTITIONED模式下节点间的空间连接查询是如何进行的?由于 Ignite 使用 Rendezvous Affinity hashing 在节点之间对数据(默认 1024)进行分区,如何在分区之间执行连接操作?假设我在缓存中有两个空间数据集(pCache 和 qCache),每个包含 10 个分区(1,..,10)。 ignite 如何对这两个数据集执行连接操作?是pCache的partition1和qCache的partition1吗?
我的第二个问题:在分布式连接的情况下,ignite如何执行相同的操作?
不同缓存的分区之间没有对应关系。如果你 运行 一个连接操作,那么默认情况下只有本地查找 performed.If 数据没有并置,那么这种方法可能会给你一个部分结果。
当执行all-to-all映射时,每个节点都必须与其他每个节点通信,所以个消息在集群中被完全发送,其中
是消息的数量节点。在缓存查询 API.
推荐的连接方式是以某种方式并置数据,不需要分布式连接。 Ignite 有一个名为 affinity collocation 的功能,专门为此目的而设计。您可以指定一个对象的字段,该字段将用于计算亲和力函数。该字段的值不必是唯一的,但它应该是键的一部分。所以,如果你想对两个表进行连接,你可以通过亲和力来配置它们,这样就不需要分布式连接了。