Konstantin Orlov created IGNITE-18360:
-----------------------------------------

             Summary: Migrate storage to new Binary Tuple format
                 Key: IGNITE-18360
                 URL: https://issues.apache.org/jira/browse/IGNITE-18360
             Project: Ignite
          Issue Type: Improvement
            Reporter: Konstantin Orlov


The Binary Tuple Format was introduced in 
[IEP-92|https://cwiki.apache.org/confluence/display/IGNITE/IEP-92%3A+Binary+Tuple+Format]
 as replacement of 
[IEP-54|https://cwiki.apache.org/confluence/display/IGNITE/IEP-54%3A+Schema-first+Approach]
 Binary Row. However, the Ignite's core is still operating rows in BinaryRow 
format. Let's start the migration to the new format.

Under current ticket it's proposed to migrate the storage only, as these 
changes looks predictable and isolated, whereas it allows to start migration in 
SQL engine as well.

The migration plan is as follow:
# Introduce new entity named TableRow.
Unlike the indexes, the table may evolve over time, thus schema of the binary 
tuple may change as well. To make the storage a schema agnostic, it's proposed 
to store only the version of the schema and a ByteBuffer representing the data 
in the Binary Tuple format.
# Migrate all table-related storage interfaces and PartitionListener to the new 
format
# Make conversion in the PartitionReplicaListener from BinaryRow to TableRow 
and vice versa on the edge Replica-Storage integration (in the context of this 
issue I consider the PartitionListener as part of the storage).
PartitionReplicaListener (PRL) seems to be a good choice to make such a 
conversion because of 1) current implementation of row comparison for 
deleteExact operation can't properly handle the schema changes, and thus the 
notion of the schema has to be brought to this level, and 2) PRL is build upon 
async calls, so it will be easy to incorporate awaiting of schema in case the 
node stales a bit.
NB: during conversion, I would prefer to restore the logical order of the 
columns and build the tuple in that order, rather than keep the physical order 
of BinaryRow



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

Reply via email to