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

Vyacheslav Koptilin updated IGNITE-21594:
-----------------------------------------
    Reviewer: Aleksandr Polovtcev

> Storage profiles 
> -----------------
>
>                 Key: IGNITE-21594
>                 URL: https://issues.apache.org/jira/browse/IGNITE-21594
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Kirill Gusakov
>            Assignee: Kirill Gusakov
>            Priority: Major
>              Labels: ignite-3
>         Attachments: storage-profiles-configuration.svg
>
>          Time Spent: 2h 10m
>  Remaining Estimate: 0h
>
> *Motivation*
> To implement the consistent behaviour for zone-based collocation 
> https://issues.apache.org/jira/browse/IGNITE-19170 we need to introduce the 
> new storage configuration approach. It must give us a guarantee, that all 
> tables, which belong to the same zone, can be deployed on any nodes from this 
> zone.
> To support these guarantees we introduced the new abstraction - storage 
> profiles
> In general the main idea is the following:
>  - Each table has the 1 storage profile. If storage profile is not specified, 
> the first storage profile from the zone's storage profiles list will be used.
>  - Each zone has the list of supported storage profiles.
>  - Each node provide the list of supported storage profiles.
>  - In addition to the usual zone filter, zone filters the nodes by the 
> storage profiles list and ensure, that the nodes support the full list of 
> zone storage profiles.
>  - Each node supports the 'default' storage profile. Default zone has the 
> 'default' storage profile as well. So, out of the box, user can just create 
> the tables in the default zone and know nothing about the storage profile 
> routine.
> From the point of configuration view, node storage configurations will be 
> changed in the following way:
> {code:java}
> rocksDb:
>     flushDelayMillis: 1000
>     regions:
>         lruRegion:
>             cache: lru
>             size: 256
>         clockRegion:
>             cache: clock
>             size: 512
> aipersist:
>     checkpoint:
>         checkpointDelayMillis: 100
>     regions:
>         segmentedRegion:
>             replacementMode: SEGMENTED_LRU
>         clockRegion:
>             replacementMode: CLOCK
> {code}
> to
> {code:java}
> storages:
>     engines:
>         aipersist:
>             checkpoint:
>                 checkpointDelayMillis: 100
>         rocksDb:
>             flushDelayMillis: 1000
>     profiles:
>         lru_rocks:
>             engine: rocksDb
>             cache: lru
>             size: 256
>         clock_rocks:
>             engine: rocksDb
>             cache: clock
>             size: 512 
>         segmented_aipersist:
>             engine: aipersist
>             replacementMode: SEGMENTED_LRU
>         clock_aipersist:
>             engine: aipersist
>             replacementMode: CLOCK
> {code}
> *Definition of node*
>  - Storage configuration structure reworked according to the feature design 
> (please, look at the attached diagram to simplify the initial understanding 
> of the result configuration structure).
>  - All legacy abstractions like ENGINE and DATAREGION params removed from the 
> DDLs.
>  - The triad zone-table-node_configs is working as expected according to the 
> storage profile design document.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to