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

Alexander Lapin updated IGNITE-18203:
-------------------------------------
    Description: 
Currently, index depends on a table, while table depends on RAFT groups start, 
which may need to apply commands (including inserts), and inserts depend on 
indices of the table. There is a dependency cycle. This is just one example of 
such a cycle in the current design.

One idea is to split 'Table' entity into 2: 'Table Structure' and 'Full Table'. 
Table structure would only comprise objects representing bare table information 
(no indices), something like current {{{}TableImpl{}}}/{{{}InternalTable{}}}. 
Then, the following dependencies could be created:
 # Table Structure depends on Configuration
 # Index depends on Configuration and Table Structure
 # Sql Schema depends on Table Structure and Index
 # Full Table depends on Table Structure, Index, Sql Schema

This requires a redesign of how {{{}TableManager{}}}, {{{}IndexManager{}}}, 
{{SqlSchemaManager}} interact, probably {{TableManager}} needs to be broken in 
2.

 

*Upd*

I've tried to redisn

  was:
Currently, index depends on a table, while table depends on RAFT groups start, 
which may need to apply commands (including inserts), and inserts depend on 
indices of the table. There is a dependency cycle. This is just one example of 
such a cycle in the current design.

One idea is to split 'Table' entity into 2: 'Table Structure' and 'Full Table'. 
Table structure would only comprise objects representing bare table information 
(no indices), something like current {{{}TableImpl{}}}/{{{}InternalTable{}}}. 
Then, the following dependencies could be created:
 # Table Structure depends on Configuration
 # Index depends on Configuration and Table Structure
 # Sql Schema depends on Table Structure and Index
 # Full Table depends on Table Structure, Index, Sql Schema

This requires a redesign of how {{{}TableManager{}}}, {{{}IndexManager{}}}, 
{{SqlSchemaManager}} interact, probably {{TableManager}} needs to be broken in 
2.


> Redesign table/index creation to avoid dependency cycles
> --------------------------------------------------------
>
>                 Key: IGNITE-18203
>                 URL: https://issues.apache.org/jira/browse/IGNITE-18203
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Roman Puchkovskiy
>            Assignee: Alexander Lapin
>            Priority: Blocker
>              Labels: ignite-3
>             Fix For: 3.0.0-beta2
>
>          Time Spent: 1h 40m
>  Remaining Estimate: 0h
>
> Currently, index depends on a table, while table depends on RAFT groups 
> start, which may need to apply commands (including inserts), and inserts 
> depend on indices of the table. There is a dependency cycle. This is just one 
> example of such a cycle in the current design.
> One idea is to split 'Table' entity into 2: 'Table Structure' and 'Full 
> Table'. Table structure would only comprise objects representing bare table 
> information (no indices), something like current 
> {{{}TableImpl{}}}/{{{}InternalTable{}}}. Then, the following dependencies 
> could be created:
>  # Table Structure depends on Configuration
>  # Index depends on Configuration and Table Structure
>  # Sql Schema depends on Table Structure and Index
>  # Full Table depends on Table Structure, Index, Sql Schema
> This requires a redesign of how {{{}TableManager{}}}, {{{}IndexManager{}}}, 
> {{SqlSchemaManager}} interact, probably {{TableManager}} needs to be broken 
> in 2.
>  
> *Upd*
> I've tried to redisn



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

Reply via email to