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)