Quick question on data and index pages

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Quick question on data and index pages

John Wilson
Hi,

1. What are direct and indirect count in data page header used for? What is
the difference?

[
https://cwiki-test.apache.org/confluence/display/IGNITE/Ignite+Durable+Memory+-+under+the+hood#IgniteDurableMemory-underthehood-Freelists
]

2. Are data pages organized in a B+ tree structure or index pages only?

3. Is there any difference between internal and leaf nodes in the B+ tree
structure?


Thanks,
Reply | Threaded
Open this post in threaded view
|

Re: Quick question on data and index pages

Ilya Lantukh
Hi,

1. As the name implies, indirectCount is the count of indirect items, which
are references to direct items. According to our DataPage format, we keep
all items in the beginning of the page. Take a look at this diagram:
https://cwiki-test.apache.org/confluence/download/attachments/73632614/Part%206.%205.%20Page%20structure%20%281%29.png?version=1&modificationDate=1525443891000&api=v2.
If we remove It2, we will have to move It3 onto it's place. But we already
have external references to It3 by it's index (3). So, to keep those
external references correct, we have to mark item on index 3 as "indirect"
and make it point on index 2. In this case, such page will have directCount
== 2 and indirectCount == 1.

2. No, only index pages are organized in a B+ tree. Data pages are
organized in another data structure called FreeList - it stores how many
free space is available on each data page and provides fast access to pages
that have space >= specified.

3. Yes. The most significant difference is that internal nodes need to
store links to nodes on the next level. Check classes BPlusInnerIO and
BPlusLeafIO (and their subclasses) if you are interested in more details.

On Thu, Jul 26, 2018 at 6:22 AM, John Wilson <[hidden email]>
wrote:

> Hi,
>
> 1. What are direct and indirect count in data page header used for? What is
> the difference?
>
> [
> https://cwiki-test.apache.org/confluence/display/IGNITE/
> Ignite+Durable+Memory+-+under+the+hood#IgniteDurableMemory-
> underthehood-Freelists
> ]
>
> 2. Are data pages organized in a B+ tree structure or index pages only?
>
> 3. Is there any difference between internal and leaf nodes in the B+ tree
> structure?
>
>
> Thanks,
>



--
Best regards,
Ilya