2017-07-26 69 views
2

我想這裏描述的理解B +樹和索引頁的Apache的Ignite目的:https://apacheignite.readme.io/docs/page-memoryB +樹和索引頁的Apache點燃

我有幾個問題:

  1. 什麼一個索引頁是否包含?排序在索引頁中的鍵的散列碼值的有序列表,以及將用於定位和索引數據頁以存儲/獲取鍵值對的「其他」信息?
  2. 由於散列碼正在索引頁中使用,如果發生衝突會發生什麼?
  3. 對於「典型」應用程序,我們是否期望數據頁的數量遠高於索引頁的數量? (因爲數據頁面包含鍵值對)
  4. 我們使用ignite.getOrCreateCache(name)創建的分佈式緩存和內存區域之間存在哪種類型的關係? 1對1,多對一,多對多還是多對多?
  5. 考慮下面的僞代碼:

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

  1. 如何點燃決定把鑰匙插入節點?
  2. 一旦確定了放置密鑰的節點,Ignite如何找到密鑰所屬的特定內存區域?

感謝

回答

1

接聽最後兩個問題:

  • 多對一1。相同的內存區域可用於多個緩存。
  • 這是基於親和力。基本上,緩存鍵映射到親和鍵(默認情況下它們是相同的),然後調用親和函數來確定分區和節點。關於親和力的一些更多細節在這裏:https://apacheignite.readme.io/docs/affinity-collocation
  • 2
    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

    +0

    謝謝Glukos,我已經添加了兩個問題,我很感激,如果你可以回答。 – BestCoderEver