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

Ivan Bessonov updated IGNITE-17076:
-----------------------------------
    Labels: ignite-3  (was: )

> Unify RowId format for different storages
> -----------------------------------------
>
>                 Key: IGNITE-17076
>                 URL: https://issues.apache.org/jira/browse/IGNITE-17076
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Ivan Bessonov
>            Priority: Major
>              Labels: ignite-3
>
> Current MV store bridge API has a fatal flaw, born from a misunderstanding. 
> There's a method called "insert" that generates RowId by itself. This is 
> wrong, because it can lead to different id for the same row on the replica 
> storage. This completely breaks everything.
> Every replicated write command, that inserts new value, should produce same 
> row ids. There are several ways to achieve this:
>  * Use timestamps as identifiers. This is not very convenient, because we 
> would have to attach partition id on top of it. It's mandatory to know the 
> partition of the row.
>  * Use more complicated structure, for example a tuple of (raftCommitIndex, 
> partitionId, batchCounter), where
>  ** raftCommitIndex is the index of write command that performs insertion.
>  ** partitionId is an integer identifier of the partition. Could be 4 bytes, 
> considering that there are plans to support more than 65000 partitions per 
> table.
>  ** batchCounter is used to differentiate insertions made in a single write 
> command. We can limit it with 2 bytes to save a little bit of space, if it's 
> necessary.
> I prefer the second option, but maybe it could be revised during the 
> implementation.
> Of course, method "insert" should be removed from bridge API. Tests have to 
> be updated. With the lack of RAFT group in storage tests, we can generate row 
> ids artificially, it's not a big deal.



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

Reply via email to