[ 
https://issues.apache.org/jira/browse/IGNITE-17230?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kirill Tkalenko updated IGNITE-17230:
-------------------------------------
    Description: 
*Notes*
Description may not be complete.

*Goal*
To implement a new checkpoint (described in IGNITE-15818), we will introduce a 
new entity *DelataFilePageStore*, which will be created for each partition at 
each checkpoint and removed after merging with the *FilePageStore* (the main 
partition file) using the compacter.

*DelataFilePageStore* will consist of:
* Header (maybe updated in the course of implementation):
** Allocation *pageIdx* - *pageIdx* of the last created page;
* Sorted list of *pageIdx* - allows a binary search to find the file offset for 
an *pageId -> pageIdx*;
* Page content - sorted by *pageIdx*.

What will change for *FilePageStore*:
* List of class *DelataFilePageStore* will be added (from the newest to the 
oldest by the time of creation);
* Allocation index (pageIdx of the last created page) - it will be logical and 
contained in the header of *FilePageStore*. At node start, it will be read from 
the header of *FilePageStore* or obtained from the first *DelataFilePageStore* 
(the newest one).

To read a page by *pageId -> pageIdx*, at the beginning we will try to find it 
among the *DelataFilePageStore* (from the youngest to the oldest) and if we do 
not find it among them, we will read from *FilePageStore*.

  was:
*Notes*
Description may not be complete.

*Goal*
To implement a new checkpoint (described in IGNITE-15818), we will introduce a 
new entity *DelataFilePageStore*, which will be created for each partition at 
each checkpoint and removed after merging with the *FilePageStore* (the main 
partition file) using the compacter.

*DelataFilePageStore* will consist of:
* Header (maybe updated in the course of implementation):
** Allocation *pageIdx* - *pageIdx* of the last created page;
* Sorted list of *pageIdx* - allows a binary search to find the file offset for 
an *pageId -> pageIdx*;
* Page content - sorted by *pageIdx*.

What will change for *FilePageStore*:
* Allocation index (pageIdx of the last created page) - it will be logical and 
contained in the header of *FilePageStore*. At node start, it will be read from 
the class header "123" or obtained from the first class "123" (the newest one).


To implement the new checkpoint (described in IGNITE-15818), we need to modify 
*FilePageStore*. 
A list (from new to old) of *DelataFilePageStore* will be added to its 
structure, which will increase after each checkpoint (at its completion) and 
decrease after each merge with the *FilePageStore* by "compacter".

*DelataFilePageStore* will contain:
 * Sorted list of *pageIdx*: allows by binary search to find the offset in this 
file for the requested *pageId -> pageIdx*;
 * Allocation Index: *pageIdx* of the last allocated page;
 * Pages themselves are sorted by *pageIdx*.

To read a page by *pageId -> pageIdx*, at the beginning we will try to find it 
among the *DelataFilePageStore* (from the youngest to the oldest) and if we do 
not find it among them, we will read from *FilePageStore*.


> Support splt-file page store
> ----------------------------
>
>                 Key: IGNITE-17230
>                 URL: https://issues.apache.org/jira/browse/IGNITE-17230
>             Project: Ignite
>          Issue Type: Task
>            Reporter: Kirill Tkalenko
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.0.0-alpha6
>
>
> *Notes*
> Description may not be complete.
> *Goal*
> To implement a new checkpoint (described in IGNITE-15818), we will introduce 
> a new entity *DelataFilePageStore*, which will be created for each partition 
> at each checkpoint and removed after merging with the *FilePageStore* (the 
> main partition file) using the compacter.
> *DelataFilePageStore* will consist of:
> * Header (maybe updated in the course of implementation):
> ** Allocation *pageIdx* - *pageIdx* of the last created page;
> * Sorted list of *pageIdx* - allows a binary search to find the file offset 
> for an *pageId -> pageIdx*;
> * Page content - sorted by *pageIdx*.
> What will change for *FilePageStore*:
> * List of class *DelataFilePageStore* will be added (from the newest to the 
> oldest by the time of creation);
> * Allocation index (pageIdx of the last created page) - it will be logical 
> and contained in the header of *FilePageStore*. At node start, it will be 
> read from the header of *FilePageStore* or obtained from the first 
> *DelataFilePageStore* (the newest one).
> To read a page by *pageId -> pageIdx*, at the beginning we will try to find 
> it among the *DelataFilePageStore* (from the youngest to the oldest) and if 
> we do not find it among them, we will read from *FilePageStore*.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to