[
https://issues.apache.org/jira/browse/IGNITE-21999?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ivan Bessonov reassigned IGNITE-21999:
--------------------------------------
Assignee: Ivan Bessonov
> Merge partition free-lists into one
> -----------------------------------
>
> Key: IGNITE-21999
> URL: https://issues.apache.org/jira/browse/IGNITE-21999
> Project: Ignite
> Issue Type: Improvement
> Reporter: Ivan Bessonov
> Assignee: Ivan Bessonov
> Priority: Major
> Labels: ignite-3
>
> Current implementation has 2 free-lists:
> * version chains
> * index tuples
> These lists have separate buckets for different types of data pages. There's
> an issue with this approach:
> * overhead on pages - we have to allocate more pages to store buckets
> * overhead on checkpoints - we have to save twice as many free-lists on
> every checkpoint
> The reason, to my understanding, is the fact that FreeList class is
> parameterized with the specific type of data that it stores. It makes no
> sense to me, to be completely honest, because the algorithm is always the
> same, and we always use the code from abstract free-list implementation.
> What I propose:
> * get rid of abstract implementation and only have the concrete
> implementation of free lists
> * same for data pages
> * serialization code will be fully moved to implementations of Storeable
> We're losing some guarantees if we do this change - we can no longer check
> that type of the page is correct. My response to this issue is that every
> Storeable could add a 1-byte header to the data, in order to validate it when
> being read, that should be enough. If we could find a way to store less than
> 1 byte then that's nice, I didn't look too much into the question.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)