ignite - Apache Ignite 中的 B+ 树和索引页

标签 ignite

我正在尝试了解 Apache Ignite 的 B+ 树和索引页的用途,如下所述:https://apacheignite.readme.io/docs/page-memory

我有几个问题:

  1. 索引页到底包含什么?落入索引页的键的哈希码值的有序列表以及将用于定位和索引到数据页以存储/获取键值对的“其他”信息?
  2. 由于索引页中使用了哈希码,如果发生冲突会发生什么?
  3. 对于“典型”应用程序,我们是否期望数据页的数量远高于索引页的数量? (因为数据页包含键值对)
  4. 我们使用 ignite.getOrCreateCache(name) 创建的分布式缓存和内存区域之间存在什么类型的关系?一对一、多对一、一对多还是多对多?
  5. 考虑以下伪代码:

Ignite ignite = Ignition.start("two_server_node_config"); IgniteCache<Integer,String> cache = ignite.getOrCreateCache("my_cache"); cache.put(7, "abcd");

  1. Ignite 如何确定将 key 放入的节点?
  2. 一旦确定了放置key的节点,Ignite如何定位key所属的具体内存区域?

谢谢

最佳答案

  1. 索引页包含哈希值的有序列表以及存储在持久内存中的键值对的链接。链接=页面ID+页面内偏移量
  2. 所有指向具有冲突哈希值的对象的链接都将出现在索引页面中。为了执行查找,Ignite 将取消引用链接并比较键。
  3. 这取决于对象大小。您可以粗略估计“典型”应用程序中数据页与索引页的比率为 90 比 10。但是,如果添加额外的索引,索引页的份额将会增加: https://apacheignite.readme.io/v2.1/docs/indexes#section-registering-indexed-types

您可能还会发现最新版本的文档很有用:https://apacheignite.readme.io/v2.1/docs/memory-architecture

关于ignite - Apache Ignite 中的 B+ 树和索引页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45337691/

相关文章:

java - 更新 Apache Ignite WebSession 属性

kubernetes - 使用 TcpDiscoveryKubernetesIpFinder 时,OpenShift/K8s 项目 pod 不加入同一网格的问题,而是创建多个隔离的网格

java - 如何获取 Apache Ignite 中给定缓存的配置?

java - 如何通过xml在ignite服务器中创建缓存过期策略?

performance - 如何提高 apache ignite 中的查询性能

java - Apache Ignite 异常 : Caches have distinct sets of data nodes

java - 当使用ignite进行缓存时,使用Ignite缓存查询和使用IgniteRepository类有什么区别?

java - Ignite put 与 DataStreaming

c# - 如何使用 c# .net 在 Apache Ignite 中停止服务器(节点)

java - 将 Ignite 与 mysql 一起用作第 3 方持久存储时,如何确保缓存键和对象 id 相同